// 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  S3216C4_nt  {
  int s3216c4f0[2];
  void  mf3216c4(); // _ZN10S3216C4_nt8mf3216c4Ev
};
//SIG(-1 S3216C4_nt) C1{ m Fi[2]}


void  S3216C4_nt ::mf3216c4(){}

//skip512 S3216C4_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3216C3_nt  {
  int s3216c3f0;
  __tsi64 s3216c3f1;
  void *s3216c3f2[4];
  int s3216c3f3[2];
  void *s3216c3f4;
  ::S3216C4_nt s3216c3f5;
  void *s3216c3f6[2];
  virtual  ~S3216C3_nt(); // _ZN10S3216C3_ntD1Ev
  virtual void  v4(); // _ZN10S3216C3_nt2v4Ev
  virtual void  v5(); // _ZN10S3216C3_nt2v5Ev
  virtual void  v6(); // _ZN10S3216C3_nt2v6Ev
  virtual void  v7(); // _ZN10S3216C3_nt2v7Ev
  virtual void  v8(); // _ZN10S3216C3_nt2v8Ev
  virtual void  v9(); // _ZN10S3216C3_nt2v9Ev
  virtual void  v10(); // _ZN10S3216C3_nt3v10Ev
  virtual void  v11(); // _ZN10S3216C3_nt3v11Ev
  virtual void  v12(); // _ZN10S3216C3_nt3v12Ev
  virtual void  v13(); // _ZN10S3216C3_nt3v13Ev
  virtual void  v14(); // _ZN10S3216C3_nt3v14Ev
  virtual void  v15(); // _ZN10S3216C3_nt3v15Ev
  virtual void  v16(); // _ZN10S3216C3_nt3v16Ev
  virtual void  v17(); // _ZN10S3216C3_nt3v17Ev
  virtual void  v18(); // _ZN10S3216C3_nt3v18Ev
  virtual void  v19(); // _ZN10S3216C3_nt3v19Ev
  virtual void  v20(); // _ZN10S3216C3_nt3v20Ev
  virtual void  v21(); // _ZN10S3216C3_nt3v21Ev
  virtual void  v22(); // _ZN10S3216C3_nt3v22Ev
  virtual void  v23(); // _ZN10S3216C3_nt3v23Ev
  virtual void  v24(); // _ZN10S3216C3_nt3v24Ev
  virtual void  v25(); // _ZN10S3216C3_nt3v25Ev
  virtual void  v26(); // _ZN10S3216C3_nt3v26Ev
  virtual void  v27(); // _ZN10S3216C3_nt3v27Ev
  virtual void  v28(); // _ZN10S3216C3_nt3v28Ev
  virtual void  v29(); // _ZN10S3216C3_nt3v29Ev
  virtual void  v30(); // _ZN10S3216C3_nt3v30Ev
  virtual void  v31(); // _ZN10S3216C3_nt3v31Ev
  virtual void  v32(); // _ZN10S3216C3_nt3v32Ev
  virtual void  v33(); // _ZN10S3216C3_nt3v33Ev
  virtual void  v34(); // _ZN10S3216C3_nt3v34Ev
  virtual void  v35(); // _ZN10S3216C3_nt3v35Ev
  virtual void  v36(); // _ZN10S3216C3_nt3v36Ev
  virtual void  v37(); // _ZN10S3216C3_nt3v37Ev
  virtual void  v38(); // _ZN10S3216C3_nt3v38Ev
  virtual void  v39(); // _ZN10S3216C3_nt3v39Ev
  virtual void  v40(); // _ZN10S3216C3_nt3v40Ev
  virtual void  v41(); // _ZN10S3216C3_nt3v41Ev
  virtual void  v42(); // _ZN10S3216C3_nt3v42Ev
  virtual void  v43(); // _ZN10S3216C3_nt3v43Ev
  virtual void  v44(); // _ZN10S3216C3_nt3v44Ev
  virtual void  v45(); // _ZN10S3216C3_nt3v45Ev
  virtual void  v46(); // _ZN10S3216C3_nt3v46Ev
  virtual void  v47(); // _ZN10S3216C3_nt3v47Ev
  virtual void  v48(); // _ZN10S3216C3_nt3v48Ev
  virtual void  v49(); // _ZN10S3216C3_nt3v49Ev
  virtual void  v50(); // _ZN10S3216C3_nt3v50Ev
  virtual void  v51(); // _ZN10S3216C3_nt3v51Ev
  virtual void  v52(); // _ZN10S3216C3_nt3v52Ev
  virtual void  v53(); // _ZN10S3216C3_nt3v53Ev
  virtual void  v54(); // _ZN10S3216C3_nt3v54Ev
  virtual void  v55(); // _ZN10S3216C3_nt3v55Ev
  virtual void  v56(); // _ZN10S3216C3_nt3v56Ev
  virtual void  v57(); // _ZN10S3216C3_nt3v57Ev
  virtual void  v58(); // _ZN10S3216C3_nt3v58Ev
  virtual void  v59(); // _ZN10S3216C3_nt3v59Ev
  virtual void  v60(); // _ZN10S3216C3_nt3v60Ev
  virtual void  v61(); // _ZN10S3216C3_nt3v61Ev
  virtual void  v62(); // _ZN10S3216C3_nt3v62Ev
  virtual void  v63(); // _ZN10S3216C3_nt3v63Ev
  virtual void  v64(); // _ZN10S3216C3_nt3v64Ev
  virtual void  v65(); // _ZN10S3216C3_nt3v65Ev
  virtual void  v66(); // _ZN10S3216C3_nt3v66Ev
  virtual void  v67(); // _ZN10S3216C3_nt3v67Ev
  S3216C3_nt(); // tgen
};
//SIG(-1 S3216C3_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]}


 S3216C3_nt ::~S3216C3_nt(){ note_dtor("S3216C3_nt", this);}
void  S3216C3_nt ::v4(){vfunc_called(this, "_ZN10S3216C3_nt2v4Ev");}
void  S3216C3_nt ::v5(){vfunc_called(this, "_ZN10S3216C3_nt2v5Ev");}
void  S3216C3_nt ::v6(){vfunc_called(this, "_ZN10S3216C3_nt2v6Ev");}
void  S3216C3_nt ::v7(){vfunc_called(this, "_ZN10S3216C3_nt2v7Ev");}
void  S3216C3_nt ::v8(){vfunc_called(this, "_ZN10S3216C3_nt2v8Ev");}
void  S3216C3_nt ::v9(){vfunc_called(this, "_ZN10S3216C3_nt2v9Ev");}
void  S3216C3_nt ::v10(){vfunc_called(this, "_ZN10S3216C3_nt3v10Ev");}
void  S3216C3_nt ::v11(){vfunc_called(this, "_ZN10S3216C3_nt3v11Ev");}
void  S3216C3_nt ::v12(){vfunc_called(this, "_ZN10S3216C3_nt3v12Ev");}
void  S3216C3_nt ::v13(){vfunc_called(this, "_ZN10S3216C3_nt3v13Ev");}
void  S3216C3_nt ::v14(){vfunc_called(this, "_ZN10S3216C3_nt3v14Ev");}
void  S3216C3_nt ::v15(){vfunc_called(this, "_ZN10S3216C3_nt3v15Ev");}
void  S3216C3_nt ::v16(){vfunc_called(this, "_ZN10S3216C3_nt3v16Ev");}
void  S3216C3_nt ::v17(){vfunc_called(this, "_ZN10S3216C3_nt3v17Ev");}
void  S3216C3_nt ::v18(){vfunc_called(this, "_ZN10S3216C3_nt3v18Ev");}
void  S3216C3_nt ::v19(){vfunc_called(this, "_ZN10S3216C3_nt3v19Ev");}
void  S3216C3_nt ::v20(){vfunc_called(this, "_ZN10S3216C3_nt3v20Ev");}
void  S3216C3_nt ::v21(){vfunc_called(this, "_ZN10S3216C3_nt3v21Ev");}
void  S3216C3_nt ::v22(){vfunc_called(this, "_ZN10S3216C3_nt3v22Ev");}
void  S3216C3_nt ::v23(){vfunc_called(this, "_ZN10S3216C3_nt3v23Ev");}
void  S3216C3_nt ::v24(){vfunc_called(this, "_ZN10S3216C3_nt3v24Ev");}
void  S3216C3_nt ::v25(){vfunc_called(this, "_ZN10S3216C3_nt3v25Ev");}
void  S3216C3_nt ::v26(){vfunc_called(this, "_ZN10S3216C3_nt3v26Ev");}
void  S3216C3_nt ::v27(){vfunc_called(this, "_ZN10S3216C3_nt3v27Ev");}
void  S3216C3_nt ::v28(){vfunc_called(this, "_ZN10S3216C3_nt3v28Ev");}
void  S3216C3_nt ::v29(){vfunc_called(this, "_ZN10S3216C3_nt3v29Ev");}
void  S3216C3_nt ::v30(){vfunc_called(this, "_ZN10S3216C3_nt3v30Ev");}
void  S3216C3_nt ::v31(){vfunc_called(this, "_ZN10S3216C3_nt3v31Ev");}
void  S3216C3_nt ::v32(){vfunc_called(this, "_ZN10S3216C3_nt3v32Ev");}
void  S3216C3_nt ::v33(){vfunc_called(this, "_ZN10S3216C3_nt3v33Ev");}
void  S3216C3_nt ::v34(){vfunc_called(this, "_ZN10S3216C3_nt3v34Ev");}
void  S3216C3_nt ::v35(){vfunc_called(this, "_ZN10S3216C3_nt3v35Ev");}
void  S3216C3_nt ::v36(){vfunc_called(this, "_ZN10S3216C3_nt3v36Ev");}
void  S3216C3_nt ::v37(){vfunc_called(this, "_ZN10S3216C3_nt3v37Ev");}
void  S3216C3_nt ::v38(){vfunc_called(this, "_ZN10S3216C3_nt3v38Ev");}
void  S3216C3_nt ::v39(){vfunc_called(this, "_ZN10S3216C3_nt3v39Ev");}
void  S3216C3_nt ::v40(){vfunc_called(this, "_ZN10S3216C3_nt3v40Ev");}
void  S3216C3_nt ::v41(){vfunc_called(this, "_ZN10S3216C3_nt3v41Ev");}
void  S3216C3_nt ::v42(){vfunc_called(this, "_ZN10S3216C3_nt3v42Ev");}
void  S3216C3_nt ::v43(){vfunc_called(this, "_ZN10S3216C3_nt3v43Ev");}
void  S3216C3_nt ::v44(){vfunc_called(this, "_ZN10S3216C3_nt3v44Ev");}
void  S3216C3_nt ::v45(){vfunc_called(this, "_ZN10S3216C3_nt3v45Ev");}
void  S3216C3_nt ::v46(){vfunc_called(this, "_ZN10S3216C3_nt3v46Ev");}
void  S3216C3_nt ::v47(){vfunc_called(this, "_ZN10S3216C3_nt3v47Ev");}
void  S3216C3_nt ::v48(){vfunc_called(this, "_ZN10S3216C3_nt3v48Ev");}
void  S3216C3_nt ::v49(){vfunc_called(this, "_ZN10S3216C3_nt3v49Ev");}
void  S3216C3_nt ::v50(){vfunc_called(this, "_ZN10S3216C3_nt3v50Ev");}
void  S3216C3_nt ::v51(){vfunc_called(this, "_ZN10S3216C3_nt3v51Ev");}
void  S3216C3_nt ::v52(){vfunc_called(this, "_ZN10S3216C3_nt3v52Ev");}
void  S3216C3_nt ::v53(){vfunc_called(this, "_ZN10S3216C3_nt3v53Ev");}
void  S3216C3_nt ::v54(){vfunc_called(this, "_ZN10S3216C3_nt3v54Ev");}
void  S3216C3_nt ::v55(){vfunc_called(this, "_ZN10S3216C3_nt3v55Ev");}
void  S3216C3_nt ::v56(){vfunc_called(this, "_ZN10S3216C3_nt3v56Ev");}
void  S3216C3_nt ::v57(){vfunc_called(this, "_ZN10S3216C3_nt3v57Ev");}
void  S3216C3_nt ::v58(){vfunc_called(this, "_ZN10S3216C3_nt3v58Ev");}
void  S3216C3_nt ::v59(){vfunc_called(this, "_ZN10S3216C3_nt3v59Ev");}
void  S3216C3_nt ::v60(){vfunc_called(this, "_ZN10S3216C3_nt3v60Ev");}
void  S3216C3_nt ::v61(){vfunc_called(this, "_ZN10S3216C3_nt3v61Ev");}
void  S3216C3_nt ::v62(){vfunc_called(this, "_ZN10S3216C3_nt3v62Ev");}
void  S3216C3_nt ::v63(){vfunc_called(this, "_ZN10S3216C3_nt3v63Ev");}
void  S3216C3_nt ::v64(){vfunc_called(this, "_ZN10S3216C3_nt3v64Ev");}
void  S3216C3_nt ::v65(){vfunc_called(this, "_ZN10S3216C3_nt3v65Ev");}
void  S3216C3_nt ::v66(){vfunc_called(this, "_ZN10S3216C3_nt3v66Ev");}
void  S3216C3_nt ::v67(){vfunc_called(this, "_ZN10S3216C3_nt3v67Ev");}
S3216C3_nt ::S3216C3_nt(){ note_ctor("S3216C3_nt", this);} // tgen

//skip512 S3216C3_nt

#else // __cplusplus

extern void _ZN10S3216C3_ntC1Ev();
extern void _ZN10S3216C3_ntD1Ev();
Name_Map name_map_S3216C3_nt[] = {
  NSPAIR(_ZN10S3216C3_ntC1Ev),
  NSPAIR(_ZN10S3216C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S3216C3_nt[];
extern void _ZN10S3216C3_ntD1Ev();
extern void _ZN10S3216C3_ntD0Ev();
extern void _ZN10S3216C3_nt2v4Ev();
extern void _ZN10S3216C3_nt2v5Ev();
extern void _ZN10S3216C3_nt2v6Ev();
extern void _ZN10S3216C3_nt2v7Ev();
extern void _ZN10S3216C3_nt2v8Ev();
extern void _ZN10S3216C3_nt2v9Ev();
extern void _ZN10S3216C3_nt3v10Ev();
extern void _ZN10S3216C3_nt3v11Ev();
extern void _ZN10S3216C3_nt3v12Ev();
extern void _ZN10S3216C3_nt3v13Ev();
extern void _ZN10S3216C3_nt3v14Ev();
extern void _ZN10S3216C3_nt3v15Ev();
extern void _ZN10S3216C3_nt3v16Ev();
extern void _ZN10S3216C3_nt3v17Ev();
extern void _ZN10S3216C3_nt3v18Ev();
extern void _ZN10S3216C3_nt3v19Ev();
extern void _ZN10S3216C3_nt3v20Ev();
extern void _ZN10S3216C3_nt3v21Ev();
extern void _ZN10S3216C3_nt3v22Ev();
extern void _ZN10S3216C3_nt3v23Ev();
extern void _ZN10S3216C3_nt3v24Ev();
extern void _ZN10S3216C3_nt3v25Ev();
extern void _ZN10S3216C3_nt3v26Ev();
extern void _ZN10S3216C3_nt3v27Ev();
extern void _ZN10S3216C3_nt3v28Ev();
extern void _ZN10S3216C3_nt3v29Ev();
extern void _ZN10S3216C3_nt3v30Ev();
extern void _ZN10S3216C3_nt3v31Ev();
extern void _ZN10S3216C3_nt3v32Ev();
extern void _ZN10S3216C3_nt3v33Ev();
extern void _ZN10S3216C3_nt3v34Ev();
extern void _ZN10S3216C3_nt3v35Ev();
extern void _ZN10S3216C3_nt3v36Ev();
extern void _ZN10S3216C3_nt3v37Ev();
extern void _ZN10S3216C3_nt3v38Ev();
extern void _ZN10S3216C3_nt3v39Ev();
extern void _ZN10S3216C3_nt3v40Ev();
extern void _ZN10S3216C3_nt3v41Ev();
extern void _ZN10S3216C3_nt3v42Ev();
extern void _ZN10S3216C3_nt3v43Ev();
extern void _ZN10S3216C3_nt3v44Ev();
extern void _ZN10S3216C3_nt3v45Ev();
extern void _ZN10S3216C3_nt3v46Ev();
extern void _ZN10S3216C3_nt3v47Ev();
extern void _ZN10S3216C3_nt3v48Ev();
extern void _ZN10S3216C3_nt3v49Ev();
extern void _ZN10S3216C3_nt3v50Ev();
extern void _ZN10S3216C3_nt3v51Ev();
extern void _ZN10S3216C3_nt3v52Ev();
extern void _ZN10S3216C3_nt3v53Ev();
extern void _ZN10S3216C3_nt3v54Ev();
extern void _ZN10S3216C3_nt3v55Ev();
extern void _ZN10S3216C3_nt3v56Ev();
extern void _ZN10S3216C3_nt3v57Ev();
extern void _ZN10S3216C3_nt3v58Ev();
extern void _ZN10S3216C3_nt3v59Ev();
extern void _ZN10S3216C3_nt3v60Ev();
extern void _ZN10S3216C3_nt3v61Ev();
extern void _ZN10S3216C3_nt3v62Ev();
extern void _ZN10S3216C3_nt3v63Ev();
extern void _ZN10S3216C3_nt3v64Ev();
extern void _ZN10S3216C3_nt3v65Ev();
extern void _ZN10S3216C3_nt3v66Ev();
extern void _ZN10S3216C3_nt3v67Ev();
static  VTBL_ENTRY vtc_S3216C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3216C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S3216C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v67Ev,
};
extern VTBL_ENTRY _ZTI10S3216C3_nt[];
VTBL_ENTRY *P__ZTI10S3216C3_nt = _ZTI10S3216C3_nt; 
extern  VTBL_ENTRY _ZTV10S3216C3_nt[];
Class_Descriptor cd_S3216C3_nt = {  "S3216C3_nt", // class name
  0,0,//no base classes
  &(vtc_S3216C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI10S3216C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S3216C3_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  S3216C7_nt  {
  void *s3216c7f0;
  int s3216c7f1[2];
  void  mf3216c7(); // _ZN10S3216C7_nt8mf3216c7Ev
};
//SIG(-1 S3216C7_nt) C1{ m Fp Fi[2]}


void  S3216C7_nt ::mf3216c7(){}

//skip512 S3216C7_nt

#else // __cplusplus

Class_Descriptor cd_S3216C7_nt = {  "S3216C7_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  S3216C6_nt  : S3216C7_nt {
};
//SIG(-1 S3216C6_nt) C1{ BC2{ m Fp Fi[2]}}



//skip512 S3216C6_nt

#else // __cplusplus

extern Class_Descriptor cd_S3216C7_nt;
static Base_Class bases_S3216C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S3216C6_nt = {  "S3216C6_nt", // class name
  bases_S3216C6_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  S3216C5_nt  : S3216C6_nt {
};
//SIG(-1 S3216C5_nt) C1{ BC2{ BC3{ m Fp Fi[2]}}}



//skip512 S3216C5_nt

#else // __cplusplus

extern Class_Descriptor cd_S3216C7_nt;
extern Class_Descriptor cd_S3216C6_nt;
static Base_Class bases_S3216C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3216C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S3216C8_nt  {
  int s3216c8f0;
  void  mf3216c8(); // _ZN10S3216C8_nt8mf3216c8Ev
};
//SIG(-1 S3216C8_nt) C1{ m Fi}


void  S3216C8_nt ::mf3216c8(){}

//skip512 S3216C8_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI10S3216C8_nt[];
VTBL_ENTRY *P__ZTI10S3216C8_nt = _ZTI10S3216C8_nt; 
Class_Descriptor cd_S3216C8_nt = {  "S3216C8_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI10S3216C8_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  S3216C12  : S3216C7_nt {
};
//SIG(-1 S3216C12) C1{ BC2{ m Fp Fi[2]}}



static void Test_S3216C12()
{
  extern Class_Descriptor cd_S3216C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3216C12, buf);
    S3216C12 &lv = *(new (buf) S3216C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3216C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3216C12)");
    check_base_class_offset(lv, (S3216C7_nt*), 0, "S3216C12");
    test_class_info(&lv, &cd_S3216C12);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3216C12(Test_S3216C12, "S3216C12", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3216C7_nt;
static Base_Class bases_S3216C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S3216C12 = {  "S3216C12", // class name
  bases_S3216C12, 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  S3216C11  : S3216C12 {
};
//SIG(-1 S3216C11) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S3216C11()
{
  extern Class_Descriptor cd_S3216C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3216C11, buf);
    S3216C11 &lv = *(new (buf) S3216C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3216C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3216C11)");
    check_base_class_offset(lv, (S3216C7_nt*)(S3216C12*), 0, "S3216C11");
    check_base_class_offset(lv, (S3216C12*), 0, "S3216C11");
    test_class_info(&lv, &cd_S3216C11);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3216C11(Test_S3216C11, "S3216C11", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3216C7_nt;
extern Class_Descriptor cd_S3216C12;
static Base_Class bases_S3216C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3216C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S3216C11 = {  "S3216C11", // class name
  bases_S3216C11, 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  S3216C13_nt  {
  int s3216c13f0[3];
  void  mf3216c13(); // _ZN11S3216C13_nt9mf3216c13Ev
};
//SIG(-1 S3216C13_nt) C1{ m Fi[3]}


void  S3216C13_nt ::mf3216c13(){}

//skip512 S3216C13_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3216C18  : S3216C7_nt {
};
//SIG(-1 S3216C18) C1{ BC2{ m Fp Fi[2]}}



static void Test_S3216C18()
{
  extern Class_Descriptor cd_S3216C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3216C18, buf);
    S3216C18 &lv = *(new (buf) S3216C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3216C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3216C18)");
    check_base_class_offset(lv, (S3216C7_nt*), 0, "S3216C18");
    test_class_info(&lv, &cd_S3216C18);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3216C18(Test_S3216C18, "S3216C18", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3216C7_nt;
static Base_Class bases_S3216C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S3216C18 = {  "S3216C18", // class name
  bases_S3216C18, 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  S3216C17  : S3216C18 {
};
//SIG(-1 S3216C17) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S3216C17()
{
  extern Class_Descriptor cd_S3216C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3216C17, buf);
    S3216C17 &lv = *(new (buf) S3216C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3216C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3216C17)");
    check_base_class_offset(lv, (S3216C7_nt*)(S3216C18*), 0, "S3216C17");
    check_base_class_offset(lv, (S3216C18*), 0, "S3216C17");
    test_class_info(&lv, &cd_S3216C17);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3216C17(Test_S3216C17, "S3216C17", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3216C7_nt;
extern Class_Descriptor cd_S3216C18;
static Base_Class bases_S3216C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3216C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S3216C17 = {  "S3216C17", // class name
  bases_S3216C17, 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  S3216C2_nt  : S3216C3_nt {
  ::S3216C5_nt s3216c2f0;
  ::S3216C5_nt s3216c2f1;
  ::S3216C8_nt s3216c2f2;
  int s3216c2f3;
  char s3216c2f4[4];
  void *s3216c2f5[2];
  ::S3216C5_nt s3216c2f6;
  unsigned int s3216c2f7:1;
  unsigned int s3216c2f8:1;
  unsigned int s3216c2f9:1;
  unsigned int s3216c2f10:1;
  unsigned int s3216c2f11:1;
  unsigned int s3216c2f12:1;
  unsigned int s3216c2f13:1;
  unsigned int s3216c2f14:1;
  unsigned int s3216c2f15:1;
  unsigned int s3216c2f16:1;
  unsigned int s3216c2f17:1;
  unsigned int s3216c2f18:1;
  unsigned int s3216c2f19:1;
  unsigned int s3216c2f20:1;
  unsigned int s3216c2f21:1;
  unsigned int s3216c2f22:1;
  unsigned int s3216c2f23:1;
  unsigned int s3216c2f24:1;
  unsigned int s3216c2f25:1;
  unsigned int s3216c2f26:1;
  unsigned int s3216c2f27:1;
  unsigned int s3216c2f28:1;
  unsigned int s3216c2f29:1;
  unsigned int s3216c2f30:1;
  unsigned int s3216c2f31:1;
  unsigned int s3216c2f32:1;
  unsigned int s3216c2f33:1;
  unsigned int s3216c2f34:1;
  unsigned int s3216c2f35:1;
  unsigned int s3216c2f36:1;
  unsigned int s3216c2f37:1;
  unsigned int s3216c2f38:1;
  unsigned int s3216c2f39:1;
  unsigned int s3216c2f40:1;
  unsigned int s3216c2f41:1;
  unsigned int s3216c2f42:1;
  unsigned int s3216c2f43:1;
  unsigned int s3216c2f44:1;
  unsigned int s3216c2f45:1;
  unsigned int s3216c2f46:1;
  unsigned int s3216c2f47:1;
  unsigned int s3216c2f48:1;
  unsigned int s3216c2f49:1;
  unsigned int s3216c2f50:1;
  unsigned int s3216c2f51:1;
  unsigned int s3216c2f52:1;
  unsigned int s3216c2f53:1;
  unsigned int s3216c2f54:1;
  unsigned int s3216c2f55:1;
  unsigned int s3216c2f56:1;
  unsigned int s3216c2f57:1;
  unsigned int s3216c2f58:1;
  unsigned int s3216c2f59:1;
  unsigned int s3216c2f60:1;
  unsigned int s3216c2f61:1;
  unsigned int s3216c2f62:1;
  unsigned int s3216c2f63:1;
  unsigned int s3216c2f64:1;
  unsigned int s3216c2f65:1;
  unsigned int s3216c2f66:1;
  unsigned int s3216c2f67:1;
  unsigned int s3216c2f68:1;
  unsigned int s3216c2f69:1;
  unsigned int s3216c2f70:1;
  unsigned int s3216c2f71:1;
  unsigned int s3216c2f72:1;
  unsigned int s3216c2f73:1;
  unsigned int s3216c2f74:1;
  unsigned int s3216c2f75:1;
  unsigned int s3216c2f76:1;
  unsigned int s3216c2f77:1;
  unsigned int s3216c2f78:1;
  unsigned int s3216c2f79:1;
  unsigned int s3216c2f80:1;
  unsigned int s3216c2f81:1;
  unsigned int s3216c2f82:1;
  unsigned int s3216c2f83:1;
  int s3216c2f84[5];
  void *s3216c2f85[2];
  int s3216c2f86[3];
  ::S3216C4_nt s3216c2f87;
  ::S3216C4_nt s3216c2f88;
  ::S3216C4_nt s3216c2f89;
  ::S3216C11 s3216c2f90;
  ::S3216C11 s3216c2f91;
  int s3216c2f92;
  void *s3216c2f93[2];
  ::S3216C13_nt s3216c2f94;
  ::S3216C13_nt s3216c2f95;
  ::S3216C13_nt s3216c2f96;
  ::S3216C13_nt s3216c2f97;
  void *s3216c2f98;
  ::S3216C4_nt s3216c2f99;
  ::S3216C11 s3216c2f100;
  ::S3216C13_nt s3216c2f101;
  ::S3216C13_nt s3216c2f102;
  int s3216c2f103;
  ::S3216C13_nt s3216c2f104;
  ::S3216C13_nt s3216c2f105;
  void *s3216c2f106;
  int s3216c2f107;
  char s3216c2f108;
  ::S3216C13_nt s3216c2f109;
  ::S3216C13_nt s3216c2f110;
  void *s3216c2f111;
  int s3216c2f112;
  void *s3216c2f113;
  ::S3216C11 s3216c2f114;
  ::S3216C17 s3216c2f115;
  ::S3216C17 s3216c2f116;
  virtual  ~S3216C2_nt(); // _ZN10S3216C2_ntD1Ev
  virtual void  v68(); // _ZN10S3216C2_nt3v68Ev
  virtual void  v69(); // _ZN10S3216C2_nt3v69Ev
  virtual void  v70(); // _ZN10S3216C2_nt3v70Ev
  virtual void  v71(); // _ZN10S3216C2_nt3v71Ev
  virtual void  v72(); // _ZN10S3216C2_nt3v72Ev
  virtual void  v73(); // _ZN10S3216C2_nt3v73Ev
  virtual void  v74(); // _ZN10S3216C2_nt3v74Ev
  virtual void  v75(); // _ZN10S3216C2_nt3v75Ev
  virtual void  v76(); // _ZN10S3216C2_nt3v76Ev
  virtual void  v77(); // _ZN10S3216C2_nt3v77Ev
  virtual void  v78(); // _ZN10S3216C2_nt3v78Ev
  virtual void  v79(); // _ZN10S3216C2_nt3v79Ev
  virtual void  v80(); // _ZN10S3216C2_nt3v80Ev
  virtual void  v81(); // _ZN10S3216C2_nt3v81Ev
  virtual void  v82(); // _ZN10S3216C2_nt3v82Ev
  virtual void  v83(); // _ZN10S3216C2_nt3v83Ev
  virtual void  v84(); // _ZN10S3216C2_nt3v84Ev
  virtual void  v85(); // _ZN10S3216C2_nt3v85Ev
  virtual void  v86(); // _ZN10S3216C2_nt3v86Ev
  virtual void  v87(); // _ZN10S3216C2_nt3v87Ev
  virtual void  v88(); // _ZN10S3216C2_nt3v88Ev
  virtual void  v89(); // _ZN10S3216C2_nt3v89Ev
  virtual void  v90(); // _ZN10S3216C2_nt3v90Ev
  virtual void  v91(); // _ZN10S3216C2_nt3v91Ev
  virtual void  v92(); // _ZN10S3216C2_nt3v92Ev
  virtual void  v93(); // _ZN10S3216C2_nt3v93Ev
  virtual void  v94(); // _ZN10S3216C2_nt3v94Ev
  virtual void  v95(); // _ZN10S3216C2_nt3v95Ev
  virtual void  v96(); // _ZN10S3216C2_nt3v96Ev
  virtual void  v97(); // _ZN10S3216C2_nt3v97Ev
  virtual void  v98(); // _ZN10S3216C2_nt3v98Ev
  virtual void  v99(); // _ZN10S3216C2_nt3v99Ev
  virtual void  v100(); // _ZN10S3216C2_nt4v100Ev
  virtual void  v101(); // _ZN10S3216C2_nt4v101Ev
  virtual void  v102(); // _ZN10S3216C2_nt4v102Ev
  virtual void  v103(); // _ZN10S3216C2_nt4v103Ev
  virtual void  v104(); // _ZN10S3216C2_nt4v104Ev
  virtual void  v105(); // _ZN10S3216C2_nt4v105Ev
  virtual void  v106(); // _ZN10S3216C2_nt4v106Ev
  virtual void  v107(); // _ZN10S3216C2_nt4v107Ev
  virtual void  v108(); // _ZN10S3216C2_nt4v108Ev
  virtual void  v109(); // _ZN10S3216C2_nt4v109Ev
  virtual void  v110(); // _ZN10S3216C2_nt4v110Ev
  virtual void  v111(); // _ZN10S3216C2_nt4v111Ev
  virtual void  v112(); // _ZN10S3216C2_nt4v112Ev
  virtual void  v113(); // _ZN10S3216C2_nt4v113Ev
  virtual void  v114(); // _ZN10S3216C2_nt4v114Ev
  virtual void  v115(); // _ZN10S3216C2_nt4v115Ev
  virtual void  v116(); // _ZN10S3216C2_nt4v116Ev
  virtual void  v117(); // _ZN10S3216C2_nt4v117Ev
  virtual void  v118(); // _ZN10S3216C2_nt4v118Ev
  virtual void  v119(); // _ZN10S3216C2_nt4v119Ev
  virtual void  v120(); // _ZN10S3216C2_nt4v120Ev
  virtual void  v121(); // _ZN10S3216C2_nt4v121Ev
  virtual void  v122(); // _ZN10S3216C2_nt4v122Ev
  virtual void  v123(); // _ZN10S3216C2_nt4v123Ev
  virtual void  v124(); // _ZN10S3216C2_nt4v124Ev
  virtual void  v125(); // _ZN10S3216C2_nt4v125Ev
  virtual void  v126(); // _ZN10S3216C2_nt4v126Ev
  virtual void  v127(); // _ZN10S3216C2_nt4v127Ev
  virtual void  v128(); // _ZN10S3216C2_nt4v128Ev
  virtual void  v129(); // _ZN10S3216C2_nt4v129Ev
  virtual void  v130(); // _ZN10S3216C2_nt4v130Ev
  virtual void  v131(); // _ZN10S3216C2_nt4v131Ev
  virtual void  v132(); // _ZN10S3216C2_nt4v132Ev
  virtual void  v133(); // _ZN10S3216C2_nt4v133Ev
  virtual void  v134(); // _ZN10S3216C2_nt4v134Ev
  virtual void  v135(); // _ZN10S3216C2_nt4v135Ev
  virtual void  v136(); // _ZN10S3216C2_nt4v136Ev
  virtual void  v137(); // _ZN10S3216C2_nt4v137Ev
  virtual void  v138(); // _ZN10S3216C2_nt4v138Ev
  virtual void  v139(); // _ZN10S3216C2_nt4v139Ev
  virtual void  v140(); // _ZN10S3216C2_nt4v140Ev
  virtual void  v141(); // _ZN10S3216C2_nt4v141Ev
  virtual void  v142(); // _ZN10S3216C2_nt4v142Ev
  virtual void  v143(); // _ZN10S3216C2_nt4v143Ev
  virtual void  v144(); // _ZN10S3216C2_nt4v144Ev
  virtual void  v145(); // _ZN10S3216C2_nt4v145Ev
  virtual void  v146(); // _ZN10S3216C2_nt4v146Ev
  virtual void  v147(); // _ZN10S3216C2_nt4v147Ev
  virtual void  v148(); // _ZN10S3216C2_nt4v148Ev
  virtual void  v149(); // _ZN10S3216C2_nt4v149Ev
  virtual void  v150(); // _ZN10S3216C2_nt4v150Ev
  virtual void  v151(); // _ZN10S3216C2_nt4v151Ev
  virtual void  v152(); // _ZN10S3216C2_nt4v152Ev
  virtual void  v153(); // _ZN10S3216C2_nt4v153Ev
  virtual void  v154(); // _ZN10S3216C2_nt4v154Ev
  virtual void  v155(); // _ZN10S3216C2_nt4v155Ev
  virtual void  v156(); // _ZN10S3216C2_nt4v156Ev
  virtual void  v157(); // _ZN10S3216C2_nt4v157Ev
  virtual void  v158(); // _ZN10S3216C2_nt4v158Ev
  virtual void  v159(); // _ZN10S3216C2_nt4v159Ev
  virtual void  v160(); // _ZN10S3216C2_nt4v160Ev
  virtual void  v161(); // _ZN10S3216C2_nt4v161Ev
  virtual void  v162(); // _ZN10S3216C2_nt4v162Ev
  virtual void  v163(); // _ZN10S3216C2_nt4v163Ev
  virtual void  v164(); // _ZN10S3216C2_nt4v164Ev
  virtual void  v165(); // _ZN10S3216C2_nt4v165Ev
  virtual void  v166(); // _ZN10S3216C2_nt4v166Ev
  virtual void  v167(); // _ZN10S3216C2_nt4v167Ev
  virtual void  v168(); // _ZN10S3216C2_nt4v168Ev
  virtual void  v169(); // _ZN10S3216C2_nt4v169Ev
  virtual void  v170(); // _ZN10S3216C2_nt4v170Ev
  virtual void  v171(); // _ZN10S3216C2_nt4v171Ev
  virtual void  v172(); // _ZN10S3216C2_nt4v172Ev
  virtual void  v173(); // _ZN10S3216C2_nt4v173Ev
  virtual void  v174(); // _ZN10S3216C2_nt4v174Ev
  virtual void  v175(); // _ZN10S3216C2_nt4v175Ev
  virtual void  v176(); // _ZN10S3216C2_nt4v176Ev
  virtual void  v177(); // _ZN10S3216C2_nt4v177Ev
  virtual void  v178(); // _ZN10S3216C2_nt4v178Ev
  virtual void  v179(); // _ZN10S3216C2_nt4v179Ev
  virtual void  v180(); // _ZN10S3216C2_nt4v180Ev
  virtual void  v181(); // _ZN10S3216C2_nt4v181Ev
  virtual void  v182(); // _ZN10S3216C2_nt4v182Ev
  virtual void  v183(); // _ZN10S3216C2_nt4v183Ev
  virtual void  v184(); // _ZN10S3216C2_nt4v184Ev
  virtual void  v185(); // _ZN10S3216C2_nt4v185Ev
  virtual void  v186(); // _ZN10S3216C2_nt4v186Ev
  virtual void  v187(); // _ZN10S3216C2_nt4v187Ev
  virtual void  v188(); // _ZN10S3216C2_nt4v188Ev
  virtual void  v189(); // _ZN10S3216C2_nt4v189Ev
  virtual void  v190(); // _ZN10S3216C2_nt4v190Ev
  virtual void  v191(); // _ZN10S3216C2_nt4v191Ev
  virtual void  v192(); // _ZN10S3216C2_nt4v192Ev
  virtual void  v193(); // _ZN10S3216C2_nt4v193Ev
  virtual void  v194(); // _ZN10S3216C2_nt4v194Ev
  virtual void  v195(); // _ZN10S3216C2_nt4v195Ev
  virtual void  v196(); // _ZN10S3216C2_nt4v196Ev
  virtual void  v197(); // _ZN10S3216C2_nt4v197Ev
  virtual void  v198(); // _ZN10S3216C2_nt4v198Ev
  virtual void  v199(); // _ZN10S3216C2_nt4v199Ev
  virtual void  v200(); // _ZN10S3216C2_nt4v200Ev
  virtual void  v201(); // _ZN10S3216C2_nt4v201Ev
  virtual void  v202(); // _ZN10S3216C2_nt4v202Ev
  virtual void  v203(); // _ZN10S3216C2_nt4v203Ev
  virtual void  v204(); // _ZN10S3216C2_nt4v204Ev
  virtual void  v205(); // _ZN10S3216C2_nt4v205Ev
  virtual void  v206(); // _ZN10S3216C2_nt4v206Ev
  virtual void  v207(); // _ZN10S3216C2_nt4v207Ev
  virtual void  v208(); // _ZN10S3216C2_nt4v208Ev
  virtual void  v209(); // _ZN10S3216C2_nt4v209Ev
  virtual void  v210(); // _ZN10S3216C2_nt4v210Ev
  S3216C2_nt(); // tgen
};
//SIG(-1 S3216C2_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}


 S3216C2_nt ::~S3216C2_nt(){ note_dtor("S3216C2_nt", this);}
void  S3216C2_nt ::v68(){vfunc_called(this, "_ZN10S3216C2_nt3v68Ev");}
void  S3216C2_nt ::v69(){vfunc_called(this, "_ZN10S3216C2_nt3v69Ev");}
void  S3216C2_nt ::v70(){vfunc_called(this, "_ZN10S3216C2_nt3v70Ev");}
void  S3216C2_nt ::v71(){vfunc_called(this, "_ZN10S3216C2_nt3v71Ev");}
void  S3216C2_nt ::v72(){vfunc_called(this, "_ZN10S3216C2_nt3v72Ev");}
void  S3216C2_nt ::v73(){vfunc_called(this, "_ZN10S3216C2_nt3v73Ev");}
void  S3216C2_nt ::v74(){vfunc_called(this, "_ZN10S3216C2_nt3v74Ev");}
void  S3216C2_nt ::v75(){vfunc_called(this, "_ZN10S3216C2_nt3v75Ev");}
void  S3216C2_nt ::v76(){vfunc_called(this, "_ZN10S3216C2_nt3v76Ev");}
void  S3216C2_nt ::v77(){vfunc_called(this, "_ZN10S3216C2_nt3v77Ev");}
void  S3216C2_nt ::v78(){vfunc_called(this, "_ZN10S3216C2_nt3v78Ev");}
void  S3216C2_nt ::v79(){vfunc_called(this, "_ZN10S3216C2_nt3v79Ev");}
void  S3216C2_nt ::v80(){vfunc_called(this, "_ZN10S3216C2_nt3v80Ev");}
void  S3216C2_nt ::v81(){vfunc_called(this, "_ZN10S3216C2_nt3v81Ev");}
void  S3216C2_nt ::v82(){vfunc_called(this, "_ZN10S3216C2_nt3v82Ev");}
void  S3216C2_nt ::v83(){vfunc_called(this, "_ZN10S3216C2_nt3v83Ev");}
void  S3216C2_nt ::v84(){vfunc_called(this, "_ZN10S3216C2_nt3v84Ev");}
void  S3216C2_nt ::v85(){vfunc_called(this, "_ZN10S3216C2_nt3v85Ev");}
void  S3216C2_nt ::v86(){vfunc_called(this, "_ZN10S3216C2_nt3v86Ev");}
void  S3216C2_nt ::v87(){vfunc_called(this, "_ZN10S3216C2_nt3v87Ev");}
void  S3216C2_nt ::v88(){vfunc_called(this, "_ZN10S3216C2_nt3v88Ev");}
void  S3216C2_nt ::v89(){vfunc_called(this, "_ZN10S3216C2_nt3v89Ev");}
void  S3216C2_nt ::v90(){vfunc_called(this, "_ZN10S3216C2_nt3v90Ev");}
void  S3216C2_nt ::v91(){vfunc_called(this, "_ZN10S3216C2_nt3v91Ev");}
void  S3216C2_nt ::v92(){vfunc_called(this, "_ZN10S3216C2_nt3v92Ev");}
void  S3216C2_nt ::v93(){vfunc_called(this, "_ZN10S3216C2_nt3v93Ev");}
void  S3216C2_nt ::v94(){vfunc_called(this, "_ZN10S3216C2_nt3v94Ev");}
void  S3216C2_nt ::v95(){vfunc_called(this, "_ZN10S3216C2_nt3v95Ev");}
void  S3216C2_nt ::v96(){vfunc_called(this, "_ZN10S3216C2_nt3v96Ev");}
void  S3216C2_nt ::v97(){vfunc_called(this, "_ZN10S3216C2_nt3v97Ev");}
void  S3216C2_nt ::v98(){vfunc_called(this, "_ZN10S3216C2_nt3v98Ev");}
void  S3216C2_nt ::v99(){vfunc_called(this, "_ZN10S3216C2_nt3v99Ev");}
void  S3216C2_nt ::v100(){vfunc_called(this, "_ZN10S3216C2_nt4v100Ev");}
void  S3216C2_nt ::v101(){vfunc_called(this, "_ZN10S3216C2_nt4v101Ev");}
void  S3216C2_nt ::v102(){vfunc_called(this, "_ZN10S3216C2_nt4v102Ev");}
void  S3216C2_nt ::v103(){vfunc_called(this, "_ZN10S3216C2_nt4v103Ev");}
void  S3216C2_nt ::v104(){vfunc_called(this, "_ZN10S3216C2_nt4v104Ev");}
void  S3216C2_nt ::v105(){vfunc_called(this, "_ZN10S3216C2_nt4v105Ev");}
void  S3216C2_nt ::v106(){vfunc_called(this, "_ZN10S3216C2_nt4v106Ev");}
void  S3216C2_nt ::v107(){vfunc_called(this, "_ZN10S3216C2_nt4v107Ev");}
void  S3216C2_nt ::v108(){vfunc_called(this, "_ZN10S3216C2_nt4v108Ev");}
void  S3216C2_nt ::v109(){vfunc_called(this, "_ZN10S3216C2_nt4v109Ev");}
void  S3216C2_nt ::v110(){vfunc_called(this, "_ZN10S3216C2_nt4v110Ev");}
void  S3216C2_nt ::v111(){vfunc_called(this, "_ZN10S3216C2_nt4v111Ev");}
void  S3216C2_nt ::v112(){vfunc_called(this, "_ZN10S3216C2_nt4v112Ev");}
void  S3216C2_nt ::v113(){vfunc_called(this, "_ZN10S3216C2_nt4v113Ev");}
void  S3216C2_nt ::v114(){vfunc_called(this, "_ZN10S3216C2_nt4v114Ev");}
void  S3216C2_nt ::v115(){vfunc_called(this, "_ZN10S3216C2_nt4v115Ev");}
void  S3216C2_nt ::v116(){vfunc_called(this, "_ZN10S3216C2_nt4v116Ev");}
void  S3216C2_nt ::v117(){vfunc_called(this, "_ZN10S3216C2_nt4v117Ev");}
void  S3216C2_nt ::v118(){vfunc_called(this, "_ZN10S3216C2_nt4v118Ev");}
void  S3216C2_nt ::v119(){vfunc_called(this, "_ZN10S3216C2_nt4v119Ev");}
void  S3216C2_nt ::v120(){vfunc_called(this, "_ZN10S3216C2_nt4v120Ev");}
void  S3216C2_nt ::v121(){vfunc_called(this, "_ZN10S3216C2_nt4v121Ev");}
void  S3216C2_nt ::v122(){vfunc_called(this, "_ZN10S3216C2_nt4v122Ev");}
void  S3216C2_nt ::v123(){vfunc_called(this, "_ZN10S3216C2_nt4v123Ev");}
void  S3216C2_nt ::v124(){vfunc_called(this, "_ZN10S3216C2_nt4v124Ev");}
void  S3216C2_nt ::v125(){vfunc_called(this, "_ZN10S3216C2_nt4v125Ev");}
void  S3216C2_nt ::v126(){vfunc_called(this, "_ZN10S3216C2_nt4v126Ev");}
void  S3216C2_nt ::v127(){vfunc_called(this, "_ZN10S3216C2_nt4v127Ev");}
void  S3216C2_nt ::v128(){vfunc_called(this, "_ZN10S3216C2_nt4v128Ev");}
void  S3216C2_nt ::v129(){vfunc_called(this, "_ZN10S3216C2_nt4v129Ev");}
void  S3216C2_nt ::v130(){vfunc_called(this, "_ZN10S3216C2_nt4v130Ev");}
void  S3216C2_nt ::v131(){vfunc_called(this, "_ZN10S3216C2_nt4v131Ev");}
void  S3216C2_nt ::v132(){vfunc_called(this, "_ZN10S3216C2_nt4v132Ev");}
void  S3216C2_nt ::v133(){vfunc_called(this, "_ZN10S3216C2_nt4v133Ev");}
void  S3216C2_nt ::v134(){vfunc_called(this, "_ZN10S3216C2_nt4v134Ev");}
void  S3216C2_nt ::v135(){vfunc_called(this, "_ZN10S3216C2_nt4v135Ev");}
void  S3216C2_nt ::v136(){vfunc_called(this, "_ZN10S3216C2_nt4v136Ev");}
void  S3216C2_nt ::v137(){vfunc_called(this, "_ZN10S3216C2_nt4v137Ev");}
void  S3216C2_nt ::v138(){vfunc_called(this, "_ZN10S3216C2_nt4v138Ev");}
void  S3216C2_nt ::v139(){vfunc_called(this, "_ZN10S3216C2_nt4v139Ev");}
void  S3216C2_nt ::v140(){vfunc_called(this, "_ZN10S3216C2_nt4v140Ev");}
void  S3216C2_nt ::v141(){vfunc_called(this, "_ZN10S3216C2_nt4v141Ev");}
void  S3216C2_nt ::v142(){vfunc_called(this, "_ZN10S3216C2_nt4v142Ev");}
void  S3216C2_nt ::v143(){vfunc_called(this, "_ZN10S3216C2_nt4v143Ev");}
void  S3216C2_nt ::v144(){vfunc_called(this, "_ZN10S3216C2_nt4v144Ev");}
void  S3216C2_nt ::v145(){vfunc_called(this, "_ZN10S3216C2_nt4v145Ev");}
void  S3216C2_nt ::v146(){vfunc_called(this, "_ZN10S3216C2_nt4v146Ev");}
void  S3216C2_nt ::v147(){vfunc_called(this, "_ZN10S3216C2_nt4v147Ev");}
void  S3216C2_nt ::v148(){vfunc_called(this, "_ZN10S3216C2_nt4v148Ev");}
void  S3216C2_nt ::v149(){vfunc_called(this, "_ZN10S3216C2_nt4v149Ev");}
void  S3216C2_nt ::v150(){vfunc_called(this, "_ZN10S3216C2_nt4v150Ev");}
void  S3216C2_nt ::v151(){vfunc_called(this, "_ZN10S3216C2_nt4v151Ev");}
void  S3216C2_nt ::v152(){vfunc_called(this, "_ZN10S3216C2_nt4v152Ev");}
void  S3216C2_nt ::v153(){vfunc_called(this, "_ZN10S3216C2_nt4v153Ev");}
void  S3216C2_nt ::v154(){vfunc_called(this, "_ZN10S3216C2_nt4v154Ev");}
void  S3216C2_nt ::v155(){vfunc_called(this, "_ZN10S3216C2_nt4v155Ev");}
void  S3216C2_nt ::v156(){vfunc_called(this, "_ZN10S3216C2_nt4v156Ev");}
void  S3216C2_nt ::v157(){vfunc_called(this, "_ZN10S3216C2_nt4v157Ev");}
void  S3216C2_nt ::v158(){vfunc_called(this, "_ZN10S3216C2_nt4v158Ev");}
void  S3216C2_nt ::v159(){vfunc_called(this, "_ZN10S3216C2_nt4v159Ev");}
void  S3216C2_nt ::v160(){vfunc_called(this, "_ZN10S3216C2_nt4v160Ev");}
void  S3216C2_nt ::v161(){vfunc_called(this, "_ZN10S3216C2_nt4v161Ev");}
void  S3216C2_nt ::v162(){vfunc_called(this, "_ZN10S3216C2_nt4v162Ev");}
void  S3216C2_nt ::v163(){vfunc_called(this, "_ZN10S3216C2_nt4v163Ev");}
void  S3216C2_nt ::v164(){vfunc_called(this, "_ZN10S3216C2_nt4v164Ev");}
void  S3216C2_nt ::v165(){vfunc_called(this, "_ZN10S3216C2_nt4v165Ev");}
void  S3216C2_nt ::v166(){vfunc_called(this, "_ZN10S3216C2_nt4v166Ev");}
void  S3216C2_nt ::v167(){vfunc_called(this, "_ZN10S3216C2_nt4v167Ev");}
void  S3216C2_nt ::v168(){vfunc_called(this, "_ZN10S3216C2_nt4v168Ev");}
void  S3216C2_nt ::v169(){vfunc_called(this, "_ZN10S3216C2_nt4v169Ev");}
void  S3216C2_nt ::v170(){vfunc_called(this, "_ZN10S3216C2_nt4v170Ev");}
void  S3216C2_nt ::v171(){vfunc_called(this, "_ZN10S3216C2_nt4v171Ev");}
void  S3216C2_nt ::v172(){vfunc_called(this, "_ZN10S3216C2_nt4v172Ev");}
void  S3216C2_nt ::v173(){vfunc_called(this, "_ZN10S3216C2_nt4v173Ev");}
void  S3216C2_nt ::v174(){vfunc_called(this, "_ZN10S3216C2_nt4v174Ev");}
void  S3216C2_nt ::v175(){vfunc_called(this, "_ZN10S3216C2_nt4v175Ev");}
void  S3216C2_nt ::v176(){vfunc_called(this, "_ZN10S3216C2_nt4v176Ev");}
void  S3216C2_nt ::v177(){vfunc_called(this, "_ZN10S3216C2_nt4v177Ev");}
void  S3216C2_nt ::v178(){vfunc_called(this, "_ZN10S3216C2_nt4v178Ev");}
void  S3216C2_nt ::v179(){vfunc_called(this, "_ZN10S3216C2_nt4v179Ev");}
void  S3216C2_nt ::v180(){vfunc_called(this, "_ZN10S3216C2_nt4v180Ev");}
void  S3216C2_nt ::v181(){vfunc_called(this, "_ZN10S3216C2_nt4v181Ev");}
void  S3216C2_nt ::v182(){vfunc_called(this, "_ZN10S3216C2_nt4v182Ev");}
void  S3216C2_nt ::v183(){vfunc_called(this, "_ZN10S3216C2_nt4v183Ev");}
void  S3216C2_nt ::v184(){vfunc_called(this, "_ZN10S3216C2_nt4v184Ev");}
void  S3216C2_nt ::v185(){vfunc_called(this, "_ZN10S3216C2_nt4v185Ev");}
void  S3216C2_nt ::v186(){vfunc_called(this, "_ZN10S3216C2_nt4v186Ev");}
void  S3216C2_nt ::v187(){vfunc_called(this, "_ZN10S3216C2_nt4v187Ev");}
void  S3216C2_nt ::v188(){vfunc_called(this, "_ZN10S3216C2_nt4v188Ev");}
void  S3216C2_nt ::v189(){vfunc_called(this, "_ZN10S3216C2_nt4v189Ev");}
void  S3216C2_nt ::v190(){vfunc_called(this, "_ZN10S3216C2_nt4v190Ev");}
void  S3216C2_nt ::v191(){vfunc_called(this, "_ZN10S3216C2_nt4v191Ev");}
void  S3216C2_nt ::v192(){vfunc_called(this, "_ZN10S3216C2_nt4v192Ev");}
void  S3216C2_nt ::v193(){vfunc_called(this, "_ZN10S3216C2_nt4v193Ev");}
void  S3216C2_nt ::v194(){vfunc_called(this, "_ZN10S3216C2_nt4v194Ev");}
void  S3216C2_nt ::v195(){vfunc_called(this, "_ZN10S3216C2_nt4v195Ev");}
void  S3216C2_nt ::v196(){vfunc_called(this, "_ZN10S3216C2_nt4v196Ev");}
void  S3216C2_nt ::v197(){vfunc_called(this, "_ZN10S3216C2_nt4v197Ev");}
void  S3216C2_nt ::v198(){vfunc_called(this, "_ZN10S3216C2_nt4v198Ev");}
void  S3216C2_nt ::v199(){vfunc_called(this, "_ZN10S3216C2_nt4v199Ev");}
void  S3216C2_nt ::v200(){vfunc_called(this, "_ZN10S3216C2_nt4v200Ev");}
void  S3216C2_nt ::v201(){vfunc_called(this, "_ZN10S3216C2_nt4v201Ev");}
void  S3216C2_nt ::v202(){vfunc_called(this, "_ZN10S3216C2_nt4v202Ev");}
void  S3216C2_nt ::v203(){vfunc_called(this, "_ZN10S3216C2_nt4v203Ev");}
void  S3216C2_nt ::v204(){vfunc_called(this, "_ZN10S3216C2_nt4v204Ev");}
void  S3216C2_nt ::v205(){vfunc_called(this, "_ZN10S3216C2_nt4v205Ev");}
void  S3216C2_nt ::v206(){vfunc_called(this, "_ZN10S3216C2_nt4v206Ev");}
void  S3216C2_nt ::v207(){vfunc_called(this, "_ZN10S3216C2_nt4v207Ev");}
void  S3216C2_nt ::v208(){vfunc_called(this, "_ZN10S3216C2_nt4v208Ev");}
void  S3216C2_nt ::v209(){vfunc_called(this, "_ZN10S3216C2_nt4v209Ev");}
void  S3216C2_nt ::v210(){vfunc_called(this, "_ZN10S3216C2_nt4v210Ev");}
S3216C2_nt ::S3216C2_nt(){ note_ctor("S3216C2_nt", this);} // tgen

//skip512 S3216C2_nt

#else // __cplusplus

extern void _ZN10S3216C2_ntC1Ev();
extern void _ZN10S3216C2_ntD1Ev();
Name_Map name_map_S3216C2_nt[] = {
  NSPAIR(_ZN10S3216C2_ntC1Ev),
  NSPAIR(_ZN10S3216C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C3_nt;
extern VTBL_ENTRY _ZTI10S3216C3_nt[];
extern  VTBL_ENTRY _ZTV10S3216C3_nt[];
static Base_Class bases_S3216C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S3216C2_nt[];
extern void _ZN10S3216C2_ntD1Ev();
extern void _ZN10S3216C2_ntD0Ev();
extern void _ZN10S3216C3_nt2v4Ev();
extern void _ZN10S3216C3_nt2v5Ev();
extern void _ZN10S3216C3_nt2v6Ev();
extern void _ZN10S3216C3_nt2v7Ev();
extern void _ZN10S3216C3_nt2v8Ev();
extern void _ZN10S3216C3_nt2v9Ev();
extern void _ZN10S3216C3_nt3v10Ev();
extern void _ZN10S3216C3_nt3v11Ev();
extern void _ZN10S3216C3_nt3v12Ev();
extern void _ZN10S3216C3_nt3v13Ev();
extern void _ZN10S3216C3_nt3v14Ev();
extern void _ZN10S3216C3_nt3v15Ev();
extern void _ZN10S3216C3_nt3v16Ev();
extern void _ZN10S3216C3_nt3v17Ev();
extern void _ZN10S3216C3_nt3v18Ev();
extern void _ZN10S3216C3_nt3v19Ev();
extern void _ZN10S3216C3_nt3v20Ev();
extern void _ZN10S3216C3_nt3v21Ev();
extern void _ZN10S3216C3_nt3v22Ev();
extern void _ZN10S3216C3_nt3v23Ev();
extern void _ZN10S3216C3_nt3v24Ev();
extern void _ZN10S3216C3_nt3v25Ev();
extern void _ZN10S3216C3_nt3v26Ev();
extern void _ZN10S3216C3_nt3v27Ev();
extern void _ZN10S3216C3_nt3v28Ev();
extern void _ZN10S3216C3_nt3v29Ev();
extern void _ZN10S3216C3_nt3v30Ev();
extern void _ZN10S3216C3_nt3v31Ev();
extern void _ZN10S3216C3_nt3v32Ev();
extern void _ZN10S3216C3_nt3v33Ev();
extern void _ZN10S3216C3_nt3v34Ev();
extern void _ZN10S3216C3_nt3v35Ev();
extern void _ZN10S3216C3_nt3v36Ev();
extern void _ZN10S3216C3_nt3v37Ev();
extern void _ZN10S3216C3_nt3v38Ev();
extern void _ZN10S3216C3_nt3v39Ev();
extern void _ZN10S3216C3_nt3v40Ev();
extern void _ZN10S3216C3_nt3v41Ev();
extern void _ZN10S3216C3_nt3v42Ev();
extern void _ZN10S3216C3_nt3v43Ev();
extern void _ZN10S3216C3_nt3v44Ev();
extern void _ZN10S3216C3_nt3v45Ev();
extern void _ZN10S3216C3_nt3v46Ev();
extern void _ZN10S3216C3_nt3v47Ev();
extern void _ZN10S3216C3_nt3v48Ev();
extern void _ZN10S3216C3_nt3v49Ev();
extern void _ZN10S3216C3_nt3v50Ev();
extern void _ZN10S3216C3_nt3v51Ev();
extern void _ZN10S3216C3_nt3v52Ev();
extern void _ZN10S3216C3_nt3v53Ev();
extern void _ZN10S3216C3_nt3v54Ev();
extern void _ZN10S3216C3_nt3v55Ev();
extern void _ZN10S3216C3_nt3v56Ev();
extern void _ZN10S3216C3_nt3v57Ev();
extern void _ZN10S3216C3_nt3v58Ev();
extern void _ZN10S3216C3_nt3v59Ev();
extern void _ZN10S3216C3_nt3v60Ev();
extern void _ZN10S3216C3_nt3v61Ev();
extern void _ZN10S3216C3_nt3v62Ev();
extern void _ZN10S3216C3_nt3v63Ev();
extern void _ZN10S3216C3_nt3v64Ev();
extern void _ZN10S3216C3_nt3v65Ev();
extern void _ZN10S3216C3_nt3v66Ev();
extern void _ZN10S3216C3_nt3v67Ev();
extern void _ZN10S3216C2_nt3v68Ev();
extern void _ZN10S3216C2_nt3v69Ev();
extern void _ZN10S3216C2_nt3v70Ev();
extern void _ZN10S3216C2_nt3v71Ev();
extern void _ZN10S3216C2_nt3v72Ev();
extern void _ZN10S3216C2_nt3v73Ev();
extern void _ZN10S3216C2_nt3v74Ev();
extern void _ZN10S3216C2_nt3v75Ev();
extern void _ZN10S3216C2_nt3v76Ev();
extern void _ZN10S3216C2_nt3v77Ev();
extern void _ZN10S3216C2_nt3v78Ev();
extern void _ZN10S3216C2_nt3v79Ev();
extern void _ZN10S3216C2_nt3v80Ev();
extern void _ZN10S3216C2_nt3v81Ev();
extern void _ZN10S3216C2_nt3v82Ev();
extern void _ZN10S3216C2_nt3v83Ev();
extern void _ZN10S3216C2_nt3v84Ev();
extern void _ZN10S3216C2_nt3v85Ev();
extern void _ZN10S3216C2_nt3v86Ev();
extern void _ZN10S3216C2_nt3v87Ev();
extern void _ZN10S3216C2_nt3v88Ev();
extern void _ZN10S3216C2_nt3v89Ev();
extern void _ZN10S3216C2_nt3v90Ev();
extern void _ZN10S3216C2_nt3v91Ev();
extern void _ZN10S3216C2_nt3v92Ev();
extern void _ZN10S3216C2_nt3v93Ev();
extern void _ZN10S3216C2_nt3v94Ev();
extern void _ZN10S3216C2_nt3v95Ev();
extern void _ZN10S3216C2_nt3v96Ev();
extern void _ZN10S3216C2_nt3v97Ev();
extern void _ZN10S3216C2_nt3v98Ev();
extern void _ZN10S3216C2_nt3v99Ev();
extern void _ZN10S3216C2_nt4v100Ev();
extern void _ZN10S3216C2_nt4v101Ev();
extern void _ZN10S3216C2_nt4v102Ev();
extern void _ZN10S3216C2_nt4v103Ev();
extern void _ZN10S3216C2_nt4v104Ev();
extern void _ZN10S3216C2_nt4v105Ev();
extern void _ZN10S3216C2_nt4v106Ev();
extern void _ZN10S3216C2_nt4v107Ev();
extern void _ZN10S3216C2_nt4v108Ev();
extern void _ZN10S3216C2_nt4v109Ev();
extern void _ZN10S3216C2_nt4v110Ev();
extern void _ZN10S3216C2_nt4v111Ev();
extern void _ZN10S3216C2_nt4v112Ev();
extern void _ZN10S3216C2_nt4v113Ev();
extern void _ZN10S3216C2_nt4v114Ev();
extern void _ZN10S3216C2_nt4v115Ev();
extern void _ZN10S3216C2_nt4v116Ev();
extern void _ZN10S3216C2_nt4v117Ev();
extern void _ZN10S3216C2_nt4v118Ev();
extern void _ZN10S3216C2_nt4v119Ev();
extern void _ZN10S3216C2_nt4v120Ev();
extern void _ZN10S3216C2_nt4v121Ev();
extern void _ZN10S3216C2_nt4v122Ev();
extern void _ZN10S3216C2_nt4v123Ev();
extern void _ZN10S3216C2_nt4v124Ev();
extern void _ZN10S3216C2_nt4v125Ev();
extern void _ZN10S3216C2_nt4v126Ev();
extern void _ZN10S3216C2_nt4v127Ev();
extern void _ZN10S3216C2_nt4v128Ev();
extern void _ZN10S3216C2_nt4v129Ev();
extern void _ZN10S3216C2_nt4v130Ev();
extern void _ZN10S3216C2_nt4v131Ev();
extern void _ZN10S3216C2_nt4v132Ev();
extern void _ZN10S3216C2_nt4v133Ev();
extern void _ZN10S3216C2_nt4v134Ev();
extern void _ZN10S3216C2_nt4v135Ev();
extern void _ZN10S3216C2_nt4v136Ev();
extern void _ZN10S3216C2_nt4v137Ev();
extern void _ZN10S3216C2_nt4v138Ev();
extern void _ZN10S3216C2_nt4v139Ev();
extern void _ZN10S3216C2_nt4v140Ev();
extern void _ZN10S3216C2_nt4v141Ev();
extern void _ZN10S3216C2_nt4v142Ev();
extern void _ZN10S3216C2_nt4v143Ev();
extern void _ZN10S3216C2_nt4v144Ev();
extern void _ZN10S3216C2_nt4v145Ev();
extern void _ZN10S3216C2_nt4v146Ev();
extern void _ZN10S3216C2_nt4v147Ev();
extern void _ZN10S3216C2_nt4v148Ev();
extern void _ZN10S3216C2_nt4v149Ev();
extern void _ZN10S3216C2_nt4v150Ev();
extern void _ZN10S3216C2_nt4v151Ev();
extern void _ZN10S3216C2_nt4v152Ev();
extern void _ZN10S3216C2_nt4v153Ev();
extern void _ZN10S3216C2_nt4v154Ev();
extern void _ZN10S3216C2_nt4v155Ev();
extern void _ZN10S3216C2_nt4v156Ev();
extern void _ZN10S3216C2_nt4v157Ev();
extern void _ZN10S3216C2_nt4v158Ev();
extern void _ZN10S3216C2_nt4v159Ev();
extern void _ZN10S3216C2_nt4v160Ev();
extern void _ZN10S3216C2_nt4v161Ev();
extern void _ZN10S3216C2_nt4v162Ev();
extern void _ZN10S3216C2_nt4v163Ev();
extern void _ZN10S3216C2_nt4v164Ev();
extern void _ZN10S3216C2_nt4v165Ev();
extern void _ZN10S3216C2_nt4v166Ev();
extern void _ZN10S3216C2_nt4v167Ev();
extern void _ZN10S3216C2_nt4v168Ev();
extern void _ZN10S3216C2_nt4v169Ev();
extern void _ZN10S3216C2_nt4v170Ev();
extern void _ZN10S3216C2_nt4v171Ev();
extern void _ZN10S3216C2_nt4v172Ev();
extern void _ZN10S3216C2_nt4v173Ev();
extern void _ZN10S3216C2_nt4v174Ev();
extern void _ZN10S3216C2_nt4v175Ev();
extern void _ZN10S3216C2_nt4v176Ev();
extern void _ZN10S3216C2_nt4v177Ev();
extern void _ZN10S3216C2_nt4v178Ev();
extern void _ZN10S3216C2_nt4v179Ev();
extern void _ZN10S3216C2_nt4v180Ev();
extern void _ZN10S3216C2_nt4v181Ev();
extern void _ZN10S3216C2_nt4v182Ev();
extern void _ZN10S3216C2_nt4v183Ev();
extern void _ZN10S3216C2_nt4v184Ev();
extern void _ZN10S3216C2_nt4v185Ev();
extern void _ZN10S3216C2_nt4v186Ev();
extern void _ZN10S3216C2_nt4v187Ev();
extern void _ZN10S3216C2_nt4v188Ev();
extern void _ZN10S3216C2_nt4v189Ev();
extern void _ZN10S3216C2_nt4v190Ev();
extern void _ZN10S3216C2_nt4v191Ev();
extern void _ZN10S3216C2_nt4v192Ev();
extern void _ZN10S3216C2_nt4v193Ev();
extern void _ZN10S3216C2_nt4v194Ev();
extern void _ZN10S3216C2_nt4v195Ev();
extern void _ZN10S3216C2_nt4v196Ev();
extern void _ZN10S3216C2_nt4v197Ev();
extern void _ZN10S3216C2_nt4v198Ev();
extern void _ZN10S3216C2_nt4v199Ev();
extern void _ZN10S3216C2_nt4v200Ev();
extern void _ZN10S3216C2_nt4v201Ev();
extern void _ZN10S3216C2_nt4v202Ev();
extern void _ZN10S3216C2_nt4v203Ev();
extern void _ZN10S3216C2_nt4v204Ev();
extern void _ZN10S3216C2_nt4v205Ev();
extern void _ZN10S3216C2_nt4v206Ev();
extern void _ZN10S3216C2_nt4v207Ev();
extern void _ZN10S3216C2_nt4v208Ev();
extern void _ZN10S3216C2_nt4v209Ev();
extern void _ZN10S3216C2_nt4v210Ev();
static  VTBL_ENTRY vtc_S3216C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3216C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S3216C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v112Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v121Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v122Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v123Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v124Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v125Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v126Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v127Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v128Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v129Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v130Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v131Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v132Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v133Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v134Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v135Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v136Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v137Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v138Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v139Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v140Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v141Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v142Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v143Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v144Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v145Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v146Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v147Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v148Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v149Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v150Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v151Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v152Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v153Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v154Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v155Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v156Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v157Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v158Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v159Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v160Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v161Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v162Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v163Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v164Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v165Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v166Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v167Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v168Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v169Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v170Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v171Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v172Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v173Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v174Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v175Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v176Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v177Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v178Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v179Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v180Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v181Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v182Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v183Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v184Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v185Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v186Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v187Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v188Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v189Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v190Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v191Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v192Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v193Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v194Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v195Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v196Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v197Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v198Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v199Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v200Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v201Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v202Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v203Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v204Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v205Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v206Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v207Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v208Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v209Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v210Ev,
};
extern VTBL_ENTRY _ZTI10S3216C2_nt[];
VTBL_ENTRY *P__ZTI10S3216C2_nt = _ZTI10S3216C2_nt; 
extern  VTBL_ENTRY _ZTV10S3216C2_nt[];
Class_Descriptor cd_S3216C2_nt = {  "S3216C2_nt", // class name
  bases_S3216C2_nt, 1,
  &(vtc_S3216C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(568,436), // object size
  NSPAIRA(_ZTI10S3216C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S3216C2_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  S3216C1  : S3216C2_nt {
  unsigned int s3216c1f0:1;
  int s3216c1f1;
  virtual  ~S3216C1(); // _ZN7S3216C1D1Ev
  virtual void  v1(); // _ZN7S3216C12v1Ev
  virtual void  v2(); // _ZN7S3216C12v2Ev
  virtual void  v3(); // _ZN7S3216C12v3Ev
  S3216C1(); // tgen
};
//SIG(1 S3216C1) C1{ BC2{ BC3{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 v144 v145 v146 v147 v148 v149 v150 v151 v152 v153 v154 v155 v156 v157 v158 v159 v160 v161 v162 v163 v164 v165 v166 v167 v168 v169 v170 v171 v172 v173 v174 v175 v176 v177 v178 v179 v180 v181 v182 v183 v184 v185 v186 v187 v188 v189 v190 v191 v192 v193 v194 v195 v196 v197 v198 v199 v200 v201 v202 v203 v204 v205 v206 v207 v208 v209 v210 FC5{ BC6{ BC7{ m Fp Fi[2]}}} FC5 FC8{ m Fi} Fi Fc[4] Fp[2] FC5 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fp[2] Fi[3] FC4 FC4 FC4 FC9{ BC10{ BC7}} FC9 Fi Fp[2] FC11{ m Fi[3]} FC11 FC11 FC11 Fp FC4 FC9 FC11 FC11 Fi FC11 FC11 Fp Fi Fc FC11 FC11 Fp Fi Fp FC9 FC12{ BC13{ BC7}} FC12} vd v1 v2 v3 Fi:1 Fi}


 S3216C1 ::~S3216C1(){ note_dtor("S3216C1", this);}
void  S3216C1 ::v1(){vfunc_called(this, "_ZN7S3216C12v1Ev");}
void  S3216C1 ::v2(){vfunc_called(this, "_ZN7S3216C12v2Ev");}
void  S3216C1 ::v3(){vfunc_called(this, "_ZN7S3216C12v3Ev");}
S3216C1 ::S3216C1(){ note_ctor("S3216C1", this);} // tgen

static void Test_S3216C1()
{
  extern Class_Descriptor cd_S3216C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(73,112)];
    init_test(&cd_S3216C1, buf);
    S3216C1 *dp, &lv = *(dp=new (buf) S3216C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(576,444), "sizeof(S3216C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3216C1)");
    check_base_class_offset(lv, (S3216C3_nt*)(S3216C2_nt*), 0, "S3216C1");
    check_base_class_offset(lv, (S3216C2_nt*), 0, "S3216C1");
    set_bf_and_test(lv, s3216c1f0, ABISELECT(568,436), 0, 1, 1, "S3216C1");
    check_field_offset(lv, s3216c1f1, ABISELECT(572,440), "S3216C1.s3216c1f1");
    test_class_info(&lv, &cd_S3216C1);
    dp->~S3216C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3216C1(Test_S3216C1, "S3216C1", ABISELECT(576,444));

#else // __cplusplus

extern void _ZN7S3216C1C1Ev();
extern void _ZN7S3216C1D1Ev();
Name_Map name_map_S3216C1[] = {
  NSPAIR(_ZN7S3216C1C1Ev),
  NSPAIR(_ZN7S3216C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C3_nt;
extern VTBL_ENTRY _ZTI10S3216C3_nt[];
extern  VTBL_ENTRY _ZTV10S3216C3_nt[];
extern Class_Descriptor cd_S3216C2_nt;
extern VTBL_ENTRY _ZTI10S3216C2_nt[];
extern  VTBL_ENTRY _ZTV10S3216C2_nt[];
static Base_Class bases_S3216C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3216C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S3216C1[];
extern void _ZN7S3216C1D1Ev();
extern void _ZN7S3216C1D0Ev();
extern void _ZN10S3216C3_nt2v4Ev();
extern void _ZN10S3216C3_nt2v5Ev();
extern void _ZN10S3216C3_nt2v6Ev();
extern void _ZN10S3216C3_nt2v7Ev();
extern void _ZN10S3216C3_nt2v8Ev();
extern void _ZN10S3216C3_nt2v9Ev();
extern void _ZN10S3216C3_nt3v10Ev();
extern void _ZN10S3216C3_nt3v11Ev();
extern void _ZN10S3216C3_nt3v12Ev();
extern void _ZN10S3216C3_nt3v13Ev();
extern void _ZN10S3216C3_nt3v14Ev();
extern void _ZN10S3216C3_nt3v15Ev();
extern void _ZN10S3216C3_nt3v16Ev();
extern void _ZN10S3216C3_nt3v17Ev();
extern void _ZN10S3216C3_nt3v18Ev();
extern void _ZN10S3216C3_nt3v19Ev();
extern void _ZN10S3216C3_nt3v20Ev();
extern void _ZN10S3216C3_nt3v21Ev();
extern void _ZN10S3216C3_nt3v22Ev();
extern void _ZN10S3216C3_nt3v23Ev();
extern void _ZN10S3216C3_nt3v24Ev();
extern void _ZN10S3216C3_nt3v25Ev();
extern void _ZN10S3216C3_nt3v26Ev();
extern void _ZN10S3216C3_nt3v27Ev();
extern void _ZN10S3216C3_nt3v28Ev();
extern void _ZN10S3216C3_nt3v29Ev();
extern void _ZN10S3216C3_nt3v30Ev();
extern void _ZN10S3216C3_nt3v31Ev();
extern void _ZN10S3216C3_nt3v32Ev();
extern void _ZN10S3216C3_nt3v33Ev();
extern void _ZN10S3216C3_nt3v34Ev();
extern void _ZN10S3216C3_nt3v35Ev();
extern void _ZN10S3216C3_nt3v36Ev();
extern void _ZN10S3216C3_nt3v37Ev();
extern void _ZN10S3216C3_nt3v38Ev();
extern void _ZN10S3216C3_nt3v39Ev();
extern void _ZN10S3216C3_nt3v40Ev();
extern void _ZN10S3216C3_nt3v41Ev();
extern void _ZN10S3216C3_nt3v42Ev();
extern void _ZN10S3216C3_nt3v43Ev();
extern void _ZN10S3216C3_nt3v44Ev();
extern void _ZN10S3216C3_nt3v45Ev();
extern void _ZN10S3216C3_nt3v46Ev();
extern void _ZN10S3216C3_nt3v47Ev();
extern void _ZN10S3216C3_nt3v48Ev();
extern void _ZN10S3216C3_nt3v49Ev();
extern void _ZN10S3216C3_nt3v50Ev();
extern void _ZN10S3216C3_nt3v51Ev();
extern void _ZN10S3216C3_nt3v52Ev();
extern void _ZN10S3216C3_nt3v53Ev();
extern void _ZN10S3216C3_nt3v54Ev();
extern void _ZN10S3216C3_nt3v55Ev();
extern void _ZN10S3216C3_nt3v56Ev();
extern void _ZN10S3216C3_nt3v57Ev();
extern void _ZN10S3216C3_nt3v58Ev();
extern void _ZN10S3216C3_nt3v59Ev();
extern void _ZN10S3216C3_nt3v60Ev();
extern void _ZN10S3216C3_nt3v61Ev();
extern void _ZN10S3216C3_nt3v62Ev();
extern void _ZN10S3216C3_nt3v63Ev();
extern void _ZN10S3216C3_nt3v64Ev();
extern void _ZN10S3216C3_nt3v65Ev();
extern void _ZN10S3216C3_nt3v66Ev();
extern void _ZN10S3216C3_nt3v67Ev();
extern void _ZN10S3216C2_nt3v68Ev();
extern void _ZN10S3216C2_nt3v69Ev();
extern void _ZN10S3216C2_nt3v70Ev();
extern void _ZN10S3216C2_nt3v71Ev();
extern void _ZN10S3216C2_nt3v72Ev();
extern void _ZN10S3216C2_nt3v73Ev();
extern void _ZN10S3216C2_nt3v74Ev();
extern void _ZN10S3216C2_nt3v75Ev();
extern void _ZN10S3216C2_nt3v76Ev();
extern void _ZN10S3216C2_nt3v77Ev();
extern void _ZN10S3216C2_nt3v78Ev();
extern void _ZN10S3216C2_nt3v79Ev();
extern void _ZN10S3216C2_nt3v80Ev();
extern void _ZN10S3216C2_nt3v81Ev();
extern void _ZN10S3216C2_nt3v82Ev();
extern void _ZN10S3216C2_nt3v83Ev();
extern void _ZN10S3216C2_nt3v84Ev();
extern void _ZN10S3216C2_nt3v85Ev();
extern void _ZN10S3216C2_nt3v86Ev();
extern void _ZN10S3216C2_nt3v87Ev();
extern void _ZN10S3216C2_nt3v88Ev();
extern void _ZN10S3216C2_nt3v89Ev();
extern void _ZN10S3216C2_nt3v90Ev();
extern void _ZN10S3216C2_nt3v91Ev();
extern void _ZN10S3216C2_nt3v92Ev();
extern void _ZN10S3216C2_nt3v93Ev();
extern void _ZN10S3216C2_nt3v94Ev();
extern void _ZN10S3216C2_nt3v95Ev();
extern void _ZN10S3216C2_nt3v96Ev();
extern void _ZN10S3216C2_nt3v97Ev();
extern void _ZN10S3216C2_nt3v98Ev();
extern void _ZN10S3216C2_nt3v99Ev();
extern void _ZN10S3216C2_nt4v100Ev();
extern void _ZN10S3216C2_nt4v101Ev();
extern void _ZN10S3216C2_nt4v102Ev();
extern void _ZN10S3216C2_nt4v103Ev();
extern void _ZN10S3216C2_nt4v104Ev();
extern void _ZN10S3216C2_nt4v105Ev();
extern void _ZN10S3216C2_nt4v106Ev();
extern void _ZN10S3216C2_nt4v107Ev();
extern void _ZN10S3216C2_nt4v108Ev();
extern void _ZN10S3216C2_nt4v109Ev();
extern void _ZN10S3216C2_nt4v110Ev();
extern void _ZN10S3216C2_nt4v111Ev();
extern void _ZN10S3216C2_nt4v112Ev();
extern void _ZN10S3216C2_nt4v113Ev();
extern void _ZN10S3216C2_nt4v114Ev();
extern void _ZN10S3216C2_nt4v115Ev();
extern void _ZN10S3216C2_nt4v116Ev();
extern void _ZN10S3216C2_nt4v117Ev();
extern void _ZN10S3216C2_nt4v118Ev();
extern void _ZN10S3216C2_nt4v119Ev();
extern void _ZN10S3216C2_nt4v120Ev();
extern void _ZN10S3216C2_nt4v121Ev();
extern void _ZN10S3216C2_nt4v122Ev();
extern void _ZN10S3216C2_nt4v123Ev();
extern void _ZN10S3216C2_nt4v124Ev();
extern void _ZN10S3216C2_nt4v125Ev();
extern void _ZN10S3216C2_nt4v126Ev();
extern void _ZN10S3216C2_nt4v127Ev();
extern void _ZN10S3216C2_nt4v128Ev();
extern void _ZN10S3216C2_nt4v129Ev();
extern void _ZN10S3216C2_nt4v130Ev();
extern void _ZN10S3216C2_nt4v131Ev();
extern void _ZN10S3216C2_nt4v132Ev();
extern void _ZN10S3216C2_nt4v133Ev();
extern void _ZN10S3216C2_nt4v134Ev();
extern void _ZN10S3216C2_nt4v135Ev();
extern void _ZN10S3216C2_nt4v136Ev();
extern void _ZN10S3216C2_nt4v137Ev();
extern void _ZN10S3216C2_nt4v138Ev();
extern void _ZN10S3216C2_nt4v139Ev();
extern void _ZN10S3216C2_nt4v140Ev();
extern void _ZN10S3216C2_nt4v141Ev();
extern void _ZN10S3216C2_nt4v142Ev();
extern void _ZN10S3216C2_nt4v143Ev();
extern void _ZN10S3216C2_nt4v144Ev();
extern void _ZN10S3216C2_nt4v145Ev();
extern void _ZN10S3216C2_nt4v146Ev();
extern void _ZN10S3216C2_nt4v147Ev();
extern void _ZN10S3216C2_nt4v148Ev();
extern void _ZN10S3216C2_nt4v149Ev();
extern void _ZN10S3216C2_nt4v150Ev();
extern void _ZN10S3216C2_nt4v151Ev();
extern void _ZN10S3216C2_nt4v152Ev();
extern void _ZN10S3216C2_nt4v153Ev();
extern void _ZN10S3216C2_nt4v154Ev();
extern void _ZN10S3216C2_nt4v155Ev();
extern void _ZN10S3216C2_nt4v156Ev();
extern void _ZN10S3216C2_nt4v157Ev();
extern void _ZN10S3216C2_nt4v158Ev();
extern void _ZN10S3216C2_nt4v159Ev();
extern void _ZN10S3216C2_nt4v160Ev();
extern void _ZN10S3216C2_nt4v161Ev();
extern void _ZN10S3216C2_nt4v162Ev();
extern void _ZN10S3216C2_nt4v163Ev();
extern void _ZN10S3216C2_nt4v164Ev();
extern void _ZN10S3216C2_nt4v165Ev();
extern void _ZN10S3216C2_nt4v166Ev();
extern void _ZN10S3216C2_nt4v167Ev();
extern void _ZN10S3216C2_nt4v168Ev();
extern void _ZN10S3216C2_nt4v169Ev();
extern void _ZN10S3216C2_nt4v170Ev();
extern void _ZN10S3216C2_nt4v171Ev();
extern void _ZN10S3216C2_nt4v172Ev();
extern void _ZN10S3216C2_nt4v173Ev();
extern void _ZN10S3216C2_nt4v174Ev();
extern void _ZN10S3216C2_nt4v175Ev();
extern void _ZN10S3216C2_nt4v176Ev();
extern void _ZN10S3216C2_nt4v177Ev();
extern void _ZN10S3216C2_nt4v178Ev();
extern void _ZN10S3216C2_nt4v179Ev();
extern void _ZN10S3216C2_nt4v180Ev();
extern void _ZN10S3216C2_nt4v181Ev();
extern void _ZN10S3216C2_nt4v182Ev();
extern void _ZN10S3216C2_nt4v183Ev();
extern void _ZN10S3216C2_nt4v184Ev();
extern void _ZN10S3216C2_nt4v185Ev();
extern void _ZN10S3216C2_nt4v186Ev();
extern void _ZN10S3216C2_nt4v187Ev();
extern void _ZN10S3216C2_nt4v188Ev();
extern void _ZN10S3216C2_nt4v189Ev();
extern void _ZN10S3216C2_nt4v190Ev();
extern void _ZN10S3216C2_nt4v191Ev();
extern void _ZN10S3216C2_nt4v192Ev();
extern void _ZN10S3216C2_nt4v193Ev();
extern void _ZN10S3216C2_nt4v194Ev();
extern void _ZN10S3216C2_nt4v195Ev();
extern void _ZN10S3216C2_nt4v196Ev();
extern void _ZN10S3216C2_nt4v197Ev();
extern void _ZN10S3216C2_nt4v198Ev();
extern void _ZN10S3216C2_nt4v199Ev();
extern void _ZN10S3216C2_nt4v200Ev();
extern void _ZN10S3216C2_nt4v201Ev();
extern void _ZN10S3216C2_nt4v202Ev();
extern void _ZN10S3216C2_nt4v203Ev();
extern void _ZN10S3216C2_nt4v204Ev();
extern void _ZN10S3216C2_nt4v205Ev();
extern void _ZN10S3216C2_nt4v206Ev();
extern void _ZN10S3216C2_nt4v207Ev();
extern void _ZN10S3216C2_nt4v208Ev();
extern void _ZN10S3216C2_nt4v209Ev();
extern void _ZN10S3216C2_nt4v210Ev();
extern void _ZN7S3216C12v1Ev();
extern void _ZN7S3216C12v2Ev();
extern void _ZN7S3216C12v3Ev();
static  VTBL_ENTRY vtc_S3216C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3216C1[0]),
  (VTBL_ENTRY)&_ZN7S3216C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3216C1D0Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S3216C3_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v112Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v121Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v122Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v123Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v124Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v125Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v126Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v127Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v128Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v129Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v130Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v131Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v132Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v133Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v134Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v135Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v136Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v137Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v138Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v139Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v140Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v141Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v142Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v143Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v144Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v145Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v146Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v147Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v148Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v149Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v150Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v151Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v152Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v153Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v154Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v155Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v156Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v157Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v158Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v159Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v160Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v161Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v162Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v163Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v164Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v165Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v166Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v167Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v168Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v169Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v170Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v171Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v172Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v173Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v174Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v175Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v176Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v177Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v178Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v179Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v180Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v181Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v182Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v183Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v184Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v185Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v186Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v187Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v188Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v189Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v190Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v191Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v192Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v193Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v194Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v195Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v196Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v197Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v198Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v199Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v200Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v201Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v202Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v203Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v204Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v205Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v206Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v207Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v208Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v209Ev,
  (VTBL_ENTRY)&_ZN10S3216C2_nt4v210Ev,
  (VTBL_ENTRY)&_ZN7S3216C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3216C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3216C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S3216C1[];
extern  VTBL_ENTRY _ZTV7S3216C1[];
Class_Descriptor cd_S3216C1 = {  "S3216C1", // class name
  bases_S3216C1, 2,
  &(vtc_S3216C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(576,444), // object size
  NSPAIRA(_ZTI7S3216C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3216C1),214, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4677C6_nt  {
  void  mf4677c6(); // _ZN10S4677C6_nt8mf4677c6Ev
};
//SIG(-1 S4677C6_nt) C1{ m}


void  S4677C6_nt ::mf4677c6(){}

//skip512 S4677C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4677C5_nt  {
  void *s4677c5f0;
  int s4677c5f1;
  ::S4677C6_nt s4677c5f2;
  ::S4677C6_nt s4677c5f3;
  void  mf4677c5(); // _ZN10S4677C5_nt8mf4677c5Ev
};
//SIG(-1 S4677C5_nt) C1{ m Fp Fi FC2{ m} FC2}


void  S4677C5_nt ::mf4677c5(){}

//skip512 S4677C5_nt

#else // __cplusplus

Class_Descriptor cd_S4677C5_nt = {  "S4677C5_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  S4677C4_nt  : S4677C5_nt {
};
//SIG(-1 S4677C4_nt) C1{ BC2{ m Fp Fi FC3{ m} FC3}}



//skip512 S4677C4_nt

#else // __cplusplus

extern Class_Descriptor cd_S4677C5_nt;
static Base_Class bases_S4677C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S4677C3_nt  {
  void *s4677c3f0;
  int s4677c3f1;
  ::S4677C4_nt s4677c3f2;
  ::S4677C4_nt s4677c3f3;
  int s4677c3f4;
  virtual  ~S4677C3_nt(); // _ZN10S4677C3_ntD1Ev
  virtual void  v29(); // _ZN10S4677C3_nt3v29Ev
  virtual void  v30(); // _ZN10S4677C3_nt3v30Ev
  virtual void  v31(); // _ZN10S4677C3_nt3v31Ev
  virtual void  v32(); // _ZN10S4677C3_nt3v32Ev
  virtual void  v33(); // _ZN10S4677C3_nt3v33Ev
  virtual void  v34(); // _ZN10S4677C3_nt3v34Ev
  virtual void  v35(); // _ZN10S4677C3_nt3v35Ev
  virtual void  v36(); // _ZN10S4677C3_nt3v36Ev
  virtual void  v37(); // _ZN10S4677C3_nt3v37Ev
  virtual void  v38(); // _ZN10S4677C3_nt3v38Ev
  virtual void  v39(); // _ZN10S4677C3_nt3v39Ev
  virtual void  v40(); // _ZN10S4677C3_nt3v40Ev
  virtual void  v41(); // _ZN10S4677C3_nt3v41Ev
  virtual void  v42(); // _ZN10S4677C3_nt3v42Ev
  virtual void  v43(); // _ZN10S4677C3_nt3v43Ev
  virtual void  v44(); // _ZN10S4677C3_nt3v44Ev
  virtual void  v45(); // _ZN10S4677C3_nt3v45Ev
  virtual void  v46(); // _ZN10S4677C3_nt3v46Ev
  virtual void  v47(); // _ZN10S4677C3_nt3v47Ev
  virtual void  v48(); // _ZN10S4677C3_nt3v48Ev
  virtual void  v49(); // _ZN10S4677C3_nt3v49Ev
  virtual void  v50(); // _ZN10S4677C3_nt3v50Ev
  virtual void  v51(); // _ZN10S4677C3_nt3v51Ev
  S4677C3_nt(); // tgen
};
//SIG(-1 S4677C3_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}


 S4677C3_nt ::~S4677C3_nt(){ note_dtor("S4677C3_nt", this);}
void  S4677C3_nt ::v29(){vfunc_called(this, "_ZN10S4677C3_nt3v29Ev");}
void  S4677C3_nt ::v30(){vfunc_called(this, "_ZN10S4677C3_nt3v30Ev");}
void  S4677C3_nt ::v31(){vfunc_called(this, "_ZN10S4677C3_nt3v31Ev");}
void  S4677C3_nt ::v32(){vfunc_called(this, "_ZN10S4677C3_nt3v32Ev");}
void  S4677C3_nt ::v33(){vfunc_called(this, "_ZN10S4677C3_nt3v33Ev");}
void  S4677C3_nt ::v34(){vfunc_called(this, "_ZN10S4677C3_nt3v34Ev");}
void  S4677C3_nt ::v35(){vfunc_called(this, "_ZN10S4677C3_nt3v35Ev");}
void  S4677C3_nt ::v36(){vfunc_called(this, "_ZN10S4677C3_nt3v36Ev");}
void  S4677C3_nt ::v37(){vfunc_called(this, "_ZN10S4677C3_nt3v37Ev");}
void  S4677C3_nt ::v38(){vfunc_called(this, "_ZN10S4677C3_nt3v38Ev");}
void  S4677C3_nt ::v39(){vfunc_called(this, "_ZN10S4677C3_nt3v39Ev");}
void  S4677C3_nt ::v40(){vfunc_called(this, "_ZN10S4677C3_nt3v40Ev");}
void  S4677C3_nt ::v41(){vfunc_called(this, "_ZN10S4677C3_nt3v41Ev");}
void  S4677C3_nt ::v42(){vfunc_called(this, "_ZN10S4677C3_nt3v42Ev");}
void  S4677C3_nt ::v43(){vfunc_called(this, "_ZN10S4677C3_nt3v43Ev");}
void  S4677C3_nt ::v44(){vfunc_called(this, "_ZN10S4677C3_nt3v44Ev");}
void  S4677C3_nt ::v45(){vfunc_called(this, "_ZN10S4677C3_nt3v45Ev");}
void  S4677C3_nt ::v46(){vfunc_called(this, "_ZN10S4677C3_nt3v46Ev");}
void  S4677C3_nt ::v47(){vfunc_called(this, "_ZN10S4677C3_nt3v47Ev");}
void  S4677C3_nt ::v48(){vfunc_called(this, "_ZN10S4677C3_nt3v48Ev");}
void  S4677C3_nt ::v49(){vfunc_called(this, "_ZN10S4677C3_nt3v49Ev");}
void  S4677C3_nt ::v50(){vfunc_called(this, "_ZN10S4677C3_nt3v50Ev");}
void  S4677C3_nt ::v51(){vfunc_called(this, "_ZN10S4677C3_nt3v51Ev");}
S4677C3_nt ::S4677C3_nt(){ note_ctor("S4677C3_nt", this);} // tgen

//skip512 S4677C3_nt

#else // __cplusplus

extern void _ZN10S4677C3_ntC1Ev();
extern void _ZN10S4677C3_ntD1Ev();
Name_Map name_map_S4677C3_nt[] = {
  NSPAIR(_ZN10S4677C3_ntC1Ev),
  NSPAIR(_ZN10S4677C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S4677C3_nt[];
extern void _ZN10S4677C3_ntD1Ev();
extern void _ZN10S4677C3_ntD0Ev();
extern void _ZN10S4677C3_nt3v29Ev();
extern void _ZN10S4677C3_nt3v30Ev();
extern void _ZN10S4677C3_nt3v31Ev();
extern void _ZN10S4677C3_nt3v32Ev();
extern void _ZN10S4677C3_nt3v33Ev();
extern void _ZN10S4677C3_nt3v34Ev();
extern void _ZN10S4677C3_nt3v35Ev();
extern void _ZN10S4677C3_nt3v36Ev();
extern void _ZN10S4677C3_nt3v37Ev();
extern void _ZN10S4677C3_nt3v38Ev();
extern void _ZN10S4677C3_nt3v39Ev();
extern void _ZN10S4677C3_nt3v40Ev();
extern void _ZN10S4677C3_nt3v41Ev();
extern void _ZN10S4677C3_nt3v42Ev();
extern void _ZN10S4677C3_nt3v43Ev();
extern void _ZN10S4677C3_nt3v44Ev();
extern void _ZN10S4677C3_nt3v45Ev();
extern void _ZN10S4677C3_nt3v46Ev();
extern void _ZN10S4677C3_nt3v47Ev();
extern void _ZN10S4677C3_nt3v48Ev();
extern void _ZN10S4677C3_nt3v49Ev();
extern void _ZN10S4677C3_nt3v50Ev();
extern void _ZN10S4677C3_nt3v51Ev();
static  VTBL_ENTRY vtc_S4677C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4677C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S4677C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v51Ev,
};
extern VTBL_ENTRY _ZTI10S4677C3_nt[];
VTBL_ENTRY *P__ZTI10S4677C3_nt = _ZTI10S4677C3_nt; 
extern  VTBL_ENTRY _ZTV10S4677C3_nt[];
Class_Descriptor cd_S4677C3_nt = {  "S4677C3_nt", // class name
  0,0,//no base classes
  &(vtc_S4677C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI10S4677C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S4677C3_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  S4677C13_nt  {
  __tsi64 s4677c13f0[2];
  void  mf4677c13(); // _ZN11S4677C13_nt9mf4677c13Ev
};
//SIG(-1 S4677C13_nt) C1{ m FL[2]}


void  S4677C13_nt ::mf4677c13(){}

//skip512 S4677C13_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4677C12_nt  {
  ::S4677C13_nt s4677c12f0;
  void  mf4677c12(); // _ZN11S4677C12_nt9mf4677c12Ev
};
//SIG(-1 S4677C12_nt) C1{ m FC2{ m FL[2]}}


void  S4677C12_nt ::mf4677c12(){}

//skip512 S4677C12_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4677C16_nt  {
  ::S4677C12_nt s4677c16f0;
  void  mf4677c16(); // _ZN11S4677C16_nt9mf4677c16Ev
};
//SIG(-1 S4677C16_nt) C1{ m FC2{ m FC3{ m FL[2]}}}


void  S4677C16_nt ::mf4677c16(){}

//skip512 S4677C16_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4677C17_nt  {
  ::S4677C12_nt s4677c17f0;
  ::S4677C12_nt s4677c17f1;
  ::S4677C12_nt s4677c17f2;
  ::S4677C12_nt s4677c17f3;
  void  mf4677c17(); // _ZN11S4677C17_nt9mf4677c17Ev
};
//SIG(-1 S4677C17_nt) C1{ m FC2{ m FC3{ m FL[2]}} FC2 FC2 FC2}


void  S4677C17_nt ::mf4677c17(){}

//skip512 S4677C17_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4677C20  {
  void  mf4677c20(); // _ZN8S4677C209mf4677c20Ev
};
//SIG(-1 S4677C20) C1{ m}


void  S4677C20 ::mf4677c20(){}

static void Test_S4677C20()
{
  {
    init_simple_test("S4677C20");
    S4677C20 lv;
    check2(sizeof(lv), 1, "sizeof(S4677C20)");
    check2(__alignof__(lv), 1, "__alignof__(S4677C20)");
  }
}
static Arrange_To_Call_Me vS4677C20(Test_S4677C20, "S4677C20", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4677C19_nt  {
  void *s4677c19f0;
  int s4677c19f1;
  ::S4677C20 s4677c19f2;
  void  mf4677c19(); // _ZN11S4677C19_nt9mf4677c19Ev
};
//SIG(-1 S4677C19_nt) C1{ m Fp Fi FC2{ m}}


void  S4677C19_nt ::mf4677c19(){}

//skip512 S4677C19_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4677C18_nt  {
  ::S4677C19_nt s4677c18f0;
  int s4677c18f1;
  void  mf4677c18(); // _ZN11S4677C18_nt9mf4677c18Ev
};
//SIG(-1 S4677C18_nt) C1{ m FC2{ m Fp Fi FC3{ m}} Fi}


void  S4677C18_nt ::mf4677c18(){}

//skip512 S4677C18_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4677C23  {
  void  mf4677c23(); // _ZN8S4677C239mf4677c23Ev
};
//SIG(-1 S4677C23) C1{ m}


void  S4677C23 ::mf4677c23(){}

static void Test_S4677C23()
{
  {
    init_simple_test("S4677C23");
    S4677C23 lv;
    check2(sizeof(lv), 1, "sizeof(S4677C23)");
    check2(__alignof__(lv), 1, "__alignof__(S4677C23)");
  }
}
static Arrange_To_Call_Me vS4677C23(Test_S4677C23, "S4677C23", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S4677C23[];
VTBL_ENTRY *P__ZTI8S4677C23 = _ZTI8S4677C23; 
Class_Descriptor cd_S4677C23 = {  "S4677C23", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S4677C23),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  S4677C21  {
  void *s4677c21f0;
  int s4677c21f1;
  ::S4677C20 s4677c21f2;
  ::S4677C23 s4677c21f3;
  void  mf4677c21(); // _ZN8S4677C219mf4677c21Ev
};
//SIG(-1 S4677C21) C1{ m Fp Fi FC2{ m} FC3{ m}}


void  S4677C21 ::mf4677c21(){}

static void Test_S4677C21()
{
  {
    init_simple_test("S4677C21");
    S4677C21 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4677C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4677C21)");
    check_field_offset(lv, s4677c21f0, 0, "S4677C21.s4677c21f0");
    check_field_offset(lv, s4677c21f1, ABISELECT(8,4), "S4677C21.s4677c21f1");
    check_field_offset(lv, s4677c21f2, ABISELECT(12,8), "S4677C21.s4677c21f2");
    check_field_offset(lv, s4677c21f3, ABISELECT(13,9), "S4677C21.s4677c21f3");
  }
}
static Arrange_To_Call_Me vS4677C21(Test_S4677C21, "S4677C21", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4677C27  {
  void  mf4677c27(); // _ZN8S4677C279mf4677c27Ev
};
//SIG(-1 S4677C27) C1{ m}


void  S4677C27 ::mf4677c27(){}

static void Test_S4677C27()
{
  {
    init_simple_test("S4677C27");
    S4677C27 lv;
    check2(sizeof(lv), 1, "sizeof(S4677C27)");
    check2(__alignof__(lv), 1, "__alignof__(S4677C27)");
  }
}
static Arrange_To_Call_Me vS4677C27(Test_S4677C27, "S4677C27", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S4677C27[];
VTBL_ENTRY *P__ZTI8S4677C27 = _ZTI8S4677C27; 
Class_Descriptor cd_S4677C27 = {  "S4677C27", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S4677C27),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  S4677C25  {
  void *s4677c25f0;
  int s4677c25f1;
  ::S4677C23 s4677c25f2;
  ::S4677C27 s4677c25f3;
  void  mf4677c25(); // _ZN8S4677C259mf4677c25Ev
};
//SIG(-1 S4677C25) C1{ m Fp Fi FC2{ m} FC3{ m}}


void  S4677C25 ::mf4677c25(){}

static void Test_S4677C25()
{
  {
    init_simple_test("S4677C25");
    S4677C25 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4677C25)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4677C25)");
    check_field_offset(lv, s4677c25f0, 0, "S4677C25.s4677c25f0");
    check_field_offset(lv, s4677c25f1, ABISELECT(8,4), "S4677C25.s4677c25f1");
    check_field_offset(lv, s4677c25f2, ABISELECT(12,8), "S4677C25.s4677c25f2");
    check_field_offset(lv, s4677c25f3, ABISELECT(13,9), "S4677C25.s4677c25f3");
  }
}
static Arrange_To_Call_Me vS4677C25(Test_S4677C25, "S4677C25", ABISELECT(16,12));

#else // __cplusplus

Class_Descriptor cd_S4677C25 = {  "S4677C25", // 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  S4677C24  : S4677C25 {
};
//SIG(-1 S4677C24) C1{ BC2{ m Fp Fi FC3{ m} FC4{ m}}}



static void Test_S4677C24()
{
  extern Class_Descriptor cd_S4677C24;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S4677C24, buf);
    S4677C24 &lv = *(new (buf) S4677C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4677C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4677C24)");
    check_base_class_offset(lv, (S4677C25*), 0, "S4677C24");
    test_class_info(&lv, &cd_S4677C24);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4677C24(Test_S4677C24, "S4677C24", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S4677C25;
static Base_Class bases_S4677C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C25,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S4677C24 = {  "S4677C24", // class name
  bases_S4677C24, 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  S4677C28_nt  {
  void *s4677c28f0;
  int s4677c28f1[2];
  ::S4677C27 s4677c28f2;
  void  mf4677c28(); // _ZN11S4677C28_nt9mf4677c28Ev
};
//SIG(-1 S4677C28_nt) C1{ m Fp Fi[2] FC2{ m}}


void  S4677C28_nt ::mf4677c28(){}

//skip512 S4677C28_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4677C37  {
  void  mf4677c37(); // _ZN8S4677C379mf4677c37Ev
};
//SIG(-1 S4677C37) C1{ m}


void  S4677C37 ::mf4677c37(){}

static void Test_S4677C37()
{
  {
    init_simple_test("S4677C37");
    S4677C37 lv;
    check2(sizeof(lv), 1, "sizeof(S4677C37)");
    check2(__alignof__(lv), 1, "__alignof__(S4677C37)");
  }
}
static Arrange_To_Call_Me vS4677C37(Test_S4677C37, "S4677C37", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S4677C37[];
VTBL_ENTRY *P__ZTI8S4677C37 = _ZTI8S4677C37; 
Class_Descriptor cd_S4677C37 = {  "S4677C37", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S4677C37),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  S4677C36  {
  void *s4677c36f0;
  int s4677c36f1[2];
  ::S4677C37 s4677c36f2;
  void  mf4677c36(); // _ZN8S4677C369mf4677c36Ev
};
//SIG(-1 S4677C36) C1{ m Fp Fi[2] FC2{ m}}


void  S4677C36 ::mf4677c36(){}

static void Test_S4677C36()
{
  {
    init_simple_test("S4677C36");
    S4677C36 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S4677C36)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4677C36)");
    check_field_offset(lv, s4677c36f0, 0, "S4677C36.s4677c36f0");
    check_field_offset(lv, s4677c36f1, ABISELECT(8,4), "S4677C36.s4677c36f1");
    check_field_offset(lv, s4677c36f2, ABISELECT(16,12), "S4677C36.s4677c36f2");
  }
}
static Arrange_To_Call_Me vS4677C36(Test_S4677C36, "S4677C36", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4677C2_nt  : S4677C3_nt {
  ::S4677C12_nt s4677c2f0;
  ::S4677C12_nt s4677c2f1;
  ::S4677C12_nt s4677c2f2;
  ::S4677C12_nt s4677c2f3;
  ::S4677C16_nt s4677c2f4;
  ::S4677C17_nt s4677c2f5;
  ::S4677C17_nt s4677c2f6;
  ::S4677C12_nt s4677c2f7;
  ::S4677C12_nt s4677c2f8;
  ::S4677C12_nt s4677c2f9;
  void *s4677c2f10;
  ::S4677C16_nt s4677c2f11;
  ::S4677C18_nt s4677c2f12;
  int s4677c2f13;
  void *s4677c2f14[7];
  ::S4677C21 s4677c2f15;
  int s4677c2f16:8;
  int s4677c2f17:8;
  int s4677c2f18:16;
  int s4677c2f19:16;
  int s4677c2f20:8;
  int s4677c2f21:8;
  int s4677c2f22:8;
  int s4677c2f23:32;
  int s4677c2f24:8;
  int s4677c2f25:4;
  int s4677c2f26:4;
  int s4677c2f27:4;
  int s4677c2f28:4;
  int s4677c2f29:4;
  int s4677c2f30:4;
  int s4677c2f31:4;
  int s4677c2f32:4;
  int s4677c2f33:4;
  int s4677c2f34:4;
  unsigned char s4677c2f35:1;
  unsigned char s4677c2f36:1;
  unsigned char s4677c2f37:1;
  unsigned char s4677c2f38:1;
  unsigned char s4677c2f39:1;
  unsigned char s4677c2f40:1;
  unsigned char s4677c2f41:1;
  unsigned char s4677c2f42:1;
  unsigned char s4677c2f43:1;
  unsigned char s4677c2f44:1;
  unsigned char s4677c2f45:1;
  unsigned char s4677c2f46:1;
  unsigned char s4677c2f47:1;
  unsigned char s4677c2f48:1;
  unsigned char s4677c2f49:1;
  unsigned char s4677c2f50:1;
  unsigned char s4677c2f51:1;
  unsigned char s4677c2f52:1;
  unsigned char s4677c2f53:1;
  unsigned char s4677c2f54:1;
  unsigned char s4677c2f55:1;
  unsigned char s4677c2f56:1;
  unsigned char s4677c2f57:1;
  unsigned char s4677c2f58:1;
  unsigned char s4677c2f59:1;
  unsigned char s4677c2f60:1;
  unsigned char s4677c2f61:1;
  unsigned char s4677c2f62:1;
  unsigned char s4677c2f63:1;
  unsigned char s4677c2f64:1;
  unsigned char s4677c2f65:1;
  unsigned char s4677c2f66:1;
  unsigned char s4677c2f67:1;
  unsigned char s4677c2f68:1;
  unsigned char s4677c2f69:1;
  unsigned char s4677c2f70:1;
  unsigned char s4677c2f71:1;
  unsigned char s4677c2f72:1;
  unsigned char s4677c2f73:1;
  unsigned char s4677c2f74:1;
  unsigned char s4677c2f75:1;
  int s4677c2f76[7];
  void *s4677c2f77[6];
  int s4677c2f78:8;
  int s4677c2f79:8;
  int s4677c2f80:8;
  int s4677c2f81:8;
  int s4677c2f82:8;
  int s4677c2f83:8;
  ::S4677C24 s4677c2f84;
  void *s4677c2f85[4];
  int s4677c2f86:8;
  int s4677c2f87:8;
  int s4677c2f88:8;
  int s4677c2f89:8;
  int s4677c2f90:8;
  int s4677c2f91:16;
  int s4677c2f92:16;
  int s4677c2f93:16;
  int s4677c2f94:4;
  int s4677c2f95:4;
  int s4677c2f96:4;
  int s4677c2f97:4;
  int s4677c2f98:4;
  int s4677c2f99:4;
  int s4677c2f100:4;
  int s4677c2f101:4;
  int s4677c2f102:4;
  int s4677c2f103:4;
  int s4677c2f104:4;
  int s4677c2f105:4;
  int s4677c2f106:8;
  int s4677c2f107:8;
  int s4677c2f108:8;
  void *s4677c2f109[7];
  ::S4677C28_nt s4677c2f110;
  void *s4677c2f111[2];
  int s4677c2f112:16;
  int s4677c2f113:16;
  ::S4677C24 s4677c2f114;
  ::S4677C28_nt s4677c2f115;
  ::S4677C36 s4677c2f116;
  void *s4677c2f117[2];
  int s4677c2f118:24;
  int s4677c2f119:8;
  void *s4677c2f120;
  virtual  ~S4677C2_nt(); // _ZN10S4677C2_ntD1Ev
  virtual void  v52(); // _ZN10S4677C2_nt3v52Ev
  virtual void  v53(); // _ZN10S4677C2_nt3v53Ev
  virtual void  v54(); // _ZN10S4677C2_nt3v54Ev
  virtual void  v55(); // _ZN10S4677C2_nt3v55Ev
  virtual void  v56(); // _ZN10S4677C2_nt3v56Ev
  virtual void  v57(); // _ZN10S4677C2_nt3v57Ev
  virtual void  v58(); // _ZN10S4677C2_nt3v58Ev
  virtual void  v59(); // _ZN10S4677C2_nt3v59Ev
  virtual void  v60(); // _ZN10S4677C2_nt3v60Ev
  virtual void  v61(); // _ZN10S4677C2_nt3v61Ev
  virtual void  v62(); // _ZN10S4677C2_nt3v62Ev
  virtual void  v63(); // _ZN10S4677C2_nt3v63Ev
  virtual void  v64(); // _ZN10S4677C2_nt3v64Ev
  virtual void  v65(); // _ZN10S4677C2_nt3v65Ev
  virtual void  v66(); // _ZN10S4677C2_nt3v66Ev
  virtual void  v67(); // _ZN10S4677C2_nt3v67Ev
  virtual void  v68(); // _ZN10S4677C2_nt3v68Ev
  virtual void  v69(); // _ZN10S4677C2_nt3v69Ev
  virtual void  v70(); // _ZN10S4677C2_nt3v70Ev
  virtual void  v71(); // _ZN10S4677C2_nt3v71Ev
  virtual void  v72(); // _ZN10S4677C2_nt3v72Ev
  virtual void  v73(); // _ZN10S4677C2_nt3v73Ev
  virtual void  v74(); // _ZN10S4677C2_nt3v74Ev
  virtual void  v75(); // _ZN10S4677C2_nt3v75Ev
  virtual void  v76(); // _ZN10S4677C2_nt3v76Ev
  virtual void  v77(); // _ZN10S4677C2_nt3v77Ev
  virtual void  v78(); // _ZN10S4677C2_nt3v78Ev
  virtual void  v79(); // _ZN10S4677C2_nt3v79Ev
  virtual void  v80(); // _ZN10S4677C2_nt3v80Ev
  virtual void  v81(); // _ZN10S4677C2_nt3v81Ev
  virtual void  v82(); // _ZN10S4677C2_nt3v82Ev
  virtual void  v83(); // _ZN10S4677C2_nt3v83Ev
  virtual void  v84(); // _ZN10S4677C2_nt3v84Ev
  virtual void  v85(); // _ZN10S4677C2_nt3v85Ev
  virtual void  v86(); // _ZN10S4677C2_nt3v86Ev
  virtual void  v87(); // _ZN10S4677C2_nt3v87Ev
  virtual void  v88(); // _ZN10S4677C2_nt3v88Ev
  virtual void  v89(); // _ZN10S4677C2_nt3v89Ev
  virtual void  v90(); // _ZN10S4677C2_nt3v90Ev
  virtual void  v91(); // _ZN10S4677C2_nt3v91Ev
  virtual void  v92(); // _ZN10S4677C2_nt3v92Ev
  virtual void  v93(); // _ZN10S4677C2_nt3v93Ev
  virtual void  v94(); // _ZN10S4677C2_nt3v94Ev
  virtual void  v95(); // _ZN10S4677C2_nt3v95Ev
  virtual void  v96(); // _ZN10S4677C2_nt3v96Ev
  virtual void  v97(); // _ZN10S4677C2_nt3v97Ev
  virtual void  v98(); // _ZN10S4677C2_nt3v98Ev
  virtual void  v99(); // _ZN10S4677C2_nt3v99Ev
  virtual void  v100(); // _ZN10S4677C2_nt4v100Ev
  virtual void  v101(); // _ZN10S4677C2_nt4v101Ev
  virtual void  v102(); // _ZN10S4677C2_nt4v102Ev
  virtual void  v103(); // _ZN10S4677C2_nt4v103Ev
  virtual void  v104(); // _ZN10S4677C2_nt4v104Ev
  virtual void  v105(); // _ZN10S4677C2_nt4v105Ev
  virtual void  v106(); // _ZN10S4677C2_nt4v106Ev
  virtual void  v107(); // _ZN10S4677C2_nt4v107Ev
  virtual void  v108(); // _ZN10S4677C2_nt4v108Ev
  virtual void  v109(); // _ZN10S4677C2_nt4v109Ev
  virtual void  v110(); // _ZN10S4677C2_nt4v110Ev
  virtual void  v111(); // _ZN10S4677C2_nt4v111Ev
  virtual void  v112(); // _ZN10S4677C2_nt4v112Ev
  virtual void  v113(); // _ZN10S4677C2_nt4v113Ev
  virtual void  v114(); // _ZN10S4677C2_nt4v114Ev
  virtual void  v115(); // _ZN10S4677C2_nt4v115Ev
  virtual void  v116(); // _ZN10S4677C2_nt4v116Ev
  virtual void  v117(); // _ZN10S4677C2_nt4v117Ev
  virtual void  v118(); // _ZN10S4677C2_nt4v118Ev
  virtual void  v119(); // _ZN10S4677C2_nt4v119Ev
  virtual void  v120(); // _ZN10S4677C2_nt4v120Ev
  virtual void  v121(); // _ZN10S4677C2_nt4v121Ev
  virtual void  v122(); // _ZN10S4677C2_nt4v122Ev
  virtual void  v123(); // _ZN10S4677C2_nt4v123Ev
  virtual void  v124(); // _ZN10S4677C2_nt4v124Ev
  virtual void  v125(); // _ZN10S4677C2_nt4v125Ev
  virtual void  v126(); // _ZN10S4677C2_nt4v126Ev
  virtual void  v127(); // _ZN10S4677C2_nt4v127Ev
  virtual void  v128(); // _ZN10S4677C2_nt4v128Ev
  virtual void  v129(); // _ZN10S4677C2_nt4v129Ev
  S4677C2_nt(); // tgen
};
//SIG(-1 S4677C2_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}


 S4677C2_nt ::~S4677C2_nt(){ note_dtor("S4677C2_nt", this);}
void  S4677C2_nt ::v52(){vfunc_called(this, "_ZN10S4677C2_nt3v52Ev");}
void  S4677C2_nt ::v53(){vfunc_called(this, "_ZN10S4677C2_nt3v53Ev");}
void  S4677C2_nt ::v54(){vfunc_called(this, "_ZN10S4677C2_nt3v54Ev");}
void  S4677C2_nt ::v55(){vfunc_called(this, "_ZN10S4677C2_nt3v55Ev");}
void  S4677C2_nt ::v56(){vfunc_called(this, "_ZN10S4677C2_nt3v56Ev");}
void  S4677C2_nt ::v57(){vfunc_called(this, "_ZN10S4677C2_nt3v57Ev");}
void  S4677C2_nt ::v58(){vfunc_called(this, "_ZN10S4677C2_nt3v58Ev");}
void  S4677C2_nt ::v59(){vfunc_called(this, "_ZN10S4677C2_nt3v59Ev");}
void  S4677C2_nt ::v60(){vfunc_called(this, "_ZN10S4677C2_nt3v60Ev");}
void  S4677C2_nt ::v61(){vfunc_called(this, "_ZN10S4677C2_nt3v61Ev");}
void  S4677C2_nt ::v62(){vfunc_called(this, "_ZN10S4677C2_nt3v62Ev");}
void  S4677C2_nt ::v63(){vfunc_called(this, "_ZN10S4677C2_nt3v63Ev");}
void  S4677C2_nt ::v64(){vfunc_called(this, "_ZN10S4677C2_nt3v64Ev");}
void  S4677C2_nt ::v65(){vfunc_called(this, "_ZN10S4677C2_nt3v65Ev");}
void  S4677C2_nt ::v66(){vfunc_called(this, "_ZN10S4677C2_nt3v66Ev");}
void  S4677C2_nt ::v67(){vfunc_called(this, "_ZN10S4677C2_nt3v67Ev");}
void  S4677C2_nt ::v68(){vfunc_called(this, "_ZN10S4677C2_nt3v68Ev");}
void  S4677C2_nt ::v69(){vfunc_called(this, "_ZN10S4677C2_nt3v69Ev");}
void  S4677C2_nt ::v70(){vfunc_called(this, "_ZN10S4677C2_nt3v70Ev");}
void  S4677C2_nt ::v71(){vfunc_called(this, "_ZN10S4677C2_nt3v71Ev");}
void  S4677C2_nt ::v72(){vfunc_called(this, "_ZN10S4677C2_nt3v72Ev");}
void  S4677C2_nt ::v73(){vfunc_called(this, "_ZN10S4677C2_nt3v73Ev");}
void  S4677C2_nt ::v74(){vfunc_called(this, "_ZN10S4677C2_nt3v74Ev");}
void  S4677C2_nt ::v75(){vfunc_called(this, "_ZN10S4677C2_nt3v75Ev");}
void  S4677C2_nt ::v76(){vfunc_called(this, "_ZN10S4677C2_nt3v76Ev");}
void  S4677C2_nt ::v77(){vfunc_called(this, "_ZN10S4677C2_nt3v77Ev");}
void  S4677C2_nt ::v78(){vfunc_called(this, "_ZN10S4677C2_nt3v78Ev");}
void  S4677C2_nt ::v79(){vfunc_called(this, "_ZN10S4677C2_nt3v79Ev");}
void  S4677C2_nt ::v80(){vfunc_called(this, "_ZN10S4677C2_nt3v80Ev");}
void  S4677C2_nt ::v81(){vfunc_called(this, "_ZN10S4677C2_nt3v81Ev");}
void  S4677C2_nt ::v82(){vfunc_called(this, "_ZN10S4677C2_nt3v82Ev");}
void  S4677C2_nt ::v83(){vfunc_called(this, "_ZN10S4677C2_nt3v83Ev");}
void  S4677C2_nt ::v84(){vfunc_called(this, "_ZN10S4677C2_nt3v84Ev");}
void  S4677C2_nt ::v85(){vfunc_called(this, "_ZN10S4677C2_nt3v85Ev");}
void  S4677C2_nt ::v86(){vfunc_called(this, "_ZN10S4677C2_nt3v86Ev");}
void  S4677C2_nt ::v87(){vfunc_called(this, "_ZN10S4677C2_nt3v87Ev");}
void  S4677C2_nt ::v88(){vfunc_called(this, "_ZN10S4677C2_nt3v88Ev");}
void  S4677C2_nt ::v89(){vfunc_called(this, "_ZN10S4677C2_nt3v89Ev");}
void  S4677C2_nt ::v90(){vfunc_called(this, "_ZN10S4677C2_nt3v90Ev");}
void  S4677C2_nt ::v91(){vfunc_called(this, "_ZN10S4677C2_nt3v91Ev");}
void  S4677C2_nt ::v92(){vfunc_called(this, "_ZN10S4677C2_nt3v92Ev");}
void  S4677C2_nt ::v93(){vfunc_called(this, "_ZN10S4677C2_nt3v93Ev");}
void  S4677C2_nt ::v94(){vfunc_called(this, "_ZN10S4677C2_nt3v94Ev");}
void  S4677C2_nt ::v95(){vfunc_called(this, "_ZN10S4677C2_nt3v95Ev");}
void  S4677C2_nt ::v96(){vfunc_called(this, "_ZN10S4677C2_nt3v96Ev");}
void  S4677C2_nt ::v97(){vfunc_called(this, "_ZN10S4677C2_nt3v97Ev");}
void  S4677C2_nt ::v98(){vfunc_called(this, "_ZN10S4677C2_nt3v98Ev");}
void  S4677C2_nt ::v99(){vfunc_called(this, "_ZN10S4677C2_nt3v99Ev");}
void  S4677C2_nt ::v100(){vfunc_called(this, "_ZN10S4677C2_nt4v100Ev");}
void  S4677C2_nt ::v101(){vfunc_called(this, "_ZN10S4677C2_nt4v101Ev");}
void  S4677C2_nt ::v102(){vfunc_called(this, "_ZN10S4677C2_nt4v102Ev");}
void  S4677C2_nt ::v103(){vfunc_called(this, "_ZN10S4677C2_nt4v103Ev");}
void  S4677C2_nt ::v104(){vfunc_called(this, "_ZN10S4677C2_nt4v104Ev");}
void  S4677C2_nt ::v105(){vfunc_called(this, "_ZN10S4677C2_nt4v105Ev");}
void  S4677C2_nt ::v106(){vfunc_called(this, "_ZN10S4677C2_nt4v106Ev");}
void  S4677C2_nt ::v107(){vfunc_called(this, "_ZN10S4677C2_nt4v107Ev");}
void  S4677C2_nt ::v108(){vfunc_called(this, "_ZN10S4677C2_nt4v108Ev");}
void  S4677C2_nt ::v109(){vfunc_called(this, "_ZN10S4677C2_nt4v109Ev");}
void  S4677C2_nt ::v110(){vfunc_called(this, "_ZN10S4677C2_nt4v110Ev");}
void  S4677C2_nt ::v111(){vfunc_called(this, "_ZN10S4677C2_nt4v111Ev");}
void  S4677C2_nt ::v112(){vfunc_called(this, "_ZN10S4677C2_nt4v112Ev");}
void  S4677C2_nt ::v113(){vfunc_called(this, "_ZN10S4677C2_nt4v113Ev");}
void  S4677C2_nt ::v114(){vfunc_called(this, "_ZN10S4677C2_nt4v114Ev");}
void  S4677C2_nt ::v115(){vfunc_called(this, "_ZN10S4677C2_nt4v115Ev");}
void  S4677C2_nt ::v116(){vfunc_called(this, "_ZN10S4677C2_nt4v116Ev");}
void  S4677C2_nt ::v117(){vfunc_called(this, "_ZN10S4677C2_nt4v117Ev");}
void  S4677C2_nt ::v118(){vfunc_called(this, "_ZN10S4677C2_nt4v118Ev");}
void  S4677C2_nt ::v119(){vfunc_called(this, "_ZN10S4677C2_nt4v119Ev");}
void  S4677C2_nt ::v120(){vfunc_called(this, "_ZN10S4677C2_nt4v120Ev");}
void  S4677C2_nt ::v121(){vfunc_called(this, "_ZN10S4677C2_nt4v121Ev");}
void  S4677C2_nt ::v122(){vfunc_called(this, "_ZN10S4677C2_nt4v122Ev");}
void  S4677C2_nt ::v123(){vfunc_called(this, "_ZN10S4677C2_nt4v123Ev");}
void  S4677C2_nt ::v124(){vfunc_called(this, "_ZN10S4677C2_nt4v124Ev");}
void  S4677C2_nt ::v125(){vfunc_called(this, "_ZN10S4677C2_nt4v125Ev");}
void  S4677C2_nt ::v126(){vfunc_called(this, "_ZN10S4677C2_nt4v126Ev");}
void  S4677C2_nt ::v127(){vfunc_called(this, "_ZN10S4677C2_nt4v127Ev");}
void  S4677C2_nt ::v128(){vfunc_called(this, "_ZN10S4677C2_nt4v128Ev");}
void  S4677C2_nt ::v129(){vfunc_called(this, "_ZN10S4677C2_nt4v129Ev");}
S4677C2_nt ::S4677C2_nt(){ note_ctor("S4677C2_nt", this);} // tgen

//skip512 S4677C2_nt

#else // __cplusplus

extern void _ZN10S4677C2_ntC1Ev();
extern void _ZN10S4677C2_ntD1Ev();
Name_Map name_map_S4677C2_nt[] = {
  NSPAIR(_ZN10S4677C2_ntC1Ev),
  NSPAIR(_ZN10S4677C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C3_nt;
extern VTBL_ENTRY _ZTI10S4677C3_nt[];
extern  VTBL_ENTRY _ZTV10S4677C3_nt[];
static Base_Class bases_S4677C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S4677C2_nt[];
extern void _ZN10S4677C2_ntD1Ev();
extern void _ZN10S4677C2_ntD0Ev();
extern void _ZN10S4677C3_nt3v29Ev();
extern void _ZN10S4677C3_nt3v30Ev();
extern void _ZN10S4677C3_nt3v31Ev();
extern void _ZN10S4677C3_nt3v32Ev();
extern void _ZN10S4677C3_nt3v33Ev();
extern void _ZN10S4677C3_nt3v34Ev();
extern void _ZN10S4677C3_nt3v35Ev();
extern void _ZN10S4677C3_nt3v36Ev();
extern void _ZN10S4677C3_nt3v37Ev();
extern void _ZN10S4677C3_nt3v38Ev();
extern void _ZN10S4677C3_nt3v39Ev();
extern void _ZN10S4677C3_nt3v40Ev();
extern void _ZN10S4677C3_nt3v41Ev();
extern void _ZN10S4677C3_nt3v42Ev();
extern void _ZN10S4677C3_nt3v43Ev();
extern void _ZN10S4677C3_nt3v44Ev();
extern void _ZN10S4677C3_nt3v45Ev();
extern void _ZN10S4677C3_nt3v46Ev();
extern void _ZN10S4677C3_nt3v47Ev();
extern void _ZN10S4677C3_nt3v48Ev();
extern void _ZN10S4677C3_nt3v49Ev();
extern void _ZN10S4677C3_nt3v50Ev();
extern void _ZN10S4677C3_nt3v51Ev();
extern void _ZN10S4677C2_nt3v52Ev();
extern void _ZN10S4677C2_nt3v53Ev();
extern void _ZN10S4677C2_nt3v54Ev();
extern void _ZN10S4677C2_nt3v55Ev();
extern void _ZN10S4677C2_nt3v56Ev();
extern void _ZN10S4677C2_nt3v57Ev();
extern void _ZN10S4677C2_nt3v58Ev();
extern void _ZN10S4677C2_nt3v59Ev();
extern void _ZN10S4677C2_nt3v60Ev();
extern void _ZN10S4677C2_nt3v61Ev();
extern void _ZN10S4677C2_nt3v62Ev();
extern void _ZN10S4677C2_nt3v63Ev();
extern void _ZN10S4677C2_nt3v64Ev();
extern void _ZN10S4677C2_nt3v65Ev();
extern void _ZN10S4677C2_nt3v66Ev();
extern void _ZN10S4677C2_nt3v67Ev();
extern void _ZN10S4677C2_nt3v68Ev();
extern void _ZN10S4677C2_nt3v69Ev();
extern void _ZN10S4677C2_nt3v70Ev();
extern void _ZN10S4677C2_nt3v71Ev();
extern void _ZN10S4677C2_nt3v72Ev();
extern void _ZN10S4677C2_nt3v73Ev();
extern void _ZN10S4677C2_nt3v74Ev();
extern void _ZN10S4677C2_nt3v75Ev();
extern void _ZN10S4677C2_nt3v76Ev();
extern void _ZN10S4677C2_nt3v77Ev();
extern void _ZN10S4677C2_nt3v78Ev();
extern void _ZN10S4677C2_nt3v79Ev();
extern void _ZN10S4677C2_nt3v80Ev();
extern void _ZN10S4677C2_nt3v81Ev();
extern void _ZN10S4677C2_nt3v82Ev();
extern void _ZN10S4677C2_nt3v83Ev();
extern void _ZN10S4677C2_nt3v84Ev();
extern void _ZN10S4677C2_nt3v85Ev();
extern void _ZN10S4677C2_nt3v86Ev();
extern void _ZN10S4677C2_nt3v87Ev();
extern void _ZN10S4677C2_nt3v88Ev();
extern void _ZN10S4677C2_nt3v89Ev();
extern void _ZN10S4677C2_nt3v90Ev();
extern void _ZN10S4677C2_nt3v91Ev();
extern void _ZN10S4677C2_nt3v92Ev();
extern void _ZN10S4677C2_nt3v93Ev();
extern void _ZN10S4677C2_nt3v94Ev();
extern void _ZN10S4677C2_nt3v95Ev();
extern void _ZN10S4677C2_nt3v96Ev();
extern void _ZN10S4677C2_nt3v97Ev();
extern void _ZN10S4677C2_nt3v98Ev();
extern void _ZN10S4677C2_nt3v99Ev();
extern void _ZN10S4677C2_nt4v100Ev();
extern void _ZN10S4677C2_nt4v101Ev();
extern void _ZN10S4677C2_nt4v102Ev();
extern void _ZN10S4677C2_nt4v103Ev();
extern void _ZN10S4677C2_nt4v104Ev();
extern void _ZN10S4677C2_nt4v105Ev();
extern void _ZN10S4677C2_nt4v106Ev();
extern void _ZN10S4677C2_nt4v107Ev();
extern void _ZN10S4677C2_nt4v108Ev();
extern void _ZN10S4677C2_nt4v109Ev();
extern void _ZN10S4677C2_nt4v110Ev();
extern void _ZN10S4677C2_nt4v111Ev();
extern void _ZN10S4677C2_nt4v112Ev();
extern void _ZN10S4677C2_nt4v113Ev();
extern void _ZN10S4677C2_nt4v114Ev();
extern void _ZN10S4677C2_nt4v115Ev();
extern void _ZN10S4677C2_nt4v116Ev();
extern void _ZN10S4677C2_nt4v117Ev();
extern void _ZN10S4677C2_nt4v118Ev();
extern void _ZN10S4677C2_nt4v119Ev();
extern void _ZN10S4677C2_nt4v120Ev();
extern void _ZN10S4677C2_nt4v121Ev();
extern void _ZN10S4677C2_nt4v122Ev();
extern void _ZN10S4677C2_nt4v123Ev();
extern void _ZN10S4677C2_nt4v124Ev();
extern void _ZN10S4677C2_nt4v125Ev();
extern void _ZN10S4677C2_nt4v126Ev();
extern void _ZN10S4677C2_nt4v127Ev();
extern void _ZN10S4677C2_nt4v128Ev();
extern void _ZN10S4677C2_nt4v129Ev();
static  VTBL_ENTRY vtc_S4677C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4677C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S4677C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v112Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v121Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v122Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v123Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v124Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v125Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v126Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v127Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v128Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v129Ev,
};
extern VTBL_ENTRY _ZTI10S4677C2_nt[];
VTBL_ENTRY *P__ZTI10S4677C2_nt = _ZTI10S4677C2_nt; 
extern  VTBL_ENTRY _ZTV10S4677C2_nt[];
Class_Descriptor cd_S4677C2_nt = {  "S4677C2_nt", // class name
  bases_S4677C2_nt, 1,
  &(vtc_S4677C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(832,632), // object size
  NSPAIRA(_ZTI10S4677C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S4677C2_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  S4677C38_nt  {
  virtual  ~S4677C38_nt(); // _ZN11S4677C38_ntD1Ev
  virtual void  v130(); // _ZN11S4677C38_nt4v130Ev
  virtual void  v131(); // _ZN11S4677C38_nt4v131Ev
  virtual void  v132(); // _ZN11S4677C38_nt4v132Ev
  virtual void  v133(); // _ZN11S4677C38_nt4v133Ev
  virtual void  v134(); // _ZN11S4677C38_nt4v134Ev
  virtual void  v135(); // _ZN11S4677C38_nt4v135Ev
  virtual void  v136(); // _ZN11S4677C38_nt4v136Ev
  virtual void  v137(); // _ZN11S4677C38_nt4v137Ev
  virtual void  v138(); // _ZN11S4677C38_nt4v138Ev
  virtual void  v139(); // _ZN11S4677C38_nt4v139Ev
  virtual void  v140(); // _ZN11S4677C38_nt4v140Ev
  virtual void  v141(); // _ZN11S4677C38_nt4v141Ev
  virtual void  v142(); // _ZN11S4677C38_nt4v142Ev
  virtual void  v143(); // _ZN11S4677C38_nt4v143Ev
  virtual void  v144(); // _ZN11S4677C38_nt4v144Ev
  virtual void  v145(); // _ZN11S4677C38_nt4v145Ev
  virtual void  v146(); // _ZN11S4677C38_nt4v146Ev
  virtual void  v147(); // _ZN11S4677C38_nt4v147Ev
  virtual void  v148(); // _ZN11S4677C38_nt4v148Ev
  virtual void  v149(); // _ZN11S4677C38_nt4v149Ev
  virtual void  v150(); // _ZN11S4677C38_nt4v150Ev
  virtual void  v151(); // _ZN11S4677C38_nt4v151Ev
  virtual void  v152(); // _ZN11S4677C38_nt4v152Ev
  virtual void  v153(); // _ZN11S4677C38_nt4v153Ev
  virtual void  v154(); // _ZN11S4677C38_nt4v154Ev
  virtual void  v155(); // _ZN11S4677C38_nt4v155Ev
  virtual void  v156(); // _ZN11S4677C38_nt4v156Ev
  S4677C38_nt(); // tgen
};
//SIG(-1 S4677C38_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}


 S4677C38_nt ::~S4677C38_nt(){ note_dtor("S4677C38_nt", this);}
void  S4677C38_nt ::v130(){vfunc_called(this, "_ZN11S4677C38_nt4v130Ev");}
void  S4677C38_nt ::v131(){vfunc_called(this, "_ZN11S4677C38_nt4v131Ev");}
void  S4677C38_nt ::v132(){vfunc_called(this, "_ZN11S4677C38_nt4v132Ev");}
void  S4677C38_nt ::v133(){vfunc_called(this, "_ZN11S4677C38_nt4v133Ev");}
void  S4677C38_nt ::v134(){vfunc_called(this, "_ZN11S4677C38_nt4v134Ev");}
void  S4677C38_nt ::v135(){vfunc_called(this, "_ZN11S4677C38_nt4v135Ev");}
void  S4677C38_nt ::v136(){vfunc_called(this, "_ZN11S4677C38_nt4v136Ev");}
void  S4677C38_nt ::v137(){vfunc_called(this, "_ZN11S4677C38_nt4v137Ev");}
void  S4677C38_nt ::v138(){vfunc_called(this, "_ZN11S4677C38_nt4v138Ev");}
void  S4677C38_nt ::v139(){vfunc_called(this, "_ZN11S4677C38_nt4v139Ev");}
void  S4677C38_nt ::v140(){vfunc_called(this, "_ZN11S4677C38_nt4v140Ev");}
void  S4677C38_nt ::v141(){vfunc_called(this, "_ZN11S4677C38_nt4v141Ev");}
void  S4677C38_nt ::v142(){vfunc_called(this, "_ZN11S4677C38_nt4v142Ev");}
void  S4677C38_nt ::v143(){vfunc_called(this, "_ZN11S4677C38_nt4v143Ev");}
void  S4677C38_nt ::v144(){vfunc_called(this, "_ZN11S4677C38_nt4v144Ev");}
void  S4677C38_nt ::v145(){vfunc_called(this, "_ZN11S4677C38_nt4v145Ev");}
void  S4677C38_nt ::v146(){vfunc_called(this, "_ZN11S4677C38_nt4v146Ev");}
void  S4677C38_nt ::v147(){vfunc_called(this, "_ZN11S4677C38_nt4v147Ev");}
void  S4677C38_nt ::v148(){vfunc_called(this, "_ZN11S4677C38_nt4v148Ev");}
void  S4677C38_nt ::v149(){vfunc_called(this, "_ZN11S4677C38_nt4v149Ev");}
void  S4677C38_nt ::v150(){vfunc_called(this, "_ZN11S4677C38_nt4v150Ev");}
void  S4677C38_nt ::v151(){vfunc_called(this, "_ZN11S4677C38_nt4v151Ev");}
void  S4677C38_nt ::v152(){vfunc_called(this, "_ZN11S4677C38_nt4v152Ev");}
void  S4677C38_nt ::v153(){vfunc_called(this, "_ZN11S4677C38_nt4v153Ev");}
void  S4677C38_nt ::v154(){vfunc_called(this, "_ZN11S4677C38_nt4v154Ev");}
void  S4677C38_nt ::v155(){vfunc_called(this, "_ZN11S4677C38_nt4v155Ev");}
void  S4677C38_nt ::v156(){vfunc_called(this, "_ZN11S4677C38_nt4v156Ev");}
S4677C38_nt ::S4677C38_nt(){ note_ctor("S4677C38_nt", this);} // tgen

//skip512 S4677C38_nt

#else // __cplusplus

extern void _ZN11S4677C38_ntC1Ev();
extern void _ZN11S4677C38_ntD1Ev();
Name_Map name_map_S4677C38_nt[] = {
  NSPAIR(_ZN11S4677C38_ntC1Ev),
  NSPAIR(_ZN11S4677C38_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S4677C38_nt[];
extern void _ZN11S4677C38_ntD1Ev();
extern void _ZN11S4677C38_ntD0Ev();
extern void _ZN11S4677C38_nt4v130Ev();
extern void _ZN11S4677C38_nt4v131Ev();
extern void _ZN11S4677C38_nt4v132Ev();
extern void _ZN11S4677C38_nt4v133Ev();
extern void _ZN11S4677C38_nt4v134Ev();
extern void _ZN11S4677C38_nt4v135Ev();
extern void _ZN11S4677C38_nt4v136Ev();
extern void _ZN11S4677C38_nt4v137Ev();
extern void _ZN11S4677C38_nt4v138Ev();
extern void _ZN11S4677C38_nt4v139Ev();
extern void _ZN11S4677C38_nt4v140Ev();
extern void _ZN11S4677C38_nt4v141Ev();
extern void _ZN11S4677C38_nt4v142Ev();
extern void _ZN11S4677C38_nt4v143Ev();
extern void _ZN11S4677C38_nt4v144Ev();
extern void _ZN11S4677C38_nt4v145Ev();
extern void _ZN11S4677C38_nt4v146Ev();
extern void _ZN11S4677C38_nt4v147Ev();
extern void _ZN11S4677C38_nt4v148Ev();
extern void _ZN11S4677C38_nt4v149Ev();
extern void _ZN11S4677C38_nt4v150Ev();
extern void _ZN11S4677C38_nt4v151Ev();
extern void _ZN11S4677C38_nt4v152Ev();
extern void _ZN11S4677C38_nt4v153Ev();
extern void _ZN11S4677C38_nt4v154Ev();
extern void _ZN11S4677C38_nt4v155Ev();
extern void _ZN11S4677C38_nt4v156Ev();
static  VTBL_ENTRY vtc_S4677C38_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S4677C38_nt[0]),
  (VTBL_ENTRY)&_ZN11S4677C38_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v130Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v131Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v132Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v133Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v134Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v135Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v136Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v137Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v138Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v139Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v140Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v141Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v142Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v143Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v144Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v145Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v146Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v147Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v148Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v149Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v150Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v151Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v152Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v153Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v154Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v155Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v156Ev,
};
extern VTBL_ENTRY _ZTI11S4677C38_nt[];
VTBL_ENTRY *P__ZTI11S4677C38_nt = _ZTI11S4677C38_nt; 
extern  VTBL_ENTRY _ZTV11S4677C38_nt[];
Class_Descriptor cd_S4677C38_nt = {  "S4677C38_nt", // class name
  0,0,//no base classes
  &(vtc_S4677C38_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S4677C38_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S4677C38_nt),31, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4677C1  : S4677C2_nt , S4677C38_nt {
  void *s4677c1f0[2];
  ::S4677C21 s4677c1f1;
  virtual  ~S4677C1(); // _ZN7S4677C1D1Ev
  virtual void  v1(); // _ZN7S4677C12v1Ev
  virtual void  v2(); // _ZN7S4677C12v2Ev
  virtual void  v3(); // _ZN7S4677C12v3Ev
  virtual void  v4(); // _ZN7S4677C12v4Ev
  virtual void  v5(); // _ZN7S4677C12v5Ev
  virtual void  v6(); // _ZN7S4677C12v6Ev
  virtual void  v7(); // _ZN7S4677C12v7Ev
  virtual void  v8(); // _ZN7S4677C12v8Ev
  virtual void  v9(); // _ZN7S4677C12v9Ev
  virtual void  v10(); // _ZN7S4677C13v10Ev
  virtual void  v11(); // _ZN7S4677C13v11Ev
  virtual void  v12(); // _ZN7S4677C13v12Ev
  virtual void  v13(); // _ZN7S4677C13v13Ev
  virtual void  v14(); // _ZN7S4677C13v14Ev
  virtual void  v15(); // _ZN7S4677C13v15Ev
  virtual void  v16(); // _ZN7S4677C13v16Ev
  virtual void  v17(); // _ZN7S4677C13v17Ev
  virtual void  v18(); // _ZN7S4677C13v18Ev
  virtual void  v19(); // _ZN7S4677C13v19Ev
  virtual void  v20(); // _ZN7S4677C13v20Ev
  virtual void  v21(); // _ZN7S4677C13v21Ev
  virtual void  v22(); // _ZN7S4677C13v22Ev
  virtual void  v23(); // _ZN7S4677C13v23Ev
  virtual void  v24(); // _ZN7S4677C13v24Ev
  virtual void  v25(); // _ZN7S4677C13v25Ev
  virtual void  v26(); // _ZN7S4677C13v26Ev
  virtual void  v27(); // _ZN7S4677C13v27Ev
  virtual void  v28(); // _ZN7S4677C13v28Ev
  S4677C1(); // tgen
};
//SIG(1 S4677C1) C1{ BC2{ BC3{ vd v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 Fp Fi FC4{ BC5{ m Fp Fi FC6{ m} FC6}} FC4 Fi} vd 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 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} BC22{ vd 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} 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 Fp[2] FC14}


 S4677C1 ::~S4677C1(){ note_dtor("S4677C1", this);}
void  S4677C1 ::v1(){vfunc_called(this, "_ZN7S4677C12v1Ev");}
void  S4677C1 ::v2(){vfunc_called(this, "_ZN7S4677C12v2Ev");}
void  S4677C1 ::v3(){vfunc_called(this, "_ZN7S4677C12v3Ev");}
void  S4677C1 ::v4(){vfunc_called(this, "_ZN7S4677C12v4Ev");}
void  S4677C1 ::v5(){vfunc_called(this, "_ZN7S4677C12v5Ev");}
void  S4677C1 ::v6(){vfunc_called(this, "_ZN7S4677C12v6Ev");}
void  S4677C1 ::v7(){vfunc_called(this, "_ZN7S4677C12v7Ev");}
void  S4677C1 ::v8(){vfunc_called(this, "_ZN7S4677C12v8Ev");}
void  S4677C1 ::v9(){vfunc_called(this, "_ZN7S4677C12v9Ev");}
void  S4677C1 ::v10(){vfunc_called(this, "_ZN7S4677C13v10Ev");}
void  S4677C1 ::v11(){vfunc_called(this, "_ZN7S4677C13v11Ev");}
void  S4677C1 ::v12(){vfunc_called(this, "_ZN7S4677C13v12Ev");}
void  S4677C1 ::v13(){vfunc_called(this, "_ZN7S4677C13v13Ev");}
void  S4677C1 ::v14(){vfunc_called(this, "_ZN7S4677C13v14Ev");}
void  S4677C1 ::v15(){vfunc_called(this, "_ZN7S4677C13v15Ev");}
void  S4677C1 ::v16(){vfunc_called(this, "_ZN7S4677C13v16Ev");}
void  S4677C1 ::v17(){vfunc_called(this, "_ZN7S4677C13v17Ev");}
void  S4677C1 ::v18(){vfunc_called(this, "_ZN7S4677C13v18Ev");}
void  S4677C1 ::v19(){vfunc_called(this, "_ZN7S4677C13v19Ev");}
void  S4677C1 ::v20(){vfunc_called(this, "_ZN7S4677C13v20Ev");}
void  S4677C1 ::v21(){vfunc_called(this, "_ZN7S4677C13v21Ev");}
void  S4677C1 ::v22(){vfunc_called(this, "_ZN7S4677C13v22Ev");}
void  S4677C1 ::v23(){vfunc_called(this, "_ZN7S4677C13v23Ev");}
void  S4677C1 ::v24(){vfunc_called(this, "_ZN7S4677C13v24Ev");}
void  S4677C1 ::v25(){vfunc_called(this, "_ZN7S4677C13v25Ev");}
void  S4677C1 ::v26(){vfunc_called(this, "_ZN7S4677C13v26Ev");}
void  S4677C1 ::v27(){vfunc_called(this, "_ZN7S4677C13v27Ev");}
void  S4677C1 ::v28(){vfunc_called(this, "_ZN7S4677C13v28Ev");}
S4677C1 ::S4677C1(){ note_ctor("S4677C1", this);} // tgen

static void Test_S4677C1()
{
  extern Class_Descriptor cd_S4677C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(110,165)];
    init_test(&cd_S4677C1, buf);
    S4677C1 *dp, &lv = *(dp=new (buf) S4677C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(872,656), "sizeof(S4677C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4677C1)");
    check_base_class_offset(lv, (S4677C3_nt*)(S4677C2_nt*), 0, "S4677C1");
    check_base_class_offset(lv, (S4677C2_nt*), 0, "S4677C1");
    check_base_class_offset(lv, (S4677C38_nt*), ABISELECT(832,632), "S4677C1");
    check_field_offset(lv, s4677c1f0, ABISELECT(840,636), "S4677C1.s4677c1f0");
    check_field_offset(lv, s4677c1f1, ABISELECT(856,644), "S4677C1.s4677c1f1");
    test_class_info(&lv, &cd_S4677C1);
    dp->~S4677C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4677C1(Test_S4677C1, "S4677C1", ABISELECT(872,656));

#else // __cplusplus

extern void _ZN7S4677C1C1Ev();
extern void _ZN7S4677C1D1Ev();
Name_Map name_map_S4677C1[] = {
  NSPAIR(_ZN7S4677C1C1Ev),
  NSPAIR(_ZN7S4677C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C3_nt;
extern VTBL_ENTRY _ZTI10S4677C3_nt[];
extern  VTBL_ENTRY _ZTV10S4677C3_nt[];
extern Class_Descriptor cd_S4677C2_nt;
extern VTBL_ENTRY _ZTI10S4677C2_nt[];
extern  VTBL_ENTRY _ZTV10S4677C2_nt[];
extern Class_Descriptor cd_S4677C38_nt;
extern VTBL_ENTRY _ZTI11S4677C38_nt[];
extern  VTBL_ENTRY _ZTV11S4677C38_nt[];
static Base_Class bases_S4677C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4677C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4677C38_nt,    ABISELECT(832,632), //bcp->offset
    133, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4677C1[];
extern void _ZN7S4677C1D1Ev();
extern void _ZN7S4677C1D0Ev();
extern void _ZN10S4677C3_nt3v29Ev();
extern void _ZN10S4677C3_nt3v30Ev();
extern void _ZN10S4677C3_nt3v31Ev();
extern void _ZN10S4677C3_nt3v32Ev();
extern void _ZN10S4677C3_nt3v33Ev();
extern void _ZN10S4677C3_nt3v34Ev();
extern void _ZN10S4677C3_nt3v35Ev();
extern void _ZN10S4677C3_nt3v36Ev();
extern void _ZN10S4677C3_nt3v37Ev();
extern void _ZN10S4677C3_nt3v38Ev();
extern void _ZN10S4677C3_nt3v39Ev();
extern void _ZN10S4677C3_nt3v40Ev();
extern void _ZN10S4677C3_nt3v41Ev();
extern void _ZN10S4677C3_nt3v42Ev();
extern void _ZN10S4677C3_nt3v43Ev();
extern void _ZN10S4677C3_nt3v44Ev();
extern void _ZN10S4677C3_nt3v45Ev();
extern void _ZN10S4677C3_nt3v46Ev();
extern void _ZN10S4677C3_nt3v47Ev();
extern void _ZN10S4677C3_nt3v48Ev();
extern void _ZN10S4677C3_nt3v49Ev();
extern void _ZN10S4677C3_nt3v50Ev();
extern void _ZN10S4677C3_nt3v51Ev();
extern void _ZN10S4677C2_nt3v52Ev();
extern void _ZN10S4677C2_nt3v53Ev();
extern void _ZN10S4677C2_nt3v54Ev();
extern void _ZN10S4677C2_nt3v55Ev();
extern void _ZN10S4677C2_nt3v56Ev();
extern void _ZN10S4677C2_nt3v57Ev();
extern void _ZN10S4677C2_nt3v58Ev();
extern void _ZN10S4677C2_nt3v59Ev();
extern void _ZN10S4677C2_nt3v60Ev();
extern void _ZN10S4677C2_nt3v61Ev();
extern void _ZN10S4677C2_nt3v62Ev();
extern void _ZN10S4677C2_nt3v63Ev();
extern void _ZN10S4677C2_nt3v64Ev();
extern void _ZN10S4677C2_nt3v65Ev();
extern void _ZN10S4677C2_nt3v66Ev();
extern void _ZN10S4677C2_nt3v67Ev();
extern void _ZN10S4677C2_nt3v68Ev();
extern void _ZN10S4677C2_nt3v69Ev();
extern void _ZN10S4677C2_nt3v70Ev();
extern void _ZN10S4677C2_nt3v71Ev();
extern void _ZN10S4677C2_nt3v72Ev();
extern void _ZN10S4677C2_nt3v73Ev();
extern void _ZN10S4677C2_nt3v74Ev();
extern void _ZN10S4677C2_nt3v75Ev();
extern void _ZN10S4677C2_nt3v76Ev();
extern void _ZN10S4677C2_nt3v77Ev();
extern void _ZN10S4677C2_nt3v78Ev();
extern void _ZN10S4677C2_nt3v79Ev();
extern void _ZN10S4677C2_nt3v80Ev();
extern void _ZN10S4677C2_nt3v81Ev();
extern void _ZN10S4677C2_nt3v82Ev();
extern void _ZN10S4677C2_nt3v83Ev();
extern void _ZN10S4677C2_nt3v84Ev();
extern void _ZN10S4677C2_nt3v85Ev();
extern void _ZN10S4677C2_nt3v86Ev();
extern void _ZN10S4677C2_nt3v87Ev();
extern void _ZN10S4677C2_nt3v88Ev();
extern void _ZN10S4677C2_nt3v89Ev();
extern void _ZN10S4677C2_nt3v90Ev();
extern void _ZN10S4677C2_nt3v91Ev();
extern void _ZN10S4677C2_nt3v92Ev();
extern void _ZN10S4677C2_nt3v93Ev();
extern void _ZN10S4677C2_nt3v94Ev();
extern void _ZN10S4677C2_nt3v95Ev();
extern void _ZN10S4677C2_nt3v96Ev();
extern void _ZN10S4677C2_nt3v97Ev();
extern void _ZN10S4677C2_nt3v98Ev();
extern void _ZN10S4677C2_nt3v99Ev();
extern void _ZN10S4677C2_nt4v100Ev();
extern void _ZN10S4677C2_nt4v101Ev();
extern void _ZN10S4677C2_nt4v102Ev();
extern void _ZN10S4677C2_nt4v103Ev();
extern void _ZN10S4677C2_nt4v104Ev();
extern void _ZN10S4677C2_nt4v105Ev();
extern void _ZN10S4677C2_nt4v106Ev();
extern void _ZN10S4677C2_nt4v107Ev();
extern void _ZN10S4677C2_nt4v108Ev();
extern void _ZN10S4677C2_nt4v109Ev();
extern void _ZN10S4677C2_nt4v110Ev();
extern void _ZN10S4677C2_nt4v111Ev();
extern void _ZN10S4677C2_nt4v112Ev();
extern void _ZN10S4677C2_nt4v113Ev();
extern void _ZN10S4677C2_nt4v114Ev();
extern void _ZN10S4677C2_nt4v115Ev();
extern void _ZN10S4677C2_nt4v116Ev();
extern void _ZN10S4677C2_nt4v117Ev();
extern void _ZN10S4677C2_nt4v118Ev();
extern void _ZN10S4677C2_nt4v119Ev();
extern void _ZN10S4677C2_nt4v120Ev();
extern void _ZN10S4677C2_nt4v121Ev();
extern void _ZN10S4677C2_nt4v122Ev();
extern void _ZN10S4677C2_nt4v123Ev();
extern void _ZN10S4677C2_nt4v124Ev();
extern void _ZN10S4677C2_nt4v125Ev();
extern void _ZN10S4677C2_nt4v126Ev();
extern void _ZN10S4677C2_nt4v127Ev();
extern void _ZN10S4677C2_nt4v128Ev();
extern void _ZN10S4677C2_nt4v129Ev();
extern void _ZN7S4677C12v1Ev();
extern void _ZN7S4677C12v2Ev();
extern void _ZN7S4677C12v3Ev();
extern void _ZN7S4677C12v4Ev();
extern void _ZN7S4677C12v5Ev();
extern void _ZN7S4677C12v6Ev();
extern void _ZN7S4677C12v7Ev();
extern void _ZN7S4677C12v8Ev();
extern void _ZN7S4677C12v9Ev();
extern void _ZN7S4677C13v10Ev();
extern void _ZN7S4677C13v11Ev();
extern void _ZN7S4677C13v12Ev();
extern void _ZN7S4677C13v13Ev();
extern void _ZN7S4677C13v14Ev();
extern void _ZN7S4677C13v15Ev();
extern void _ZN7S4677C13v16Ev();
extern void _ZN7S4677C13v17Ev();
extern void _ZN7S4677C13v18Ev();
extern void _ZN7S4677C13v19Ev();
extern void _ZN7S4677C13v20Ev();
extern void _ZN7S4677C13v21Ev();
extern void _ZN7S4677C13v22Ev();
extern void _ZN7S4677C13v23Ev();
extern void _ZN7S4677C13v24Ev();
extern void _ZN7S4677C13v25Ev();
extern void _ZN7S4677C13v26Ev();
extern void _ZN7S4677C13v27Ev();
extern void _ZN7S4677C13v28Ev();
extern void ABISELECT(_ZThn832_N7S4677C1D1Ev,_ZThn632_N7S4677C1D1Ev)();
extern void ABISELECT(_ZThn832_N7S4677C1D0Ev,_ZThn632_N7S4677C1D0Ev)();
extern void _ZN11S4677C38_nt4v130Ev();
extern void _ZN11S4677C38_nt4v131Ev();
extern void _ZN11S4677C38_nt4v132Ev();
extern void _ZN11S4677C38_nt4v133Ev();
extern void _ZN11S4677C38_nt4v134Ev();
extern void _ZN11S4677C38_nt4v135Ev();
extern void _ZN11S4677C38_nt4v136Ev();
extern void _ZN11S4677C38_nt4v137Ev();
extern void _ZN11S4677C38_nt4v138Ev();
extern void _ZN11S4677C38_nt4v139Ev();
extern void _ZN11S4677C38_nt4v140Ev();
extern void _ZN11S4677C38_nt4v141Ev();
extern void _ZN11S4677C38_nt4v142Ev();
extern void _ZN11S4677C38_nt4v143Ev();
extern void _ZN11S4677C38_nt4v144Ev();
extern void _ZN11S4677C38_nt4v145Ev();
extern void _ZN11S4677C38_nt4v146Ev();
extern void _ZN11S4677C38_nt4v147Ev();
extern void _ZN11S4677C38_nt4v148Ev();
extern void _ZN11S4677C38_nt4v149Ev();
extern void _ZN11S4677C38_nt4v150Ev();
extern void _ZN11S4677C38_nt4v151Ev();
extern void _ZN11S4677C38_nt4v152Ev();
extern void _ZN11S4677C38_nt4v153Ev();
extern void _ZN11S4677C38_nt4v154Ev();
extern void _ZN11S4677C38_nt4v155Ev();
extern void _ZN11S4677C38_nt4v156Ev();
static  VTBL_ENTRY vtc_S4677C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4677C1[0]),
  (VTBL_ENTRY)&_ZN7S4677C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4677C1D0Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S4677C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v112Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v121Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v122Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v123Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v124Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v125Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v126Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v127Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v128Ev,
  (VTBL_ENTRY)&_ZN10S4677C2_nt4v129Ev,
  (VTBL_ENTRY)&_ZN7S4677C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4677C12v2Ev,
  (VTBL_ENTRY)&_ZN7S4677C12v3Ev,
  (VTBL_ENTRY)&_ZN7S4677C12v4Ev,
  (VTBL_ENTRY)&_ZN7S4677C12v5Ev,
  (VTBL_ENTRY)&_ZN7S4677C12v6Ev,
  (VTBL_ENTRY)&_ZN7S4677C12v7Ev,
  (VTBL_ENTRY)&_ZN7S4677C12v8Ev,
  (VTBL_ENTRY)&_ZN7S4677C12v9Ev,
  (VTBL_ENTRY)&_ZN7S4677C13v10Ev,
  (VTBL_ENTRY)&_ZN7S4677C13v11Ev,
  (VTBL_ENTRY)&_ZN7S4677C13v12Ev,
  (VTBL_ENTRY)&_ZN7S4677C13v13Ev,
  (VTBL_ENTRY)&_ZN7S4677C13v14Ev,
  (VTBL_ENTRY)&_ZN7S4677C13v15Ev,
  (VTBL_ENTRY)&_ZN7S4677C13v16Ev,
  (VTBL_ENTRY)&_ZN7S4677C13v17Ev,
  (VTBL_ENTRY)&_ZN7S4677C13v18Ev,
  (VTBL_ENTRY)&_ZN7S4677C13v19Ev,
  (VTBL_ENTRY)&_ZN7S4677C13v20Ev,
  (VTBL_ENTRY)&_ZN7S4677C13v21Ev,
  (VTBL_ENTRY)&_ZN7S4677C13v22Ev,
  (VTBL_ENTRY)&_ZN7S4677C13v23Ev,
  (VTBL_ENTRY)&_ZN7S4677C13v24Ev,
  (VTBL_ENTRY)&_ZN7S4677C13v25Ev,
  (VTBL_ENTRY)&_ZN7S4677C13v26Ev,
  (VTBL_ENTRY)&_ZN7S4677C13v27Ev,
  (VTBL_ENTRY)&_ZN7S4677C13v28Ev,
  ABISELECT(-832,-632),
  (VTBL_ENTRY)&(_ZTI7S4677C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn832_N7S4677C1D1Ev,_ZThn632_N7S4677C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn832_N7S4677C1D0Ev,_ZThn632_N7S4677C1D0Ev),
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v130Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v131Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v132Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v133Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v134Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v135Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v136Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v137Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v138Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v139Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v140Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v141Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v142Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v143Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v144Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v145Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v146Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v147Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v148Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v149Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v150Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v151Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v152Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v153Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v154Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v155Ev,
  (VTBL_ENTRY)&_ZN11S4677C38_nt4v156Ev,
};
extern VTBL_ENTRY _ZTI7S4677C1[];
extern  VTBL_ENTRY _ZTV7S4677C1[];
Class_Descriptor cd_S4677C1 = {  "S4677C1", // class name
  bases_S4677C1, 3,
  &(vtc_S4677C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(872,656), // object size
  NSPAIRA(_ZTI7S4677C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S4677C1),164, //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  S16701C4_nt  {
  void *s16701c4f0;
  void  mf16701c4(); // _ZN11S16701C4_nt9mf16701c4Ev
};
//SIG(-1 S16701C4_nt) C1{ m Fp}


void  S16701C4_nt ::mf16701c4(){}

//skip512 S16701C4_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16701C3  {
  ::S16701C4_nt s16701c3f0;
  void  mf16701c3(); // _ZN8S16701C39mf16701c3Ev
};
//SIG(-1 S16701C3) C1{ m FC2{ m Fp}}


void  S16701C3 ::mf16701c3(){}

static void Test_S16701C3()
{
  {
    init_simple_test("S16701C3");
    S16701C3 lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S16701C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16701C3)");
    check_field_offset(lv, s16701c3f0, 0, "S16701C3.s16701c3f0");
  }
}
static Arrange_To_Call_Me vS16701C3(Test_S16701C3, "S16701C3", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16701C2  {
  ::S16701C3 s16701c2f0;
  void  mf16701c2(); // _ZN8S16701C29mf16701c2Ev
};
//SIG(-1 S16701C2) C1{ m FC2{ m FC3{ m Fp}}}


void  S16701C2 ::mf16701c2(){}

static void Test_S16701C2()
{
  {
    init_simple_test("S16701C2");
    S16701C2 lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S16701C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16701C2)");
    check_field_offset(lv, s16701c2f0, 0, "S16701C2.s16701c2f0");
  }
}
static Arrange_To_Call_Me vS16701C2(Test_S16701C2, "S16701C2", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16701C1  {
  int s16701c1f0;
  ::S16701C2 s16701c1f1;
  ::S16701C2 s16701c1f2;
  ::S16701C2 s16701c1f3;
  ::S16701C2 s16701c1f4;
  ::S16701C2 s16701c1f5;
  ::S16701C2 s16701c1f6;
  ::S16701C2 s16701c1f7;
  ::S16701C2 s16701c1f8;
  ::S16701C2 s16701c1f9;
  ::S16701C2 s16701c1f10;
  ::S16701C2 s16701c1f11;
  ::S16701C2 s16701c1f12;
  ::S16701C2 s16701c1f13;
  ::S16701C2 s16701c1f14;
  ::S16701C2 s16701c1f15;
  ::S16701C2 s16701c1f16;
  ::S16701C2 s16701c1f17;
  ::S16701C2 s16701c1f18;
  ::S16701C2 s16701c1f19;
  ::S16701C2 s16701c1f20;
  ::S16701C2 s16701c1f21;
  ::S16701C2 s16701c1f22;
  ::S16701C2 s16701c1f23;
  ::S16701C2 s16701c1f24;
  ::S16701C2 s16701c1f25;
  ::S16701C2 s16701c1f26;
  ::S16701C2 s16701c1f27;
  ::S16701C2 s16701c1f28;
  ::S16701C2 s16701c1f29;
  ::S16701C2 s16701c1f30;
  ::S16701C2 s16701c1f31;
  ::S16701C2 s16701c1f32;
  ::S16701C2 s16701c1f33;
  ::S16701C2 s16701c1f34;
  ::S16701C2 s16701c1f35;
  ::S16701C2 s16701c1f36;
  ::S16701C2 s16701c1f37;
  ::S16701C2 s16701c1f38;
  ::S16701C2 s16701c1f39;
  ::S16701C2 s16701c1f40;
  ::S16701C2 s16701c1f41;
  ::S16701C2 s16701c1f42;
  ::S16701C2 s16701c1f43;
  ::S16701C2 s16701c1f44;
  ::S16701C2 s16701c1f45;
  ::S16701C2 s16701c1f46;
  ::S16701C2 s16701c1f47;
  ::S16701C2 s16701c1f48;
  ::S16701C2 s16701c1f49;
  ::S16701C2 s16701c1f50;
  ::S16701C2 s16701c1f51;
  ::S16701C2 s16701c1f52;
  ::S16701C2 s16701c1f53;
  ::S16701C2 s16701c1f54;
  ::S16701C2 s16701c1f55;
  ::S16701C2 s16701c1f56;
  ::S16701C2 s16701c1f57;
  ::S16701C2 s16701c1f58;
  ::S16701C2 s16701c1f59;
  ::S16701C2 s16701c1f60;
  ::S16701C2 s16701c1f61;
  ::S16701C2 s16701c1f62;
  ::S16701C2 s16701c1f63;
  ::S16701C2 s16701c1f64;
  ::S16701C2 s16701c1f65;
  ::S16701C2 s16701c1f66;
  ::S16701C2 s16701c1f67;
  ::S16701C2 s16701c1f68;
  ::S16701C2 s16701c1f69;
  ::S16701C2 s16701c1f70;
  ::S16701C2 s16701c1f71;
  ::S16701C2 s16701c1f72;
  ::S16701C2 s16701c1f73;
  ::S16701C2 s16701c1f74;
  ::S16701C2 s16701c1f75;
  ::S16701C2 s16701c1f76;
  ::S16701C2 s16701c1f77;
  ::S16701C2 s16701c1f78;
  ::S16701C2 s16701c1f79;
  ::S16701C2 s16701c1f80;
  ::S16701C2 s16701c1f81;
  ::S16701C2 s16701c1f82;
  ::S16701C2 s16701c1f83;
  ::S16701C2 s16701c1f84;
  ::S16701C2 s16701c1f85;
  ::S16701C2 s16701c1f86;
  ::S16701C2 s16701c1f87;
  ::S16701C2 s16701c1f88;
  ::S16701C2 s16701c1f89;
  ::S16701C2 s16701c1f90;
  ::S16701C2 s16701c1f91;
  ::S16701C2 s16701c1f92;
  ::S16701C2 s16701c1f93;
  ::S16701C2 s16701c1f94;
  ::S16701C2 s16701c1f95;
  ::S16701C2 s16701c1f96;
  ::S16701C2 s16701c1f97;
  ::S16701C2 s16701c1f98;
  ::S16701C2 s16701c1f99;
  ::S16701C2 s16701c1f100;
  ::S16701C2 s16701c1f101;
  ::S16701C2 s16701c1f102;
  ::S16701C2 s16701c1f103;
  ::S16701C2 s16701c1f104;
  ::S16701C2 s16701c1f105;
  ::S16701C2 s16701c1f106;
  ::S16701C2 s16701c1f107;
  ::S16701C2 s16701c1f108;
  ::S16701C2 s16701c1f109;
  ::S16701C2 s16701c1f110;
  ::S16701C2 s16701c1f111;
  ::S16701C2 s16701c1f112;
  ::S16701C2 s16701c1f113;
  ::S16701C2 s16701c1f114;
  ::S16701C2 s16701c1f115;
  ::S16701C2 s16701c1f116;
  ::S16701C2 s16701c1f117;
  ::S16701C2 s16701c1f118;
  ::S16701C2 s16701c1f119;
  ::S16701C2 s16701c1f120;
  ::S16701C2 s16701c1f121;
  ::S16701C2 s16701c1f122;
  ::S16701C2 s16701c1f123;
  ::S16701C2 s16701c1f124;
  ::S16701C2 s16701c1f125;
  ::S16701C2 s16701c1f126;
  ::S16701C2 s16701c1f127;
  ::S16701C2 s16701c1f128;
  ::S16701C2 s16701c1f129;
  ::S16701C2 s16701c1f130;
  ::S16701C2 s16701c1f131;
  ::S16701C2 s16701c1f132;
  ::S16701C2 s16701c1f133;
  ::S16701C2 s16701c1f134;
  ::S16701C2 s16701c1f135;
  ::S16701C2 s16701c1f136;
  ::S16701C2 s16701c1f137;
  ::S16701C2 s16701c1f138;
  ::S16701C2 s16701c1f139;
  ::S16701C2 s16701c1f140;
  ::S16701C2 s16701c1f141;
  ::S16701C2 s16701c1f142;
  ::S16701C2 s16701c1f143;
  ::S16701C2 s16701c1f144;
  ::S16701C2 s16701c1f145;
  ::S16701C2 s16701c1f146;
  ::S16701C2 s16701c1f147;
  ::S16701C2 s16701c1f148;
  ::S16701C2 s16701c1f149;
  ::S16701C2 s16701c1f150;
  ::S16701C2 s16701c1f151;
  ::S16701C2 s16701c1f152;
  ::S16701C2 s16701c1f153;
  ::S16701C2 s16701c1f154;
  ::S16701C2 s16701c1f155;
  ::S16701C2 s16701c1f156;
  ::S16701C2 s16701c1f157;
  ::S16701C2 s16701c1f158;
  ::S16701C2 s16701c1f159;
  ::S16701C2 s16701c1f160;
  ::S16701C2 s16701c1f161;
  ::S16701C2 s16701c1f162;
  ::S16701C2 s16701c1f163;
  ::S16701C2 s16701c1f164;
  ::S16701C2 s16701c1f165;
  ::S16701C2 s16701c1f166;
  ::S16701C2 s16701c1f167;
  ::S16701C2 s16701c1f168;
  ::S16701C2 s16701c1f169;
  ::S16701C2 s16701c1f170;
  ::S16701C2 s16701c1f171;
  ::S16701C2 s16701c1f172;
  ::S16701C2 s16701c1f173;
  ::S16701C2 s16701c1f174;
  ::S16701C2 s16701c1f175;
  ::S16701C2 s16701c1f176;
  ::S16701C2 s16701c1f177;
  ::S16701C2 s16701c1f178;
  ::S16701C2 s16701c1f179;
  ::S16701C2 s16701c1f180;
  ::S16701C2 s16701c1f181;
  ::S16701C2 s16701c1f182;
  ::S16701C2 s16701c1f183;
  ::S16701C2 s16701c1f184;
  ::S16701C2 s16701c1f185;
  ::S16701C2 s16701c1f186;
  ::S16701C2 s16701c1f187;
  ::S16701C2 s16701c1f188;
  ::S16701C2 s16701c1f189;
  ::S16701C2 s16701c1f190;
  ::S16701C2 s16701c1f191;
  ::S16701C2 s16701c1f192;
  ::S16701C2 s16701c1f193;
  ::S16701C2 s16701c1f194;
  ::S16701C2 s16701c1f195;
  ::S16701C2 s16701c1f196;
  ::S16701C2 s16701c1f197;
  ::S16701C2 s16701c1f198;
  ::S16701C2 s16701c1f199;
  ::S16701C2 s16701c1f200;
  ::S16701C2 s16701c1f201;
  ::S16701C2 s16701c1f202;
  ::S16701C2 s16701c1f203;
  ::S16701C2 s16701c1f204;
  ::S16701C2 s16701c1f205;
  void  mf16701c1(); // _ZN8S16701C19mf16701c1Ev
};
//SIG(1 S16701C1) C1{ m Fi FC2{ m FC3{ m FC4{ m Fp}}} FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2 FC2}


void  S16701C1 ::mf16701c1(){}

static void Test_S16701C1()
{
  {
    init_simple_test("S16701C1");
    S16701C1 lv;
    check2(sizeof(lv), ABISELECT(1648,824), "sizeof(S16701C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16701C1)");
    check_field_offset(lv, s16701c1f0, 0, "S16701C1.s16701c1f0");
    check_field_offset(lv, s16701c1f1, ABISELECT(8,4), "S16701C1.s16701c1f1");
    check_field_offset(lv, s16701c1f2, ABISELECT(16,8), "S16701C1.s16701c1f2");
    check_field_offset(lv, s16701c1f3, ABISELECT(24,12), "S16701C1.s16701c1f3");
    check_field_offset(lv, s16701c1f4, ABISELECT(32,16), "S16701C1.s16701c1f4");
    check_field_offset(lv, s16701c1f5, ABISELECT(40,20), "S16701C1.s16701c1f5");
    check_field_offset(lv, s16701c1f6, ABISELECT(48,24), "S16701C1.s16701c1f6");
    check_field_offset(lv, s16701c1f7, ABISELECT(56,28), "S16701C1.s16701c1f7");
    check_field_offset(lv, s16701c1f8, ABISELECT(64,32), "S16701C1.s16701c1f8");
    check_field_offset(lv, s16701c1f9, ABISELECT(72,36), "S16701C1.s16701c1f9");
    check_field_offset(lv, s16701c1f10, ABISELECT(80,40), "S16701C1.s16701c1f10");
    check_field_offset(lv, s16701c1f11, ABISELECT(88,44), "S16701C1.s16701c1f11");
    check_field_offset(lv, s16701c1f12, ABISELECT(96,48), "S16701C1.s16701c1f12");
    check_field_offset(lv, s16701c1f13, ABISELECT(104,52), "S16701C1.s16701c1f13");
    check_field_offset(lv, s16701c1f14, ABISELECT(112,56), "S16701C1.s16701c1f14");
    check_field_offset(lv, s16701c1f15, ABISELECT(120,60), "S16701C1.s16701c1f15");
    check_field_offset(lv, s16701c1f16, ABISELECT(128,64), "S16701C1.s16701c1f16");
    check_field_offset(lv, s16701c1f17, ABISELECT(136,68), "S16701C1.s16701c1f17");
    check_field_offset(lv, s16701c1f18, ABISELECT(144,72), "S16701C1.s16701c1f18");
    check_field_offset(lv, s16701c1f19, ABISELECT(152,76), "S16701C1.s16701c1f19");
    check_field_offset(lv, s16701c1f20, ABISELECT(160,80), "S16701C1.s16701c1f20");
    check_field_offset(lv, s16701c1f21, ABISELECT(168,84), "S16701C1.s16701c1f21");
    check_field_offset(lv, s16701c1f22, ABISELECT(176,88), "S16701C1.s16701c1f22");
    check_field_offset(lv, s16701c1f23, ABISELECT(184,92), "S16701C1.s16701c1f23");
    check_field_offset(lv, s16701c1f24, ABISELECT(192,96), "S16701C1.s16701c1f24");
    check_field_offset(lv, s16701c1f25, ABISELECT(200,100), "S16701C1.s16701c1f25");
    check_field_offset(lv, s16701c1f26, ABISELECT(208,104), "S16701C1.s16701c1f26");
    check_field_offset(lv, s16701c1f27, ABISELECT(216,108), "S16701C1.s16701c1f27");
    check_field_offset(lv, s16701c1f28, ABISELECT(224,112), "S16701C1.s16701c1f28");
    check_field_offset(lv, s16701c1f29, ABISELECT(232,116), "S16701C1.s16701c1f29");
    check_field_offset(lv, s16701c1f30, ABISELECT(240,120), "S16701C1.s16701c1f30");
    check_field_offset(lv, s16701c1f31, ABISELECT(248,124), "S16701C1.s16701c1f31");
    check_field_offset(lv, s16701c1f32, ABISELECT(256,128), "S16701C1.s16701c1f32");
    check_field_offset(lv, s16701c1f33, ABISELECT(264,132), "S16701C1.s16701c1f33");
    check_field_offset(lv, s16701c1f34, ABISELECT(272,136), "S16701C1.s16701c1f34");
    check_field_offset(lv, s16701c1f35, ABISELECT(280,140), "S16701C1.s16701c1f35");
    check_field_offset(lv, s16701c1f36, ABISELECT(288,144), "S16701C1.s16701c1f36");
    check_field_offset(lv, s16701c1f37, ABISELECT(296,148), "S16701C1.s16701c1f37");
    check_field_offset(lv, s16701c1f38, ABISELECT(304,152), "S16701C1.s16701c1f38");
    check_field_offset(lv, s16701c1f39, ABISELECT(312,156), "S16701C1.s16701c1f39");
    check_field_offset(lv, s16701c1f40, ABISELECT(320,160), "S16701C1.s16701c1f40");
    check_field_offset(lv, s16701c1f41, ABISELECT(328,164), "S16701C1.s16701c1f41");
    check_field_offset(lv, s16701c1f42, ABISELECT(336,168), "S16701C1.s16701c1f42");
    check_field_offset(lv, s16701c1f43, ABISELECT(344,172), "S16701C1.s16701c1f43");
    check_field_offset(lv, s16701c1f44, ABISELECT(352,176), "S16701C1.s16701c1f44");
    check_field_offset(lv, s16701c1f45, ABISELECT(360,180), "S16701C1.s16701c1f45");
    check_field_offset(lv, s16701c1f46, ABISELECT(368,184), "S16701C1.s16701c1f46");
    check_field_offset(lv, s16701c1f47, ABISELECT(376,188), "S16701C1.s16701c1f47");
    check_field_offset(lv, s16701c1f48, ABISELECT(384,192), "S16701C1.s16701c1f48");
    check_field_offset(lv, s16701c1f49, ABISELECT(392,196), "S16701C1.s16701c1f49");
    check_field_offset(lv, s16701c1f50, ABISELECT(400,200), "S16701C1.s16701c1f50");
    check_field_offset(lv, s16701c1f51, ABISELECT(408,204), "S16701C1.s16701c1f51");
    check_field_offset(lv, s16701c1f52, ABISELECT(416,208), "S16701C1.s16701c1f52");
    check_field_offset(lv, s16701c1f53, ABISELECT(424,212), "S16701C1.s16701c1f53");
    check_field_offset(lv, s16701c1f54, ABISELECT(432,216), "S16701C1.s16701c1f54");
    check_field_offset(lv, s16701c1f55, ABISELECT(440,220), "S16701C1.s16701c1f55");
    check_field_offset(lv, s16701c1f56, ABISELECT(448,224), "S16701C1.s16701c1f56");
    check_field_offset(lv, s16701c1f57, ABISELECT(456,228), "S16701C1.s16701c1f57");
    check_field_offset(lv, s16701c1f58, ABISELECT(464,232), "S16701C1.s16701c1f58");
    check_field_offset(lv, s16701c1f59, ABISELECT(472,236), "S16701C1.s16701c1f59");
    check_field_offset(lv, s16701c1f60, ABISELECT(480,240), "S16701C1.s16701c1f60");
    check_field_offset(lv, s16701c1f61, ABISELECT(488,244), "S16701C1.s16701c1f61");
    check_field_offset(lv, s16701c1f62, ABISELECT(496,248), "S16701C1.s16701c1f62");
    check_field_offset(lv, s16701c1f63, ABISELECT(504,252), "S16701C1.s16701c1f63");
    check_field_offset(lv, s16701c1f64, ABISELECT(512,256), "S16701C1.s16701c1f64");
    check_field_offset(lv, s16701c1f65, ABISELECT(520,260), "S16701C1.s16701c1f65");
    check_field_offset(lv, s16701c1f66, ABISELECT(528,264), "S16701C1.s16701c1f66");
    check_field_offset(lv, s16701c1f67, ABISELECT(536,268), "S16701C1.s16701c1f67");
    check_field_offset(lv, s16701c1f68, ABISELECT(544,272), "S16701C1.s16701c1f68");
    check_field_offset(lv, s16701c1f69, ABISELECT(552,276), "S16701C1.s16701c1f69");
    check_field_offset(lv, s16701c1f70, ABISELECT(560,280), "S16701C1.s16701c1f70");
    check_field_offset(lv, s16701c1f71, ABISELECT(568,284), "S16701C1.s16701c1f71");
    check_field_offset(lv, s16701c1f72, ABISELECT(576,288), "S16701C1.s16701c1f72");
    check_field_offset(lv, s16701c1f73, ABISELECT(584,292), "S16701C1.s16701c1f73");
    check_field_offset(lv, s16701c1f74, ABISELECT(592,296), "S16701C1.s16701c1f74");
    check_field_offset(lv, s16701c1f75, ABISELECT(600,300), "S16701C1.s16701c1f75");
    check_field_offset(lv, s16701c1f76, ABISELECT(608,304), "S16701C1.s16701c1f76");
    check_field_offset(lv, s16701c1f77, ABISELECT(616,308), "S16701C1.s16701c1f77");
    check_field_offset(lv, s16701c1f78, ABISELECT(624,312), "S16701C1.s16701c1f78");
    check_field_offset(lv, s16701c1f79, ABISELECT(632,316), "S16701C1.s16701c1f79");
    check_field_offset(lv, s16701c1f80, ABISELECT(640,320), "S16701C1.s16701c1f80");
    check_field_offset(lv, s16701c1f81, ABISELECT(648,324), "S16701C1.s16701c1f81");
    check_field_offset(lv, s16701c1f82, ABISELECT(656,328), "S16701C1.s16701c1f82");
    check_field_offset(lv, s16701c1f83, ABISELECT(664,332), "S16701C1.s16701c1f83");
    check_field_offset(lv, s16701c1f84, ABISELECT(672,336), "S16701C1.s16701c1f84");
    check_field_offset(lv, s16701c1f85, ABISELECT(680,340), "S16701C1.s16701c1f85");
    check_field_offset(lv, s16701c1f86, ABISELECT(688,344), "S16701C1.s16701c1f86");
    check_field_offset(lv, s16701c1f87, ABISELECT(696,348), "S16701C1.s16701c1f87");
    check_field_offset(lv, s16701c1f88, ABISELECT(704,352), "S16701C1.s16701c1f88");
    check_field_offset(lv, s16701c1f89, ABISELECT(712,356), "S16701C1.s16701c1f89");
    check_field_offset(lv, s16701c1f90, ABISELECT(720,360), "S16701C1.s16701c1f90");
    check_field_offset(lv, s16701c1f91, ABISELECT(728,364), "S16701C1.s16701c1f91");
    check_field_offset(lv, s16701c1f92, ABISELECT(736,368), "S16701C1.s16701c1f92");
    check_field_offset(lv, s16701c1f93, ABISELECT(744,372), "S16701C1.s16701c1f93");
    check_field_offset(lv, s16701c1f94, ABISELECT(752,376), "S16701C1.s16701c1f94");
    check_field_offset(lv, s16701c1f95, ABISELECT(760,380), "S16701C1.s16701c1f95");
    check_field_offset(lv, s16701c1f96, ABISELECT(768,384), "S16701C1.s16701c1f96");
    check_field_offset(lv, s16701c1f97, ABISELECT(776,388), "S16701C1.s16701c1f97");
    check_field_offset(lv, s16701c1f98, ABISELECT(784,392), "S16701C1.s16701c1f98");
    check_field_offset(lv, s16701c1f99, ABISELECT(792,396), "S16701C1.s16701c1f99");
    check_field_offset(lv, s16701c1f100, ABISELECT(800,400), "S16701C1.s16701c1f100");
    check_field_offset(lv, s16701c1f101, ABISELECT(808,404), "S16701C1.s16701c1f101");
    check_field_offset(lv, s16701c1f102, ABISELECT(816,408), "S16701C1.s16701c1f102");
    check_field_offset(lv, s16701c1f103, ABISELECT(824,412), "S16701C1.s16701c1f103");
    check_field_offset(lv, s16701c1f104, ABISELECT(832,416), "S16701C1.s16701c1f104");
    check_field_offset(lv, s16701c1f105, ABISELECT(840,420), "S16701C1.s16701c1f105");
    check_field_offset(lv, s16701c1f106, ABISELECT(848,424), "S16701C1.s16701c1f106");
    check_field_offset(lv, s16701c1f107, ABISELECT(856,428), "S16701C1.s16701c1f107");
    check_field_offset(lv, s16701c1f108, ABISELECT(864,432), "S16701C1.s16701c1f108");
    check_field_offset(lv, s16701c1f109, ABISELECT(872,436), "S16701C1.s16701c1f109");
    check_field_offset(lv, s16701c1f110, ABISELECT(880,440), "S16701C1.s16701c1f110");
    check_field_offset(lv, s16701c1f111, ABISELECT(888,444), "S16701C1.s16701c1f111");
    check_field_offset(lv, s16701c1f112, ABISELECT(896,448), "S16701C1.s16701c1f112");
    check_field_offset(lv, s16701c1f113, ABISELECT(904,452), "S16701C1.s16701c1f113");
    check_field_offset(lv, s16701c1f114, ABISELECT(912,456), "S16701C1.s16701c1f114");
    check_field_offset(lv, s16701c1f115, ABISELECT(920,460), "S16701C1.s16701c1f115");
    check_field_offset(lv, s16701c1f116, ABISELECT(928,464), "S16701C1.s16701c1f116");
    check_field_offset(lv, s16701c1f117, ABISELECT(936,468), "S16701C1.s16701c1f117");
    check_field_offset(lv, s16701c1f118, ABISELECT(944,472), "S16701C1.s16701c1f118");
    check_field_offset(lv, s16701c1f119, ABISELECT(952,476), "S16701C1.s16701c1f119");
    check_field_offset(lv, s16701c1f120, ABISELECT(960,480), "S16701C1.s16701c1f120");
    check_field_offset(lv, s16701c1f121, ABISELECT(968,484), "S16701C1.s16701c1f121");
    check_field_offset(lv, s16701c1f122, ABISELECT(976,488), "S16701C1.s16701c1f122");
    check_field_offset(lv, s16701c1f123, ABISELECT(984,492), "S16701C1.s16701c1f123");
    check_field_offset(lv, s16701c1f124, ABISELECT(992,496), "S16701C1.s16701c1f124");
    check_field_offset(lv, s16701c1f125, ABISELECT(1000,500), "S16701C1.s16701c1f125");
    check_field_offset(lv, s16701c1f126, ABISELECT(1008,504), "S16701C1.s16701c1f126");
    check_field_offset(lv, s16701c1f127, ABISELECT(1016,508), "S16701C1.s16701c1f127");
    check_field_offset(lv, s16701c1f128, ABISELECT(1024,512), "S16701C1.s16701c1f128");
    check_field_offset(lv, s16701c1f129, ABISELECT(1032,516), "S16701C1.s16701c1f129");
    check_field_offset(lv, s16701c1f130, ABISELECT(1040,520), "S16701C1.s16701c1f130");
    check_field_offset(lv, s16701c1f131, ABISELECT(1048,524), "S16701C1.s16701c1f131");
    check_field_offset(lv, s16701c1f132, ABISELECT(1056,528), "S16701C1.s16701c1f132");
    check_field_offset(lv, s16701c1f133, ABISELECT(1064,532), "S16701C1.s16701c1f133");
    check_field_offset(lv, s16701c1f134, ABISELECT(1072,536), "S16701C1.s16701c1f134");
    check_field_offset(lv, s16701c1f135, ABISELECT(1080,540), "S16701C1.s16701c1f135");
    check_field_offset(lv, s16701c1f136, ABISELECT(1088,544), "S16701C1.s16701c1f136");
    check_field_offset(lv, s16701c1f137, ABISELECT(1096,548), "S16701C1.s16701c1f137");
    check_field_offset(lv, s16701c1f138, ABISELECT(1104,552), "S16701C1.s16701c1f138");
    check_field_offset(lv, s16701c1f139, ABISELECT(1112,556), "S16701C1.s16701c1f139");
    check_field_offset(lv, s16701c1f140, ABISELECT(1120,560), "S16701C1.s16701c1f140");
    check_field_offset(lv, s16701c1f141, ABISELECT(1128,564), "S16701C1.s16701c1f141");
    check_field_offset(lv, s16701c1f142, ABISELECT(1136,568), "S16701C1.s16701c1f142");
    check_field_offset(lv, s16701c1f143, ABISELECT(1144,572), "S16701C1.s16701c1f143");
    check_field_offset(lv, s16701c1f144, ABISELECT(1152,576), "S16701C1.s16701c1f144");
    check_field_offset(lv, s16701c1f145, ABISELECT(1160,580), "S16701C1.s16701c1f145");
    check_field_offset(lv, s16701c1f146, ABISELECT(1168,584), "S16701C1.s16701c1f146");
    check_field_offset(lv, s16701c1f147, ABISELECT(1176,588), "S16701C1.s16701c1f147");
    check_field_offset(lv, s16701c1f148, ABISELECT(1184,592), "S16701C1.s16701c1f148");
    check_field_offset(lv, s16701c1f149, ABISELECT(1192,596), "S16701C1.s16701c1f149");
    check_field_offset(lv, s16701c1f150, ABISELECT(1200,600), "S16701C1.s16701c1f150");
    check_field_offset(lv, s16701c1f151, ABISELECT(1208,604), "S16701C1.s16701c1f151");
    check_field_offset(lv, s16701c1f152, ABISELECT(1216,608), "S16701C1.s16701c1f152");
    check_field_offset(lv, s16701c1f153, ABISELECT(1224,612), "S16701C1.s16701c1f153");
    check_field_offset(lv, s16701c1f154, ABISELECT(1232,616), "S16701C1.s16701c1f154");
    check_field_offset(lv, s16701c1f155, ABISELECT(1240,620), "S16701C1.s16701c1f155");
    check_field_offset(lv, s16701c1f156, ABISELECT(1248,624), "S16701C1.s16701c1f156");
    check_field_offset(lv, s16701c1f157, ABISELECT(1256,628), "S16701C1.s16701c1f157");
    check_field_offset(lv, s16701c1f158, ABISELECT(1264,632), "S16701C1.s16701c1f158");
    check_field_offset(lv, s16701c1f159, ABISELECT(1272,636), "S16701C1.s16701c1f159");
    check_field_offset(lv, s16701c1f160, ABISELECT(1280,640), "S16701C1.s16701c1f160");
    check_field_offset(lv, s16701c1f161, ABISELECT(1288,644), "S16701C1.s16701c1f161");
    check_field_offset(lv, s16701c1f162, ABISELECT(1296,648), "S16701C1.s16701c1f162");
    check_field_offset(lv, s16701c1f163, ABISELECT(1304,652), "S16701C1.s16701c1f163");
    check_field_offset(lv, s16701c1f164, ABISELECT(1312,656), "S16701C1.s16701c1f164");
    check_field_offset(lv, s16701c1f165, ABISELECT(1320,660), "S16701C1.s16701c1f165");
    check_field_offset(lv, s16701c1f166, ABISELECT(1328,664), "S16701C1.s16701c1f166");
    check_field_offset(lv, s16701c1f167, ABISELECT(1336,668), "S16701C1.s16701c1f167");
    check_field_offset(lv, s16701c1f168, ABISELECT(1344,672), "S16701C1.s16701c1f168");
    check_field_offset(lv, s16701c1f169, ABISELECT(1352,676), "S16701C1.s16701c1f169");
    check_field_offset(lv, s16701c1f170, ABISELECT(1360,680), "S16701C1.s16701c1f170");
    check_field_offset(lv, s16701c1f171, ABISELECT(1368,684), "S16701C1.s16701c1f171");
    check_field_offset(lv, s16701c1f172, ABISELECT(1376,688), "S16701C1.s16701c1f172");
    check_field_offset(lv, s16701c1f173, ABISELECT(1384,692), "S16701C1.s16701c1f173");
    check_field_offset(lv, s16701c1f174, ABISELECT(1392,696), "S16701C1.s16701c1f174");
    check_field_offset(lv, s16701c1f175, ABISELECT(1400,700), "S16701C1.s16701c1f175");
    check_field_offset(lv, s16701c1f176, ABISELECT(1408,704), "S16701C1.s16701c1f176");
    check_field_offset(lv, s16701c1f177, ABISELECT(1416,708), "S16701C1.s16701c1f177");
    check_field_offset(lv, s16701c1f178, ABISELECT(1424,712), "S16701C1.s16701c1f178");
    check_field_offset(lv, s16701c1f179, ABISELECT(1432,716), "S16701C1.s16701c1f179");
    check_field_offset(lv, s16701c1f180, ABISELECT(1440,720), "S16701C1.s16701c1f180");
    check_field_offset(lv, s16701c1f181, ABISELECT(1448,724), "S16701C1.s16701c1f181");
    check_field_offset(lv, s16701c1f182, ABISELECT(1456,728), "S16701C1.s16701c1f182");
    check_field_offset(lv, s16701c1f183, ABISELECT(1464,732), "S16701C1.s16701c1f183");
    check_field_offset(lv, s16701c1f184, ABISELECT(1472,736), "S16701C1.s16701c1f184");
    check_field_offset(lv, s16701c1f185, ABISELECT(1480,740), "S16701C1.s16701c1f185");
    check_field_offset(lv, s16701c1f186, ABISELECT(1488,744), "S16701C1.s16701c1f186");
    check_field_offset(lv, s16701c1f187, ABISELECT(1496,748), "S16701C1.s16701c1f187");
    check_field_offset(lv, s16701c1f188, ABISELECT(1504,752), "S16701C1.s16701c1f188");
    check_field_offset(lv, s16701c1f189, ABISELECT(1512,756), "S16701C1.s16701c1f189");
    check_field_offset(lv, s16701c1f190, ABISELECT(1520,760), "S16701C1.s16701c1f190");
    check_field_offset(lv, s16701c1f191, ABISELECT(1528,764), "S16701C1.s16701c1f191");
    check_field_offset(lv, s16701c1f192, ABISELECT(1536,768), "S16701C1.s16701c1f192");
    check_field_offset(lv, s16701c1f193, ABISELECT(1544,772), "S16701C1.s16701c1f193");
    check_field_offset(lv, s16701c1f194, ABISELECT(1552,776), "S16701C1.s16701c1f194");
    check_field_offset(lv, s16701c1f195, ABISELECT(1560,780), "S16701C1.s16701c1f195");
    check_field_offset(lv, s16701c1f196, ABISELECT(1568,784), "S16701C1.s16701c1f196");
    check_field_offset(lv, s16701c1f197, ABISELECT(1576,788), "S16701C1.s16701c1f197");
    check_field_offset(lv, s16701c1f198, ABISELECT(1584,792), "S16701C1.s16701c1f198");
    check_field_offset(lv, s16701c1f199, ABISELECT(1592,796), "S16701C1.s16701c1f199");
    check_field_offset(lv, s16701c1f200, ABISELECT(1600,800), "S16701C1.s16701c1f200");
    check_field_offset(lv, s16701c1f201, ABISELECT(1608,804), "S16701C1.s16701c1f201");
    check_field_offset(lv, s16701c1f202, ABISELECT(1616,808), "S16701C1.s16701c1f202");
    check_field_offset(lv, s16701c1f203, ABISELECT(1624,812), "S16701C1.s16701c1f203");
    check_field_offset(lv, s16701c1f204, ABISELECT(1632,816), "S16701C1.s16701c1f204");
    check_field_offset(lv, s16701c1f205, ABISELECT(1640,820), "S16701C1.s16701c1f205");
  }
}
static Arrange_To_Call_Me vS16701C1(Test_S16701C1, "S16701C1", ABISELECT(1648,824));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S75C7  {
  int s75c7f0;
  __tsi64 s75c7f1;
  void *s75c7f2[4];
  int s75c7f3[2];
  void *s75c7f4;
  ::S3216C4_nt s75c7f5;
  void *s75c7f6[2];
  virtual  ~S75C7(); // _ZN5S75C7D1Ev
  virtual void  v4(); // _ZN5S75C72v4Ev
  virtual void  v5(); // _ZN5S75C72v5Ev
  virtual void  v6(); // _ZN5S75C72v6Ev
  virtual void  v7(); // _ZN5S75C72v7Ev
  virtual void  v8(); // _ZN5S75C72v8Ev
  virtual void  v9(); // _ZN5S75C72v9Ev
  virtual void  v10(); // _ZN5S75C73v10Ev
  virtual void  v11(); // _ZN5S75C73v11Ev
  virtual void  v12(); // _ZN5S75C73v12Ev
  virtual void  v13(); // _ZN5S75C73v13Ev
  virtual void  v14(); // _ZN5S75C73v14Ev
  virtual void  v15(); // _ZN5S75C73v15Ev
  virtual void  v16(); // _ZN5S75C73v16Ev
  virtual void  v17(); // _ZN5S75C73v17Ev
  virtual void  v18(); // _ZN5S75C73v18Ev
  virtual void  v19(); // _ZN5S75C73v19Ev
  virtual void  v20(); // _ZN5S75C73v20Ev
  virtual void  v21(); // _ZN5S75C73v21Ev
  virtual void  v22(); // _ZN5S75C73v22Ev
  virtual void  v23(); // _ZN5S75C73v23Ev
  virtual void  v24(); // _ZN5S75C73v24Ev
  virtual void  v25(); // _ZN5S75C73v25Ev
  virtual void  v26(); // _ZN5S75C73v26Ev
  virtual void  v27(); // _ZN5S75C73v27Ev
  virtual void  v28(); // _ZN5S75C73v28Ev
  virtual void  v29(); // _ZN5S75C73v29Ev
  virtual void  v30(); // _ZN5S75C73v30Ev
  virtual void  v31(); // _ZN5S75C73v31Ev
  virtual void  v32(); // _ZN5S75C73v32Ev
  virtual void  v33(); // _ZN5S75C73v33Ev
  virtual void  v34(); // _ZN5S75C73v34Ev
  virtual void  v35(); // _ZN5S75C73v35Ev
  virtual void  v36(); // _ZN5S75C73v36Ev
  virtual void  v37(); // _ZN5S75C73v37Ev
  virtual void  v38(); // _ZN5S75C73v38Ev
  virtual void  v39(); // _ZN5S75C73v39Ev
  virtual void  v40(); // _ZN5S75C73v40Ev
  virtual void  v41(); // _ZN5S75C73v41Ev
  virtual void  v42(); // _ZN5S75C73v42Ev
  virtual void  v43(); // _ZN5S75C73v43Ev
  virtual void  v44(); // _ZN5S75C73v44Ev
  virtual void  v45(); // _ZN5S75C73v45Ev
  virtual void  v46(); // _ZN5S75C73v46Ev
  virtual void  v47(); // _ZN5S75C73v47Ev
  virtual void  v48(); // _ZN5S75C73v48Ev
  virtual void  v49(); // _ZN5S75C73v49Ev
  virtual void  v50(); // _ZN5S75C73v50Ev
  virtual void  v51(); // _ZN5S75C73v51Ev
  virtual void  v52(); // _ZN5S75C73v52Ev
  virtual void  v53(); // _ZN5S75C73v53Ev
  virtual void  v54(); // _ZN5S75C73v54Ev
  virtual void  v55(); // _ZN5S75C73v55Ev
  virtual void  v56(); // _ZN5S75C73v56Ev
  virtual void  v57(); // _ZN5S75C73v57Ev
  virtual void  v58(); // _ZN5S75C73v58Ev
  virtual void  v59(); // _ZN5S75C73v59Ev
  virtual void  v60(); // _ZN5S75C73v60Ev
  virtual void  v61(); // _ZN5S75C73v61Ev
  virtual void  v62(); // _ZN5S75C73v62Ev
  virtual void  v63(); // _ZN5S75C73v63Ev
  virtual void  v64(); // _ZN5S75C73v64Ev
  virtual void  v65(); // _ZN5S75C73v65Ev
  virtual void  v66(); // _ZN5S75C73v66Ev
  virtual void  v67(); // _ZN5S75C73v67Ev
  S75C7(); // tgen
};
//SIG(-1 S75C7) 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]}


 S75C7 ::~S75C7(){ note_dtor("S75C7", this);}
void  S75C7 ::v4(){vfunc_called(this, "_ZN5S75C72v4Ev");}
void  S75C7 ::v5(){vfunc_called(this, "_ZN5S75C72v5Ev");}
void  S75C7 ::v6(){vfunc_called(this, "_ZN5S75C72v6Ev");}
void  S75C7 ::v7(){vfunc_called(this, "_ZN5S75C72v7Ev");}
void  S75C7 ::v8(){vfunc_called(this, "_ZN5S75C72v8Ev");}
void  S75C7 ::v9(){vfunc_called(this, "_ZN5S75C72v9Ev");}
void  S75C7 ::v10(){vfunc_called(this, "_ZN5S75C73v10Ev");}
void  S75C7 ::v11(){vfunc_called(this, "_ZN5S75C73v11Ev");}
void  S75C7 ::v12(){vfunc_called(this, "_ZN5S75C73v12Ev");}
void  S75C7 ::v13(){vfunc_called(this, "_ZN5S75C73v13Ev");}
void  S75C7 ::v14(){vfunc_called(this, "_ZN5S75C73v14Ev");}
void  S75C7 ::v15(){vfunc_called(this, "_ZN5S75C73v15Ev");}
void  S75C7 ::v16(){vfunc_called(this, "_ZN5S75C73v16Ev");}
void  S75C7 ::v17(){vfunc_called(this, "_ZN5S75C73v17Ev");}
void  S75C7 ::v18(){vfunc_called(this, "_ZN5S75C73v18Ev");}
void  S75C7 ::v19(){vfunc_called(this, "_ZN5S75C73v19Ev");}
void  S75C7 ::v20(){vfunc_called(this, "_ZN5S75C73v20Ev");}
void  S75C7 ::v21(){vfunc_called(this, "_ZN5S75C73v21Ev");}
void  S75C7 ::v22(){vfunc_called(this, "_ZN5S75C73v22Ev");}
void  S75C7 ::v23(){vfunc_called(this, "_ZN5S75C73v23Ev");}
void  S75C7 ::v24(){vfunc_called(this, "_ZN5S75C73v24Ev");}
void  S75C7 ::v25(){vfunc_called(this, "_ZN5S75C73v25Ev");}
void  S75C7 ::v26(){vfunc_called(this, "_ZN5S75C73v26Ev");}
void  S75C7 ::v27(){vfunc_called(this, "_ZN5S75C73v27Ev");}
void  S75C7 ::v28(){vfunc_called(this, "_ZN5S75C73v28Ev");}
void  S75C7 ::v29(){vfunc_called(this, "_ZN5S75C73v29Ev");}
void  S75C7 ::v30(){vfunc_called(this, "_ZN5S75C73v30Ev");}
void  S75C7 ::v31(){vfunc_called(this, "_ZN5S75C73v31Ev");}
void  S75C7 ::v32(){vfunc_called(this, "_ZN5S75C73v32Ev");}
void  S75C7 ::v33(){vfunc_called(this, "_ZN5S75C73v33Ev");}
void  S75C7 ::v34(){vfunc_called(this, "_ZN5S75C73v34Ev");}
void  S75C7 ::v35(){vfunc_called(this, "_ZN5S75C73v35Ev");}
void  S75C7 ::v36(){vfunc_called(this, "_ZN5S75C73v36Ev");}
void  S75C7 ::v37(){vfunc_called(this, "_ZN5S75C73v37Ev");}
void  S75C7 ::v38(){vfunc_called(this, "_ZN5S75C73v38Ev");}
void  S75C7 ::v39(){vfunc_called(this, "_ZN5S75C73v39Ev");}
void  S75C7 ::v40(){vfunc_called(this, "_ZN5S75C73v40Ev");}
void  S75C7 ::v41(){vfunc_called(this, "_ZN5S75C73v41Ev");}
void  S75C7 ::v42(){vfunc_called(this, "_ZN5S75C73v42Ev");}
void  S75C7 ::v43(){vfunc_called(this, "_ZN5S75C73v43Ev");}
void  S75C7 ::v44(){vfunc_called(this, "_ZN5S75C73v44Ev");}
void  S75C7 ::v45(){vfunc_called(this, "_ZN5S75C73v45Ev");}
void  S75C7 ::v46(){vfunc_called(this, "_ZN5S75C73v46Ev");}
void  S75C7 ::v47(){vfunc_called(this, "_ZN5S75C73v47Ev");}
void  S75C7 ::v48(){vfunc_called(this, "_ZN5S75C73v48Ev");}
void  S75C7 ::v49(){vfunc_called(this, "_ZN5S75C73v49Ev");}
void  S75C7 ::v50(){vfunc_called(this, "_ZN5S75C73v50Ev");}
void  S75C7 ::v51(){vfunc_called(this, "_ZN5S75C73v51Ev");}
void  S75C7 ::v52(){vfunc_called(this, "_ZN5S75C73v52Ev");}
void  S75C7 ::v53(){vfunc_called(this, "_ZN5S75C73v53Ev");}
void  S75C7 ::v54(){vfunc_called(this, "_ZN5S75C73v54Ev");}
void  S75C7 ::v55(){vfunc_called(this, "_ZN5S75C73v55Ev");}
void  S75C7 ::v56(){vfunc_called(this, "_ZN5S75C73v56Ev");}
void  S75C7 ::v57(){vfunc_called(this, "_ZN5S75C73v57Ev");}
void  S75C7 ::v58(){vfunc_called(this, "_ZN5S75C73v58Ev");}
void  S75C7 ::v59(){vfunc_called(this, "_ZN5S75C73v59Ev");}
void  S75C7 ::v60(){vfunc_called(this, "_ZN5S75C73v60Ev");}
void  S75C7 ::v61(){vfunc_called(this, "_ZN5S75C73v61Ev");}
void  S75C7 ::v62(){vfunc_called(this, "_ZN5S75C73v62Ev");}
void  S75C7 ::v63(){vfunc_called(this, "_ZN5S75C73v63Ev");}
void  S75C7 ::v64(){vfunc_called(this, "_ZN5S75C73v64Ev");}
void  S75C7 ::v65(){vfunc_called(this, "_ZN5S75C73v65Ev");}
void  S75C7 ::v66(){vfunc_called(this, "_ZN5S75C73v66Ev");}
void  S75C7 ::v67(){vfunc_called(this, "_ZN5S75C73v67Ev");}
S75C7 ::S75C7(){ note_ctor("S75C7", this);} // tgen

static void Test_S75C7()
{
  extern Class_Descriptor cd_S75C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S75C7, buf);
    S75C7 *dp, &lv = *(dp=new (buf) S75C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S75C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S75C7)");
    check_field_offset(lv, s75c7f0, ABISELECT(8,4), "S75C7.s75c7f0");
    check_field_offset(lv, s75c7f1, ABISELECT(16,8), "S75C7.s75c7f1");
    check_field_offset(lv, s75c7f2, ABISELECT(24,16), "S75C7.s75c7f2");
    check_field_offset(lv, s75c7f3, ABISELECT(56,32), "S75C7.s75c7f3");
    check_field_offset(lv, s75c7f4, ABISELECT(64,40), "S75C7.s75c7f4");
    check_field_offset(lv, s75c7f5, ABISELECT(72,44), "S75C7.s75c7f5");
    check_field_offset(lv, s75c7f6, ABISELECT(80,52), "S75C7.s75c7f6");
    test_class_info(&lv, &cd_S75C7);
    dp->~S75C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS75C7(Test_S75C7, "S75C7", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN5S75C7C1Ev();
extern void _ZN5S75C7D1Ev();
Name_Map name_map_S75C7[] = {
  NSPAIR(_ZN5S75C7C1Ev),
  NSPAIR(_ZN5S75C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI5S75C7[];
extern void _ZN5S75C7D1Ev();
extern void _ZN5S75C7D0Ev();
extern void _ZN5S75C72v4Ev();
extern void _ZN5S75C72v5Ev();
extern void _ZN5S75C72v6Ev();
extern void _ZN5S75C72v7Ev();
extern void _ZN5S75C72v8Ev();
extern void _ZN5S75C72v9Ev();
extern void _ZN5S75C73v10Ev();
extern void _ZN5S75C73v11Ev();
extern void _ZN5S75C73v12Ev();
extern void _ZN5S75C73v13Ev();
extern void _ZN5S75C73v14Ev();
extern void _ZN5S75C73v15Ev();
extern void _ZN5S75C73v16Ev();
extern void _ZN5S75C73v17Ev();
extern void _ZN5S75C73v18Ev();
extern void _ZN5S75C73v19Ev();
extern void _ZN5S75C73v20Ev();
extern void _ZN5S75C73v21Ev();
extern void _ZN5S75C73v22Ev();
extern void _ZN5S75C73v23Ev();
extern void _ZN5S75C73v24Ev();
extern void _ZN5S75C73v25Ev();
extern void _ZN5S75C73v26Ev();
extern void _ZN5S75C73v27Ev();
extern void _ZN5S75C73v28Ev();
extern void _ZN5S75C73v29Ev();
extern void _ZN5S75C73v30Ev();
extern void _ZN5S75C73v31Ev();
extern void _ZN5S75C73v32Ev();
extern void _ZN5S75C73v33Ev();
extern void _ZN5S75C73v34Ev();
extern void _ZN5S75C73v35Ev();
extern void _ZN5S75C73v36Ev();
extern void _ZN5S75C73v37Ev();
extern void _ZN5S75C73v38Ev();
extern void _ZN5S75C73v39Ev();
extern void _ZN5S75C73v40Ev();
extern void _ZN5S75C73v41Ev();
extern void _ZN5S75C73v42Ev();
extern void _ZN5S75C73v43Ev();
extern void _ZN5S75C73v44Ev();
extern void _ZN5S75C73v45Ev();
extern void _ZN5S75C73v46Ev();
extern void _ZN5S75C73v47Ev();
extern void _ZN5S75C73v48Ev();
extern void _ZN5S75C73v49Ev();
extern void _ZN5S75C73v50Ev();
extern void _ZN5S75C73v51Ev();
extern void _ZN5S75C73v52Ev();
extern void _ZN5S75C73v53Ev();
extern void _ZN5S75C73v54Ev();
extern void _ZN5S75C73v55Ev();
extern void _ZN5S75C73v56Ev();
extern void _ZN5S75C73v57Ev();
extern void _ZN5S75C73v58Ev();
extern void _ZN5S75C73v59Ev();
extern void _ZN5S75C73v60Ev();
extern void _ZN5S75C73v61Ev();
extern void _ZN5S75C73v62Ev();
extern void _ZN5S75C73v63Ev();
extern void _ZN5S75C73v64Ev();
extern void _ZN5S75C73v65Ev();
extern void _ZN5S75C73v66Ev();
extern void _ZN5S75C73v67Ev();
static  VTBL_ENTRY vtc_S75C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S75C7[0]),
  (VTBL_ENTRY)&_ZN5S75C7D1Ev,
  (VTBL_ENTRY)&_ZN5S75C7D0Ev,
  (VTBL_ENTRY)&_ZN5S75C72v4Ev,
  (VTBL_ENTRY)&_ZN5S75C72v5Ev,
  (VTBL_ENTRY)&_ZN5S75C72v6Ev,
  (VTBL_ENTRY)&_ZN5S75C72v7Ev,
  (VTBL_ENTRY)&_ZN5S75C72v8Ev,
  (VTBL_ENTRY)&_ZN5S75C72v9Ev,
  (VTBL_ENTRY)&_ZN5S75C73v10Ev,
  (VTBL_ENTRY)&_ZN5S75C73v11Ev,
  (VTBL_ENTRY)&_ZN5S75C73v12Ev,
  (VTBL_ENTRY)&_ZN5S75C73v13Ev,
  (VTBL_ENTRY)&_ZN5S75C73v14Ev,
  (VTBL_ENTRY)&_ZN5S75C73v15Ev,
  (VTBL_ENTRY)&_ZN5S75C73v16Ev,
  (VTBL_ENTRY)&_ZN5S75C73v17Ev,
  (VTBL_ENTRY)&_ZN5S75C73v18Ev,
  (VTBL_ENTRY)&_ZN5S75C73v19Ev,
  (VTBL_ENTRY)&_ZN5S75C73v20Ev,
  (VTBL_ENTRY)&_ZN5S75C73v21Ev,
  (VTBL_ENTRY)&_ZN5S75C73v22Ev,
  (VTBL_ENTRY)&_ZN5S75C73v23Ev,
  (VTBL_ENTRY)&_ZN5S75C73v24Ev,
  (VTBL_ENTRY)&_ZN5S75C73v25Ev,
  (VTBL_ENTRY)&_ZN5S75C73v26Ev,
  (VTBL_ENTRY)&_ZN5S75C73v27Ev,
  (VTBL_ENTRY)&_ZN5S75C73v28Ev,
  (VTBL_ENTRY)&_ZN5S75C73v29Ev,
  (VTBL_ENTRY)&_ZN5S75C73v30Ev,
  (VTBL_ENTRY)&_ZN5S75C73v31Ev,
  (VTBL_ENTRY)&_ZN5S75C73v32Ev,
  (VTBL_ENTRY)&_ZN5S75C73v33Ev,
  (VTBL_ENTRY)&_ZN5S75C73v34Ev,
  (VTBL_ENTRY)&_ZN5S75C73v35Ev,
  (VTBL_ENTRY)&_ZN5S75C73v36Ev,
  (VTBL_ENTRY)&_ZN5S75C73v37Ev,
  (VTBL_ENTRY)&_ZN5S75C73v38Ev,
  (VTBL_ENTRY)&_ZN5S75C73v39Ev,
  (VTBL_ENTRY)&_ZN5S75C73v40Ev,
  (VTBL_ENTRY)&_ZN5S75C73v41Ev,
  (VTBL_ENTRY)&_ZN5S75C73v42Ev,
  (VTBL_ENTRY)&_ZN5S75C73v43Ev,
  (VTBL_ENTRY)&_ZN5S75C73v44Ev,
  (VTBL_ENTRY)&_ZN5S75C73v45Ev,
  (VTBL_ENTRY)&_ZN5S75C73v46Ev,
  (VTBL_ENTRY)&_ZN5S75C73v47Ev,
  (VTBL_ENTRY)&_ZN5S75C73v48Ev,
  (VTBL_ENTRY)&_ZN5S75C73v49Ev,
  (VTBL_ENTRY)&_ZN5S75C73v50Ev,
  (VTBL_ENTRY)&_ZN5S75C73v51Ev,
  (VTBL_ENTRY)&_ZN5S75C73v52Ev,
  (VTBL_ENTRY)&_ZN5S75C73v53Ev,
  (VTBL_ENTRY)&_ZN5S75C73v54Ev,
  (VTBL_ENTRY)&_ZN5S75C73v55Ev,
  (VTBL_ENTRY)&_ZN5S75C73v56Ev,
  (VTBL_ENTRY)&_ZN5S75C73v57Ev,
  (VTBL_ENTRY)&_ZN5S75C73v58Ev,
  (VTBL_ENTRY)&_ZN5S75C73v59Ev,
  (VTBL_ENTRY)&_ZN5S75C73v60Ev,
  (VTBL_ENTRY)&_ZN5S75C73v61Ev,
  (VTBL_ENTRY)&_ZN5S75C73v62Ev,
  (VTBL_ENTRY)&_ZN5S75C73v63Ev,
  (VTBL_ENTRY)&_ZN5S75C73v64Ev,
  (VTBL_ENTRY)&_ZN5S75C73v65Ev,
  (VTBL_ENTRY)&_ZN5S75C73v66Ev,
  (VTBL_ENTRY)&_ZN5S75C73v67Ev,
};
extern VTBL_ENTRY _ZTI5S75C7[];
extern  VTBL_ENTRY _ZTV5S75C7[];
Class_Descriptor cd_S75C7 = {  "S75C7", // class name
  0,0,//no base classes
  &(vtc_S75C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI5S75C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV5S75C7),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  S75C11  : S3216C7_nt {
};
//SIG(-1 S75C11) C1{ BC2{ m Fp Fi[2]}}



static void Test_S75C11()
{
  extern Class_Descriptor cd_S75C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S75C11, buf);
    S75C11 &lv = *(new (buf) S75C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S75C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S75C11)");
    check_base_class_offset(lv, (S3216C7_nt*), 0, "S75C11");
    test_class_info(&lv, &cd_S75C11);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS75C11(Test_S75C11, "S75C11", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3216C7_nt;
static Base_Class bases_S75C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S75C11 = {  "S75C11", // class name
  bases_S75C11, 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  S75C10  : S75C11 {
};
//SIG(-1 S75C10) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S75C10()
{
  extern Class_Descriptor cd_S75C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S75C10, buf);
    S75C10 &lv = *(new (buf) S75C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S75C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S75C10)");
    check_base_class_offset(lv, (S3216C7_nt*)(S75C11*), 0, "S75C10");
    check_base_class_offset(lv, (S75C11*), 0, "S75C10");
    test_class_info(&lv, &cd_S75C10);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS75C10(Test_S75C10, "S75C10", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3216C7_nt;
extern Class_Descriptor cd_S75C11;
static Base_Class bases_S75C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S75C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S75C10 = {  "S75C10", // class name
  bases_S75C10, 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  S75C9_nt  : S75C10 {
};
//SIG(-1 S75C9_nt) C1{ BC2{ BC3{ BC4{ m Fp Fi[2]}}}}



//skip512 S75C9_nt

#else // __cplusplus

extern Class_Descriptor cd_S3216C7_nt;
extern Class_Descriptor cd_S75C11;
extern Class_Descriptor cd_S75C10;
static Base_Class bases_S75C9_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S75C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S75C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S75C6_nt  : S75C7 {
  int s75c6f0[2];
  void *s75c6f1;
  int s75c6f2[2];
  ::S75C9_nt s75c6f3;
  ::S75C9_nt s75c6f4;
  ::S4677C37 s75c6f5;
  ::S75C9_nt s75c6f6;
  unsigned int s75c6f7:1;
  unsigned int s75c6f8:1;
  unsigned int s75c6f9:1;
  unsigned int s75c6f10:1;
  unsigned int s75c6f11:1;
  int s75c6f12[2];
  virtual  ~S75C6_nt(); // _ZN8S75C6_ntD1Ev
  virtual void  v68(); // _ZN8S75C6_nt3v68Ev
  virtual void  v69(); // _ZN8S75C6_nt3v69Ev
  virtual void  v70(); // _ZN8S75C6_nt3v70Ev
  virtual void  v71(); // _ZN8S75C6_nt3v71Ev
  virtual void  v72(); // _ZN8S75C6_nt3v72Ev
  virtual void  v73(); // _ZN8S75C6_nt3v73Ev
  virtual void  v74(); // _ZN8S75C6_nt3v74Ev
  virtual void  v75(); // _ZN8S75C6_nt3v75Ev
  virtual void  v76(); // _ZN8S75C6_nt3v76Ev
  virtual void  v77(); // _ZN8S75C6_nt3v77Ev
  virtual void  v78(); // _ZN8S75C6_nt3v78Ev
  virtual void  v79(); // _ZN8S75C6_nt3v79Ev
  virtual void  v80(); // _ZN8S75C6_nt3v80Ev
  virtual void  v81(); // _ZN8S75C6_nt3v81Ev
  virtual void  v82(); // _ZN8S75C6_nt3v82Ev
  virtual void  v83(); // _ZN8S75C6_nt3v83Ev
  virtual void  v84(); // _ZN8S75C6_nt3v84Ev
  virtual void  v85(); // _ZN8S75C6_nt3v85Ev
  virtual void  v86(); // _ZN8S75C6_nt3v86Ev
  virtual void  v87(); // _ZN8S75C6_nt3v87Ev
  virtual void  v88(); // _ZN8S75C6_nt3v88Ev
  virtual void  v89(); // _ZN8S75C6_nt3v89Ev
  S75C6_nt(); // tgen
};
//SIG(-1 S75C6_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]}


 S75C6_nt ::~S75C6_nt(){ note_dtor("S75C6_nt", this);}
void  S75C6_nt ::v68(){vfunc_called(this, "_ZN8S75C6_nt3v68Ev");}
void  S75C6_nt ::v69(){vfunc_called(this, "_ZN8S75C6_nt3v69Ev");}
void  S75C6_nt ::v70(){vfunc_called(this, "_ZN8S75C6_nt3v70Ev");}
void  S75C6_nt ::v71(){vfunc_called(this, "_ZN8S75C6_nt3v71Ev");}
void  S75C6_nt ::v72(){vfunc_called(this, "_ZN8S75C6_nt3v72Ev");}
void  S75C6_nt ::v73(){vfunc_called(this, "_ZN8S75C6_nt3v73Ev");}
void  S75C6_nt ::v74(){vfunc_called(this, "_ZN8S75C6_nt3v74Ev");}
void  S75C6_nt ::v75(){vfunc_called(this, "_ZN8S75C6_nt3v75Ev");}
void  S75C6_nt ::v76(){vfunc_called(this, "_ZN8S75C6_nt3v76Ev");}
void  S75C6_nt ::v77(){vfunc_called(this, "_ZN8S75C6_nt3v77Ev");}
void  S75C6_nt ::v78(){vfunc_called(this, "_ZN8S75C6_nt3v78Ev");}
void  S75C6_nt ::v79(){vfunc_called(this, "_ZN8S75C6_nt3v79Ev");}
void  S75C6_nt ::v80(){vfunc_called(this, "_ZN8S75C6_nt3v80Ev");}
void  S75C6_nt ::v81(){vfunc_called(this, "_ZN8S75C6_nt3v81Ev");}
void  S75C6_nt ::v82(){vfunc_called(this, "_ZN8S75C6_nt3v82Ev");}
void  S75C6_nt ::v83(){vfunc_called(this, "_ZN8S75C6_nt3v83Ev");}
void  S75C6_nt ::v84(){vfunc_called(this, "_ZN8S75C6_nt3v84Ev");}
void  S75C6_nt ::v85(){vfunc_called(this, "_ZN8S75C6_nt3v85Ev");}
void  S75C6_nt ::v86(){vfunc_called(this, "_ZN8S75C6_nt3v86Ev");}
void  S75C6_nt ::v87(){vfunc_called(this, "_ZN8S75C6_nt3v87Ev");}
void  S75C6_nt ::v88(){vfunc_called(this, "_ZN8S75C6_nt3v88Ev");}
void  S75C6_nt ::v89(){vfunc_called(this, "_ZN8S75C6_nt3v89Ev");}
S75C6_nt ::S75C6_nt(){ note_ctor("S75C6_nt", this);} // tgen

//skip512 S75C6_nt

#else // __cplusplus

extern void _ZN8S75C6_ntC1Ev();
extern void _ZN8S75C6_ntD1Ev();
Name_Map name_map_S75C6_nt[] = {
  NSPAIR(_ZN8S75C6_ntC1Ev),
  NSPAIR(_ZN8S75C6_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S75C7;
extern VTBL_ENTRY _ZTI5S75C7[];
extern  VTBL_ENTRY _ZTV5S75C7[];
static Base_Class bases_S75C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S75C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S75C6_nt[];
extern void _ZN8S75C6_ntD1Ev();
extern void _ZN8S75C6_ntD0Ev();
extern void _ZN5S75C72v4Ev();
extern void _ZN5S75C72v5Ev();
extern void _ZN5S75C72v6Ev();
extern void _ZN5S75C72v7Ev();
extern void _ZN5S75C72v8Ev();
extern void _ZN5S75C72v9Ev();
extern void _ZN5S75C73v10Ev();
extern void _ZN5S75C73v11Ev();
extern void _ZN5S75C73v12Ev();
extern void _ZN5S75C73v13Ev();
extern void _ZN5S75C73v14Ev();
extern void _ZN5S75C73v15Ev();
extern void _ZN5S75C73v16Ev();
extern void _ZN5S75C73v17Ev();
extern void _ZN5S75C73v18Ev();
extern void _ZN5S75C73v19Ev();
extern void _ZN5S75C73v20Ev();
extern void _ZN5S75C73v21Ev();
extern void _ZN5S75C73v22Ev();
extern void _ZN5S75C73v23Ev();
extern void _ZN5S75C73v24Ev();
extern void _ZN5S75C73v25Ev();
extern void _ZN5S75C73v26Ev();
extern void _ZN5S75C73v27Ev();
extern void _ZN5S75C73v28Ev();
extern void _ZN5S75C73v29Ev();
extern void _ZN5S75C73v30Ev();
extern void _ZN5S75C73v31Ev();
extern void _ZN5S75C73v32Ev();
extern void _ZN5S75C73v33Ev();
extern void _ZN5S75C73v34Ev();
extern void _ZN5S75C73v35Ev();
extern void _ZN5S75C73v36Ev();
extern void _ZN5S75C73v37Ev();
extern void _ZN5S75C73v38Ev();
extern void _ZN5S75C73v39Ev();
extern void _ZN5S75C73v40Ev();
extern void _ZN5S75C73v41Ev();
extern void _ZN5S75C73v42Ev();
extern void _ZN5S75C73v43Ev();
extern void _ZN5S75C73v44Ev();
extern void _ZN5S75C73v45Ev();
extern void _ZN5S75C73v46Ev();
extern void _ZN5S75C73v47Ev();
extern void _ZN5S75C73v48Ev();
extern void _ZN5S75C73v49Ev();
extern void _ZN5S75C73v50Ev();
extern void _ZN5S75C73v51Ev();
extern void _ZN5S75C73v52Ev();
extern void _ZN5S75C73v53Ev();
extern void _ZN5S75C73v54Ev();
extern void _ZN5S75C73v55Ev();
extern void _ZN5S75C73v56Ev();
extern void _ZN5S75C73v57Ev();
extern void _ZN5S75C73v58Ev();
extern void _ZN5S75C73v59Ev();
extern void _ZN5S75C73v60Ev();
extern void _ZN5S75C73v61Ev();
extern void _ZN5S75C73v62Ev();
extern void _ZN5S75C73v63Ev();
extern void _ZN5S75C73v64Ev();
extern void _ZN5S75C73v65Ev();
extern void _ZN5S75C73v66Ev();
extern void _ZN5S75C73v67Ev();
extern void _ZN8S75C6_nt3v68Ev();
extern void _ZN8S75C6_nt3v69Ev();
extern void _ZN8S75C6_nt3v70Ev();
extern void _ZN8S75C6_nt3v71Ev();
extern void _ZN8S75C6_nt3v72Ev();
extern void _ZN8S75C6_nt3v73Ev();
extern void _ZN8S75C6_nt3v74Ev();
extern void _ZN8S75C6_nt3v75Ev();
extern void _ZN8S75C6_nt3v76Ev();
extern void _ZN8S75C6_nt3v77Ev();
extern void _ZN8S75C6_nt3v78Ev();
extern void _ZN8S75C6_nt3v79Ev();
extern void _ZN8S75C6_nt3v80Ev();
extern void _ZN8S75C6_nt3v81Ev();
extern void _ZN8S75C6_nt3v82Ev();
extern void _ZN8S75C6_nt3v83Ev();
extern void _ZN8S75C6_nt3v84Ev();
extern void _ZN8S75C6_nt3v85Ev();
extern void _ZN8S75C6_nt3v86Ev();
extern void _ZN8S75C6_nt3v87Ev();
extern void _ZN8S75C6_nt3v88Ev();
extern void _ZN8S75C6_nt3v89Ev();
static  VTBL_ENTRY vtc_S75C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S75C6_nt[0]),
  (VTBL_ENTRY)&_ZN8S75C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S75C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN5S75C72v4Ev,
  (VTBL_ENTRY)&_ZN5S75C72v5Ev,
  (VTBL_ENTRY)&_ZN5S75C72v6Ev,
  (VTBL_ENTRY)&_ZN5S75C72v7Ev,
  (VTBL_ENTRY)&_ZN5S75C72v8Ev,
  (VTBL_ENTRY)&_ZN5S75C72v9Ev,
  (VTBL_ENTRY)&_ZN5S75C73v10Ev,
  (VTBL_ENTRY)&_ZN5S75C73v11Ev,
  (VTBL_ENTRY)&_ZN5S75C73v12Ev,
  (VTBL_ENTRY)&_ZN5S75C73v13Ev,
  (VTBL_ENTRY)&_ZN5S75C73v14Ev,
  (VTBL_ENTRY)&_ZN5S75C73v15Ev,
  (VTBL_ENTRY)&_ZN5S75C73v16Ev,
  (VTBL_ENTRY)&_ZN5S75C73v17Ev,
  (VTBL_ENTRY)&_ZN5S75C73v18Ev,
  (VTBL_ENTRY)&_ZN5S75C73v19Ev,
  (VTBL_ENTRY)&_ZN5S75C73v20Ev,
  (VTBL_ENTRY)&_ZN5S75C73v21Ev,
  (VTBL_ENTRY)&_ZN5S75C73v22Ev,
  (VTBL_ENTRY)&_ZN5S75C73v23Ev,
  (VTBL_ENTRY)&_ZN5S75C73v24Ev,
  (VTBL_ENTRY)&_ZN5S75C73v25Ev,
  (VTBL_ENTRY)&_ZN5S75C73v26Ev,
  (VTBL_ENTRY)&_ZN5S75C73v27Ev,
  (VTBL_ENTRY)&_ZN5S75C73v28Ev,
  (VTBL_ENTRY)&_ZN5S75C73v29Ev,
  (VTBL_ENTRY)&_ZN5S75C73v30Ev,
  (VTBL_ENTRY)&_ZN5S75C73v31Ev,
  (VTBL_ENTRY)&_ZN5S75C73v32Ev,
  (VTBL_ENTRY)&_ZN5S75C73v33Ev,
  (VTBL_ENTRY)&_ZN5S75C73v34Ev,
  (VTBL_ENTRY)&_ZN5S75C73v35Ev,
  (VTBL_ENTRY)&_ZN5S75C73v36Ev,
  (VTBL_ENTRY)&_ZN5S75C73v37Ev,
  (VTBL_ENTRY)&_ZN5S75C73v38Ev,
  (VTBL_ENTRY)&_ZN5S75C73v39Ev,
  (VTBL_ENTRY)&_ZN5S75C73v40Ev,
  (VTBL_ENTRY)&_ZN5S75C73v41Ev,
  (VTBL_ENTRY)&_ZN5S75C73v42Ev,
  (VTBL_ENTRY)&_ZN5S75C73v43Ev,
  (VTBL_ENTRY)&_ZN5S75C73v44Ev,
  (VTBL_ENTRY)&_ZN5S75C73v45Ev,
  (VTBL_ENTRY)&_ZN5S75C73v46Ev,
  (VTBL_ENTRY)&_ZN5S75C73v47Ev,
  (VTBL_ENTRY)&_ZN5S75C73v48Ev,
  (VTBL_ENTRY)&_ZN5S75C73v49Ev,
  (VTBL_ENTRY)&_ZN5S75C73v50Ev,
  (VTBL_ENTRY)&_ZN5S75C73v51Ev,
  (VTBL_ENTRY)&_ZN5S75C73v52Ev,
  (VTBL_ENTRY)&_ZN5S75C73v53Ev,
  (VTBL_ENTRY)&_ZN5S75C73v54Ev,
  (VTBL_ENTRY)&_ZN5S75C73v55Ev,
  (VTBL_ENTRY)&_ZN5S75C73v56Ev,
  (VTBL_ENTRY)&_ZN5S75C73v57Ev,
  (VTBL_ENTRY)&_ZN5S75C73v58Ev,
  (VTBL_ENTRY)&_ZN5S75C73v59Ev,
  (VTBL_ENTRY)&_ZN5S75C73v60Ev,
  (VTBL_ENTRY)&_ZN5S75C73v61Ev,
  (VTBL_ENTRY)&_ZN5S75C73v62Ev,
  (VTBL_ENTRY)&_ZN5S75C73v63Ev,
  (VTBL_ENTRY)&_ZN5S75C73v64Ev,
  (VTBL_ENTRY)&_ZN5S75C73v65Ev,
  (VTBL_ENTRY)&_ZN5S75C73v66Ev,
  (VTBL_ENTRY)&_ZN5S75C73v67Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v89Ev,
};
extern VTBL_ENTRY _ZTI8S75C6_nt[];
VTBL_ENTRY *P__ZTI8S75C6_nt = _ZTI8S75C6_nt; 
extern  VTBL_ENTRY _ZTV8S75C6_nt[];
Class_Descriptor cd_S75C6_nt = {  "S75C6_nt", // class name
  bases_S75C6_nt, 1,
  &(vtc_S75C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,132), // object size
  NSPAIRA(_ZTI8S75C6_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S75C6_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  S75C21  : S3216C7_nt {
};
//SIG(-1 S75C21) C1{ BC2{ m Fp Fi[2]}}



static void Test_S75C21()
{
  extern Class_Descriptor cd_S75C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S75C21, buf);
    S75C21 &lv = *(new (buf) S75C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S75C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S75C21)");
    check_base_class_offset(lv, (S3216C7_nt*), 0, "S75C21");
    test_class_info(&lv, &cd_S75C21);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS75C21(Test_S75C21, "S75C21", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3216C7_nt;
static Base_Class bases_S75C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S75C21 = {  "S75C21", // class name
  bases_S75C21, 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  S75C20  : S75C21 {
};
//SIG(-1 S75C20) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S75C20()
{
  extern Class_Descriptor cd_S75C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S75C20, buf);
    S75C20 &lv = *(new (buf) S75C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S75C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S75C20)");
    check_base_class_offset(lv, (S3216C7_nt*)(S75C21*), 0, "S75C20");
    check_base_class_offset(lv, (S75C21*), 0, "S75C20");
    test_class_info(&lv, &cd_S75C20);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS75C20(Test_S75C20, "S75C20", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3216C7_nt;
extern Class_Descriptor cd_S75C21;
static Base_Class bases_S75C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S75C21,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S75C20 = {  "S75C20", // class name
  bases_S75C20, 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  S75C5_nt  : S75C6_nt {
  unsigned int s75c5f0:1;
  unsigned int s75c5f1:1;
  unsigned int s75c5f2:1;
  ::S3216C17 s75c5f3;
  ::S3216C11 s75c5f4;
  ::S3216C5_nt s75c5f5;
  ::S75C20 s75c5f6;
  int s75c5f7[3];
  virtual  ~S75C5_nt(); // _ZN8S75C5_ntD1Ev
  virtual void  v90(); // _ZN8S75C5_nt3v90Ev
  virtual void  v91(); // _ZN8S75C5_nt3v91Ev
  virtual void  v92(); // _ZN8S75C5_nt3v92Ev
  virtual void  v93(); // _ZN8S75C5_nt3v93Ev
  virtual void  v94(); // _ZN8S75C5_nt3v94Ev
  virtual void  v95(); // _ZN8S75C5_nt3v95Ev
  virtual void  v96(); // _ZN8S75C5_nt3v96Ev
  virtual void  v97(); // _ZN8S75C5_nt3v97Ev
  virtual void  v98(); // _ZN8S75C5_nt3v98Ev
  virtual void  v99(); // _ZN8S75C5_nt3v99Ev
  virtual void  v100(); // _ZN8S75C5_nt4v100Ev
  virtual void  v101(); // _ZN8S75C5_nt4v101Ev
  virtual void  v102(); // _ZN8S75C5_nt4v102Ev
  virtual void  v103(); // _ZN8S75C5_nt4v103Ev
  virtual void  v104(); // _ZN8S75C5_nt4v104Ev
  virtual void  v105(); // _ZN8S75C5_nt4v105Ev
  virtual void  v106(); // _ZN8S75C5_nt4v106Ev
  virtual void  v107(); // _ZN8S75C5_nt4v107Ev
  virtual void  v108(); // _ZN8S75C5_nt4v108Ev
  virtual void  v109(); // _ZN8S75C5_nt4v109Ev
  S75C5_nt(); // tgen
};
//SIG(-1 S75C5_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]}


 S75C5_nt ::~S75C5_nt(){ note_dtor("S75C5_nt", this);}
void  S75C5_nt ::v90(){vfunc_called(this, "_ZN8S75C5_nt3v90Ev");}
void  S75C5_nt ::v91(){vfunc_called(this, "_ZN8S75C5_nt3v91Ev");}
void  S75C5_nt ::v92(){vfunc_called(this, "_ZN8S75C5_nt3v92Ev");}
void  S75C5_nt ::v93(){vfunc_called(this, "_ZN8S75C5_nt3v93Ev");}
void  S75C5_nt ::v94(){vfunc_called(this, "_ZN8S75C5_nt3v94Ev");}
void  S75C5_nt ::v95(){vfunc_called(this, "_ZN8S75C5_nt3v95Ev");}
void  S75C5_nt ::v96(){vfunc_called(this, "_ZN8S75C5_nt3v96Ev");}
void  S75C5_nt ::v97(){vfunc_called(this, "_ZN8S75C5_nt3v97Ev");}
void  S75C5_nt ::v98(){vfunc_called(this, "_ZN8S75C5_nt3v98Ev");}
void  S75C5_nt ::v99(){vfunc_called(this, "_ZN8S75C5_nt3v99Ev");}
void  S75C5_nt ::v100(){vfunc_called(this, "_ZN8S75C5_nt4v100Ev");}
void  S75C5_nt ::v101(){vfunc_called(this, "_ZN8S75C5_nt4v101Ev");}
void  S75C5_nt ::v102(){vfunc_called(this, "_ZN8S75C5_nt4v102Ev");}
void  S75C5_nt ::v103(){vfunc_called(this, "_ZN8S75C5_nt4v103Ev");}
void  S75C5_nt ::v104(){vfunc_called(this, "_ZN8S75C5_nt4v104Ev");}
void  S75C5_nt ::v105(){vfunc_called(this, "_ZN8S75C5_nt4v105Ev");}
void  S75C5_nt ::v106(){vfunc_called(this, "_ZN8S75C5_nt4v106Ev");}
void  S75C5_nt ::v107(){vfunc_called(this, "_ZN8S75C5_nt4v107Ev");}
void  S75C5_nt ::v108(){vfunc_called(this, "_ZN8S75C5_nt4v108Ev");}
void  S75C5_nt ::v109(){vfunc_called(this, "_ZN8S75C5_nt4v109Ev");}
S75C5_nt ::S75C5_nt(){ note_ctor("S75C5_nt", this);} // tgen

//skip512 S75C5_nt

#else // __cplusplus

extern void _ZN8S75C5_ntC1Ev();
extern void _ZN8S75C5_ntD1Ev();
Name_Map name_map_S75C5_nt[] = {
  NSPAIR(_ZN8S75C5_ntC1Ev),
  NSPAIR(_ZN8S75C5_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S75C7;
extern VTBL_ENTRY _ZTI5S75C7[];
extern  VTBL_ENTRY _ZTV5S75C7[];
extern Class_Descriptor cd_S75C6_nt;
extern VTBL_ENTRY _ZTI8S75C6_nt[];
extern  VTBL_ENTRY _ZTV8S75C6_nt[];
static Base_Class bases_S75C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S75C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S75C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI8S75C5_nt[];
extern void _ZN8S75C5_ntD1Ev();
extern void _ZN8S75C5_ntD0Ev();
extern void _ZN5S75C72v4Ev();
extern void _ZN5S75C72v5Ev();
extern void _ZN5S75C72v6Ev();
extern void _ZN5S75C72v7Ev();
extern void _ZN5S75C72v8Ev();
extern void _ZN5S75C72v9Ev();
extern void _ZN5S75C73v10Ev();
extern void _ZN5S75C73v11Ev();
extern void _ZN5S75C73v12Ev();
extern void _ZN5S75C73v13Ev();
extern void _ZN5S75C73v14Ev();
extern void _ZN5S75C73v15Ev();
extern void _ZN5S75C73v16Ev();
extern void _ZN5S75C73v17Ev();
extern void _ZN5S75C73v18Ev();
extern void _ZN5S75C73v19Ev();
extern void _ZN5S75C73v20Ev();
extern void _ZN5S75C73v21Ev();
extern void _ZN5S75C73v22Ev();
extern void _ZN5S75C73v23Ev();
extern void _ZN5S75C73v24Ev();
extern void _ZN5S75C73v25Ev();
extern void _ZN5S75C73v26Ev();
extern void _ZN5S75C73v27Ev();
extern void _ZN5S75C73v28Ev();
extern void _ZN5S75C73v29Ev();
extern void _ZN5S75C73v30Ev();
extern void _ZN5S75C73v31Ev();
extern void _ZN5S75C73v32Ev();
extern void _ZN5S75C73v33Ev();
extern void _ZN5S75C73v34Ev();
extern void _ZN5S75C73v35Ev();
extern void _ZN5S75C73v36Ev();
extern void _ZN5S75C73v37Ev();
extern void _ZN5S75C73v38Ev();
extern void _ZN5S75C73v39Ev();
extern void _ZN5S75C73v40Ev();
extern void _ZN5S75C73v41Ev();
extern void _ZN5S75C73v42Ev();
extern void _ZN5S75C73v43Ev();
extern void _ZN5S75C73v44Ev();
extern void _ZN5S75C73v45Ev();
extern void _ZN5S75C73v46Ev();
extern void _ZN5S75C73v47Ev();
extern void _ZN5S75C73v48Ev();
extern void _ZN5S75C73v49Ev();
extern void _ZN5S75C73v50Ev();
extern void _ZN5S75C73v51Ev();
extern void _ZN5S75C73v52Ev();
extern void _ZN5S75C73v53Ev();
extern void _ZN5S75C73v54Ev();
extern void _ZN5S75C73v55Ev();
extern void _ZN5S75C73v56Ev();
extern void _ZN5S75C73v57Ev();
extern void _ZN5S75C73v58Ev();
extern void _ZN5S75C73v59Ev();
extern void _ZN5S75C73v60Ev();
extern void _ZN5S75C73v61Ev();
extern void _ZN5S75C73v62Ev();
extern void _ZN5S75C73v63Ev();
extern void _ZN5S75C73v64Ev();
extern void _ZN5S75C73v65Ev();
extern void _ZN5S75C73v66Ev();
extern void _ZN5S75C73v67Ev();
extern void _ZN8S75C6_nt3v68Ev();
extern void _ZN8S75C6_nt3v69Ev();
extern void _ZN8S75C6_nt3v70Ev();
extern void _ZN8S75C6_nt3v71Ev();
extern void _ZN8S75C6_nt3v72Ev();
extern void _ZN8S75C6_nt3v73Ev();
extern void _ZN8S75C6_nt3v74Ev();
extern void _ZN8S75C6_nt3v75Ev();
extern void _ZN8S75C6_nt3v76Ev();
extern void _ZN8S75C6_nt3v77Ev();
extern void _ZN8S75C6_nt3v78Ev();
extern void _ZN8S75C6_nt3v79Ev();
extern void _ZN8S75C6_nt3v80Ev();
extern void _ZN8S75C6_nt3v81Ev();
extern void _ZN8S75C6_nt3v82Ev();
extern void _ZN8S75C6_nt3v83Ev();
extern void _ZN8S75C6_nt3v84Ev();
extern void _ZN8S75C6_nt3v85Ev();
extern void _ZN8S75C6_nt3v86Ev();
extern void _ZN8S75C6_nt3v87Ev();
extern void _ZN8S75C6_nt3v88Ev();
extern void _ZN8S75C6_nt3v89Ev();
extern void _ZN8S75C5_nt3v90Ev();
extern void _ZN8S75C5_nt3v91Ev();
extern void _ZN8S75C5_nt3v92Ev();
extern void _ZN8S75C5_nt3v93Ev();
extern void _ZN8S75C5_nt3v94Ev();
extern void _ZN8S75C5_nt3v95Ev();
extern void _ZN8S75C5_nt3v96Ev();
extern void _ZN8S75C5_nt3v97Ev();
extern void _ZN8S75C5_nt3v98Ev();
extern void _ZN8S75C5_nt3v99Ev();
extern void _ZN8S75C5_nt4v100Ev();
extern void _ZN8S75C5_nt4v101Ev();
extern void _ZN8S75C5_nt4v102Ev();
extern void _ZN8S75C5_nt4v103Ev();
extern void _ZN8S75C5_nt4v104Ev();
extern void _ZN8S75C5_nt4v105Ev();
extern void _ZN8S75C5_nt4v106Ev();
extern void _ZN8S75C5_nt4v107Ev();
extern void _ZN8S75C5_nt4v108Ev();
extern void _ZN8S75C5_nt4v109Ev();
static  VTBL_ENTRY vtc_S75C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S75C5_nt[0]),
  (VTBL_ENTRY)&_ZN8S75C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S75C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN5S75C72v4Ev,
  (VTBL_ENTRY)&_ZN5S75C72v5Ev,
  (VTBL_ENTRY)&_ZN5S75C72v6Ev,
  (VTBL_ENTRY)&_ZN5S75C72v7Ev,
  (VTBL_ENTRY)&_ZN5S75C72v8Ev,
  (VTBL_ENTRY)&_ZN5S75C72v9Ev,
  (VTBL_ENTRY)&_ZN5S75C73v10Ev,
  (VTBL_ENTRY)&_ZN5S75C73v11Ev,
  (VTBL_ENTRY)&_ZN5S75C73v12Ev,
  (VTBL_ENTRY)&_ZN5S75C73v13Ev,
  (VTBL_ENTRY)&_ZN5S75C73v14Ev,
  (VTBL_ENTRY)&_ZN5S75C73v15Ev,
  (VTBL_ENTRY)&_ZN5S75C73v16Ev,
  (VTBL_ENTRY)&_ZN5S75C73v17Ev,
  (VTBL_ENTRY)&_ZN5S75C73v18Ev,
  (VTBL_ENTRY)&_ZN5S75C73v19Ev,
  (VTBL_ENTRY)&_ZN5S75C73v20Ev,
  (VTBL_ENTRY)&_ZN5S75C73v21Ev,
  (VTBL_ENTRY)&_ZN5S75C73v22Ev,
  (VTBL_ENTRY)&_ZN5S75C73v23Ev,
  (VTBL_ENTRY)&_ZN5S75C73v24Ev,
  (VTBL_ENTRY)&_ZN5S75C73v25Ev,
  (VTBL_ENTRY)&_ZN5S75C73v26Ev,
  (VTBL_ENTRY)&_ZN5S75C73v27Ev,
  (VTBL_ENTRY)&_ZN5S75C73v28Ev,
  (VTBL_ENTRY)&_ZN5S75C73v29Ev,
  (VTBL_ENTRY)&_ZN5S75C73v30Ev,
  (VTBL_ENTRY)&_ZN5S75C73v31Ev,
  (VTBL_ENTRY)&_ZN5S75C73v32Ev,
  (VTBL_ENTRY)&_ZN5S75C73v33Ev,
  (VTBL_ENTRY)&_ZN5S75C73v34Ev,
  (VTBL_ENTRY)&_ZN5S75C73v35Ev,
  (VTBL_ENTRY)&_ZN5S75C73v36Ev,
  (VTBL_ENTRY)&_ZN5S75C73v37Ev,
  (VTBL_ENTRY)&_ZN5S75C73v38Ev,
  (VTBL_ENTRY)&_ZN5S75C73v39Ev,
  (VTBL_ENTRY)&_ZN5S75C73v40Ev,
  (VTBL_ENTRY)&_ZN5S75C73v41Ev,
  (VTBL_ENTRY)&_ZN5S75C73v42Ev,
  (VTBL_ENTRY)&_ZN5S75C73v43Ev,
  (VTBL_ENTRY)&_ZN5S75C73v44Ev,
  (VTBL_ENTRY)&_ZN5S75C73v45Ev,
  (VTBL_ENTRY)&_ZN5S75C73v46Ev,
  (VTBL_ENTRY)&_ZN5S75C73v47Ev,
  (VTBL_ENTRY)&_ZN5S75C73v48Ev,
  (VTBL_ENTRY)&_ZN5S75C73v49Ev,
  (VTBL_ENTRY)&_ZN5S75C73v50Ev,
  (VTBL_ENTRY)&_ZN5S75C73v51Ev,
  (VTBL_ENTRY)&_ZN5S75C73v52Ev,
  (VTBL_ENTRY)&_ZN5S75C73v53Ev,
  (VTBL_ENTRY)&_ZN5S75C73v54Ev,
  (VTBL_ENTRY)&_ZN5S75C73v55Ev,
  (VTBL_ENTRY)&_ZN5S75C73v56Ev,
  (VTBL_ENTRY)&_ZN5S75C73v57Ev,
  (VTBL_ENTRY)&_ZN5S75C73v58Ev,
  (VTBL_ENTRY)&_ZN5S75C73v59Ev,
  (VTBL_ENTRY)&_ZN5S75C73v60Ev,
  (VTBL_ENTRY)&_ZN5S75C73v61Ev,
  (VTBL_ENTRY)&_ZN5S75C73v62Ev,
  (VTBL_ENTRY)&_ZN5S75C73v63Ev,
  (VTBL_ENTRY)&_ZN5S75C73v64Ev,
  (VTBL_ENTRY)&_ZN5S75C73v65Ev,
  (VTBL_ENTRY)&_ZN5S75C73v66Ev,
  (VTBL_ENTRY)&_ZN5S75C73v67Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v109Ev,
};
extern VTBL_ENTRY _ZTI8S75C5_nt[];
VTBL_ENTRY *P__ZTI8S75C5_nt = _ZTI8S75C5_nt; 
extern  VTBL_ENTRY _ZTV8S75C5_nt[];
Class_Descriptor cd_S75C5_nt = {  "S75C5_nt", // class name
  bases_S75C5_nt, 2,
  &(vtc_S75C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(272,196), // object size
  NSPAIRA(_ZTI8S75C5_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S75C5_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  S75C4_nt  : S75C5_nt {
  ::S3216C4_nt s75c4f0;
  unsigned int s75c4f1:1;
  ::S75C20 s75c4f2;
  virtual  ~S75C4_nt(); // _ZN8S75C4_ntD1Ev
  virtual void  v110(); // _ZN8S75C4_nt4v110Ev
  virtual void  v111(); // _ZN8S75C4_nt4v111Ev
  virtual void  v112(); // _ZN8S75C4_nt4v112Ev
  virtual void  v113(); // _ZN8S75C4_nt4v113Ev
  S75C4_nt(); // tgen
};
//SIG(-1 S75C4_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}


 S75C4_nt ::~S75C4_nt(){ note_dtor("S75C4_nt", this);}
void  S75C4_nt ::v110(){vfunc_called(this, "_ZN8S75C4_nt4v110Ev");}
void  S75C4_nt ::v111(){vfunc_called(this, "_ZN8S75C4_nt4v111Ev");}
void  S75C4_nt ::v112(){vfunc_called(this, "_ZN8S75C4_nt4v112Ev");}
void  S75C4_nt ::v113(){vfunc_called(this, "_ZN8S75C4_nt4v113Ev");}
S75C4_nt ::S75C4_nt(){ note_ctor("S75C4_nt", this);} // tgen

//skip512 S75C4_nt

#else // __cplusplus

extern void _ZN8S75C4_ntC1Ev();
extern void _ZN8S75C4_ntD1Ev();
Name_Map name_map_S75C4_nt[] = {
  NSPAIR(_ZN8S75C4_ntC1Ev),
  NSPAIR(_ZN8S75C4_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S75C7;
extern VTBL_ENTRY _ZTI5S75C7[];
extern  VTBL_ENTRY _ZTV5S75C7[];
extern Class_Descriptor cd_S75C6_nt;
extern VTBL_ENTRY _ZTI8S75C6_nt[];
extern  VTBL_ENTRY _ZTV8S75C6_nt[];
extern Class_Descriptor cd_S75C5_nt;
extern VTBL_ENTRY _ZTI8S75C5_nt[];
extern  VTBL_ENTRY _ZTV8S75C5_nt[];
static Base_Class bases_S75C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S75C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S75C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S75C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI8S75C4_nt[];
extern void _ZN8S75C4_ntD1Ev();
extern void _ZN8S75C4_ntD0Ev();
extern void _ZN5S75C72v4Ev();
extern void _ZN5S75C72v5Ev();
extern void _ZN5S75C72v6Ev();
extern void _ZN5S75C72v7Ev();
extern void _ZN5S75C72v8Ev();
extern void _ZN5S75C72v9Ev();
extern void _ZN5S75C73v10Ev();
extern void _ZN5S75C73v11Ev();
extern void _ZN5S75C73v12Ev();
extern void _ZN5S75C73v13Ev();
extern void _ZN5S75C73v14Ev();
extern void _ZN5S75C73v15Ev();
extern void _ZN5S75C73v16Ev();
extern void _ZN5S75C73v17Ev();
extern void _ZN5S75C73v18Ev();
extern void _ZN5S75C73v19Ev();
extern void _ZN5S75C73v20Ev();
extern void _ZN5S75C73v21Ev();
extern void _ZN5S75C73v22Ev();
extern void _ZN5S75C73v23Ev();
extern void _ZN5S75C73v24Ev();
extern void _ZN5S75C73v25Ev();
extern void _ZN5S75C73v26Ev();
extern void _ZN5S75C73v27Ev();
extern void _ZN5S75C73v28Ev();
extern void _ZN5S75C73v29Ev();
extern void _ZN5S75C73v30Ev();
extern void _ZN5S75C73v31Ev();
extern void _ZN5S75C73v32Ev();
extern void _ZN5S75C73v33Ev();
extern void _ZN5S75C73v34Ev();
extern void _ZN5S75C73v35Ev();
extern void _ZN5S75C73v36Ev();
extern void _ZN5S75C73v37Ev();
extern void _ZN5S75C73v38Ev();
extern void _ZN5S75C73v39Ev();
extern void _ZN5S75C73v40Ev();
extern void _ZN5S75C73v41Ev();
extern void _ZN5S75C73v42Ev();
extern void _ZN5S75C73v43Ev();
extern void _ZN5S75C73v44Ev();
extern void _ZN5S75C73v45Ev();
extern void _ZN5S75C73v46Ev();
extern void _ZN5S75C73v47Ev();
extern void _ZN5S75C73v48Ev();
extern void _ZN5S75C73v49Ev();
extern void _ZN5S75C73v50Ev();
extern void _ZN5S75C73v51Ev();
extern void _ZN5S75C73v52Ev();
extern void _ZN5S75C73v53Ev();
extern void _ZN5S75C73v54Ev();
extern void _ZN5S75C73v55Ev();
extern void _ZN5S75C73v56Ev();
extern void _ZN5S75C73v57Ev();
extern void _ZN5S75C73v58Ev();
extern void _ZN5S75C73v59Ev();
extern void _ZN5S75C73v60Ev();
extern void _ZN5S75C73v61Ev();
extern void _ZN5S75C73v62Ev();
extern void _ZN5S75C73v63Ev();
extern void _ZN5S75C73v64Ev();
extern void _ZN5S75C73v65Ev();
extern void _ZN5S75C73v66Ev();
extern void _ZN5S75C73v67Ev();
extern void _ZN8S75C6_nt3v68Ev();
extern void _ZN8S75C6_nt3v69Ev();
extern void _ZN8S75C6_nt3v70Ev();
extern void _ZN8S75C6_nt3v71Ev();
extern void _ZN8S75C6_nt3v72Ev();
extern void _ZN8S75C6_nt3v73Ev();
extern void _ZN8S75C6_nt3v74Ev();
extern void _ZN8S75C6_nt3v75Ev();
extern void _ZN8S75C6_nt3v76Ev();
extern void _ZN8S75C6_nt3v77Ev();
extern void _ZN8S75C6_nt3v78Ev();
extern void _ZN8S75C6_nt3v79Ev();
extern void _ZN8S75C6_nt3v80Ev();
extern void _ZN8S75C6_nt3v81Ev();
extern void _ZN8S75C6_nt3v82Ev();
extern void _ZN8S75C6_nt3v83Ev();
extern void _ZN8S75C6_nt3v84Ev();
extern void _ZN8S75C6_nt3v85Ev();
extern void _ZN8S75C6_nt3v86Ev();
extern void _ZN8S75C6_nt3v87Ev();
extern void _ZN8S75C6_nt3v88Ev();
extern void _ZN8S75C6_nt3v89Ev();
extern void _ZN8S75C5_nt3v90Ev();
extern void _ZN8S75C5_nt3v91Ev();
extern void _ZN8S75C5_nt3v92Ev();
extern void _ZN8S75C5_nt3v93Ev();
extern void _ZN8S75C5_nt3v94Ev();
extern void _ZN8S75C5_nt3v95Ev();
extern void _ZN8S75C5_nt3v96Ev();
extern void _ZN8S75C5_nt3v97Ev();
extern void _ZN8S75C5_nt3v98Ev();
extern void _ZN8S75C5_nt3v99Ev();
extern void _ZN8S75C5_nt4v100Ev();
extern void _ZN8S75C5_nt4v101Ev();
extern void _ZN8S75C5_nt4v102Ev();
extern void _ZN8S75C5_nt4v103Ev();
extern void _ZN8S75C5_nt4v104Ev();
extern void _ZN8S75C5_nt4v105Ev();
extern void _ZN8S75C5_nt4v106Ev();
extern void _ZN8S75C5_nt4v107Ev();
extern void _ZN8S75C5_nt4v108Ev();
extern void _ZN8S75C5_nt4v109Ev();
extern void _ZN8S75C4_nt4v110Ev();
extern void _ZN8S75C4_nt4v111Ev();
extern void _ZN8S75C4_nt4v112Ev();
extern void _ZN8S75C4_nt4v113Ev();
static  VTBL_ENTRY vtc_S75C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S75C4_nt[0]),
  (VTBL_ENTRY)&_ZN8S75C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S75C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN5S75C72v4Ev,
  (VTBL_ENTRY)&_ZN5S75C72v5Ev,
  (VTBL_ENTRY)&_ZN5S75C72v6Ev,
  (VTBL_ENTRY)&_ZN5S75C72v7Ev,
  (VTBL_ENTRY)&_ZN5S75C72v8Ev,
  (VTBL_ENTRY)&_ZN5S75C72v9Ev,
  (VTBL_ENTRY)&_ZN5S75C73v10Ev,
  (VTBL_ENTRY)&_ZN5S75C73v11Ev,
  (VTBL_ENTRY)&_ZN5S75C73v12Ev,
  (VTBL_ENTRY)&_ZN5S75C73v13Ev,
  (VTBL_ENTRY)&_ZN5S75C73v14Ev,
  (VTBL_ENTRY)&_ZN5S75C73v15Ev,
  (VTBL_ENTRY)&_ZN5S75C73v16Ev,
  (VTBL_ENTRY)&_ZN5S75C73v17Ev,
  (VTBL_ENTRY)&_ZN5S75C73v18Ev,
  (VTBL_ENTRY)&_ZN5S75C73v19Ev,
  (VTBL_ENTRY)&_ZN5S75C73v20Ev,
  (VTBL_ENTRY)&_ZN5S75C73v21Ev,
  (VTBL_ENTRY)&_ZN5S75C73v22Ev,
  (VTBL_ENTRY)&_ZN5S75C73v23Ev,
  (VTBL_ENTRY)&_ZN5S75C73v24Ev,
  (VTBL_ENTRY)&_ZN5S75C73v25Ev,
  (VTBL_ENTRY)&_ZN5S75C73v26Ev,
  (VTBL_ENTRY)&_ZN5S75C73v27Ev,
  (VTBL_ENTRY)&_ZN5S75C73v28Ev,
  (VTBL_ENTRY)&_ZN5S75C73v29Ev,
  (VTBL_ENTRY)&_ZN5S75C73v30Ev,
  (VTBL_ENTRY)&_ZN5S75C73v31Ev,
  (VTBL_ENTRY)&_ZN5S75C73v32Ev,
  (VTBL_ENTRY)&_ZN5S75C73v33Ev,
  (VTBL_ENTRY)&_ZN5S75C73v34Ev,
  (VTBL_ENTRY)&_ZN5S75C73v35Ev,
  (VTBL_ENTRY)&_ZN5S75C73v36Ev,
  (VTBL_ENTRY)&_ZN5S75C73v37Ev,
  (VTBL_ENTRY)&_ZN5S75C73v38Ev,
  (VTBL_ENTRY)&_ZN5S75C73v39Ev,
  (VTBL_ENTRY)&_ZN5S75C73v40Ev,
  (VTBL_ENTRY)&_ZN5S75C73v41Ev,
  (VTBL_ENTRY)&_ZN5S75C73v42Ev,
  (VTBL_ENTRY)&_ZN5S75C73v43Ev,
  (VTBL_ENTRY)&_ZN5S75C73v44Ev,
  (VTBL_ENTRY)&_ZN5S75C73v45Ev,
  (VTBL_ENTRY)&_ZN5S75C73v46Ev,
  (VTBL_ENTRY)&_ZN5S75C73v47Ev,
  (VTBL_ENTRY)&_ZN5S75C73v48Ev,
  (VTBL_ENTRY)&_ZN5S75C73v49Ev,
  (VTBL_ENTRY)&_ZN5S75C73v50Ev,
  (VTBL_ENTRY)&_ZN5S75C73v51Ev,
  (VTBL_ENTRY)&_ZN5S75C73v52Ev,
  (VTBL_ENTRY)&_ZN5S75C73v53Ev,
  (VTBL_ENTRY)&_ZN5S75C73v54Ev,
  (VTBL_ENTRY)&_ZN5S75C73v55Ev,
  (VTBL_ENTRY)&_ZN5S75C73v56Ev,
  (VTBL_ENTRY)&_ZN5S75C73v57Ev,
  (VTBL_ENTRY)&_ZN5S75C73v58Ev,
  (VTBL_ENTRY)&_ZN5S75C73v59Ev,
  (VTBL_ENTRY)&_ZN5S75C73v60Ev,
  (VTBL_ENTRY)&_ZN5S75C73v61Ev,
  (VTBL_ENTRY)&_ZN5S75C73v62Ev,
  (VTBL_ENTRY)&_ZN5S75C73v63Ev,
  (VTBL_ENTRY)&_ZN5S75C73v64Ev,
  (VTBL_ENTRY)&_ZN5S75C73v65Ev,
  (VTBL_ENTRY)&_ZN5S75C73v66Ev,
  (VTBL_ENTRY)&_ZN5S75C73v67Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S75C4_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S75C4_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S75C4_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S75C4_nt4v113Ev,
};
extern VTBL_ENTRY _ZTI8S75C4_nt[];
VTBL_ENTRY *P__ZTI8S75C4_nt = _ZTI8S75C4_nt; 
extern  VTBL_ENTRY _ZTV8S75C4_nt[];
Class_Descriptor cd_S75C4_nt = {  "S75C4_nt", // class name
  bases_S75C4_nt, 3,
  &(vtc_S75C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(296,220), // object size
  NSPAIRA(_ZTI8S75C4_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S75C4_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  S75C3_nt  : S75C4_nt {
  int s75c3f0;
  unsigned int s75c3f1:1;
  virtual  ~S75C3_nt(); // _ZN8S75C3_ntD1Ev
  virtual void  v114(); // _ZN8S75C3_nt4v114Ev
  virtual void  v115(); // _ZN8S75C3_nt4v115Ev
  virtual void  v116(); // _ZN8S75C3_nt4v116Ev
  virtual void  v117(); // _ZN8S75C3_nt4v117Ev
  virtual void  v118(); // _ZN8S75C3_nt4v118Ev
  virtual void  v119(); // _ZN8S75C3_nt4v119Ev
  virtual void  v120(); // _ZN8S75C3_nt4v120Ev
  virtual void  v121(); // _ZN8S75C3_nt4v121Ev
  S75C3_nt(); // tgen
};
//SIG(-1 S75C3_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}


 S75C3_nt ::~S75C3_nt(){ note_dtor("S75C3_nt", this);}
void  S75C3_nt ::v114(){vfunc_called(this, "_ZN8S75C3_nt4v114Ev");}
void  S75C3_nt ::v115(){vfunc_called(this, "_ZN8S75C3_nt4v115Ev");}
void  S75C3_nt ::v116(){vfunc_called(this, "_ZN8S75C3_nt4v116Ev");}
void  S75C3_nt ::v117(){vfunc_called(this, "_ZN8S75C3_nt4v117Ev");}
void  S75C3_nt ::v118(){vfunc_called(this, "_ZN8S75C3_nt4v118Ev");}
void  S75C3_nt ::v119(){vfunc_called(this, "_ZN8S75C3_nt4v119Ev");}
void  S75C3_nt ::v120(){vfunc_called(this, "_ZN8S75C3_nt4v120Ev");}
void  S75C3_nt ::v121(){vfunc_called(this, "_ZN8S75C3_nt4v121Ev");}
S75C3_nt ::S75C3_nt(){ note_ctor("S75C3_nt", this);} // tgen

//skip512 S75C3_nt

#else // __cplusplus

extern void _ZN8S75C3_ntC1Ev();
extern void _ZN8S75C3_ntD1Ev();
Name_Map name_map_S75C3_nt[] = {
  NSPAIR(_ZN8S75C3_ntC1Ev),
  NSPAIR(_ZN8S75C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S75C7;
extern VTBL_ENTRY _ZTI5S75C7[];
extern  VTBL_ENTRY _ZTV5S75C7[];
extern Class_Descriptor cd_S75C6_nt;
extern VTBL_ENTRY _ZTI8S75C6_nt[];
extern  VTBL_ENTRY _ZTV8S75C6_nt[];
extern Class_Descriptor cd_S75C5_nt;
extern VTBL_ENTRY _ZTI8S75C5_nt[];
extern  VTBL_ENTRY _ZTV8S75C5_nt[];
extern Class_Descriptor cd_S75C4_nt;
extern VTBL_ENTRY _ZTI8S75C4_nt[];
extern  VTBL_ENTRY _ZTV8S75C4_nt[];
static Base_Class bases_S75C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S75C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S75C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S75C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S75C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI8S75C3_nt[];
extern void _ZN8S75C3_ntD1Ev();
extern void _ZN8S75C3_ntD0Ev();
extern void _ZN5S75C72v4Ev();
extern void _ZN5S75C72v5Ev();
extern void _ZN5S75C72v6Ev();
extern void _ZN5S75C72v7Ev();
extern void _ZN5S75C72v8Ev();
extern void _ZN5S75C72v9Ev();
extern void _ZN5S75C73v10Ev();
extern void _ZN5S75C73v11Ev();
extern void _ZN5S75C73v12Ev();
extern void _ZN5S75C73v13Ev();
extern void _ZN5S75C73v14Ev();
extern void _ZN5S75C73v15Ev();
extern void _ZN5S75C73v16Ev();
extern void _ZN5S75C73v17Ev();
extern void _ZN5S75C73v18Ev();
extern void _ZN5S75C73v19Ev();
extern void _ZN5S75C73v20Ev();
extern void _ZN5S75C73v21Ev();
extern void _ZN5S75C73v22Ev();
extern void _ZN5S75C73v23Ev();
extern void _ZN5S75C73v24Ev();
extern void _ZN5S75C73v25Ev();
extern void _ZN5S75C73v26Ev();
extern void _ZN5S75C73v27Ev();
extern void _ZN5S75C73v28Ev();
extern void _ZN5S75C73v29Ev();
extern void _ZN5S75C73v30Ev();
extern void _ZN5S75C73v31Ev();
extern void _ZN5S75C73v32Ev();
extern void _ZN5S75C73v33Ev();
extern void _ZN5S75C73v34Ev();
extern void _ZN5S75C73v35Ev();
extern void _ZN5S75C73v36Ev();
extern void _ZN5S75C73v37Ev();
extern void _ZN5S75C73v38Ev();
extern void _ZN5S75C73v39Ev();
extern void _ZN5S75C73v40Ev();
extern void _ZN5S75C73v41Ev();
extern void _ZN5S75C73v42Ev();
extern void _ZN5S75C73v43Ev();
extern void _ZN5S75C73v44Ev();
extern void _ZN5S75C73v45Ev();
extern void _ZN5S75C73v46Ev();
extern void _ZN5S75C73v47Ev();
extern void _ZN5S75C73v48Ev();
extern void _ZN5S75C73v49Ev();
extern void _ZN5S75C73v50Ev();
extern void _ZN5S75C73v51Ev();
extern void _ZN5S75C73v52Ev();
extern void _ZN5S75C73v53Ev();
extern void _ZN5S75C73v54Ev();
extern void _ZN5S75C73v55Ev();
extern void _ZN5S75C73v56Ev();
extern void _ZN5S75C73v57Ev();
extern void _ZN5S75C73v58Ev();
extern void _ZN5S75C73v59Ev();
extern void _ZN5S75C73v60Ev();
extern void _ZN5S75C73v61Ev();
extern void _ZN5S75C73v62Ev();
extern void _ZN5S75C73v63Ev();
extern void _ZN5S75C73v64Ev();
extern void _ZN5S75C73v65Ev();
extern void _ZN5S75C73v66Ev();
extern void _ZN5S75C73v67Ev();
extern void _ZN8S75C6_nt3v68Ev();
extern void _ZN8S75C6_nt3v69Ev();
extern void _ZN8S75C6_nt3v70Ev();
extern void _ZN8S75C6_nt3v71Ev();
extern void _ZN8S75C6_nt3v72Ev();
extern void _ZN8S75C6_nt3v73Ev();
extern void _ZN8S75C6_nt3v74Ev();
extern void _ZN8S75C6_nt3v75Ev();
extern void _ZN8S75C6_nt3v76Ev();
extern void _ZN8S75C6_nt3v77Ev();
extern void _ZN8S75C6_nt3v78Ev();
extern void _ZN8S75C6_nt3v79Ev();
extern void _ZN8S75C6_nt3v80Ev();
extern void _ZN8S75C6_nt3v81Ev();
extern void _ZN8S75C6_nt3v82Ev();
extern void _ZN8S75C6_nt3v83Ev();
extern void _ZN8S75C6_nt3v84Ev();
extern void _ZN8S75C6_nt3v85Ev();
extern void _ZN8S75C6_nt3v86Ev();
extern void _ZN8S75C6_nt3v87Ev();
extern void _ZN8S75C6_nt3v88Ev();
extern void _ZN8S75C6_nt3v89Ev();
extern void _ZN8S75C5_nt3v90Ev();
extern void _ZN8S75C5_nt3v91Ev();
extern void _ZN8S75C5_nt3v92Ev();
extern void _ZN8S75C5_nt3v93Ev();
extern void _ZN8S75C5_nt3v94Ev();
extern void _ZN8S75C5_nt3v95Ev();
extern void _ZN8S75C5_nt3v96Ev();
extern void _ZN8S75C5_nt3v97Ev();
extern void _ZN8S75C5_nt3v98Ev();
extern void _ZN8S75C5_nt3v99Ev();
extern void _ZN8S75C5_nt4v100Ev();
extern void _ZN8S75C5_nt4v101Ev();
extern void _ZN8S75C5_nt4v102Ev();
extern void _ZN8S75C5_nt4v103Ev();
extern void _ZN8S75C5_nt4v104Ev();
extern void _ZN8S75C5_nt4v105Ev();
extern void _ZN8S75C5_nt4v106Ev();
extern void _ZN8S75C5_nt4v107Ev();
extern void _ZN8S75C5_nt4v108Ev();
extern void _ZN8S75C5_nt4v109Ev();
extern void _ZN8S75C4_nt4v110Ev();
extern void _ZN8S75C4_nt4v111Ev();
extern void _ZN8S75C4_nt4v112Ev();
extern void _ZN8S75C4_nt4v113Ev();
extern void _ZN8S75C3_nt4v114Ev();
extern void _ZN8S75C3_nt4v115Ev();
extern void _ZN8S75C3_nt4v116Ev();
extern void _ZN8S75C3_nt4v117Ev();
extern void _ZN8S75C3_nt4v118Ev();
extern void _ZN8S75C3_nt4v119Ev();
extern void _ZN8S75C3_nt4v120Ev();
extern void _ZN8S75C3_nt4v121Ev();
static  VTBL_ENTRY vtc_S75C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S75C3_nt[0]),
  (VTBL_ENTRY)&_ZN8S75C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S75C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN5S75C72v4Ev,
  (VTBL_ENTRY)&_ZN5S75C72v5Ev,
  (VTBL_ENTRY)&_ZN5S75C72v6Ev,
  (VTBL_ENTRY)&_ZN5S75C72v7Ev,
  (VTBL_ENTRY)&_ZN5S75C72v8Ev,
  (VTBL_ENTRY)&_ZN5S75C72v9Ev,
  (VTBL_ENTRY)&_ZN5S75C73v10Ev,
  (VTBL_ENTRY)&_ZN5S75C73v11Ev,
  (VTBL_ENTRY)&_ZN5S75C73v12Ev,
  (VTBL_ENTRY)&_ZN5S75C73v13Ev,
  (VTBL_ENTRY)&_ZN5S75C73v14Ev,
  (VTBL_ENTRY)&_ZN5S75C73v15Ev,
  (VTBL_ENTRY)&_ZN5S75C73v16Ev,
  (VTBL_ENTRY)&_ZN5S75C73v17Ev,
  (VTBL_ENTRY)&_ZN5S75C73v18Ev,
  (VTBL_ENTRY)&_ZN5S75C73v19Ev,
  (VTBL_ENTRY)&_ZN5S75C73v20Ev,
  (VTBL_ENTRY)&_ZN5S75C73v21Ev,
  (VTBL_ENTRY)&_ZN5S75C73v22Ev,
  (VTBL_ENTRY)&_ZN5S75C73v23Ev,
  (VTBL_ENTRY)&_ZN5S75C73v24Ev,
  (VTBL_ENTRY)&_ZN5S75C73v25Ev,
  (VTBL_ENTRY)&_ZN5S75C73v26Ev,
  (VTBL_ENTRY)&_ZN5S75C73v27Ev,
  (VTBL_ENTRY)&_ZN5S75C73v28Ev,
  (VTBL_ENTRY)&_ZN5S75C73v29Ev,
  (VTBL_ENTRY)&_ZN5S75C73v30Ev,
  (VTBL_ENTRY)&_ZN5S75C73v31Ev,
  (VTBL_ENTRY)&_ZN5S75C73v32Ev,
  (VTBL_ENTRY)&_ZN5S75C73v33Ev,
  (VTBL_ENTRY)&_ZN5S75C73v34Ev,
  (VTBL_ENTRY)&_ZN5S75C73v35Ev,
  (VTBL_ENTRY)&_ZN5S75C73v36Ev,
  (VTBL_ENTRY)&_ZN5S75C73v37Ev,
  (VTBL_ENTRY)&_ZN5S75C73v38Ev,
  (VTBL_ENTRY)&_ZN5S75C73v39Ev,
  (VTBL_ENTRY)&_ZN5S75C73v40Ev,
  (VTBL_ENTRY)&_ZN5S75C73v41Ev,
  (VTBL_ENTRY)&_ZN5S75C73v42Ev,
  (VTBL_ENTRY)&_ZN5S75C73v43Ev,
  (VTBL_ENTRY)&_ZN5S75C73v44Ev,
  (VTBL_ENTRY)&_ZN5S75C73v45Ev,
  (VTBL_ENTRY)&_ZN5S75C73v46Ev,
  (VTBL_ENTRY)&_ZN5S75C73v47Ev,
  (VTBL_ENTRY)&_ZN5S75C73v48Ev,
  (VTBL_ENTRY)&_ZN5S75C73v49Ev,
  (VTBL_ENTRY)&_ZN5S75C73v50Ev,
  (VTBL_ENTRY)&_ZN5S75C73v51Ev,
  (VTBL_ENTRY)&_ZN5S75C73v52Ev,
  (VTBL_ENTRY)&_ZN5S75C73v53Ev,
  (VTBL_ENTRY)&_ZN5S75C73v54Ev,
  (VTBL_ENTRY)&_ZN5S75C73v55Ev,
  (VTBL_ENTRY)&_ZN5S75C73v56Ev,
  (VTBL_ENTRY)&_ZN5S75C73v57Ev,
  (VTBL_ENTRY)&_ZN5S75C73v58Ev,
  (VTBL_ENTRY)&_ZN5S75C73v59Ev,
  (VTBL_ENTRY)&_ZN5S75C73v60Ev,
  (VTBL_ENTRY)&_ZN5S75C73v61Ev,
  (VTBL_ENTRY)&_ZN5S75C73v62Ev,
  (VTBL_ENTRY)&_ZN5S75C73v63Ev,
  (VTBL_ENTRY)&_ZN5S75C73v64Ev,
  (VTBL_ENTRY)&_ZN5S75C73v65Ev,
  (VTBL_ENTRY)&_ZN5S75C73v66Ev,
  (VTBL_ENTRY)&_ZN5S75C73v67Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S75C4_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S75C4_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S75C4_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S75C4_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S75C3_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S75C3_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S75C3_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S75C3_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S75C3_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S75C3_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S75C3_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S75C3_nt4v121Ev,
};
extern VTBL_ENTRY _ZTI8S75C3_nt[];
VTBL_ENTRY *P__ZTI8S75C3_nt = _ZTI8S75C3_nt; 
extern  VTBL_ENTRY _ZTV8S75C3_nt[];
Class_Descriptor cd_S75C3_nt = {  "S75C3_nt", // class name
  bases_S75C3_nt, 4,
  &(vtc_S75C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,228), // object size
  NSPAIRA(_ZTI8S75C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S75C3_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  S75C2  : S75C3_nt {
  void *s75c2f0;
  virtual  ~S75C2(); // _ZN5S75C2D1Ev
  virtual void  v122(); // _ZN5S75C24v122Ev
  virtual void  v123(); // _ZN5S75C24v123Ev
  virtual void  v124(); // _ZN5S75C24v124Ev
  S75C2(); // tgen
};
//SIG(-1 S75C2) 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 Fp}


 S75C2 ::~S75C2(){ note_dtor("S75C2", this);}
void  S75C2 ::v122(){vfunc_called(this, "_ZN5S75C24v122Ev");}
void  S75C2 ::v123(){vfunc_called(this, "_ZN5S75C24v123Ev");}
void  S75C2 ::v124(){vfunc_called(this, "_ZN5S75C24v124Ev");}
S75C2 ::S75C2(){ note_ctor("S75C2", this);} // tgen

static void Test_S75C2()
{
  extern Class_Descriptor cd_S75C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,59)];
    init_test(&cd_S75C2, buf);
    S75C2 *dp, &lv = *(dp=new (buf) S75C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,232), "sizeof(S75C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S75C2)");
    check_base_class_offset(lv, (S75C7*)(S75C6_nt*)(S75C5_nt*)(S75C4_nt*)(S75C3_nt*), 0, "S75C2");
    check_base_class_offset(lv, (S75C6_nt*)(S75C5_nt*)(S75C4_nt*)(S75C3_nt*), 0, "S75C2");
    check_base_class_offset(lv, (S75C5_nt*)(S75C4_nt*)(S75C3_nt*), 0, "S75C2");
    check_base_class_offset(lv, (S75C4_nt*)(S75C3_nt*), 0, "S75C2");
    check_base_class_offset(lv, (S75C3_nt*), 0, "S75C2");
    check_field_offset(lv, s75c2f0, ABISELECT(304,228), "S75C2.s75c2f0");
    test_class_info(&lv, &cd_S75C2);
    dp->~S75C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS75C2(Test_S75C2, "S75C2", ABISELECT(312,232));

#else // __cplusplus

extern void _ZN5S75C2C1Ev();
extern void _ZN5S75C2D1Ev();
Name_Map name_map_S75C2[] = {
  NSPAIR(_ZN5S75C2C1Ev),
  NSPAIR(_ZN5S75C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S75C7;
extern VTBL_ENTRY _ZTI5S75C7[];
extern  VTBL_ENTRY _ZTV5S75C7[];
extern Class_Descriptor cd_S75C6_nt;
extern VTBL_ENTRY _ZTI8S75C6_nt[];
extern  VTBL_ENTRY _ZTV8S75C6_nt[];
extern Class_Descriptor cd_S75C5_nt;
extern VTBL_ENTRY _ZTI8S75C5_nt[];
extern  VTBL_ENTRY _ZTV8S75C5_nt[];
extern Class_Descriptor cd_S75C4_nt;
extern VTBL_ENTRY _ZTI8S75C4_nt[];
extern  VTBL_ENTRY _ZTV8S75C4_nt[];
extern Class_Descriptor cd_S75C3_nt;
extern VTBL_ENTRY _ZTI8S75C3_nt[];
extern  VTBL_ENTRY _ZTV8S75C3_nt[];
static Base_Class bases_S75C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S75C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S75C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S75C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S75C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S75C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI5S75C2[];
extern void _ZN5S75C2D1Ev();
extern void _ZN5S75C2D0Ev();
extern void _ZN5S75C72v4Ev();
extern void _ZN5S75C72v5Ev();
extern void _ZN5S75C72v6Ev();
extern void _ZN5S75C72v7Ev();
extern void _ZN5S75C72v8Ev();
extern void _ZN5S75C72v9Ev();
extern void _ZN5S75C73v10Ev();
extern void _ZN5S75C73v11Ev();
extern void _ZN5S75C73v12Ev();
extern void _ZN5S75C73v13Ev();
extern void _ZN5S75C73v14Ev();
extern void _ZN5S75C73v15Ev();
extern void _ZN5S75C73v16Ev();
extern void _ZN5S75C73v17Ev();
extern void _ZN5S75C73v18Ev();
extern void _ZN5S75C73v19Ev();
extern void _ZN5S75C73v20Ev();
extern void _ZN5S75C73v21Ev();
extern void _ZN5S75C73v22Ev();
extern void _ZN5S75C73v23Ev();
extern void _ZN5S75C73v24Ev();
extern void _ZN5S75C73v25Ev();
extern void _ZN5S75C73v26Ev();
extern void _ZN5S75C73v27Ev();
extern void _ZN5S75C73v28Ev();
extern void _ZN5S75C73v29Ev();
extern void _ZN5S75C73v30Ev();
extern void _ZN5S75C73v31Ev();
extern void _ZN5S75C73v32Ev();
extern void _ZN5S75C73v33Ev();
extern void _ZN5S75C73v34Ev();
extern void _ZN5S75C73v35Ev();
extern void _ZN5S75C73v36Ev();
extern void _ZN5S75C73v37Ev();
extern void _ZN5S75C73v38Ev();
extern void _ZN5S75C73v39Ev();
extern void _ZN5S75C73v40Ev();
extern void _ZN5S75C73v41Ev();
extern void _ZN5S75C73v42Ev();
extern void _ZN5S75C73v43Ev();
extern void _ZN5S75C73v44Ev();
extern void _ZN5S75C73v45Ev();
extern void _ZN5S75C73v46Ev();
extern void _ZN5S75C73v47Ev();
extern void _ZN5S75C73v48Ev();
extern void _ZN5S75C73v49Ev();
extern void _ZN5S75C73v50Ev();
extern void _ZN5S75C73v51Ev();
extern void _ZN5S75C73v52Ev();
extern void _ZN5S75C73v53Ev();
extern void _ZN5S75C73v54Ev();
extern void _ZN5S75C73v55Ev();
extern void _ZN5S75C73v56Ev();
extern void _ZN5S75C73v57Ev();
extern void _ZN5S75C73v58Ev();
extern void _ZN5S75C73v59Ev();
extern void _ZN5S75C73v60Ev();
extern void _ZN5S75C73v61Ev();
extern void _ZN5S75C73v62Ev();
extern void _ZN5S75C73v63Ev();
extern void _ZN5S75C73v64Ev();
extern void _ZN5S75C73v65Ev();
extern void _ZN5S75C73v66Ev();
extern void _ZN5S75C73v67Ev();
extern void _ZN8S75C6_nt3v68Ev();
extern void _ZN8S75C6_nt3v69Ev();
extern void _ZN8S75C6_nt3v70Ev();
extern void _ZN8S75C6_nt3v71Ev();
extern void _ZN8S75C6_nt3v72Ev();
extern void _ZN8S75C6_nt3v73Ev();
extern void _ZN8S75C6_nt3v74Ev();
extern void _ZN8S75C6_nt3v75Ev();
extern void _ZN8S75C6_nt3v76Ev();
extern void _ZN8S75C6_nt3v77Ev();
extern void _ZN8S75C6_nt3v78Ev();
extern void _ZN8S75C6_nt3v79Ev();
extern void _ZN8S75C6_nt3v80Ev();
extern void _ZN8S75C6_nt3v81Ev();
extern void _ZN8S75C6_nt3v82Ev();
extern void _ZN8S75C6_nt3v83Ev();
extern void _ZN8S75C6_nt3v84Ev();
extern void _ZN8S75C6_nt3v85Ev();
extern void _ZN8S75C6_nt3v86Ev();
extern void _ZN8S75C6_nt3v87Ev();
extern void _ZN8S75C6_nt3v88Ev();
extern void _ZN8S75C6_nt3v89Ev();
extern void _ZN8S75C5_nt3v90Ev();
extern void _ZN8S75C5_nt3v91Ev();
extern void _ZN8S75C5_nt3v92Ev();
extern void _ZN8S75C5_nt3v93Ev();
extern void _ZN8S75C5_nt3v94Ev();
extern void _ZN8S75C5_nt3v95Ev();
extern void _ZN8S75C5_nt3v96Ev();
extern void _ZN8S75C5_nt3v97Ev();
extern void _ZN8S75C5_nt3v98Ev();
extern void _ZN8S75C5_nt3v99Ev();
extern void _ZN8S75C5_nt4v100Ev();
extern void _ZN8S75C5_nt4v101Ev();
extern void _ZN8S75C5_nt4v102Ev();
extern void _ZN8S75C5_nt4v103Ev();
extern void _ZN8S75C5_nt4v104Ev();
extern void _ZN8S75C5_nt4v105Ev();
extern void _ZN8S75C5_nt4v106Ev();
extern void _ZN8S75C5_nt4v107Ev();
extern void _ZN8S75C5_nt4v108Ev();
extern void _ZN8S75C5_nt4v109Ev();
extern void _ZN8S75C4_nt4v110Ev();
extern void _ZN8S75C4_nt4v111Ev();
extern void _ZN8S75C4_nt4v112Ev();
extern void _ZN8S75C4_nt4v113Ev();
extern void _ZN8S75C3_nt4v114Ev();
extern void _ZN8S75C3_nt4v115Ev();
extern void _ZN8S75C3_nt4v116Ev();
extern void _ZN8S75C3_nt4v117Ev();
extern void _ZN8S75C3_nt4v118Ev();
extern void _ZN8S75C3_nt4v119Ev();
extern void _ZN8S75C3_nt4v120Ev();
extern void _ZN8S75C3_nt4v121Ev();
extern void _ZN5S75C24v122Ev();
extern void _ZN5S75C24v123Ev();
extern void _ZN5S75C24v124Ev();
static  VTBL_ENTRY vtc_S75C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S75C2[0]),
  (VTBL_ENTRY)&_ZN5S75C2D1Ev,
  (VTBL_ENTRY)&_ZN5S75C2D0Ev,
  (VTBL_ENTRY)&_ZN5S75C72v4Ev,
  (VTBL_ENTRY)&_ZN5S75C72v5Ev,
  (VTBL_ENTRY)&_ZN5S75C72v6Ev,
  (VTBL_ENTRY)&_ZN5S75C72v7Ev,
  (VTBL_ENTRY)&_ZN5S75C72v8Ev,
  (VTBL_ENTRY)&_ZN5S75C72v9Ev,
  (VTBL_ENTRY)&_ZN5S75C73v10Ev,
  (VTBL_ENTRY)&_ZN5S75C73v11Ev,
  (VTBL_ENTRY)&_ZN5S75C73v12Ev,
  (VTBL_ENTRY)&_ZN5S75C73v13Ev,
  (VTBL_ENTRY)&_ZN5S75C73v14Ev,
  (VTBL_ENTRY)&_ZN5S75C73v15Ev,
  (VTBL_ENTRY)&_ZN5S75C73v16Ev,
  (VTBL_ENTRY)&_ZN5S75C73v17Ev,
  (VTBL_ENTRY)&_ZN5S75C73v18Ev,
  (VTBL_ENTRY)&_ZN5S75C73v19Ev,
  (VTBL_ENTRY)&_ZN5S75C73v20Ev,
  (VTBL_ENTRY)&_ZN5S75C73v21Ev,
  (VTBL_ENTRY)&_ZN5S75C73v22Ev,
  (VTBL_ENTRY)&_ZN5S75C73v23Ev,
  (VTBL_ENTRY)&_ZN5S75C73v24Ev,
  (VTBL_ENTRY)&_ZN5S75C73v25Ev,
  (VTBL_ENTRY)&_ZN5S75C73v26Ev,
  (VTBL_ENTRY)&_ZN5S75C73v27Ev,
  (VTBL_ENTRY)&_ZN5S75C73v28Ev,
  (VTBL_ENTRY)&_ZN5S75C73v29Ev,
  (VTBL_ENTRY)&_ZN5S75C73v30Ev,
  (VTBL_ENTRY)&_ZN5S75C73v31Ev,
  (VTBL_ENTRY)&_ZN5S75C73v32Ev,
  (VTBL_ENTRY)&_ZN5S75C73v33Ev,
  (VTBL_ENTRY)&_ZN5S75C73v34Ev,
  (VTBL_ENTRY)&_ZN5S75C73v35Ev,
  (VTBL_ENTRY)&_ZN5S75C73v36Ev,
  (VTBL_ENTRY)&_ZN5S75C73v37Ev,
  (VTBL_ENTRY)&_ZN5S75C73v38Ev,
  (VTBL_ENTRY)&_ZN5S75C73v39Ev,
  (VTBL_ENTRY)&_ZN5S75C73v40Ev,
  (VTBL_ENTRY)&_ZN5S75C73v41Ev,
  (VTBL_ENTRY)&_ZN5S75C73v42Ev,
  (VTBL_ENTRY)&_ZN5S75C73v43Ev,
  (VTBL_ENTRY)&_ZN5S75C73v44Ev,
  (VTBL_ENTRY)&_ZN5S75C73v45Ev,
  (VTBL_ENTRY)&_ZN5S75C73v46Ev,
  (VTBL_ENTRY)&_ZN5S75C73v47Ev,
  (VTBL_ENTRY)&_ZN5S75C73v48Ev,
  (VTBL_ENTRY)&_ZN5S75C73v49Ev,
  (VTBL_ENTRY)&_ZN5S75C73v50Ev,
  (VTBL_ENTRY)&_ZN5S75C73v51Ev,
  (VTBL_ENTRY)&_ZN5S75C73v52Ev,
  (VTBL_ENTRY)&_ZN5S75C73v53Ev,
  (VTBL_ENTRY)&_ZN5S75C73v54Ev,
  (VTBL_ENTRY)&_ZN5S75C73v55Ev,
  (VTBL_ENTRY)&_ZN5S75C73v56Ev,
  (VTBL_ENTRY)&_ZN5S75C73v57Ev,
  (VTBL_ENTRY)&_ZN5S75C73v58Ev,
  (VTBL_ENTRY)&_ZN5S75C73v59Ev,
  (VTBL_ENTRY)&_ZN5S75C73v60Ev,
  (VTBL_ENTRY)&_ZN5S75C73v61Ev,
  (VTBL_ENTRY)&_ZN5S75C73v62Ev,
  (VTBL_ENTRY)&_ZN5S75C73v63Ev,
  (VTBL_ENTRY)&_ZN5S75C73v64Ev,
  (VTBL_ENTRY)&_ZN5S75C73v65Ev,
  (VTBL_ENTRY)&_ZN5S75C73v66Ev,
  (VTBL_ENTRY)&_ZN5S75C73v67Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S75C4_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S75C4_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S75C4_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S75C4_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S75C3_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S75C3_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S75C3_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S75C3_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S75C3_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S75C3_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S75C3_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S75C3_nt4v121Ev,
  (VTBL_ENTRY)&_ZN5S75C24v122Ev,
  (VTBL_ENTRY)&_ZN5S75C24v123Ev,
  (VTBL_ENTRY)&_ZN5S75C24v124Ev,
};
extern VTBL_ENTRY _ZTI5S75C2[];
extern  VTBL_ENTRY _ZTV5S75C2[];
Class_Descriptor cd_S75C2 = {  "S75C2", // class name
  bases_S75C2, 5,
  &(vtc_S75C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(312,232), // object size
  NSPAIRA(_ZTI5S75C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S75C2),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  S75C1  : S75C2 {
  void *s75c1f0;
  virtual  ~S75C1(); // _ZN5S75C1D1Ev
  virtual void  v1(); // _ZN5S75C12v1Ev
  virtual void  v2(); // _ZN5S75C12v2Ev
  virtual void  v3(); // _ZN5S75C12v3Ev
  S75C1(); // tgen
};
//SIG(1 S75C1) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ BC7{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fi FL Fp[4] Fi[2] Fp FC8{ m Fi[2]} Fp[2]} vd v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 Fi[2] Fp Fi[2] FC9{ BC10{ BC11{ BC12{ m Fp Fi[2]}}}} FC9 FC13{ m} FC9 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2]} vd v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 Fi:1 Fi:1 Fi:1 FC14{ BC15{ BC12}} FC16{ BC17{ BC12}} FC18{ BC19{ BC12}} FC20{ BC21{ BC12}} Fi[3]} vd v110 v111 v112 v113 FC8 Fi:1 FC20} vd v114 v115 v116 v117 v118 v119 v120 v121 Fi Fi:1} vd v122 v123 v124 Fp} vd v1 v2 v3 Fp}


 S75C1 ::~S75C1(){ note_dtor("S75C1", this);}
void  S75C1 ::v1(){vfunc_called(this, "_ZN5S75C12v1Ev");}
void  S75C1 ::v2(){vfunc_called(this, "_ZN5S75C12v2Ev");}
void  S75C1 ::v3(){vfunc_called(this, "_ZN5S75C12v3Ev");}
S75C1 ::S75C1(){ note_ctor("S75C1", this);} // tgen

static void Test_S75C1()
{
  extern Class_Descriptor cd_S75C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(41,60)];
    init_test(&cd_S75C1, buf);
    S75C1 *dp, &lv = *(dp=new (buf) S75C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,236), "sizeof(S75C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S75C1)");
    check_base_class_offset(lv, (S75C7*)(S75C6_nt*)(S75C5_nt*)(S75C4_nt*)(S75C3_nt*)(S75C2*), 0, "S75C1");
    check_base_class_offset(lv, (S75C6_nt*)(S75C5_nt*)(S75C4_nt*)(S75C3_nt*)(S75C2*), 0, "S75C1");
    check_base_class_offset(lv, (S75C5_nt*)(S75C4_nt*)(S75C3_nt*)(S75C2*), 0, "S75C1");
    check_base_class_offset(lv, (S75C4_nt*)(S75C3_nt*)(S75C2*), 0, "S75C1");
    check_base_class_offset(lv, (S75C3_nt*)(S75C2*), 0, "S75C1");
    check_base_class_offset(lv, (S75C2*), 0, "S75C1");
    check_field_offset(lv, s75c1f0, ABISELECT(312,232), "S75C1.s75c1f0");
    test_class_info(&lv, &cd_S75C1);
    dp->~S75C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS75C1(Test_S75C1, "S75C1", ABISELECT(320,236));

#else // __cplusplus

extern void _ZN5S75C1C1Ev();
extern void _ZN5S75C1D1Ev();
Name_Map name_map_S75C1[] = {
  NSPAIR(_ZN5S75C1C1Ev),
  NSPAIR(_ZN5S75C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S75C7;
extern VTBL_ENTRY _ZTI5S75C7[];
extern  VTBL_ENTRY _ZTV5S75C7[];
extern Class_Descriptor cd_S75C6_nt;
extern VTBL_ENTRY _ZTI8S75C6_nt[];
extern  VTBL_ENTRY _ZTV8S75C6_nt[];
extern Class_Descriptor cd_S75C5_nt;
extern VTBL_ENTRY _ZTI8S75C5_nt[];
extern  VTBL_ENTRY _ZTV8S75C5_nt[];
extern Class_Descriptor cd_S75C4_nt;
extern VTBL_ENTRY _ZTI8S75C4_nt[];
extern  VTBL_ENTRY _ZTV8S75C4_nt[];
extern Class_Descriptor cd_S75C3_nt;
extern VTBL_ENTRY _ZTI8S75C3_nt[];
extern  VTBL_ENTRY _ZTV8S75C3_nt[];
extern Class_Descriptor cd_S75C2;
extern VTBL_ENTRY _ZTI5S75C2[];
extern  VTBL_ENTRY _ZTV5S75C2[];
static Base_Class bases_S75C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S75C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S75C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S75C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S75C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S75C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S75C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI5S75C1[];
extern void _ZN5S75C1D1Ev();
extern void _ZN5S75C1D0Ev();
extern void _ZN5S75C72v4Ev();
extern void _ZN5S75C72v5Ev();
extern void _ZN5S75C72v6Ev();
extern void _ZN5S75C72v7Ev();
extern void _ZN5S75C72v8Ev();
extern void _ZN5S75C72v9Ev();
extern void _ZN5S75C73v10Ev();
extern void _ZN5S75C73v11Ev();
extern void _ZN5S75C73v12Ev();
extern void _ZN5S75C73v13Ev();
extern void _ZN5S75C73v14Ev();
extern void _ZN5S75C73v15Ev();
extern void _ZN5S75C73v16Ev();
extern void _ZN5S75C73v17Ev();
extern void _ZN5S75C73v18Ev();
extern void _ZN5S75C73v19Ev();
extern void _ZN5S75C73v20Ev();
extern void _ZN5S75C73v21Ev();
extern void _ZN5S75C73v22Ev();
extern void _ZN5S75C73v23Ev();
extern void _ZN5S75C73v24Ev();
extern void _ZN5S75C73v25Ev();
extern void _ZN5S75C73v26Ev();
extern void _ZN5S75C73v27Ev();
extern void _ZN5S75C73v28Ev();
extern void _ZN5S75C73v29Ev();
extern void _ZN5S75C73v30Ev();
extern void _ZN5S75C73v31Ev();
extern void _ZN5S75C73v32Ev();
extern void _ZN5S75C73v33Ev();
extern void _ZN5S75C73v34Ev();
extern void _ZN5S75C73v35Ev();
extern void _ZN5S75C73v36Ev();
extern void _ZN5S75C73v37Ev();
extern void _ZN5S75C73v38Ev();
extern void _ZN5S75C73v39Ev();
extern void _ZN5S75C73v40Ev();
extern void _ZN5S75C73v41Ev();
extern void _ZN5S75C73v42Ev();
extern void _ZN5S75C73v43Ev();
extern void _ZN5S75C73v44Ev();
extern void _ZN5S75C73v45Ev();
extern void _ZN5S75C73v46Ev();
extern void _ZN5S75C73v47Ev();
extern void _ZN5S75C73v48Ev();
extern void _ZN5S75C73v49Ev();
extern void _ZN5S75C73v50Ev();
extern void _ZN5S75C73v51Ev();
extern void _ZN5S75C73v52Ev();
extern void _ZN5S75C73v53Ev();
extern void _ZN5S75C73v54Ev();
extern void _ZN5S75C73v55Ev();
extern void _ZN5S75C73v56Ev();
extern void _ZN5S75C73v57Ev();
extern void _ZN5S75C73v58Ev();
extern void _ZN5S75C73v59Ev();
extern void _ZN5S75C73v60Ev();
extern void _ZN5S75C73v61Ev();
extern void _ZN5S75C73v62Ev();
extern void _ZN5S75C73v63Ev();
extern void _ZN5S75C73v64Ev();
extern void _ZN5S75C73v65Ev();
extern void _ZN5S75C73v66Ev();
extern void _ZN5S75C73v67Ev();
extern void _ZN8S75C6_nt3v68Ev();
extern void _ZN8S75C6_nt3v69Ev();
extern void _ZN8S75C6_nt3v70Ev();
extern void _ZN8S75C6_nt3v71Ev();
extern void _ZN8S75C6_nt3v72Ev();
extern void _ZN8S75C6_nt3v73Ev();
extern void _ZN8S75C6_nt3v74Ev();
extern void _ZN8S75C6_nt3v75Ev();
extern void _ZN8S75C6_nt3v76Ev();
extern void _ZN8S75C6_nt3v77Ev();
extern void _ZN8S75C6_nt3v78Ev();
extern void _ZN8S75C6_nt3v79Ev();
extern void _ZN8S75C6_nt3v80Ev();
extern void _ZN8S75C6_nt3v81Ev();
extern void _ZN8S75C6_nt3v82Ev();
extern void _ZN8S75C6_nt3v83Ev();
extern void _ZN8S75C6_nt3v84Ev();
extern void _ZN8S75C6_nt3v85Ev();
extern void _ZN8S75C6_nt3v86Ev();
extern void _ZN8S75C6_nt3v87Ev();
extern void _ZN8S75C6_nt3v88Ev();
extern void _ZN8S75C6_nt3v89Ev();
extern void _ZN8S75C5_nt3v90Ev();
extern void _ZN8S75C5_nt3v91Ev();
extern void _ZN8S75C5_nt3v92Ev();
extern void _ZN8S75C5_nt3v93Ev();
extern void _ZN8S75C5_nt3v94Ev();
extern void _ZN8S75C5_nt3v95Ev();
extern void _ZN8S75C5_nt3v96Ev();
extern void _ZN8S75C5_nt3v97Ev();
extern void _ZN8S75C5_nt3v98Ev();
extern void _ZN8S75C5_nt3v99Ev();
extern void _ZN8S75C5_nt4v100Ev();
extern void _ZN8S75C5_nt4v101Ev();
extern void _ZN8S75C5_nt4v102Ev();
extern void _ZN8S75C5_nt4v103Ev();
extern void _ZN8S75C5_nt4v104Ev();
extern void _ZN8S75C5_nt4v105Ev();
extern void _ZN8S75C5_nt4v106Ev();
extern void _ZN8S75C5_nt4v107Ev();
extern void _ZN8S75C5_nt4v108Ev();
extern void _ZN8S75C5_nt4v109Ev();
extern void _ZN8S75C4_nt4v110Ev();
extern void _ZN8S75C4_nt4v111Ev();
extern void _ZN8S75C4_nt4v112Ev();
extern void _ZN8S75C4_nt4v113Ev();
extern void _ZN8S75C3_nt4v114Ev();
extern void _ZN8S75C3_nt4v115Ev();
extern void _ZN8S75C3_nt4v116Ev();
extern void _ZN8S75C3_nt4v117Ev();
extern void _ZN8S75C3_nt4v118Ev();
extern void _ZN8S75C3_nt4v119Ev();
extern void _ZN8S75C3_nt4v120Ev();
extern void _ZN8S75C3_nt4v121Ev();
extern void _ZN5S75C24v122Ev();
extern void _ZN5S75C24v123Ev();
extern void _ZN5S75C24v124Ev();
extern void _ZN5S75C12v1Ev();
extern void _ZN5S75C12v2Ev();
extern void _ZN5S75C12v3Ev();
static  VTBL_ENTRY vtc_S75C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S75C1[0]),
  (VTBL_ENTRY)&_ZN5S75C1D1Ev,
  (VTBL_ENTRY)&_ZN5S75C1D0Ev,
  (VTBL_ENTRY)&_ZN5S75C72v4Ev,
  (VTBL_ENTRY)&_ZN5S75C72v5Ev,
  (VTBL_ENTRY)&_ZN5S75C72v6Ev,
  (VTBL_ENTRY)&_ZN5S75C72v7Ev,
  (VTBL_ENTRY)&_ZN5S75C72v8Ev,
  (VTBL_ENTRY)&_ZN5S75C72v9Ev,
  (VTBL_ENTRY)&_ZN5S75C73v10Ev,
  (VTBL_ENTRY)&_ZN5S75C73v11Ev,
  (VTBL_ENTRY)&_ZN5S75C73v12Ev,
  (VTBL_ENTRY)&_ZN5S75C73v13Ev,
  (VTBL_ENTRY)&_ZN5S75C73v14Ev,
  (VTBL_ENTRY)&_ZN5S75C73v15Ev,
  (VTBL_ENTRY)&_ZN5S75C73v16Ev,
  (VTBL_ENTRY)&_ZN5S75C73v17Ev,
  (VTBL_ENTRY)&_ZN5S75C73v18Ev,
  (VTBL_ENTRY)&_ZN5S75C73v19Ev,
  (VTBL_ENTRY)&_ZN5S75C73v20Ev,
  (VTBL_ENTRY)&_ZN5S75C73v21Ev,
  (VTBL_ENTRY)&_ZN5S75C73v22Ev,
  (VTBL_ENTRY)&_ZN5S75C73v23Ev,
  (VTBL_ENTRY)&_ZN5S75C73v24Ev,
  (VTBL_ENTRY)&_ZN5S75C73v25Ev,
  (VTBL_ENTRY)&_ZN5S75C73v26Ev,
  (VTBL_ENTRY)&_ZN5S75C73v27Ev,
  (VTBL_ENTRY)&_ZN5S75C73v28Ev,
  (VTBL_ENTRY)&_ZN5S75C73v29Ev,
  (VTBL_ENTRY)&_ZN5S75C73v30Ev,
  (VTBL_ENTRY)&_ZN5S75C73v31Ev,
  (VTBL_ENTRY)&_ZN5S75C73v32Ev,
  (VTBL_ENTRY)&_ZN5S75C73v33Ev,
  (VTBL_ENTRY)&_ZN5S75C73v34Ev,
  (VTBL_ENTRY)&_ZN5S75C73v35Ev,
  (VTBL_ENTRY)&_ZN5S75C73v36Ev,
  (VTBL_ENTRY)&_ZN5S75C73v37Ev,
  (VTBL_ENTRY)&_ZN5S75C73v38Ev,
  (VTBL_ENTRY)&_ZN5S75C73v39Ev,
  (VTBL_ENTRY)&_ZN5S75C73v40Ev,
  (VTBL_ENTRY)&_ZN5S75C73v41Ev,
  (VTBL_ENTRY)&_ZN5S75C73v42Ev,
  (VTBL_ENTRY)&_ZN5S75C73v43Ev,
  (VTBL_ENTRY)&_ZN5S75C73v44Ev,
  (VTBL_ENTRY)&_ZN5S75C73v45Ev,
  (VTBL_ENTRY)&_ZN5S75C73v46Ev,
  (VTBL_ENTRY)&_ZN5S75C73v47Ev,
  (VTBL_ENTRY)&_ZN5S75C73v48Ev,
  (VTBL_ENTRY)&_ZN5S75C73v49Ev,
  (VTBL_ENTRY)&_ZN5S75C73v50Ev,
  (VTBL_ENTRY)&_ZN5S75C73v51Ev,
  (VTBL_ENTRY)&_ZN5S75C73v52Ev,
  (VTBL_ENTRY)&_ZN5S75C73v53Ev,
  (VTBL_ENTRY)&_ZN5S75C73v54Ev,
  (VTBL_ENTRY)&_ZN5S75C73v55Ev,
  (VTBL_ENTRY)&_ZN5S75C73v56Ev,
  (VTBL_ENTRY)&_ZN5S75C73v57Ev,
  (VTBL_ENTRY)&_ZN5S75C73v58Ev,
  (VTBL_ENTRY)&_ZN5S75C73v59Ev,
  (VTBL_ENTRY)&_ZN5S75C73v60Ev,
  (VTBL_ENTRY)&_ZN5S75C73v61Ev,
  (VTBL_ENTRY)&_ZN5S75C73v62Ev,
  (VTBL_ENTRY)&_ZN5S75C73v63Ev,
  (VTBL_ENTRY)&_ZN5S75C73v64Ev,
  (VTBL_ENTRY)&_ZN5S75C73v65Ev,
  (VTBL_ENTRY)&_ZN5S75C73v66Ev,
  (VTBL_ENTRY)&_ZN5S75C73v67Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S75C6_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S75C5_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S75C4_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S75C4_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S75C4_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S75C4_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S75C3_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S75C3_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S75C3_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S75C3_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S75C3_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S75C3_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S75C3_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S75C3_nt4v121Ev,
  (VTBL_ENTRY)&_ZN5S75C24v122Ev,
  (VTBL_ENTRY)&_ZN5S75C24v123Ev,
  (VTBL_ENTRY)&_ZN5S75C24v124Ev,
  (VTBL_ENTRY)&_ZN5S75C12v1Ev,
  (VTBL_ENTRY)&_ZN5S75C12v2Ev,
  (VTBL_ENTRY)&_ZN5S75C12v3Ev,
};
extern VTBL_ENTRY _ZTI5S75C1[];
extern  VTBL_ENTRY _ZTV5S75C1[];
Class_Descriptor cd_S75C1 = {  "S75C1", // class name
  bases_S75C1, 6,
  &(vtc_S75C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(320,236), // object size
  NSPAIRA(_ZTI5S75C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S75C1),128, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  6, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S76C7  {
  int s76c7f0;
  __tsi64 s76c7f1;
  void *s76c7f2[4];
  int s76c7f3[2];
  void *s76c7f4;
  ::S3216C4_nt s76c7f5;
  void *s76c7f6[2];
  virtual  ~S76C7(); // _ZN5S76C7D1Ev
  virtual void  v4(); // _ZN5S76C72v4Ev
  virtual void  v5(); // _ZN5S76C72v5Ev
  virtual void  v6(); // _ZN5S76C72v6Ev
  virtual void  v7(); // _ZN5S76C72v7Ev
  virtual void  v8(); // _ZN5S76C72v8Ev
  virtual void  v9(); // _ZN5S76C72v9Ev
  virtual void  v10(); // _ZN5S76C73v10Ev
  virtual void  v11(); // _ZN5S76C73v11Ev
  virtual void  v12(); // _ZN5S76C73v12Ev
  virtual void  v13(); // _ZN5S76C73v13Ev
  virtual void  v14(); // _ZN5S76C73v14Ev
  virtual void  v15(); // _ZN5S76C73v15Ev
  virtual void  v16(); // _ZN5S76C73v16Ev
  virtual void  v17(); // _ZN5S76C73v17Ev
  virtual void  v18(); // _ZN5S76C73v18Ev
  virtual void  v19(); // _ZN5S76C73v19Ev
  virtual void  v20(); // _ZN5S76C73v20Ev
  virtual void  v21(); // _ZN5S76C73v21Ev
  virtual void  v22(); // _ZN5S76C73v22Ev
  virtual void  v23(); // _ZN5S76C73v23Ev
  virtual void  v24(); // _ZN5S76C73v24Ev
  virtual void  v25(); // _ZN5S76C73v25Ev
  virtual void  v26(); // _ZN5S76C73v26Ev
  virtual void  v27(); // _ZN5S76C73v27Ev
  virtual void  v28(); // _ZN5S76C73v28Ev
  virtual void  v29(); // _ZN5S76C73v29Ev
  virtual void  v30(); // _ZN5S76C73v30Ev
  virtual void  v31(); // _ZN5S76C73v31Ev
  virtual void  v32(); // _ZN5S76C73v32Ev
  virtual void  v33(); // _ZN5S76C73v33Ev
  virtual void  v34(); // _ZN5S76C73v34Ev
  virtual void  v35(); // _ZN5S76C73v35Ev
  virtual void  v36(); // _ZN5S76C73v36Ev
  virtual void  v37(); // _ZN5S76C73v37Ev
  virtual void  v38(); // _ZN5S76C73v38Ev
  virtual void  v39(); // _ZN5S76C73v39Ev
  virtual void  v40(); // _ZN5S76C73v40Ev
  virtual void  v41(); // _ZN5S76C73v41Ev
  virtual void  v42(); // _ZN5S76C73v42Ev
  virtual void  v43(); // _ZN5S76C73v43Ev
  virtual void  v44(); // _ZN5S76C73v44Ev
  virtual void  v45(); // _ZN5S76C73v45Ev
  virtual void  v46(); // _ZN5S76C73v46Ev
  virtual void  v47(); // _ZN5S76C73v47Ev
  virtual void  v48(); // _ZN5S76C73v48Ev
  virtual void  v49(); // _ZN5S76C73v49Ev
  virtual void  v50(); // _ZN5S76C73v50Ev
  virtual void  v51(); // _ZN5S76C73v51Ev
  virtual void  v52(); // _ZN5S76C73v52Ev
  virtual void  v53(); // _ZN5S76C73v53Ev
  virtual void  v54(); // _ZN5S76C73v54Ev
  virtual void  v55(); // _ZN5S76C73v55Ev
  virtual void  v56(); // _ZN5S76C73v56Ev
  virtual void  v57(); // _ZN5S76C73v57Ev
  virtual void  v58(); // _ZN5S76C73v58Ev
  virtual void  v59(); // _ZN5S76C73v59Ev
  virtual void  v60(); // _ZN5S76C73v60Ev
  virtual void  v61(); // _ZN5S76C73v61Ev
  virtual void  v62(); // _ZN5S76C73v62Ev
  virtual void  v63(); // _ZN5S76C73v63Ev
  virtual void  v64(); // _ZN5S76C73v64Ev
  virtual void  v65(); // _ZN5S76C73v65Ev
  virtual void  v66(); // _ZN5S76C73v66Ev
  virtual void  v67(); // _ZN5S76C73v67Ev
  S76C7(); // tgen
};
//SIG(-1 S76C7) 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]}


 S76C7 ::~S76C7(){ note_dtor("S76C7", this);}
void  S76C7 ::v4(){vfunc_called(this, "_ZN5S76C72v4Ev");}
void  S76C7 ::v5(){vfunc_called(this, "_ZN5S76C72v5Ev");}
void  S76C7 ::v6(){vfunc_called(this, "_ZN5S76C72v6Ev");}
void  S76C7 ::v7(){vfunc_called(this, "_ZN5S76C72v7Ev");}
void  S76C7 ::v8(){vfunc_called(this, "_ZN5S76C72v8Ev");}
void  S76C7 ::v9(){vfunc_called(this, "_ZN5S76C72v9Ev");}
void  S76C7 ::v10(){vfunc_called(this, "_ZN5S76C73v10Ev");}
void  S76C7 ::v11(){vfunc_called(this, "_ZN5S76C73v11Ev");}
void  S76C7 ::v12(){vfunc_called(this, "_ZN5S76C73v12Ev");}
void  S76C7 ::v13(){vfunc_called(this, "_ZN5S76C73v13Ev");}
void  S76C7 ::v14(){vfunc_called(this, "_ZN5S76C73v14Ev");}
void  S76C7 ::v15(){vfunc_called(this, "_ZN5S76C73v15Ev");}
void  S76C7 ::v16(){vfunc_called(this, "_ZN5S76C73v16Ev");}
void  S76C7 ::v17(){vfunc_called(this, "_ZN5S76C73v17Ev");}
void  S76C7 ::v18(){vfunc_called(this, "_ZN5S76C73v18Ev");}
void  S76C7 ::v19(){vfunc_called(this, "_ZN5S76C73v19Ev");}
void  S76C7 ::v20(){vfunc_called(this, "_ZN5S76C73v20Ev");}
void  S76C7 ::v21(){vfunc_called(this, "_ZN5S76C73v21Ev");}
void  S76C7 ::v22(){vfunc_called(this, "_ZN5S76C73v22Ev");}
void  S76C7 ::v23(){vfunc_called(this, "_ZN5S76C73v23Ev");}
void  S76C7 ::v24(){vfunc_called(this, "_ZN5S76C73v24Ev");}
void  S76C7 ::v25(){vfunc_called(this, "_ZN5S76C73v25Ev");}
void  S76C7 ::v26(){vfunc_called(this, "_ZN5S76C73v26Ev");}
void  S76C7 ::v27(){vfunc_called(this, "_ZN5S76C73v27Ev");}
void  S76C7 ::v28(){vfunc_called(this, "_ZN5S76C73v28Ev");}
void  S76C7 ::v29(){vfunc_called(this, "_ZN5S76C73v29Ev");}
void  S76C7 ::v30(){vfunc_called(this, "_ZN5S76C73v30Ev");}
void  S76C7 ::v31(){vfunc_called(this, "_ZN5S76C73v31Ev");}
void  S76C7 ::v32(){vfunc_called(this, "_ZN5S76C73v32Ev");}
void  S76C7 ::v33(){vfunc_called(this, "_ZN5S76C73v33Ev");}
void  S76C7 ::v34(){vfunc_called(this, "_ZN5S76C73v34Ev");}
void  S76C7 ::v35(){vfunc_called(this, "_ZN5S76C73v35Ev");}
void  S76C7 ::v36(){vfunc_called(this, "_ZN5S76C73v36Ev");}
void  S76C7 ::v37(){vfunc_called(this, "_ZN5S76C73v37Ev");}
void  S76C7 ::v38(){vfunc_called(this, "_ZN5S76C73v38Ev");}
void  S76C7 ::v39(){vfunc_called(this, "_ZN5S76C73v39Ev");}
void  S76C7 ::v40(){vfunc_called(this, "_ZN5S76C73v40Ev");}
void  S76C7 ::v41(){vfunc_called(this, "_ZN5S76C73v41Ev");}
void  S76C7 ::v42(){vfunc_called(this, "_ZN5S76C73v42Ev");}
void  S76C7 ::v43(){vfunc_called(this, "_ZN5S76C73v43Ev");}
void  S76C7 ::v44(){vfunc_called(this, "_ZN5S76C73v44Ev");}
void  S76C7 ::v45(){vfunc_called(this, "_ZN5S76C73v45Ev");}
void  S76C7 ::v46(){vfunc_called(this, "_ZN5S76C73v46Ev");}
void  S76C7 ::v47(){vfunc_called(this, "_ZN5S76C73v47Ev");}
void  S76C7 ::v48(){vfunc_called(this, "_ZN5S76C73v48Ev");}
void  S76C7 ::v49(){vfunc_called(this, "_ZN5S76C73v49Ev");}
void  S76C7 ::v50(){vfunc_called(this, "_ZN5S76C73v50Ev");}
void  S76C7 ::v51(){vfunc_called(this, "_ZN5S76C73v51Ev");}
void  S76C7 ::v52(){vfunc_called(this, "_ZN5S76C73v52Ev");}
void  S76C7 ::v53(){vfunc_called(this, "_ZN5S76C73v53Ev");}
void  S76C7 ::v54(){vfunc_called(this, "_ZN5S76C73v54Ev");}
void  S76C7 ::v55(){vfunc_called(this, "_ZN5S76C73v55Ev");}
void  S76C7 ::v56(){vfunc_called(this, "_ZN5S76C73v56Ev");}
void  S76C7 ::v57(){vfunc_called(this, "_ZN5S76C73v57Ev");}
void  S76C7 ::v58(){vfunc_called(this, "_ZN5S76C73v58Ev");}
void  S76C7 ::v59(){vfunc_called(this, "_ZN5S76C73v59Ev");}
void  S76C7 ::v60(){vfunc_called(this, "_ZN5S76C73v60Ev");}
void  S76C7 ::v61(){vfunc_called(this, "_ZN5S76C73v61Ev");}
void  S76C7 ::v62(){vfunc_called(this, "_ZN5S76C73v62Ev");}
void  S76C7 ::v63(){vfunc_called(this, "_ZN5S76C73v63Ev");}
void  S76C7 ::v64(){vfunc_called(this, "_ZN5S76C73v64Ev");}
void  S76C7 ::v65(){vfunc_called(this, "_ZN5S76C73v65Ev");}
void  S76C7 ::v66(){vfunc_called(this, "_ZN5S76C73v66Ev");}
void  S76C7 ::v67(){vfunc_called(this, "_ZN5S76C73v67Ev");}
S76C7 ::S76C7(){ note_ctor("S76C7", this);} // tgen

static void Test_S76C7()
{
  extern Class_Descriptor cd_S76C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S76C7, buf);
    S76C7 *dp, &lv = *(dp=new (buf) S76C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S76C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S76C7)");
    check_field_offset(lv, s76c7f0, ABISELECT(8,4), "S76C7.s76c7f0");
    check_field_offset(lv, s76c7f1, ABISELECT(16,8), "S76C7.s76c7f1");
    check_field_offset(lv, s76c7f2, ABISELECT(24,16), "S76C7.s76c7f2");
    check_field_offset(lv, s76c7f3, ABISELECT(56,32), "S76C7.s76c7f3");
    check_field_offset(lv, s76c7f4, ABISELECT(64,40), "S76C7.s76c7f4");
    check_field_offset(lv, s76c7f5, ABISELECT(72,44), "S76C7.s76c7f5");
    check_field_offset(lv, s76c7f6, ABISELECT(80,52), "S76C7.s76c7f6");
    test_class_info(&lv, &cd_S76C7);
    dp->~S76C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS76C7(Test_S76C7, "S76C7", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN5S76C7C1Ev();
extern void _ZN5S76C7D1Ev();
Name_Map name_map_S76C7[] = {
  NSPAIR(_ZN5S76C7C1Ev),
  NSPAIR(_ZN5S76C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI5S76C7[];
extern void _ZN5S76C7D1Ev();
extern void _ZN5S76C7D0Ev();
extern void _ZN5S76C72v4Ev();
extern void _ZN5S76C72v5Ev();
extern void _ZN5S76C72v6Ev();
extern void _ZN5S76C72v7Ev();
extern void _ZN5S76C72v8Ev();
extern void _ZN5S76C72v9Ev();
extern void _ZN5S76C73v10Ev();
extern void _ZN5S76C73v11Ev();
extern void _ZN5S76C73v12Ev();
extern void _ZN5S76C73v13Ev();
extern void _ZN5S76C73v14Ev();
extern void _ZN5S76C73v15Ev();
extern void _ZN5S76C73v16Ev();
extern void _ZN5S76C73v17Ev();
extern void _ZN5S76C73v18Ev();
extern void _ZN5S76C73v19Ev();
extern void _ZN5S76C73v20Ev();
extern void _ZN5S76C73v21Ev();
extern void _ZN5S76C73v22Ev();
extern void _ZN5S76C73v23Ev();
extern void _ZN5S76C73v24Ev();
extern void _ZN5S76C73v25Ev();
extern void _ZN5S76C73v26Ev();
extern void _ZN5S76C73v27Ev();
extern void _ZN5S76C73v28Ev();
extern void _ZN5S76C73v29Ev();
extern void _ZN5S76C73v30Ev();
extern void _ZN5S76C73v31Ev();
extern void _ZN5S76C73v32Ev();
extern void _ZN5S76C73v33Ev();
extern void _ZN5S76C73v34Ev();
extern void _ZN5S76C73v35Ev();
extern void _ZN5S76C73v36Ev();
extern void _ZN5S76C73v37Ev();
extern void _ZN5S76C73v38Ev();
extern void _ZN5S76C73v39Ev();
extern void _ZN5S76C73v40Ev();
extern void _ZN5S76C73v41Ev();
extern void _ZN5S76C73v42Ev();
extern void _ZN5S76C73v43Ev();
extern void _ZN5S76C73v44Ev();
extern void _ZN5S76C73v45Ev();
extern void _ZN5S76C73v46Ev();
extern void _ZN5S76C73v47Ev();
extern void _ZN5S76C73v48Ev();
extern void _ZN5S76C73v49Ev();
extern void _ZN5S76C73v50Ev();
extern void _ZN5S76C73v51Ev();
extern void _ZN5S76C73v52Ev();
extern void _ZN5S76C73v53Ev();
extern void _ZN5S76C73v54Ev();
extern void _ZN5S76C73v55Ev();
extern void _ZN5S76C73v56Ev();
extern void _ZN5S76C73v57Ev();
extern void _ZN5S76C73v58Ev();
extern void _ZN5S76C73v59Ev();
extern void _ZN5S76C73v60Ev();
extern void _ZN5S76C73v61Ev();
extern void _ZN5S76C73v62Ev();
extern void _ZN5S76C73v63Ev();
extern void _ZN5S76C73v64Ev();
extern void _ZN5S76C73v65Ev();
extern void _ZN5S76C73v66Ev();
extern void _ZN5S76C73v67Ev();
static  VTBL_ENTRY vtc_S76C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S76C7[0]),
  (VTBL_ENTRY)&_ZN5S76C7D1Ev,
  (VTBL_ENTRY)&_ZN5S76C7D0Ev,
  (VTBL_ENTRY)&_ZN5S76C72v4Ev,
  (VTBL_ENTRY)&_ZN5S76C72v5Ev,
  (VTBL_ENTRY)&_ZN5S76C72v6Ev,
  (VTBL_ENTRY)&_ZN5S76C72v7Ev,
  (VTBL_ENTRY)&_ZN5S76C72v8Ev,
  (VTBL_ENTRY)&_ZN5S76C72v9Ev,
  (VTBL_ENTRY)&_ZN5S76C73v10Ev,
  (VTBL_ENTRY)&_ZN5S76C73v11Ev,
  (VTBL_ENTRY)&_ZN5S76C73v12Ev,
  (VTBL_ENTRY)&_ZN5S76C73v13Ev,
  (VTBL_ENTRY)&_ZN5S76C73v14Ev,
  (VTBL_ENTRY)&_ZN5S76C73v15Ev,
  (VTBL_ENTRY)&_ZN5S76C73v16Ev,
  (VTBL_ENTRY)&_ZN5S76C73v17Ev,
  (VTBL_ENTRY)&_ZN5S76C73v18Ev,
  (VTBL_ENTRY)&_ZN5S76C73v19Ev,
  (VTBL_ENTRY)&_ZN5S76C73v20Ev,
  (VTBL_ENTRY)&_ZN5S76C73v21Ev,
  (VTBL_ENTRY)&_ZN5S76C73v22Ev,
  (VTBL_ENTRY)&_ZN5S76C73v23Ev,
  (VTBL_ENTRY)&_ZN5S76C73v24Ev,
  (VTBL_ENTRY)&_ZN5S76C73v25Ev,
  (VTBL_ENTRY)&_ZN5S76C73v26Ev,
  (VTBL_ENTRY)&_ZN5S76C73v27Ev,
  (VTBL_ENTRY)&_ZN5S76C73v28Ev,
  (VTBL_ENTRY)&_ZN5S76C73v29Ev,
  (VTBL_ENTRY)&_ZN5S76C73v30Ev,
  (VTBL_ENTRY)&_ZN5S76C73v31Ev,
  (VTBL_ENTRY)&_ZN5S76C73v32Ev,
  (VTBL_ENTRY)&_ZN5S76C73v33Ev,
  (VTBL_ENTRY)&_ZN5S76C73v34Ev,
  (VTBL_ENTRY)&_ZN5S76C73v35Ev,
  (VTBL_ENTRY)&_ZN5S76C73v36Ev,
  (VTBL_ENTRY)&_ZN5S76C73v37Ev,
  (VTBL_ENTRY)&_ZN5S76C73v38Ev,
  (VTBL_ENTRY)&_ZN5S76C73v39Ev,
  (VTBL_ENTRY)&_ZN5S76C73v40Ev,
  (VTBL_ENTRY)&_ZN5S76C73v41Ev,
  (VTBL_ENTRY)&_ZN5S76C73v42Ev,
  (VTBL_ENTRY)&_ZN5S76C73v43Ev,
  (VTBL_ENTRY)&_ZN5S76C73v44Ev,
  (VTBL_ENTRY)&_ZN5S76C73v45Ev,
  (VTBL_ENTRY)&_ZN5S76C73v46Ev,
  (VTBL_ENTRY)&_ZN5S76C73v47Ev,
  (VTBL_ENTRY)&_ZN5S76C73v48Ev,
  (VTBL_ENTRY)&_ZN5S76C73v49Ev,
  (VTBL_ENTRY)&_ZN5S76C73v50Ev,
  (VTBL_ENTRY)&_ZN5S76C73v51Ev,
  (VTBL_ENTRY)&_ZN5S76C73v52Ev,
  (VTBL_ENTRY)&_ZN5S76C73v53Ev,
  (VTBL_ENTRY)&_ZN5S76C73v54Ev,
  (VTBL_ENTRY)&_ZN5S76C73v55Ev,
  (VTBL_ENTRY)&_ZN5S76C73v56Ev,
  (VTBL_ENTRY)&_ZN5S76C73v57Ev,
  (VTBL_ENTRY)&_ZN5S76C73v58Ev,
  (VTBL_ENTRY)&_ZN5S76C73v59Ev,
  (VTBL_ENTRY)&_ZN5S76C73v60Ev,
  (VTBL_ENTRY)&_ZN5S76C73v61Ev,
  (VTBL_ENTRY)&_ZN5S76C73v62Ev,
  (VTBL_ENTRY)&_ZN5S76C73v63Ev,
  (VTBL_ENTRY)&_ZN5S76C73v64Ev,
  (VTBL_ENTRY)&_ZN5S76C73v65Ev,
  (VTBL_ENTRY)&_ZN5S76C73v66Ev,
  (VTBL_ENTRY)&_ZN5S76C73v67Ev,
};
extern VTBL_ENTRY _ZTI5S76C7[];
extern  VTBL_ENTRY _ZTV5S76C7[];
Class_Descriptor cd_S76C7 = {  "S76C7", // class name
  0,0,//no base classes
  &(vtc_S76C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI5S76C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV5S76C7),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  S76C6  : S76C7 {
  int s76c6f0[2];
  void *s76c6f1;
  int s76c6f2[2];
  ::S75C9_nt s76c6f3;
  ::S75C9_nt s76c6f4;
  ::S4677C37 s76c6f5;
  ::S75C9_nt s76c6f6;
  unsigned int s76c6f7:1;
  unsigned int s76c6f8:1;
  unsigned int s76c6f9:1;
  unsigned int s76c6f10:1;
  unsigned int s76c6f11:1;
  int s76c6f12[2];
  virtual  ~S76C6(); // _ZN5S76C6D1Ev
  virtual void  v68(); // _ZN5S76C63v68Ev
  virtual void  v69(); // _ZN5S76C63v69Ev
  virtual void  v70(); // _ZN5S76C63v70Ev
  virtual void  v71(); // _ZN5S76C63v71Ev
  virtual void  v72(); // _ZN5S76C63v72Ev
  virtual void  v73(); // _ZN5S76C63v73Ev
  virtual void  v74(); // _ZN5S76C63v74Ev
  virtual void  v75(); // _ZN5S76C63v75Ev
  virtual void  v76(); // _ZN5S76C63v76Ev
  virtual void  v77(); // _ZN5S76C63v77Ev
  virtual void  v78(); // _ZN5S76C63v78Ev
  virtual void  v79(); // _ZN5S76C63v79Ev
  virtual void  v80(); // _ZN5S76C63v80Ev
  virtual void  v81(); // _ZN5S76C63v81Ev
  virtual void  v82(); // _ZN5S76C63v82Ev
  virtual void  v83(); // _ZN5S76C63v83Ev
  virtual void  v84(); // _ZN5S76C63v84Ev
  virtual void  v85(); // _ZN5S76C63v85Ev
  virtual void  v86(); // _ZN5S76C63v86Ev
  virtual void  v87(); // _ZN5S76C63v87Ev
  virtual void  v88(); // _ZN5S76C63v88Ev
  virtual void  v89(); // _ZN5S76C63v89Ev
  S76C6(); // tgen
};
//SIG(-1 S76C6) 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]}


 S76C6 ::~S76C6(){ note_dtor("S76C6", this);}
void  S76C6 ::v68(){vfunc_called(this, "_ZN5S76C63v68Ev");}
void  S76C6 ::v69(){vfunc_called(this, "_ZN5S76C63v69Ev");}
void  S76C6 ::v70(){vfunc_called(this, "_ZN5S76C63v70Ev");}
void  S76C6 ::v71(){vfunc_called(this, "_ZN5S76C63v71Ev");}
void  S76C6 ::v72(){vfunc_called(this, "_ZN5S76C63v72Ev");}
void  S76C6 ::v73(){vfunc_called(this, "_ZN5S76C63v73Ev");}
void  S76C6 ::v74(){vfunc_called(this, "_ZN5S76C63v74Ev");}
void  S76C6 ::v75(){vfunc_called(this, "_ZN5S76C63v75Ev");}
void  S76C6 ::v76(){vfunc_called(this, "_ZN5S76C63v76Ev");}
void  S76C6 ::v77(){vfunc_called(this, "_ZN5S76C63v77Ev");}
void  S76C6 ::v78(){vfunc_called(this, "_ZN5S76C63v78Ev");}
void  S76C6 ::v79(){vfunc_called(this, "_ZN5S76C63v79Ev");}
void  S76C6 ::v80(){vfunc_called(this, "_ZN5S76C63v80Ev");}
void  S76C6 ::v81(){vfunc_called(this, "_ZN5S76C63v81Ev");}
void  S76C6 ::v82(){vfunc_called(this, "_ZN5S76C63v82Ev");}
void  S76C6 ::v83(){vfunc_called(this, "_ZN5S76C63v83Ev");}
void  S76C6 ::v84(){vfunc_called(this, "_ZN5S76C63v84Ev");}
void  S76C6 ::v85(){vfunc_called(this, "_ZN5S76C63v85Ev");}
void  S76C6 ::v86(){vfunc_called(this, "_ZN5S76C63v86Ev");}
void  S76C6 ::v87(){vfunc_called(this, "_ZN5S76C63v87Ev");}
void  S76C6 ::v88(){vfunc_called(this, "_ZN5S76C63v88Ev");}
void  S76C6 ::v89(){vfunc_called(this, "_ZN5S76C63v89Ev");}
S76C6 ::S76C6(){ note_ctor("S76C6", this);} // tgen

static void Test_S76C6()
{
  extern Class_Descriptor cd_S76C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,34)];
    init_test(&cd_S76C6, buf);
    S76C6 *dp, &lv = *(dp=new (buf) S76C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,132), "sizeof(S76C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S76C6)");
    check_base_class_offset(lv, (S76C7*), 0, "S76C6");
    check_field_offset(lv, s76c6f0, ABISELECT(96,60), "S76C6.s76c6f0");
    check_field_offset(lv, s76c6f1, ABISELECT(104,68), "S76C6.s76c6f1");
    check_field_offset(lv, s76c6f2, ABISELECT(112,72), "S76C6.s76c6f2");
    check_field_offset(lv, s76c6f3, ABISELECT(120,80), "S76C6.s76c6f3");
    check_field_offset(lv, s76c6f4, ABISELECT(136,92), "S76C6.s76c6f4");
    check_field_offset(lv, s76c6f5, ABISELECT(152,104), "S76C6.s76c6f5");
    check_field_offset(lv, s76c6f6, ABISELECT(160,108), "S76C6.s76c6f6");
    set_bf_and_test(lv, s76c6f7, ABISELECT(176,120), 0, 1, 1, "S76C6");
    set_bf_and_test(lv, s76c6f8, ABISELECT(176,120), 1, 1, 1, "S76C6");
    set_bf_and_test(lv, s76c6f9, ABISELECT(176,120), 2, 1, 1, "S76C6");
    set_bf_and_test(lv, s76c6f10, ABISELECT(176,120), 3, 1, 1, "S76C6");
    set_bf_and_test(lv, s76c6f11, ABISELECT(176,120), 4, 1, 1, "S76C6");
    check_field_offset(lv, s76c6f12, ABISELECT(180,124), "S76C6.s76c6f12");
    test_class_info(&lv, &cd_S76C6);
    dp->~S76C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS76C6(Test_S76C6, "S76C6", ABISELECT(192,132));

#else // __cplusplus

extern void _ZN5S76C6C1Ev();
extern void _ZN5S76C6D1Ev();
Name_Map name_map_S76C6[] = {
  NSPAIR(_ZN5S76C6C1Ev),
  NSPAIR(_ZN5S76C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S76C7;
extern VTBL_ENTRY _ZTI5S76C7[];
extern  VTBL_ENTRY _ZTV5S76C7[];
static Base_Class bases_S76C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S76C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI5S76C6[];
extern void _ZN5S76C6D1Ev();
extern void _ZN5S76C6D0Ev();
extern void _ZN5S76C72v4Ev();
extern void _ZN5S76C72v5Ev();
extern void _ZN5S76C72v6Ev();
extern void _ZN5S76C72v7Ev();
extern void _ZN5S76C72v8Ev();
extern void _ZN5S76C72v9Ev();
extern void _ZN5S76C73v10Ev();
extern void _ZN5S76C73v11Ev();
extern void _ZN5S76C73v12Ev();
extern void _ZN5S76C73v13Ev();
extern void _ZN5S76C73v14Ev();
extern void _ZN5S76C73v15Ev();
extern void _ZN5S76C73v16Ev();
extern void _ZN5S76C73v17Ev();
extern void _ZN5S76C73v18Ev();
extern void _ZN5S76C73v19Ev();
extern void _ZN5S76C73v20Ev();
extern void _ZN5S76C73v21Ev();
extern void _ZN5S76C73v22Ev();
extern void _ZN5S76C73v23Ev();
extern void _ZN5S76C73v24Ev();
extern void _ZN5S76C73v25Ev();
extern void _ZN5S76C73v26Ev();
extern void _ZN5S76C73v27Ev();
extern void _ZN5S76C73v28Ev();
extern void _ZN5S76C73v29Ev();
extern void _ZN5S76C73v30Ev();
extern void _ZN5S76C73v31Ev();
extern void _ZN5S76C73v32Ev();
extern void _ZN5S76C73v33Ev();
extern void _ZN5S76C73v34Ev();
extern void _ZN5S76C73v35Ev();
extern void _ZN5S76C73v36Ev();
extern void _ZN5S76C73v37Ev();
extern void _ZN5S76C73v38Ev();
extern void _ZN5S76C73v39Ev();
extern void _ZN5S76C73v40Ev();
extern void _ZN5S76C73v41Ev();
extern void _ZN5S76C73v42Ev();
extern void _ZN5S76C73v43Ev();
extern void _ZN5S76C73v44Ev();
extern void _ZN5S76C73v45Ev();
extern void _ZN5S76C73v46Ev();
extern void _ZN5S76C73v47Ev();
extern void _ZN5S76C73v48Ev();
extern void _ZN5S76C73v49Ev();
extern void _ZN5S76C73v50Ev();
extern void _ZN5S76C73v51Ev();
extern void _ZN5S76C73v52Ev();
extern void _ZN5S76C73v53Ev();
extern void _ZN5S76C73v54Ev();
extern void _ZN5S76C73v55Ev();
extern void _ZN5S76C73v56Ev();
extern void _ZN5S76C73v57Ev();
extern void _ZN5S76C73v58Ev();
extern void _ZN5S76C73v59Ev();
extern void _ZN5S76C73v60Ev();
extern void _ZN5S76C73v61Ev();
extern void _ZN5S76C73v62Ev();
extern void _ZN5S76C73v63Ev();
extern void _ZN5S76C73v64Ev();
extern void _ZN5S76C73v65Ev();
extern void _ZN5S76C73v66Ev();
extern void _ZN5S76C73v67Ev();
extern void _ZN5S76C63v68Ev();
extern void _ZN5S76C63v69Ev();
extern void _ZN5S76C63v70Ev();
extern void _ZN5S76C63v71Ev();
extern void _ZN5S76C63v72Ev();
extern void _ZN5S76C63v73Ev();
extern void _ZN5S76C63v74Ev();
extern void _ZN5S76C63v75Ev();
extern void _ZN5S76C63v76Ev();
extern void _ZN5S76C63v77Ev();
extern void _ZN5S76C63v78Ev();
extern void _ZN5S76C63v79Ev();
extern void _ZN5S76C63v80Ev();
extern void _ZN5S76C63v81Ev();
extern void _ZN5S76C63v82Ev();
extern void _ZN5S76C63v83Ev();
extern void _ZN5S76C63v84Ev();
extern void _ZN5S76C63v85Ev();
extern void _ZN5S76C63v86Ev();
extern void _ZN5S76C63v87Ev();
extern void _ZN5S76C63v88Ev();
extern void _ZN5S76C63v89Ev();
static  VTBL_ENTRY vtc_S76C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S76C6[0]),
  (VTBL_ENTRY)&_ZN5S76C6D1Ev,
  (VTBL_ENTRY)&_ZN5S76C6D0Ev,
  (VTBL_ENTRY)&_ZN5S76C72v4Ev,
  (VTBL_ENTRY)&_ZN5S76C72v5Ev,
  (VTBL_ENTRY)&_ZN5S76C72v6Ev,
  (VTBL_ENTRY)&_ZN5S76C72v7Ev,
  (VTBL_ENTRY)&_ZN5S76C72v8Ev,
  (VTBL_ENTRY)&_ZN5S76C72v9Ev,
  (VTBL_ENTRY)&_ZN5S76C73v10Ev,
  (VTBL_ENTRY)&_ZN5S76C73v11Ev,
  (VTBL_ENTRY)&_ZN5S76C73v12Ev,
  (VTBL_ENTRY)&_ZN5S76C73v13Ev,
  (VTBL_ENTRY)&_ZN5S76C73v14Ev,
  (VTBL_ENTRY)&_ZN5S76C73v15Ev,
  (VTBL_ENTRY)&_ZN5S76C73v16Ev,
  (VTBL_ENTRY)&_ZN5S76C73v17Ev,
  (VTBL_ENTRY)&_ZN5S76C73v18Ev,
  (VTBL_ENTRY)&_ZN5S76C73v19Ev,
  (VTBL_ENTRY)&_ZN5S76C73v20Ev,
  (VTBL_ENTRY)&_ZN5S76C73v21Ev,
  (VTBL_ENTRY)&_ZN5S76C73v22Ev,
  (VTBL_ENTRY)&_ZN5S76C73v23Ev,
  (VTBL_ENTRY)&_ZN5S76C73v24Ev,
  (VTBL_ENTRY)&_ZN5S76C73v25Ev,
  (VTBL_ENTRY)&_ZN5S76C73v26Ev,
  (VTBL_ENTRY)&_ZN5S76C73v27Ev,
  (VTBL_ENTRY)&_ZN5S76C73v28Ev,
  (VTBL_ENTRY)&_ZN5S76C73v29Ev,
  (VTBL_ENTRY)&_ZN5S76C73v30Ev,
  (VTBL_ENTRY)&_ZN5S76C73v31Ev,
  (VTBL_ENTRY)&_ZN5S76C73v32Ev,
  (VTBL_ENTRY)&_ZN5S76C73v33Ev,
  (VTBL_ENTRY)&_ZN5S76C73v34Ev,
  (VTBL_ENTRY)&_ZN5S76C73v35Ev,
  (VTBL_ENTRY)&_ZN5S76C73v36Ev,
  (VTBL_ENTRY)&_ZN5S76C73v37Ev,
  (VTBL_ENTRY)&_ZN5S76C73v38Ev,
  (VTBL_ENTRY)&_ZN5S76C73v39Ev,
  (VTBL_ENTRY)&_ZN5S76C73v40Ev,
  (VTBL_ENTRY)&_ZN5S76C73v41Ev,
  (VTBL_ENTRY)&_ZN5S76C73v42Ev,
  (VTBL_ENTRY)&_ZN5S76C73v43Ev,
  (VTBL_ENTRY)&_ZN5S76C73v44Ev,
  (VTBL_ENTRY)&_ZN5S76C73v45Ev,
  (VTBL_ENTRY)&_ZN5S76C73v46Ev,
  (VTBL_ENTRY)&_ZN5S76C73v47Ev,
  (VTBL_ENTRY)&_ZN5S76C73v48Ev,
  (VTBL_ENTRY)&_ZN5S76C73v49Ev,
  (VTBL_ENTRY)&_ZN5S76C73v50Ev,
  (VTBL_ENTRY)&_ZN5S76C73v51Ev,
  (VTBL_ENTRY)&_ZN5S76C73v52Ev,
  (VTBL_ENTRY)&_ZN5S76C73v53Ev,
  (VTBL_ENTRY)&_ZN5S76C73v54Ev,
  (VTBL_ENTRY)&_ZN5S76C73v55Ev,
  (VTBL_ENTRY)&_ZN5S76C73v56Ev,
  (VTBL_ENTRY)&_ZN5S76C73v57Ev,
  (VTBL_ENTRY)&_ZN5S76C73v58Ev,
  (VTBL_ENTRY)&_ZN5S76C73v59Ev,
  (VTBL_ENTRY)&_ZN5S76C73v60Ev,
  (VTBL_ENTRY)&_ZN5S76C73v61Ev,
  (VTBL_ENTRY)&_ZN5S76C73v62Ev,
  (VTBL_ENTRY)&_ZN5S76C73v63Ev,
  (VTBL_ENTRY)&_ZN5S76C73v64Ev,
  (VTBL_ENTRY)&_ZN5S76C73v65Ev,
  (VTBL_ENTRY)&_ZN5S76C73v66Ev,
  (VTBL_ENTRY)&_ZN5S76C73v67Ev,
  (VTBL_ENTRY)&_ZN5S76C63v68Ev,
  (VTBL_ENTRY)&_ZN5S76C63v69Ev,
  (VTBL_ENTRY)&_ZN5S76C63v70Ev,
  (VTBL_ENTRY)&_ZN5S76C63v71Ev,
  (VTBL_ENTRY)&_ZN5S76C63v72Ev,
  (VTBL_ENTRY)&_ZN5S76C63v73Ev,
  (VTBL_ENTRY)&_ZN5S76C63v74Ev,
  (VTBL_ENTRY)&_ZN5S76C63v75Ev,
  (VTBL_ENTRY)&_ZN5S76C63v76Ev,
  (VTBL_ENTRY)&_ZN5S76C63v77Ev,
  (VTBL_ENTRY)&_ZN5S76C63v78Ev,
  (VTBL_ENTRY)&_ZN5S76C63v79Ev,
  (VTBL_ENTRY)&_ZN5S76C63v80Ev,
  (VTBL_ENTRY)&_ZN5S76C63v81Ev,
  (VTBL_ENTRY)&_ZN5S76C63v82Ev,
  (VTBL_ENTRY)&_ZN5S76C63v83Ev,
  (VTBL_ENTRY)&_ZN5S76C63v84Ev,
  (VTBL_ENTRY)&_ZN5S76C63v85Ev,
  (VTBL_ENTRY)&_ZN5S76C63v86Ev,
  (VTBL_ENTRY)&_ZN5S76C63v87Ev,
  (VTBL_ENTRY)&_ZN5S76C63v88Ev,
  (VTBL_ENTRY)&_ZN5S76C63v89Ev,
};
extern VTBL_ENTRY _ZTI5S76C6[];
extern  VTBL_ENTRY _ZTV5S76C6[];
Class_Descriptor cd_S76C6 = {  "S76C6", // class name
  bases_S76C6, 1,
  &(vtc_S76C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,132), // object size
  NSPAIRA(_ZTI5S76C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S76C6),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  S76C5  : S76C6 {
  unsigned int s76c5f0:1;
  unsigned int s76c5f1:1;
  unsigned int s76c5f2:1;
  ::S3216C17 s76c5f3;
  ::S3216C11 s76c5f4;
  ::S3216C5_nt s76c5f5;
  ::S75C20 s76c5f6;
  int s76c5f7[3];
  virtual  ~S76C5(); // _ZN5S76C5D1Ev
  virtual void  v90(); // _ZN5S76C53v90Ev
  virtual void  v91(); // _ZN5S76C53v91Ev
  virtual void  v92(); // _ZN5S76C53v92Ev
  virtual void  v93(); // _ZN5S76C53v93Ev
  virtual void  v94(); // _ZN5S76C53v94Ev
  virtual void  v95(); // _ZN5S76C53v95Ev
  virtual void  v96(); // _ZN5S76C53v96Ev
  virtual void  v97(); // _ZN5S76C53v97Ev
  virtual void  v98(); // _ZN5S76C53v98Ev
  virtual void  v99(); // _ZN5S76C53v99Ev
  virtual void  v100(); // _ZN5S76C54v100Ev
  virtual void  v101(); // _ZN5S76C54v101Ev
  virtual void  v102(); // _ZN5S76C54v102Ev
  virtual void  v103(); // _ZN5S76C54v103Ev
  virtual void  v104(); // _ZN5S76C54v104Ev
  virtual void  v105(); // _ZN5S76C54v105Ev
  virtual void  v106(); // _ZN5S76C54v106Ev
  virtual void  v107(); // _ZN5S76C54v107Ev
  virtual void  v108(); // _ZN5S76C54v108Ev
  virtual void  v109(); // _ZN5S76C54v109Ev
  S76C5(); // tgen
};
//SIG(-1 S76C5) 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]}


 S76C5 ::~S76C5(){ note_dtor("S76C5", this);}
void  S76C5 ::v90(){vfunc_called(this, "_ZN5S76C53v90Ev");}
void  S76C5 ::v91(){vfunc_called(this, "_ZN5S76C53v91Ev");}
void  S76C5 ::v92(){vfunc_called(this, "_ZN5S76C53v92Ev");}
void  S76C5 ::v93(){vfunc_called(this, "_ZN5S76C53v93Ev");}
void  S76C5 ::v94(){vfunc_called(this, "_ZN5S76C53v94Ev");}
void  S76C5 ::v95(){vfunc_called(this, "_ZN5S76C53v95Ev");}
void  S76C5 ::v96(){vfunc_called(this, "_ZN5S76C53v96Ev");}
void  S76C5 ::v97(){vfunc_called(this, "_ZN5S76C53v97Ev");}
void  S76C5 ::v98(){vfunc_called(this, "_ZN5S76C53v98Ev");}
void  S76C5 ::v99(){vfunc_called(this, "_ZN5S76C53v99Ev");}
void  S76C5 ::v100(){vfunc_called(this, "_ZN5S76C54v100Ev");}
void  S76C5 ::v101(){vfunc_called(this, "_ZN5S76C54v101Ev");}
void  S76C5 ::v102(){vfunc_called(this, "_ZN5S76C54v102Ev");}
void  S76C5 ::v103(){vfunc_called(this, "_ZN5S76C54v103Ev");}
void  S76C5 ::v104(){vfunc_called(this, "_ZN5S76C54v104Ev");}
void  S76C5 ::v105(){vfunc_called(this, "_ZN5S76C54v105Ev");}
void  S76C5 ::v106(){vfunc_called(this, "_ZN5S76C54v106Ev");}
void  S76C5 ::v107(){vfunc_called(this, "_ZN5S76C54v107Ev");}
void  S76C5 ::v108(){vfunc_called(this, "_ZN5S76C54v108Ev");}
void  S76C5 ::v109(){vfunc_called(this, "_ZN5S76C54v109Ev");}
S76C5 ::S76C5(){ note_ctor("S76C5", this);} // tgen

static void Test_S76C5()
{
  extern Class_Descriptor cd_S76C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(35,50)];
    init_test(&cd_S76C5, buf);
    S76C5 *dp, &lv = *(dp=new (buf) S76C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,196), "sizeof(S76C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S76C5)");
    check_base_class_offset(lv, (S76C7*)(S76C6*), 0, "S76C5");
    check_base_class_offset(lv, (S76C6*), 0, "S76C5");
    set_bf_and_test(lv, s76c5f0, ABISELECT(188,132), 0, 1, 1, "S76C5");
    set_bf_and_test(lv, s76c5f1, ABISELECT(188,132), 1, 1, 1, "S76C5");
    set_bf_and_test(lv, s76c5f2, ABISELECT(188,132), 2, 1, 1, "S76C5");
    check_field_offset(lv, s76c5f3, ABISELECT(192,136), "S76C5.s76c5f3");
    check_field_offset(lv, s76c5f4, ABISELECT(208,148), "S76C5.s76c5f4");
    check_field_offset(lv, s76c5f5, ABISELECT(224,160), "S76C5.s76c5f5");
    check_field_offset(lv, s76c5f6, ABISELECT(240,172), "S76C5.s76c5f6");
    check_field_offset(lv, s76c5f7, ABISELECT(256,184), "S76C5.s76c5f7");
    test_class_info(&lv, &cd_S76C5);
    dp->~S76C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS76C5(Test_S76C5, "S76C5", ABISELECT(272,196));

#else // __cplusplus

extern void _ZN5S76C5C1Ev();
extern void _ZN5S76C5D1Ev();
Name_Map name_map_S76C5[] = {
  NSPAIR(_ZN5S76C5C1Ev),
  NSPAIR(_ZN5S76C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S76C7;
extern VTBL_ENTRY _ZTI5S76C7[];
extern  VTBL_ENTRY _ZTV5S76C7[];
extern Class_Descriptor cd_S76C6;
extern VTBL_ENTRY _ZTI5S76C6[];
extern  VTBL_ENTRY _ZTV5S76C6[];
static Base_Class bases_S76C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S76C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S76C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI5S76C5[];
extern void _ZN5S76C5D1Ev();
extern void _ZN5S76C5D0Ev();
extern void _ZN5S76C72v4Ev();
extern void _ZN5S76C72v5Ev();
extern void _ZN5S76C72v6Ev();
extern void _ZN5S76C72v7Ev();
extern void _ZN5S76C72v8Ev();
extern void _ZN5S76C72v9Ev();
extern void _ZN5S76C73v10Ev();
extern void _ZN5S76C73v11Ev();
extern void _ZN5S76C73v12Ev();
extern void _ZN5S76C73v13Ev();
extern void _ZN5S76C73v14Ev();
extern void _ZN5S76C73v15Ev();
extern void _ZN5S76C73v16Ev();
extern void _ZN5S76C73v17Ev();
extern void _ZN5S76C73v18Ev();
extern void _ZN5S76C73v19Ev();
extern void _ZN5S76C73v20Ev();
extern void _ZN5S76C73v21Ev();
extern void _ZN5S76C73v22Ev();
extern void _ZN5S76C73v23Ev();
extern void _ZN5S76C73v24Ev();
extern void _ZN5S76C73v25Ev();
extern void _ZN5S76C73v26Ev();
extern void _ZN5S76C73v27Ev();
extern void _ZN5S76C73v28Ev();
extern void _ZN5S76C73v29Ev();
extern void _ZN5S76C73v30Ev();
extern void _ZN5S76C73v31Ev();
extern void _ZN5S76C73v32Ev();
extern void _ZN5S76C73v33Ev();
extern void _ZN5S76C73v34Ev();
extern void _ZN5S76C73v35Ev();
extern void _ZN5S76C73v36Ev();
extern void _ZN5S76C73v37Ev();
extern void _ZN5S76C73v38Ev();
extern void _ZN5S76C73v39Ev();
extern void _ZN5S76C73v40Ev();
extern void _ZN5S76C73v41Ev();
extern void _ZN5S76C73v42Ev();
extern void _ZN5S76C73v43Ev();
extern void _ZN5S76C73v44Ev();
extern void _ZN5S76C73v45Ev();
extern void _ZN5S76C73v46Ev();
extern void _ZN5S76C73v47Ev();
extern void _ZN5S76C73v48Ev();
extern void _ZN5S76C73v49Ev();
extern void _ZN5S76C73v50Ev();
extern void _ZN5S76C73v51Ev();
extern void _ZN5S76C73v52Ev();
extern void _ZN5S76C73v53Ev();
extern void _ZN5S76C73v54Ev();
extern void _ZN5S76C73v55Ev();
extern void _ZN5S76C73v56Ev();
extern void _ZN5S76C73v57Ev();
extern void _ZN5S76C73v58Ev();
extern void _ZN5S76C73v59Ev();
extern void _ZN5S76C73v60Ev();
extern void _ZN5S76C73v61Ev();
extern void _ZN5S76C73v62Ev();
extern void _ZN5S76C73v63Ev();
extern void _ZN5S76C73v64Ev();
extern void _ZN5S76C73v65Ev();
extern void _ZN5S76C73v66Ev();
extern void _ZN5S76C73v67Ev();
extern void _ZN5S76C63v68Ev();
extern void _ZN5S76C63v69Ev();
extern void _ZN5S76C63v70Ev();
extern void _ZN5S76C63v71Ev();
extern void _ZN5S76C63v72Ev();
extern void _ZN5S76C63v73Ev();
extern void _ZN5S76C63v74Ev();
extern void _ZN5S76C63v75Ev();
extern void _ZN5S76C63v76Ev();
extern void _ZN5S76C63v77Ev();
extern void _ZN5S76C63v78Ev();
extern void _ZN5S76C63v79Ev();
extern void _ZN5S76C63v80Ev();
extern void _ZN5S76C63v81Ev();
extern void _ZN5S76C63v82Ev();
extern void _ZN5S76C63v83Ev();
extern void _ZN5S76C63v84Ev();
extern void _ZN5S76C63v85Ev();
extern void _ZN5S76C63v86Ev();
extern void _ZN5S76C63v87Ev();
extern void _ZN5S76C63v88Ev();
extern void _ZN5S76C63v89Ev();
extern void _ZN5S76C53v90Ev();
extern void _ZN5S76C53v91Ev();
extern void _ZN5S76C53v92Ev();
extern void _ZN5S76C53v93Ev();
extern void _ZN5S76C53v94Ev();
extern void _ZN5S76C53v95Ev();
extern void _ZN5S76C53v96Ev();
extern void _ZN5S76C53v97Ev();
extern void _ZN5S76C53v98Ev();
extern void _ZN5S76C53v99Ev();
extern void _ZN5S76C54v100Ev();
extern void _ZN5S76C54v101Ev();
extern void _ZN5S76C54v102Ev();
extern void _ZN5S76C54v103Ev();
extern void _ZN5S76C54v104Ev();
extern void _ZN5S76C54v105Ev();
extern void _ZN5S76C54v106Ev();
extern void _ZN5S76C54v107Ev();
extern void _ZN5S76C54v108Ev();
extern void _ZN5S76C54v109Ev();
static  VTBL_ENTRY vtc_S76C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S76C5[0]),
  (VTBL_ENTRY)&_ZN5S76C5D1Ev,
  (VTBL_ENTRY)&_ZN5S76C5D0Ev,
  (VTBL_ENTRY)&_ZN5S76C72v4Ev,
  (VTBL_ENTRY)&_ZN5S76C72v5Ev,
  (VTBL_ENTRY)&_ZN5S76C72v6Ev,
  (VTBL_ENTRY)&_ZN5S76C72v7Ev,
  (VTBL_ENTRY)&_ZN5S76C72v8Ev,
  (VTBL_ENTRY)&_ZN5S76C72v9Ev,
  (VTBL_ENTRY)&_ZN5S76C73v10Ev,
  (VTBL_ENTRY)&_ZN5S76C73v11Ev,
  (VTBL_ENTRY)&_ZN5S76C73v12Ev,
  (VTBL_ENTRY)&_ZN5S76C73v13Ev,
  (VTBL_ENTRY)&_ZN5S76C73v14Ev,
  (VTBL_ENTRY)&_ZN5S76C73v15Ev,
  (VTBL_ENTRY)&_ZN5S76C73v16Ev,
  (VTBL_ENTRY)&_ZN5S76C73v17Ev,
  (VTBL_ENTRY)&_ZN5S76C73v18Ev,
  (VTBL_ENTRY)&_ZN5S76C73v19Ev,
  (VTBL_ENTRY)&_ZN5S76C73v20Ev,
  (VTBL_ENTRY)&_ZN5S76C73v21Ev,
  (VTBL_ENTRY)&_ZN5S76C73v22Ev,
  (VTBL_ENTRY)&_ZN5S76C73v23Ev,
  (VTBL_ENTRY)&_ZN5S76C73v24Ev,
  (VTBL_ENTRY)&_ZN5S76C73v25Ev,
  (VTBL_ENTRY)&_ZN5S76C73v26Ev,
  (VTBL_ENTRY)&_ZN5S76C73v27Ev,
  (VTBL_ENTRY)&_ZN5S76C73v28Ev,
  (VTBL_ENTRY)&_ZN5S76C73v29Ev,
  (VTBL_ENTRY)&_ZN5S76C73v30Ev,
  (VTBL_ENTRY)&_ZN5S76C73v31Ev,
  (VTBL_ENTRY)&_ZN5S76C73v32Ev,
  (VTBL_ENTRY)&_ZN5S76C73v33Ev,
  (VTBL_ENTRY)&_ZN5S76C73v34Ev,
  (VTBL_ENTRY)&_ZN5S76C73v35Ev,
  (VTBL_ENTRY)&_ZN5S76C73v36Ev,
  (VTBL_ENTRY)&_ZN5S76C73v37Ev,
  (VTBL_ENTRY)&_ZN5S76C73v38Ev,
  (VTBL_ENTRY)&_ZN5S76C73v39Ev,
  (VTBL_ENTRY)&_ZN5S76C73v40Ev,
  (VTBL_ENTRY)&_ZN5S76C73v41Ev,
  (VTBL_ENTRY)&_ZN5S76C73v42Ev,
  (VTBL_ENTRY)&_ZN5S76C73v43Ev,
  (VTBL_ENTRY)&_ZN5S76C73v44Ev,
  (VTBL_ENTRY)&_ZN5S76C73v45Ev,
  (VTBL_ENTRY)&_ZN5S76C73v46Ev,
  (VTBL_ENTRY)&_ZN5S76C73v47Ev,
  (VTBL_ENTRY)&_ZN5S76C73v48Ev,
  (VTBL_ENTRY)&_ZN5S76C73v49Ev,
  (VTBL_ENTRY)&_ZN5S76C73v50Ev,
  (VTBL_ENTRY)&_ZN5S76C73v51Ev,
  (VTBL_ENTRY)&_ZN5S76C73v52Ev,
  (VTBL_ENTRY)&_ZN5S76C73v53Ev,
  (VTBL_ENTRY)&_ZN5S76C73v54Ev,
  (VTBL_ENTRY)&_ZN5S76C73v55Ev,
  (VTBL_ENTRY)&_ZN5S76C73v56Ev,
  (VTBL_ENTRY)&_ZN5S76C73v57Ev,
  (VTBL_ENTRY)&_ZN5S76C73v58Ev,
  (VTBL_ENTRY)&_ZN5S76C73v59Ev,
  (VTBL_ENTRY)&_ZN5S76C73v60Ev,
  (VTBL_ENTRY)&_ZN5S76C73v61Ev,
  (VTBL_ENTRY)&_ZN5S76C73v62Ev,
  (VTBL_ENTRY)&_ZN5S76C73v63Ev,
  (VTBL_ENTRY)&_ZN5S76C73v64Ev,
  (VTBL_ENTRY)&_ZN5S76C73v65Ev,
  (VTBL_ENTRY)&_ZN5S76C73v66Ev,
  (VTBL_ENTRY)&_ZN5S76C73v67Ev,
  (VTBL_ENTRY)&_ZN5S76C63v68Ev,
  (VTBL_ENTRY)&_ZN5S76C63v69Ev,
  (VTBL_ENTRY)&_ZN5S76C63v70Ev,
  (VTBL_ENTRY)&_ZN5S76C63v71Ev,
  (VTBL_ENTRY)&_ZN5S76C63v72Ev,
  (VTBL_ENTRY)&_ZN5S76C63v73Ev,
  (VTBL_ENTRY)&_ZN5S76C63v74Ev,
  (VTBL_ENTRY)&_ZN5S76C63v75Ev,
  (VTBL_ENTRY)&_ZN5S76C63v76Ev,
  (VTBL_ENTRY)&_ZN5S76C63v77Ev,
  (VTBL_ENTRY)&_ZN5S76C63v78Ev,
  (VTBL_ENTRY)&_ZN5S76C63v79Ev,
  (VTBL_ENTRY)&_ZN5S76C63v80Ev,
  (VTBL_ENTRY)&_ZN5S76C63v81Ev,
  (VTBL_ENTRY)&_ZN5S76C63v82Ev,
  (VTBL_ENTRY)&_ZN5S76C63v83Ev,
  (VTBL_ENTRY)&_ZN5S76C63v84Ev,
  (VTBL_ENTRY)&_ZN5S76C63v85Ev,
  (VTBL_ENTRY)&_ZN5S76C63v86Ev,
  (VTBL_ENTRY)&_ZN5S76C63v87Ev,
  (VTBL_ENTRY)&_ZN5S76C63v88Ev,
  (VTBL_ENTRY)&_ZN5S76C63v89Ev,
  (VTBL_ENTRY)&_ZN5S76C53v90Ev,
  (VTBL_ENTRY)&_ZN5S76C53v91Ev,
  (VTBL_ENTRY)&_ZN5S76C53v92Ev,
  (VTBL_ENTRY)&_ZN5S76C53v93Ev,
  (VTBL_ENTRY)&_ZN5S76C53v94Ev,
  (VTBL_ENTRY)&_ZN5S76C53v95Ev,
  (VTBL_ENTRY)&_ZN5S76C53v96Ev,
  (VTBL_ENTRY)&_ZN5S76C53v97Ev,
  (VTBL_ENTRY)&_ZN5S76C53v98Ev,
  (VTBL_ENTRY)&_ZN5S76C53v99Ev,
  (VTBL_ENTRY)&_ZN5S76C54v100Ev,
  (VTBL_ENTRY)&_ZN5S76C54v101Ev,
  (VTBL_ENTRY)&_ZN5S76C54v102Ev,
  (VTBL_ENTRY)&_ZN5S76C54v103Ev,
  (VTBL_ENTRY)&_ZN5S76C54v104Ev,
  (VTBL_ENTRY)&_ZN5S76C54v105Ev,
  (VTBL_ENTRY)&_ZN5S76C54v106Ev,
  (VTBL_ENTRY)&_ZN5S76C54v107Ev,
  (VTBL_ENTRY)&_ZN5S76C54v108Ev,
  (VTBL_ENTRY)&_ZN5S76C54v109Ev,
};
extern VTBL_ENTRY _ZTI5S76C5[];
extern  VTBL_ENTRY _ZTV5S76C5[];
Class_Descriptor cd_S76C5 = {  "S76C5", // class name
  bases_S76C5, 2,
  &(vtc_S76C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(272,196), // object size
  NSPAIRA(_ZTI5S76C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S76C5),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  S76C4  : S76C5 {
  ::S3216C4_nt s76c4f0;
  unsigned int s76c4f1:1;
  ::S75C10 s76c4f2;
  virtual  ~S76C4(); // _ZN5S76C4D1Ev
  virtual void  v110(); // _ZN5S76C44v110Ev
  virtual void  v111(); // _ZN5S76C44v111Ev
  virtual void  v112(); // _ZN5S76C44v112Ev
  virtual void  v113(); // _ZN5S76C44v113Ev
  S76C4(); // tgen
};
//SIG(-1 S76C4) 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 FC7}


 S76C4 ::~S76C4(){ note_dtor("S76C4", this);}
void  S76C4 ::v110(){vfunc_called(this, "_ZN5S76C44v110Ev");}
void  S76C4 ::v111(){vfunc_called(this, "_ZN5S76C44v111Ev");}
void  S76C4 ::v112(){vfunc_called(this, "_ZN5S76C44v112Ev");}
void  S76C4 ::v113(){vfunc_called(this, "_ZN5S76C44v113Ev");}
S76C4 ::S76C4(){ note_ctor("S76C4", this);} // tgen

static void Test_S76C4()
{
  extern Class_Descriptor cd_S76C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(38,56)];
    init_test(&cd_S76C4, buf);
    S76C4 *dp, &lv = *(dp=new (buf) S76C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(296,220), "sizeof(S76C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S76C4)");
    check_base_class_offset(lv, (S76C7*)(S76C6*)(S76C5*), 0, "S76C4");
    check_base_class_offset(lv, (S76C6*)(S76C5*), 0, "S76C4");
    check_base_class_offset(lv, (S76C5*), 0, "S76C4");
    check_field_offset(lv, s76c4f0, ABISELECT(268,196), "S76C4.s76c4f0");
    set_bf_and_test(lv, s76c4f1, ABISELECT(276,204), 0, 1, 1, "S76C4");
    check_field_offset(lv, s76c4f2, ABISELECT(280,208), "S76C4.s76c4f2");
    test_class_info(&lv, &cd_S76C4);
    dp->~S76C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS76C4(Test_S76C4, "S76C4", ABISELECT(296,220));

#else // __cplusplus

extern void _ZN5S76C4C1Ev();
extern void _ZN5S76C4D1Ev();
Name_Map name_map_S76C4[] = {
  NSPAIR(_ZN5S76C4C1Ev),
  NSPAIR(_ZN5S76C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S76C7;
extern VTBL_ENTRY _ZTI5S76C7[];
extern  VTBL_ENTRY _ZTV5S76C7[];
extern Class_Descriptor cd_S76C6;
extern VTBL_ENTRY _ZTI5S76C6[];
extern  VTBL_ENTRY _ZTV5S76C6[];
extern Class_Descriptor cd_S76C5;
extern VTBL_ENTRY _ZTI5S76C5[];
extern  VTBL_ENTRY _ZTV5S76C5[];
static Base_Class bases_S76C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S76C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S76C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S76C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI5S76C4[];
extern void _ZN5S76C4D1Ev();
extern void _ZN5S76C4D0Ev();
extern void _ZN5S76C72v4Ev();
extern void _ZN5S76C72v5Ev();
extern void _ZN5S76C72v6Ev();
extern void _ZN5S76C72v7Ev();
extern void _ZN5S76C72v8Ev();
extern void _ZN5S76C72v9Ev();
extern void _ZN5S76C73v10Ev();
extern void _ZN5S76C73v11Ev();
extern void _ZN5S76C73v12Ev();
extern void _ZN5S76C73v13Ev();
extern void _ZN5S76C73v14Ev();
extern void _ZN5S76C73v15Ev();
extern void _ZN5S76C73v16Ev();
extern void _ZN5S76C73v17Ev();
extern void _ZN5S76C73v18Ev();
extern void _ZN5S76C73v19Ev();
extern void _ZN5S76C73v20Ev();
extern void _ZN5S76C73v21Ev();
extern void _ZN5S76C73v22Ev();
extern void _ZN5S76C73v23Ev();
extern void _ZN5S76C73v24Ev();
extern void _ZN5S76C73v25Ev();
extern void _ZN5S76C73v26Ev();
extern void _ZN5S76C73v27Ev();
extern void _ZN5S76C73v28Ev();
extern void _ZN5S76C73v29Ev();
extern void _ZN5S76C73v30Ev();
extern void _ZN5S76C73v31Ev();
extern void _ZN5S76C73v32Ev();
extern void _ZN5S76C73v33Ev();
extern void _ZN5S76C73v34Ev();
extern void _ZN5S76C73v35Ev();
extern void _ZN5S76C73v36Ev();
extern void _ZN5S76C73v37Ev();
extern void _ZN5S76C73v38Ev();
extern void _ZN5S76C73v39Ev();
extern void _ZN5S76C73v40Ev();
extern void _ZN5S76C73v41Ev();
extern void _ZN5S76C73v42Ev();
extern void _ZN5S76C73v43Ev();
extern void _ZN5S76C73v44Ev();
extern void _ZN5S76C73v45Ev();
extern void _ZN5S76C73v46Ev();
extern void _ZN5S76C73v47Ev();
extern void _ZN5S76C73v48Ev();
extern void _ZN5S76C73v49Ev();
extern void _ZN5S76C73v50Ev();
extern void _ZN5S76C73v51Ev();
extern void _ZN5S76C73v52Ev();
extern void _ZN5S76C73v53Ev();
extern void _ZN5S76C73v54Ev();
extern void _ZN5S76C73v55Ev();
extern void _ZN5S76C73v56Ev();
extern void _ZN5S76C73v57Ev();
extern void _ZN5S76C73v58Ev();
extern void _ZN5S76C73v59Ev();
extern void _ZN5S76C73v60Ev();
extern void _ZN5S76C73v61Ev();
extern void _ZN5S76C73v62Ev();
extern void _ZN5S76C73v63Ev();
extern void _ZN5S76C73v64Ev();
extern void _ZN5S76C73v65Ev();
extern void _ZN5S76C73v66Ev();
extern void _ZN5S76C73v67Ev();
extern void _ZN5S76C63v68Ev();
extern void _ZN5S76C63v69Ev();
extern void _ZN5S76C63v70Ev();
extern void _ZN5S76C63v71Ev();
extern void _ZN5S76C63v72Ev();
extern void _ZN5S76C63v73Ev();
extern void _ZN5S76C63v74Ev();
extern void _ZN5S76C63v75Ev();
extern void _ZN5S76C63v76Ev();
extern void _ZN5S76C63v77Ev();
extern void _ZN5S76C63v78Ev();
extern void _ZN5S76C63v79Ev();
extern void _ZN5S76C63v80Ev();
extern void _ZN5S76C63v81Ev();
extern void _ZN5S76C63v82Ev();
extern void _ZN5S76C63v83Ev();
extern void _ZN5S76C63v84Ev();
extern void _ZN5S76C63v85Ev();
extern void _ZN5S76C63v86Ev();
extern void _ZN5S76C63v87Ev();
extern void _ZN5S76C63v88Ev();
extern void _ZN5S76C63v89Ev();
extern void _ZN5S76C53v90Ev();
extern void _ZN5S76C53v91Ev();
extern void _ZN5S76C53v92Ev();
extern void _ZN5S76C53v93Ev();
extern void _ZN5S76C53v94Ev();
extern void _ZN5S76C53v95Ev();
extern void _ZN5S76C53v96Ev();
extern void _ZN5S76C53v97Ev();
extern void _ZN5S76C53v98Ev();
extern void _ZN5S76C53v99Ev();
extern void _ZN5S76C54v100Ev();
extern void _ZN5S76C54v101Ev();
extern void _ZN5S76C54v102Ev();
extern void _ZN5S76C54v103Ev();
extern void _ZN5S76C54v104Ev();
extern void _ZN5S76C54v105Ev();
extern void _ZN5S76C54v106Ev();
extern void _ZN5S76C54v107Ev();
extern void _ZN5S76C54v108Ev();
extern void _ZN5S76C54v109Ev();
extern void _ZN5S76C44v110Ev();
extern void _ZN5S76C44v111Ev();
extern void _ZN5S76C44v112Ev();
extern void _ZN5S76C44v113Ev();
static  VTBL_ENTRY vtc_S76C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S76C4[0]),
  (VTBL_ENTRY)&_ZN5S76C4D1Ev,
  (VTBL_ENTRY)&_ZN5S76C4D0Ev,
  (VTBL_ENTRY)&_ZN5S76C72v4Ev,
  (VTBL_ENTRY)&_ZN5S76C72v5Ev,
  (VTBL_ENTRY)&_ZN5S76C72v6Ev,
  (VTBL_ENTRY)&_ZN5S76C72v7Ev,
  (VTBL_ENTRY)&_ZN5S76C72v8Ev,
  (VTBL_ENTRY)&_ZN5S76C72v9Ev,
  (VTBL_ENTRY)&_ZN5S76C73v10Ev,
  (VTBL_ENTRY)&_ZN5S76C73v11Ev,
  (VTBL_ENTRY)&_ZN5S76C73v12Ev,
  (VTBL_ENTRY)&_ZN5S76C73v13Ev,
  (VTBL_ENTRY)&_ZN5S76C73v14Ev,
  (VTBL_ENTRY)&_ZN5S76C73v15Ev,
  (VTBL_ENTRY)&_ZN5S76C73v16Ev,
  (VTBL_ENTRY)&_ZN5S76C73v17Ev,
  (VTBL_ENTRY)&_ZN5S76C73v18Ev,
  (VTBL_ENTRY)&_ZN5S76C73v19Ev,
  (VTBL_ENTRY)&_ZN5S76C73v20Ev,
  (VTBL_ENTRY)&_ZN5S76C73v21Ev,
  (VTBL_ENTRY)&_ZN5S76C73v22Ev,
  (VTBL_ENTRY)&_ZN5S76C73v23Ev,
  (VTBL_ENTRY)&_ZN5S76C73v24Ev,
  (VTBL_ENTRY)&_ZN5S76C73v25Ev,
  (VTBL_ENTRY)&_ZN5S76C73v26Ev,
  (VTBL_ENTRY)&_ZN5S76C73v27Ev,
  (VTBL_ENTRY)&_ZN5S76C73v28Ev,
  (VTBL_ENTRY)&_ZN5S76C73v29Ev,
  (VTBL_ENTRY)&_ZN5S76C73v30Ev,
  (VTBL_ENTRY)&_ZN5S76C73v31Ev,
  (VTBL_ENTRY)&_ZN5S76C73v32Ev,
  (VTBL_ENTRY)&_ZN5S76C73v33Ev,
  (VTBL_ENTRY)&_ZN5S76C73v34Ev,
  (VTBL_ENTRY)&_ZN5S76C73v35Ev,
  (VTBL_ENTRY)&_ZN5S76C73v36Ev,
  (VTBL_ENTRY)&_ZN5S76C73v37Ev,
  (VTBL_ENTRY)&_ZN5S76C73v38Ev,
  (VTBL_ENTRY)&_ZN5S76C73v39Ev,
  (VTBL_ENTRY)&_ZN5S76C73v40Ev,
  (VTBL_ENTRY)&_ZN5S76C73v41Ev,
  (VTBL_ENTRY)&_ZN5S76C73v42Ev,
  (VTBL_ENTRY)&_ZN5S76C73v43Ev,
  (VTBL_ENTRY)&_ZN5S76C73v44Ev,
  (VTBL_ENTRY)&_ZN5S76C73v45Ev,
  (VTBL_ENTRY)&_ZN5S76C73v46Ev,
  (VTBL_ENTRY)&_ZN5S76C73v47Ev,
  (VTBL_ENTRY)&_ZN5S76C73v48Ev,
  (VTBL_ENTRY)&_ZN5S76C73v49Ev,
  (VTBL_ENTRY)&_ZN5S76C73v50Ev,
  (VTBL_ENTRY)&_ZN5S76C73v51Ev,
  (VTBL_ENTRY)&_ZN5S76C73v52Ev,
  (VTBL_ENTRY)&_ZN5S76C73v53Ev,
  (VTBL_ENTRY)&_ZN5S76C73v54Ev,
  (VTBL_ENTRY)&_ZN5S76C73v55Ev,
  (VTBL_ENTRY)&_ZN5S76C73v56Ev,
  (VTBL_ENTRY)&_ZN5S76C73v57Ev,
  (VTBL_ENTRY)&_ZN5S76C73v58Ev,
  (VTBL_ENTRY)&_ZN5S76C73v59Ev,
  (VTBL_ENTRY)&_ZN5S76C73v60Ev,
  (VTBL_ENTRY)&_ZN5S76C73v61Ev,
  (VTBL_ENTRY)&_ZN5S76C73v62Ev,
  (VTBL_ENTRY)&_ZN5S76C73v63Ev,
  (VTBL_ENTRY)&_ZN5S76C73v64Ev,
  (VTBL_ENTRY)&_ZN5S76C73v65Ev,
  (VTBL_ENTRY)&_ZN5S76C73v66Ev,
  (VTBL_ENTRY)&_ZN5S76C73v67Ev,
  (VTBL_ENTRY)&_ZN5S76C63v68Ev,
  (VTBL_ENTRY)&_ZN5S76C63v69Ev,
  (VTBL_ENTRY)&_ZN5S76C63v70Ev,
  (VTBL_ENTRY)&_ZN5S76C63v71Ev,
  (VTBL_ENTRY)&_ZN5S76C63v72Ev,
  (VTBL_ENTRY)&_ZN5S76C63v73Ev,
  (VTBL_ENTRY)&_ZN5S76C63v74Ev,
  (VTBL_ENTRY)&_ZN5S76C63v75Ev,
  (VTBL_ENTRY)&_ZN5S76C63v76Ev,
  (VTBL_ENTRY)&_ZN5S76C63v77Ev,
  (VTBL_ENTRY)&_ZN5S76C63v78Ev,
  (VTBL_ENTRY)&_ZN5S76C63v79Ev,
  (VTBL_ENTRY)&_ZN5S76C63v80Ev,
  (VTBL_ENTRY)&_ZN5S76C63v81Ev,
  (VTBL_ENTRY)&_ZN5S76C63v82Ev,
  (VTBL_ENTRY)&_ZN5S76C63v83Ev,
  (VTBL_ENTRY)&_ZN5S76C63v84Ev,
  (VTBL_ENTRY)&_ZN5S76C63v85Ev,
  (VTBL_ENTRY)&_ZN5S76C63v86Ev,
  (VTBL_ENTRY)&_ZN5S76C63v87Ev,
  (VTBL_ENTRY)&_ZN5S76C63v88Ev,
  (VTBL_ENTRY)&_ZN5S76C63v89Ev,
  (VTBL_ENTRY)&_ZN5S76C53v90Ev,
  (VTBL_ENTRY)&_ZN5S76C53v91Ev,
  (VTBL_ENTRY)&_ZN5S76C53v92Ev,
  (VTBL_ENTRY)&_ZN5S76C53v93Ev,
  (VTBL_ENTRY)&_ZN5S76C53v94Ev,
  (VTBL_ENTRY)&_ZN5S76C53v95Ev,
  (VTBL_ENTRY)&_ZN5S76C53v96Ev,
  (VTBL_ENTRY)&_ZN5S76C53v97Ev,
  (VTBL_ENTRY)&_ZN5S76C53v98Ev,
  (VTBL_ENTRY)&_ZN5S76C53v99Ev,
  (VTBL_ENTRY)&_ZN5S76C54v100Ev,
  (VTBL_ENTRY)&_ZN5S76C54v101Ev,
  (VTBL_ENTRY)&_ZN5S76C54v102Ev,
  (VTBL_ENTRY)&_ZN5S76C54v103Ev,
  (VTBL_ENTRY)&_ZN5S76C54v104Ev,
  (VTBL_ENTRY)&_ZN5S76C54v105Ev,
  (VTBL_ENTRY)&_ZN5S76C54v106Ev,
  (VTBL_ENTRY)&_ZN5S76C54v107Ev,
  (VTBL_ENTRY)&_ZN5S76C54v108Ev,
  (VTBL_ENTRY)&_ZN5S76C54v109Ev,
  (VTBL_ENTRY)&_ZN5S76C44v110Ev,
  (VTBL_ENTRY)&_ZN5S76C44v111Ev,
  (VTBL_ENTRY)&_ZN5S76C44v112Ev,
  (VTBL_ENTRY)&_ZN5S76C44v113Ev,
};
extern VTBL_ENTRY _ZTI5S76C4[];
extern  VTBL_ENTRY _ZTV5S76C4[];
Class_Descriptor cd_S76C4 = {  "S76C4", // class name
  bases_S76C4, 3,
  &(vtc_S76C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(296,220), // object size
  NSPAIRA(_ZTI5S76C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S76C4),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  S76C3  : S76C4 {
  int s76c3f0;
  unsigned int s76c3f1:1;
  virtual  ~S76C3(); // _ZN5S76C3D1Ev
  virtual void  v114(); // _ZN5S76C34v114Ev
  virtual void  v115(); // _ZN5S76C34v115Ev
  virtual void  v116(); // _ZN5S76C34v116Ev
  virtual void  v117(); // _ZN5S76C34v117Ev
  virtual void  v118(); // _ZN5S76C34v118Ev
  virtual void  v119(); // _ZN5S76C34v119Ev
  virtual void  v120(); // _ZN5S76C34v120Ev
  virtual void  v121(); // _ZN5S76C34v121Ev
  S76C3(); // tgen
};
//SIG(-1 S76C3) 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 FC8} vd v1 v2 v3 v4 v5 v6 v7 v8 Fi Fi:1}


 S76C3 ::~S76C3(){ note_dtor("S76C3", this);}
void  S76C3 ::v114(){vfunc_called(this, "_ZN5S76C34v114Ev");}
void  S76C3 ::v115(){vfunc_called(this, "_ZN5S76C34v115Ev");}
void  S76C3 ::v116(){vfunc_called(this, "_ZN5S76C34v116Ev");}
void  S76C3 ::v117(){vfunc_called(this, "_ZN5S76C34v117Ev");}
void  S76C3 ::v118(){vfunc_called(this, "_ZN5S76C34v118Ev");}
void  S76C3 ::v119(){vfunc_called(this, "_ZN5S76C34v119Ev");}
void  S76C3 ::v120(){vfunc_called(this, "_ZN5S76C34v120Ev");}
void  S76C3 ::v121(){vfunc_called(this, "_ZN5S76C34v121Ev");}
S76C3 ::S76C3(){ note_ctor("S76C3", this);} // tgen

static void Test_S76C3()
{
  extern Class_Descriptor cd_S76C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(39,58)];
    init_test(&cd_S76C3, buf);
    S76C3 *dp, &lv = *(dp=new (buf) S76C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,228), "sizeof(S76C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S76C3)");
    check_base_class_offset(lv, (S76C7*)(S76C6*)(S76C5*)(S76C4*), 0, "S76C3");
    check_base_class_offset(lv, (S76C6*)(S76C5*)(S76C4*), 0, "S76C3");
    check_base_class_offset(lv, (S76C5*)(S76C4*), 0, "S76C3");
    check_base_class_offset(lv, (S76C4*), 0, "S76C3");
    check_field_offset(lv, s76c3f0, ABISELECT(296,220), "S76C3.s76c3f0");
    set_bf_and_test(lv, s76c3f1, ABISELECT(300,224), 0, 1, 1, "S76C3");
    test_class_info(&lv, &cd_S76C3);
    dp->~S76C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS76C3(Test_S76C3, "S76C3", ABISELECT(304,228));

#else // __cplusplus

extern void _ZN5S76C3C1Ev();
extern void _ZN5S76C3D1Ev();
Name_Map name_map_S76C3[] = {
  NSPAIR(_ZN5S76C3C1Ev),
  NSPAIR(_ZN5S76C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S76C7;
extern VTBL_ENTRY _ZTI5S76C7[];
extern  VTBL_ENTRY _ZTV5S76C7[];
extern Class_Descriptor cd_S76C6;
extern VTBL_ENTRY _ZTI5S76C6[];
extern  VTBL_ENTRY _ZTV5S76C6[];
extern Class_Descriptor cd_S76C5;
extern VTBL_ENTRY _ZTI5S76C5[];
extern  VTBL_ENTRY _ZTV5S76C5[];
extern Class_Descriptor cd_S76C4;
extern VTBL_ENTRY _ZTI5S76C4[];
extern  VTBL_ENTRY _ZTV5S76C4[];
static Base_Class bases_S76C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S76C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S76C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S76C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S76C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI5S76C3[];
extern void _ZN5S76C3D1Ev();
extern void _ZN5S76C3D0Ev();
extern void _ZN5S76C72v4Ev();
extern void _ZN5S76C72v5Ev();
extern void _ZN5S76C72v6Ev();
extern void _ZN5S76C72v7Ev();
extern void _ZN5S76C72v8Ev();
extern void _ZN5S76C72v9Ev();
extern void _ZN5S76C73v10Ev();
extern void _ZN5S76C73v11Ev();
extern void _ZN5S76C73v12Ev();
extern void _ZN5S76C73v13Ev();
extern void _ZN5S76C73v14Ev();
extern void _ZN5S76C73v15Ev();
extern void _ZN5S76C73v16Ev();
extern void _ZN5S76C73v17Ev();
extern void _ZN5S76C73v18Ev();
extern void _ZN5S76C73v19Ev();
extern void _ZN5S76C73v20Ev();
extern void _ZN5S76C73v21Ev();
extern void _ZN5S76C73v22Ev();
extern void _ZN5S76C73v23Ev();
extern void _ZN5S76C73v24Ev();
extern void _ZN5S76C73v25Ev();
extern void _ZN5S76C73v26Ev();
extern void _ZN5S76C73v27Ev();
extern void _ZN5S76C73v28Ev();
extern void _ZN5S76C73v29Ev();
extern void _ZN5S76C73v30Ev();
extern void _ZN5S76C73v31Ev();
extern void _ZN5S76C73v32Ev();
extern void _ZN5S76C73v33Ev();
extern void _ZN5S76C73v34Ev();
extern void _ZN5S76C73v35Ev();
extern void _ZN5S76C73v36Ev();
extern void _ZN5S76C73v37Ev();
extern void _ZN5S76C73v38Ev();
extern void _ZN5S76C73v39Ev();
extern void _ZN5S76C73v40Ev();
extern void _ZN5S76C73v41Ev();
extern void _ZN5S76C73v42Ev();
extern void _ZN5S76C73v43Ev();
extern void _ZN5S76C73v44Ev();
extern void _ZN5S76C73v45Ev();
extern void _ZN5S76C73v46Ev();
extern void _ZN5S76C73v47Ev();
extern void _ZN5S76C73v48Ev();
extern void _ZN5S76C73v49Ev();
extern void _ZN5S76C73v50Ev();
extern void _ZN5S76C73v51Ev();
extern void _ZN5S76C73v52Ev();
extern void _ZN5S76C73v53Ev();
extern void _ZN5S76C73v54Ev();
extern void _ZN5S76C73v55Ev();
extern void _ZN5S76C73v56Ev();
extern void _ZN5S76C73v57Ev();
extern void _ZN5S76C73v58Ev();
extern void _ZN5S76C73v59Ev();
extern void _ZN5S76C73v60Ev();
extern void _ZN5S76C73v61Ev();
extern void _ZN5S76C73v62Ev();
extern void _ZN5S76C73v63Ev();
extern void _ZN5S76C73v64Ev();
extern void _ZN5S76C73v65Ev();
extern void _ZN5S76C73v66Ev();
extern void _ZN5S76C73v67Ev();
extern void _ZN5S76C63v68Ev();
extern void _ZN5S76C63v69Ev();
extern void _ZN5S76C63v70Ev();
extern void _ZN5S76C63v71Ev();
extern void _ZN5S76C63v72Ev();
extern void _ZN5S76C63v73Ev();
extern void _ZN5S76C63v74Ev();
extern void _ZN5S76C63v75Ev();
extern void _ZN5S76C63v76Ev();
extern void _ZN5S76C63v77Ev();
extern void _ZN5S76C63v78Ev();
extern void _ZN5S76C63v79Ev();
extern void _ZN5S76C63v80Ev();
extern void _ZN5S76C63v81Ev();
extern void _ZN5S76C63v82Ev();
extern void _ZN5S76C63v83Ev();
extern void _ZN5S76C63v84Ev();
extern void _ZN5S76C63v85Ev();
extern void _ZN5S76C63v86Ev();
extern void _ZN5S76C63v87Ev();
extern void _ZN5S76C63v88Ev();
extern void _ZN5S76C63v89Ev();
extern void _ZN5S76C53v90Ev();
extern void _ZN5S76C53v91Ev();
extern void _ZN5S76C53v92Ev();
extern void _ZN5S76C53v93Ev();
extern void _ZN5S76C53v94Ev();
extern void _ZN5S76C53v95Ev();
extern void _ZN5S76C53v96Ev();
extern void _ZN5S76C53v97Ev();
extern void _ZN5S76C53v98Ev();
extern void _ZN5S76C53v99Ev();
extern void _ZN5S76C54v100Ev();
extern void _ZN5S76C54v101Ev();
extern void _ZN5S76C54v102Ev();
extern void _ZN5S76C54v103Ev();
extern void _ZN5S76C54v104Ev();
extern void _ZN5S76C54v105Ev();
extern void _ZN5S76C54v106Ev();
extern void _ZN5S76C54v107Ev();
extern void _ZN5S76C54v108Ev();
extern void _ZN5S76C54v109Ev();
extern void _ZN5S76C44v110Ev();
extern void _ZN5S76C44v111Ev();
extern void _ZN5S76C44v112Ev();
extern void _ZN5S76C44v113Ev();
extern void _ZN5S76C34v114Ev();
extern void _ZN5S76C34v115Ev();
extern void _ZN5S76C34v116Ev();
extern void _ZN5S76C34v117Ev();
extern void _ZN5S76C34v118Ev();
extern void _ZN5S76C34v119Ev();
extern void _ZN5S76C34v120Ev();
extern void _ZN5S76C34v121Ev();
static  VTBL_ENTRY vtc_S76C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S76C3[0]),
  (VTBL_ENTRY)&_ZN5S76C3D1Ev,
  (VTBL_ENTRY)&_ZN5S76C3D0Ev,
  (VTBL_ENTRY)&_ZN5S76C72v4Ev,
  (VTBL_ENTRY)&_ZN5S76C72v5Ev,
  (VTBL_ENTRY)&_ZN5S76C72v6Ev,
  (VTBL_ENTRY)&_ZN5S76C72v7Ev,
  (VTBL_ENTRY)&_ZN5S76C72v8Ev,
  (VTBL_ENTRY)&_ZN5S76C72v9Ev,
  (VTBL_ENTRY)&_ZN5S76C73v10Ev,
  (VTBL_ENTRY)&_ZN5S76C73v11Ev,
  (VTBL_ENTRY)&_ZN5S76C73v12Ev,
  (VTBL_ENTRY)&_ZN5S76C73v13Ev,
  (VTBL_ENTRY)&_ZN5S76C73v14Ev,
  (VTBL_ENTRY)&_ZN5S76C73v15Ev,
  (VTBL_ENTRY)&_ZN5S76C73v16Ev,
  (VTBL_ENTRY)&_ZN5S76C73v17Ev,
  (VTBL_ENTRY)&_ZN5S76C73v18Ev,
  (VTBL_ENTRY)&_ZN5S76C73v19Ev,
  (VTBL_ENTRY)&_ZN5S76C73v20Ev,
  (VTBL_ENTRY)&_ZN5S76C73v21Ev,
  (VTBL_ENTRY)&_ZN5S76C73v22Ev,
  (VTBL_ENTRY)&_ZN5S76C73v23Ev,
  (VTBL_ENTRY)&_ZN5S76C73v24Ev,
  (VTBL_ENTRY)&_ZN5S76C73v25Ev,
  (VTBL_ENTRY)&_ZN5S76C73v26Ev,
  (VTBL_ENTRY)&_ZN5S76C73v27Ev,
  (VTBL_ENTRY)&_ZN5S76C73v28Ev,
  (VTBL_ENTRY)&_ZN5S76C73v29Ev,
  (VTBL_ENTRY)&_ZN5S76C73v30Ev,
  (VTBL_ENTRY)&_ZN5S76C73v31Ev,
  (VTBL_ENTRY)&_ZN5S76C73v32Ev,
  (VTBL_ENTRY)&_ZN5S76C73v33Ev,
  (VTBL_ENTRY)&_ZN5S76C73v34Ev,
  (VTBL_ENTRY)&_ZN5S76C73v35Ev,
  (VTBL_ENTRY)&_ZN5S76C73v36Ev,
  (VTBL_ENTRY)&_ZN5S76C73v37Ev,
  (VTBL_ENTRY)&_ZN5S76C73v38Ev,
  (VTBL_ENTRY)&_ZN5S76C73v39Ev,
  (VTBL_ENTRY)&_ZN5S76C73v40Ev,
  (VTBL_ENTRY)&_ZN5S76C73v41Ev,
  (VTBL_ENTRY)&_ZN5S76C73v42Ev,
  (VTBL_ENTRY)&_ZN5S76C73v43Ev,
  (VTBL_ENTRY)&_ZN5S76C73v44Ev,
  (VTBL_ENTRY)&_ZN5S76C73v45Ev,
  (VTBL_ENTRY)&_ZN5S76C73v46Ev,
  (VTBL_ENTRY)&_ZN5S76C73v47Ev,
  (VTBL_ENTRY)&_ZN5S76C73v48Ev,
  (VTBL_ENTRY)&_ZN5S76C73v49Ev,
  (VTBL_ENTRY)&_ZN5S76C73v50Ev,
  (VTBL_ENTRY)&_ZN5S76C73v51Ev,
  (VTBL_ENTRY)&_ZN5S76C73v52Ev,
  (VTBL_ENTRY)&_ZN5S76C73v53Ev,
  (VTBL_ENTRY)&_ZN5S76C73v54Ev,
  (VTBL_ENTRY)&_ZN5S76C73v55Ev,
  (VTBL_ENTRY)&_ZN5S76C73v56Ev,
  (VTBL_ENTRY)&_ZN5S76C73v57Ev,
  (VTBL_ENTRY)&_ZN5S76C73v58Ev,
  (VTBL_ENTRY)&_ZN5S76C73v59Ev,
  (VTBL_ENTRY)&_ZN5S76C73v60Ev,
  (VTBL_ENTRY)&_ZN5S76C73v61Ev,
  (VTBL_ENTRY)&_ZN5S76C73v62Ev,
  (VTBL_ENTRY)&_ZN5S76C73v63Ev,
  (VTBL_ENTRY)&_ZN5S76C73v64Ev,
  (VTBL_ENTRY)&_ZN5S76C73v65Ev,
  (VTBL_ENTRY)&_ZN5S76C73v66Ev,
  (VTBL_ENTRY)&_ZN5S76C73v67Ev,
  (VTBL_ENTRY)&_ZN5S76C63v68Ev,
  (VTBL_ENTRY)&_ZN5S76C63v69Ev,
  (VTBL_ENTRY)&_ZN5S76C63v70Ev,
  (VTBL_ENTRY)&_ZN5S76C63v71Ev,
  (VTBL_ENTRY)&_ZN5S76C63v72Ev,
  (VTBL_ENTRY)&_ZN5S76C63v73Ev,
  (VTBL_ENTRY)&_ZN5S76C63v74Ev,
  (VTBL_ENTRY)&_ZN5S76C63v75Ev,
  (VTBL_ENTRY)&_ZN5S76C63v76Ev,
  (VTBL_ENTRY)&_ZN5S76C63v77Ev,
  (VTBL_ENTRY)&_ZN5S76C63v78Ev,
  (VTBL_ENTRY)&_ZN5S76C63v79Ev,
  (VTBL_ENTRY)&_ZN5S76C63v80Ev,
  (VTBL_ENTRY)&_ZN5S76C63v81Ev,
  (VTBL_ENTRY)&_ZN5S76C63v82Ev,
  (VTBL_ENTRY)&_ZN5S76C63v83Ev,
  (VTBL_ENTRY)&_ZN5S76C63v84Ev,
  (VTBL_ENTRY)&_ZN5S76C63v85Ev,
  (VTBL_ENTRY)&_ZN5S76C63v86Ev,
  (VTBL_ENTRY)&_ZN5S76C63v87Ev,
  (VTBL_ENTRY)&_ZN5S76C63v88Ev,
  (VTBL_ENTRY)&_ZN5S76C63v89Ev,
  (VTBL_ENTRY)&_ZN5S76C53v90Ev,
  (VTBL_ENTRY)&_ZN5S76C53v91Ev,
  (VTBL_ENTRY)&_ZN5S76C53v92Ev,
  (VTBL_ENTRY)&_ZN5S76C53v93Ev,
  (VTBL_ENTRY)&_ZN5S76C53v94Ev,
  (VTBL_ENTRY)&_ZN5S76C53v95Ev,
  (VTBL_ENTRY)&_ZN5S76C53v96Ev,
  (VTBL_ENTRY)&_ZN5S76C53v97Ev,
  (VTBL_ENTRY)&_ZN5S76C53v98Ev,
  (VTBL_ENTRY)&_ZN5S76C53v99Ev,
  (VTBL_ENTRY)&_ZN5S76C54v100Ev,
  (VTBL_ENTRY)&_ZN5S76C54v101Ev,
  (VTBL_ENTRY)&_ZN5S76C54v102Ev,
  (VTBL_ENTRY)&_ZN5S76C54v103Ev,
  (VTBL_ENTRY)&_ZN5S76C54v104Ev,
  (VTBL_ENTRY)&_ZN5S76C54v105Ev,
  (VTBL_ENTRY)&_ZN5S76C54v106Ev,
  (VTBL_ENTRY)&_ZN5S76C54v107Ev,
  (VTBL_ENTRY)&_ZN5S76C54v108Ev,
  (VTBL_ENTRY)&_ZN5S76C54v109Ev,
  (VTBL_ENTRY)&_ZN5S76C44v110Ev,
  (VTBL_ENTRY)&_ZN5S76C44v111Ev,
  (VTBL_ENTRY)&_ZN5S76C44v112Ev,
  (VTBL_ENTRY)&_ZN5S76C44v113Ev,
  (VTBL_ENTRY)&_ZN5S76C34v114Ev,
  (VTBL_ENTRY)&_ZN5S76C34v115Ev,
  (VTBL_ENTRY)&_ZN5S76C34v116Ev,
  (VTBL_ENTRY)&_ZN5S76C34v117Ev,
  (VTBL_ENTRY)&_ZN5S76C34v118Ev,
  (VTBL_ENTRY)&_ZN5S76C34v119Ev,
  (VTBL_ENTRY)&_ZN5S76C34v120Ev,
  (VTBL_ENTRY)&_ZN5S76C34v121Ev,
};
extern VTBL_ENTRY _ZTI5S76C3[];
extern  VTBL_ENTRY _ZTV5S76C3[];
Class_Descriptor cd_S76C3 = {  "S76C3", // class name
  bases_S76C3, 4,
  &(vtc_S76C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,228), // object size
  NSPAIRA(_ZTI5S76C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S76C3),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  S76C2  : S76C3 {
  void *s76c2f0;
  virtual  ~S76C2(); // _ZN5S76C2D1Ev
  virtual void  v122(); // _ZN5S76C24v122Ev
  virtual void  v123(); // _ZN5S76C24v123Ev
  virtual void  v124(); // _ZN5S76C24v124Ev
  S76C2(); // tgen
};
//SIG(-1 S76C2) 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 FC9} vd v114 v115 v116 v117 v118 v119 v120 v121 Fi Fi:1} vd v1 v2 v3 Fp}


 S76C2 ::~S76C2(){ note_dtor("S76C2", this);}
void  S76C2 ::v122(){vfunc_called(this, "_ZN5S76C24v122Ev");}
void  S76C2 ::v123(){vfunc_called(this, "_ZN5S76C24v123Ev");}
void  S76C2 ::v124(){vfunc_called(this, "_ZN5S76C24v124Ev");}
S76C2 ::S76C2(){ note_ctor("S76C2", this);} // tgen

static void Test_S76C2()
{
  extern Class_Descriptor cd_S76C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,59)];
    init_test(&cd_S76C2, buf);
    S76C2 *dp, &lv = *(dp=new (buf) S76C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,232), "sizeof(S76C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S76C2)");
    check_base_class_offset(lv, (S76C7*)(S76C6*)(S76C5*)(S76C4*)(S76C3*), 0, "S76C2");
    check_base_class_offset(lv, (S76C6*)(S76C5*)(S76C4*)(S76C3*), 0, "S76C2");
    check_base_class_offset(lv, (S76C5*)(S76C4*)(S76C3*), 0, "S76C2");
    check_base_class_offset(lv, (S76C4*)(S76C3*), 0, "S76C2");
    check_base_class_offset(lv, (S76C3*), 0, "S76C2");
    check_field_offset(lv, s76c2f0, ABISELECT(304,228), "S76C2.s76c2f0");
    test_class_info(&lv, &cd_S76C2);
    dp->~S76C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS76C2(Test_S76C2, "S76C2", ABISELECT(312,232));

#else // __cplusplus

extern void _ZN5S76C2C1Ev();
extern void _ZN5S76C2D1Ev();
Name_Map name_map_S76C2[] = {
  NSPAIR(_ZN5S76C2C1Ev),
  NSPAIR(_ZN5S76C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S76C7;
extern VTBL_ENTRY _ZTI5S76C7[];
extern  VTBL_ENTRY _ZTV5S76C7[];
extern Class_Descriptor cd_S76C6;
extern VTBL_ENTRY _ZTI5S76C6[];
extern  VTBL_ENTRY _ZTV5S76C6[];
extern Class_Descriptor cd_S76C5;
extern VTBL_ENTRY _ZTI5S76C5[];
extern  VTBL_ENTRY _ZTV5S76C5[];
extern Class_Descriptor cd_S76C4;
extern VTBL_ENTRY _ZTI5S76C4[];
extern  VTBL_ENTRY _ZTV5S76C4[];
extern Class_Descriptor cd_S76C3;
extern VTBL_ENTRY _ZTI5S76C3[];
extern  VTBL_ENTRY _ZTV5S76C3[];
static Base_Class bases_S76C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S76C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S76C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S76C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S76C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S76C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI5S76C2[];
extern void _ZN5S76C2D1Ev();
extern void _ZN5S76C2D0Ev();
extern void _ZN5S76C72v4Ev();
extern void _ZN5S76C72v5Ev();
extern void _ZN5S76C72v6Ev();
extern void _ZN5S76C72v7Ev();
extern void _ZN5S76C72v8Ev();
extern void _ZN5S76C72v9Ev();
extern void _ZN5S76C73v10Ev();
extern void _ZN5S76C73v11Ev();
extern void _ZN5S76C73v12Ev();
extern void _ZN5S76C73v13Ev();
extern void _ZN5S76C73v14Ev();
extern void _ZN5S76C73v15Ev();
extern void _ZN5S76C73v16Ev();
extern void _ZN5S76C73v17Ev();
extern void _ZN5S76C73v18Ev();
extern void _ZN5S76C73v19Ev();
extern void _ZN5S76C73v20Ev();
extern void _ZN5S76C73v21Ev();
extern void _ZN5S76C73v22Ev();
extern void _ZN5S76C73v23Ev();
extern void _ZN5S76C73v24Ev();
extern void _ZN5S76C73v25Ev();
extern void _ZN5S76C73v26Ev();
extern void _ZN5S76C73v27Ev();
extern void _ZN5S76C73v28Ev();
extern void _ZN5S76C73v29Ev();
extern void _ZN5S76C73v30Ev();
extern void _ZN5S76C73v31Ev();
extern void _ZN5S76C73v32Ev();
extern void _ZN5S76C73v33Ev();
extern void _ZN5S76C73v34Ev();
extern void _ZN5S76C73v35Ev();
extern void _ZN5S76C73v36Ev();
extern void _ZN5S76C73v37Ev();
extern void _ZN5S76C73v38Ev();
extern void _ZN5S76C73v39Ev();
extern void _ZN5S76C73v40Ev();
extern void _ZN5S76C73v41Ev();
extern void _ZN5S76C73v42Ev();
extern void _ZN5S76C73v43Ev();
extern void _ZN5S76C73v44Ev();
extern void _ZN5S76C73v45Ev();
extern void _ZN5S76C73v46Ev();
extern void _ZN5S76C73v47Ev();
extern void _ZN5S76C73v48Ev();
extern void _ZN5S76C73v49Ev();
extern void _ZN5S76C73v50Ev();
extern void _ZN5S76C73v51Ev();
extern void _ZN5S76C73v52Ev();
extern void _ZN5S76C73v53Ev();
extern void _ZN5S76C73v54Ev();
extern void _ZN5S76C73v55Ev();
extern void _ZN5S76C73v56Ev();
extern void _ZN5S76C73v57Ev();
extern void _ZN5S76C73v58Ev();
extern void _ZN5S76C73v59Ev();
extern void _ZN5S76C73v60Ev();
extern void _ZN5S76C73v61Ev();
extern void _ZN5S76C73v62Ev();
extern void _ZN5S76C73v63Ev();
extern void _ZN5S76C73v64Ev();
extern void _ZN5S76C73v65Ev();
extern void _ZN5S76C73v66Ev();
extern void _ZN5S76C73v67Ev();
extern void _ZN5S76C63v68Ev();
extern void _ZN5S76C63v69Ev();
extern void _ZN5S76C63v70Ev();
extern void _ZN5S76C63v71Ev();
extern void _ZN5S76C63v72Ev();
extern void _ZN5S76C63v73Ev();
extern void _ZN5S76C63v74Ev();
extern void _ZN5S76C63v75Ev();
extern void _ZN5S76C63v76Ev();
extern void _ZN5S76C63v77Ev();
extern void _ZN5S76C63v78Ev();
extern void _ZN5S76C63v79Ev();
extern void _ZN5S76C63v80Ev();
extern void _ZN5S76C63v81Ev();
extern void _ZN5S76C63v82Ev();
extern void _ZN5S76C63v83Ev();
extern void _ZN5S76C63v84Ev();
extern void _ZN5S76C63v85Ev();
extern void _ZN5S76C63v86Ev();
extern void _ZN5S76C63v87Ev();
extern void _ZN5S76C63v88Ev();
extern void _ZN5S76C63v89Ev();
extern void _ZN5S76C53v90Ev();
extern void _ZN5S76C53v91Ev();
extern void _ZN5S76C53v92Ev();
extern void _ZN5S76C53v93Ev();
extern void _ZN5S76C53v94Ev();
extern void _ZN5S76C53v95Ev();
extern void _ZN5S76C53v96Ev();
extern void _ZN5S76C53v97Ev();
extern void _ZN5S76C53v98Ev();
extern void _ZN5S76C53v99Ev();
extern void _ZN5S76C54v100Ev();
extern void _ZN5S76C54v101Ev();
extern void _ZN5S76C54v102Ev();
extern void _ZN5S76C54v103Ev();
extern void _ZN5S76C54v104Ev();
extern void _ZN5S76C54v105Ev();
extern void _ZN5S76C54v106Ev();
extern void _ZN5S76C54v107Ev();
extern void _ZN5S76C54v108Ev();
extern void _ZN5S76C54v109Ev();
extern void _ZN5S76C44v110Ev();
extern void _ZN5S76C44v111Ev();
extern void _ZN5S76C44v112Ev();
extern void _ZN5S76C44v113Ev();
extern void _ZN5S76C34v114Ev();
extern void _ZN5S76C34v115Ev();
extern void _ZN5S76C34v116Ev();
extern void _ZN5S76C34v117Ev();
extern void _ZN5S76C34v118Ev();
extern void _ZN5S76C34v119Ev();
extern void _ZN5S76C34v120Ev();
extern void _ZN5S76C34v121Ev();
extern void _ZN5S76C24v122Ev();
extern void _ZN5S76C24v123Ev();
extern void _ZN5S76C24v124Ev();
static  VTBL_ENTRY vtc_S76C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S76C2[0]),
  (VTBL_ENTRY)&_ZN5S76C2D1Ev,
  (VTBL_ENTRY)&_ZN5S76C2D0Ev,
  (VTBL_ENTRY)&_ZN5S76C72v4Ev,
  (VTBL_ENTRY)&_ZN5S76C72v5Ev,
  (VTBL_ENTRY)&_ZN5S76C72v6Ev,
  (VTBL_ENTRY)&_ZN5S76C72v7Ev,
  (VTBL_ENTRY)&_ZN5S76C72v8Ev,
  (VTBL_ENTRY)&_ZN5S76C72v9Ev,
  (VTBL_ENTRY)&_ZN5S76C73v10Ev,
  (VTBL_ENTRY)&_ZN5S76C73v11Ev,
  (VTBL_ENTRY)&_ZN5S76C73v12Ev,
  (VTBL_ENTRY)&_ZN5S76C73v13Ev,
  (VTBL_ENTRY)&_ZN5S76C73v14Ev,
  (VTBL_ENTRY)&_ZN5S76C73v15Ev,
  (VTBL_ENTRY)&_ZN5S76C73v16Ev,
  (VTBL_ENTRY)&_ZN5S76C73v17Ev,
  (VTBL_ENTRY)&_ZN5S76C73v18Ev,
  (VTBL_ENTRY)&_ZN5S76C73v19Ev,
  (VTBL_ENTRY)&_ZN5S76C73v20Ev,
  (VTBL_ENTRY)&_ZN5S76C73v21Ev,
  (VTBL_ENTRY)&_ZN5S76C73v22Ev,
  (VTBL_ENTRY)&_ZN5S76C73v23Ev,
  (VTBL_ENTRY)&_ZN5S76C73v24Ev,
  (VTBL_ENTRY)&_ZN5S76C73v25Ev,
  (VTBL_ENTRY)&_ZN5S76C73v26Ev,
  (VTBL_ENTRY)&_ZN5S76C73v27Ev,
  (VTBL_ENTRY)&_ZN5S76C73v28Ev,
  (VTBL_ENTRY)&_ZN5S76C73v29Ev,
  (VTBL_ENTRY)&_ZN5S76C73v30Ev,
  (VTBL_ENTRY)&_ZN5S76C73v31Ev,
  (VTBL_ENTRY)&_ZN5S76C73v32Ev,
  (VTBL_ENTRY)&_ZN5S76C73v33Ev,
  (VTBL_ENTRY)&_ZN5S76C73v34Ev,
  (VTBL_ENTRY)&_ZN5S76C73v35Ev,
  (VTBL_ENTRY)&_ZN5S76C73v36Ev,
  (VTBL_ENTRY)&_ZN5S76C73v37Ev,
  (VTBL_ENTRY)&_ZN5S76C73v38Ev,
  (VTBL_ENTRY)&_ZN5S76C73v39Ev,
  (VTBL_ENTRY)&_ZN5S76C73v40Ev,
  (VTBL_ENTRY)&_ZN5S76C73v41Ev,
  (VTBL_ENTRY)&_ZN5S76C73v42Ev,
  (VTBL_ENTRY)&_ZN5S76C73v43Ev,
  (VTBL_ENTRY)&_ZN5S76C73v44Ev,
  (VTBL_ENTRY)&_ZN5S76C73v45Ev,
  (VTBL_ENTRY)&_ZN5S76C73v46Ev,
  (VTBL_ENTRY)&_ZN5S76C73v47Ev,
  (VTBL_ENTRY)&_ZN5S76C73v48Ev,
  (VTBL_ENTRY)&_ZN5S76C73v49Ev,
  (VTBL_ENTRY)&_ZN5S76C73v50Ev,
  (VTBL_ENTRY)&_ZN5S76C73v51Ev,
  (VTBL_ENTRY)&_ZN5S76C73v52Ev,
  (VTBL_ENTRY)&_ZN5S76C73v53Ev,
  (VTBL_ENTRY)&_ZN5S76C73v54Ev,
  (VTBL_ENTRY)&_ZN5S76C73v55Ev,
  (VTBL_ENTRY)&_ZN5S76C73v56Ev,
  (VTBL_ENTRY)&_ZN5S76C73v57Ev,
  (VTBL_ENTRY)&_ZN5S76C73v58Ev,
  (VTBL_ENTRY)&_ZN5S76C73v59Ev,
  (VTBL_ENTRY)&_ZN5S76C73v60Ev,
  (VTBL_ENTRY)&_ZN5S76C73v61Ev,
  (VTBL_ENTRY)&_ZN5S76C73v62Ev,
  (VTBL_ENTRY)&_ZN5S76C73v63Ev,
  (VTBL_ENTRY)&_ZN5S76C73v64Ev,
  (VTBL_ENTRY)&_ZN5S76C73v65Ev,
  (VTBL_ENTRY)&_ZN5S76C73v66Ev,
  (VTBL_ENTRY)&_ZN5S76C73v67Ev,
  (VTBL_ENTRY)&_ZN5S76C63v68Ev,
  (VTBL_ENTRY)&_ZN5S76C63v69Ev,
  (VTBL_ENTRY)&_ZN5S76C63v70Ev,
  (VTBL_ENTRY)&_ZN5S76C63v71Ev,
  (VTBL_ENTRY)&_ZN5S76C63v72Ev,
  (VTBL_ENTRY)&_ZN5S76C63v73Ev,
  (VTBL_ENTRY)&_ZN5S76C63v74Ev,
  (VTBL_ENTRY)&_ZN5S76C63v75Ev,
  (VTBL_ENTRY)&_ZN5S76C63v76Ev,
  (VTBL_ENTRY)&_ZN5S76C63v77Ev,
  (VTBL_ENTRY)&_ZN5S76C63v78Ev,
  (VTBL_ENTRY)&_ZN5S76C63v79Ev,
  (VTBL_ENTRY)&_ZN5S76C63v80Ev,
  (VTBL_ENTRY)&_ZN5S76C63v81Ev,
  (VTBL_ENTRY)&_ZN5S76C63v82Ev,
  (VTBL_ENTRY)&_ZN5S76C63v83Ev,
  (VTBL_ENTRY)&_ZN5S76C63v84Ev,
  (VTBL_ENTRY)&_ZN5S76C63v85Ev,
  (VTBL_ENTRY)&_ZN5S76C63v86Ev,
  (VTBL_ENTRY)&_ZN5S76C63v87Ev,
  (VTBL_ENTRY)&_ZN5S76C63v88Ev,
  (VTBL_ENTRY)&_ZN5S76C63v89Ev,
  (VTBL_ENTRY)&_ZN5S76C53v90Ev,
  (VTBL_ENTRY)&_ZN5S76C53v91Ev,
  (VTBL_ENTRY)&_ZN5S76C53v92Ev,
  (VTBL_ENTRY)&_ZN5S76C53v93Ev,
  (VTBL_ENTRY)&_ZN5S76C53v94Ev,
  (VTBL_ENTRY)&_ZN5S76C53v95Ev,
  (VTBL_ENTRY)&_ZN5S76C53v96Ev,
  (VTBL_ENTRY)&_ZN5S76C53v97Ev,
  (VTBL_ENTRY)&_ZN5S76C53v98Ev,
  (VTBL_ENTRY)&_ZN5S76C53v99Ev,
  (VTBL_ENTRY)&_ZN5S76C54v100Ev,
  (VTBL_ENTRY)&_ZN5S76C54v101Ev,
  (VTBL_ENTRY)&_ZN5S76C54v102Ev,
  (VTBL_ENTRY)&_ZN5S76C54v103Ev,
  (VTBL_ENTRY)&_ZN5S76C54v104Ev,
  (VTBL_ENTRY)&_ZN5S76C54v105Ev,
  (VTBL_ENTRY)&_ZN5S76C54v106Ev,
  (VTBL_ENTRY)&_ZN5S76C54v107Ev,
  (VTBL_ENTRY)&_ZN5S76C54v108Ev,
  (VTBL_ENTRY)&_ZN5S76C54v109Ev,
  (VTBL_ENTRY)&_ZN5S76C44v110Ev,
  (VTBL_ENTRY)&_ZN5S76C44v111Ev,
  (VTBL_ENTRY)&_ZN5S76C44v112Ev,
  (VTBL_ENTRY)&_ZN5S76C44v113Ev,
  (VTBL_ENTRY)&_ZN5S76C34v114Ev,
  (VTBL_ENTRY)&_ZN5S76C34v115Ev,
  (VTBL_ENTRY)&_ZN5S76C34v116Ev,
  (VTBL_ENTRY)&_ZN5S76C34v117Ev,
  (VTBL_ENTRY)&_ZN5S76C34v118Ev,
  (VTBL_ENTRY)&_ZN5S76C34v119Ev,
  (VTBL_ENTRY)&_ZN5S76C34v120Ev,
  (VTBL_ENTRY)&_ZN5S76C34v121Ev,
  (VTBL_ENTRY)&_ZN5S76C24v122Ev,
  (VTBL_ENTRY)&_ZN5S76C24v123Ev,
  (VTBL_ENTRY)&_ZN5S76C24v124Ev,
};
extern VTBL_ENTRY _ZTI5S76C2[];
extern  VTBL_ENTRY _ZTV5S76C2[];
Class_Descriptor cd_S76C2 = {  "S76C2", // class name
  bases_S76C2, 5,
  &(vtc_S76C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(312,232), // object size
  NSPAIRA(_ZTI5S76C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S76C2),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  S76C1  : S76C2 {
  virtual  ~S76C1(); // _ZN5S76C1D1Ev
  virtual void  v1(); // _ZN5S76C12v1Ev
  virtual void  v2(); // _ZN5S76C12v2Ev
  virtual void  v3(); // _ZN5S76C12v3Ev
  S76C1(); // tgen
};
//SIG(1 S76C1) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ BC7{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fi FL Fp[4] Fi[2] Fp FC8{ m Fi[2]} Fp[2]} vd v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 Fi[2] Fp Fi[2] FC9{ BC10{ BC11{ BC12{ m Fp Fi[2]}}}} FC9 FC13{ m} FC9 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2]} vd v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 Fi:1 Fi:1 Fi:1 FC14{ BC15{ BC12}} FC16{ BC17{ BC12}} FC18{ BC19{ BC12}} FC20{ BC21{ BC12}} Fi[3]} vd v110 v111 v112 v113 FC8 Fi:1 FC10} vd v114 v115 v116 v117 v118 v119 v120 v121 Fi Fi:1} vd v122 v123 v124 Fp} vd v1 v2 v3}


 S76C1 ::~S76C1(){ note_dtor("S76C1", this);}
void  S76C1 ::v1(){vfunc_called(this, "_ZN5S76C12v1Ev");}
void  S76C1 ::v2(){vfunc_called(this, "_ZN5S76C12v2Ev");}
void  S76C1 ::v3(){vfunc_called(this, "_ZN5S76C12v3Ev");}
S76C1 ::S76C1(){ note_ctor("S76C1", this);} // tgen

static void Test_S76C1()
{
  extern Class_Descriptor cd_S76C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,59)];
    init_test(&cd_S76C1, buf);
    S76C1 *dp, &lv = *(dp=new (buf) S76C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,232), "sizeof(S76C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S76C1)");
    check_base_class_offset(lv, (S76C7*)(S76C6*)(S76C5*)(S76C4*)(S76C3*)(S76C2*), 0, "S76C1");
    check_base_class_offset(lv, (S76C6*)(S76C5*)(S76C4*)(S76C3*)(S76C2*), 0, "S76C1");
    check_base_class_offset(lv, (S76C5*)(S76C4*)(S76C3*)(S76C2*), 0, "S76C1");
    check_base_class_offset(lv, (S76C4*)(S76C3*)(S76C2*), 0, "S76C1");
    check_base_class_offset(lv, (S76C3*)(S76C2*), 0, "S76C1");
    check_base_class_offset(lv, (S76C2*), 0, "S76C1");
    test_class_info(&lv, &cd_S76C1);
    dp->~S76C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS76C1(Test_S76C1, "S76C1", ABISELECT(312,232));

#else // __cplusplus

extern void _ZN5S76C1C1Ev();
extern void _ZN5S76C1D1Ev();
Name_Map name_map_S76C1[] = {
  NSPAIR(_ZN5S76C1C1Ev),
  NSPAIR(_ZN5S76C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S76C7;
extern VTBL_ENTRY _ZTI5S76C7[];
extern  VTBL_ENTRY _ZTV5S76C7[];
extern Class_Descriptor cd_S76C6;
extern VTBL_ENTRY _ZTI5S76C6[];
extern  VTBL_ENTRY _ZTV5S76C6[];
extern Class_Descriptor cd_S76C5;
extern VTBL_ENTRY _ZTI5S76C5[];
extern  VTBL_ENTRY _ZTV5S76C5[];
extern Class_Descriptor cd_S76C4;
extern VTBL_ENTRY _ZTI5S76C4[];
extern  VTBL_ENTRY _ZTV5S76C4[];
extern Class_Descriptor cd_S76C3;
extern VTBL_ENTRY _ZTI5S76C3[];
extern  VTBL_ENTRY _ZTV5S76C3[];
extern Class_Descriptor cd_S76C2;
extern VTBL_ENTRY _ZTI5S76C2[];
extern  VTBL_ENTRY _ZTV5S76C2[];
static Base_Class bases_S76C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S76C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S76C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S76C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S76C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S76C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S76C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI5S76C1[];
extern void _ZN5S76C1D1Ev();
extern void _ZN5S76C1D0Ev();
extern void _ZN5S76C72v4Ev();
extern void _ZN5S76C72v5Ev();
extern void _ZN5S76C72v6Ev();
extern void _ZN5S76C72v7Ev();
extern void _ZN5S76C72v8Ev();
extern void _ZN5S76C72v9Ev();
extern void _ZN5S76C73v10Ev();
extern void _ZN5S76C73v11Ev();
extern void _ZN5S76C73v12Ev();
extern void _ZN5S76C73v13Ev();
extern void _ZN5S76C73v14Ev();
extern void _ZN5S76C73v15Ev();
extern void _ZN5S76C73v16Ev();
extern void _ZN5S76C73v17Ev();
extern void _ZN5S76C73v18Ev();
extern void _ZN5S76C73v19Ev();
extern void _ZN5S76C73v20Ev();
extern void _ZN5S76C73v21Ev();
extern void _ZN5S76C73v22Ev();
extern void _ZN5S76C73v23Ev();
extern void _ZN5S76C73v24Ev();
extern void _ZN5S76C73v25Ev();
extern void _ZN5S76C73v26Ev();
extern void _ZN5S76C73v27Ev();
extern void _ZN5S76C73v28Ev();
extern void _ZN5S76C73v29Ev();
extern void _ZN5S76C73v30Ev();
extern void _ZN5S76C73v31Ev();
extern void _ZN5S76C73v32Ev();
extern void _ZN5S76C73v33Ev();
extern void _ZN5S76C73v34Ev();
extern void _ZN5S76C73v35Ev();
extern void _ZN5S76C73v36Ev();
extern void _ZN5S76C73v37Ev();
extern void _ZN5S76C73v38Ev();
extern void _ZN5S76C73v39Ev();
extern void _ZN5S76C73v40Ev();
extern void _ZN5S76C73v41Ev();
extern void _ZN5S76C73v42Ev();
extern void _ZN5S76C73v43Ev();
extern void _ZN5S76C73v44Ev();
extern void _ZN5S76C73v45Ev();
extern void _ZN5S76C73v46Ev();
extern void _ZN5S76C73v47Ev();
extern void _ZN5S76C73v48Ev();
extern void _ZN5S76C73v49Ev();
extern void _ZN5S76C73v50Ev();
extern void _ZN5S76C73v51Ev();
extern void _ZN5S76C73v52Ev();
extern void _ZN5S76C73v53Ev();
extern void _ZN5S76C73v54Ev();
extern void _ZN5S76C73v55Ev();
extern void _ZN5S76C73v56Ev();
extern void _ZN5S76C73v57Ev();
extern void _ZN5S76C73v58Ev();
extern void _ZN5S76C73v59Ev();
extern void _ZN5S76C73v60Ev();
extern void _ZN5S76C73v61Ev();
extern void _ZN5S76C73v62Ev();
extern void _ZN5S76C73v63Ev();
extern void _ZN5S76C73v64Ev();
extern void _ZN5S76C73v65Ev();
extern void _ZN5S76C73v66Ev();
extern void _ZN5S76C73v67Ev();
extern void _ZN5S76C63v68Ev();
extern void _ZN5S76C63v69Ev();
extern void _ZN5S76C63v70Ev();
extern void _ZN5S76C63v71Ev();
extern void _ZN5S76C63v72Ev();
extern void _ZN5S76C63v73Ev();
extern void _ZN5S76C63v74Ev();
extern void _ZN5S76C63v75Ev();
extern void _ZN5S76C63v76Ev();
extern void _ZN5S76C63v77Ev();
extern void _ZN5S76C63v78Ev();
extern void _ZN5S76C63v79Ev();
extern void _ZN5S76C63v80Ev();
extern void _ZN5S76C63v81Ev();
extern void _ZN5S76C63v82Ev();
extern void _ZN5S76C63v83Ev();
extern void _ZN5S76C63v84Ev();
extern void _ZN5S76C63v85Ev();
extern void _ZN5S76C63v86Ev();
extern void _ZN5S76C63v87Ev();
extern void _ZN5S76C63v88Ev();
extern void _ZN5S76C63v89Ev();
extern void _ZN5S76C53v90Ev();
extern void _ZN5S76C53v91Ev();
extern void _ZN5S76C53v92Ev();
extern void _ZN5S76C53v93Ev();
extern void _ZN5S76C53v94Ev();
extern void _ZN5S76C53v95Ev();
extern void _ZN5S76C53v96Ev();
extern void _ZN5S76C53v97Ev();
extern void _ZN5S76C53v98Ev();
extern void _ZN5S76C53v99Ev();
extern void _ZN5S76C54v100Ev();
extern void _ZN5S76C54v101Ev();
extern void _ZN5S76C54v102Ev();
extern void _ZN5S76C54v103Ev();
extern void _ZN5S76C54v104Ev();
extern void _ZN5S76C54v105Ev();
extern void _ZN5S76C54v106Ev();
extern void _ZN5S76C54v107Ev();
extern void _ZN5S76C54v108Ev();
extern void _ZN5S76C54v109Ev();
extern void _ZN5S76C44v110Ev();
extern void _ZN5S76C44v111Ev();
extern void _ZN5S76C44v112Ev();
extern void _ZN5S76C44v113Ev();
extern void _ZN5S76C34v114Ev();
extern void _ZN5S76C34v115Ev();
extern void _ZN5S76C34v116Ev();
extern void _ZN5S76C34v117Ev();
extern void _ZN5S76C34v118Ev();
extern void _ZN5S76C34v119Ev();
extern void _ZN5S76C34v120Ev();
extern void _ZN5S76C34v121Ev();
extern void _ZN5S76C24v122Ev();
extern void _ZN5S76C24v123Ev();
extern void _ZN5S76C24v124Ev();
extern void _ZN5S76C12v1Ev();
extern void _ZN5S76C12v2Ev();
extern void _ZN5S76C12v3Ev();
static  VTBL_ENTRY vtc_S76C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S76C1[0]),
  (VTBL_ENTRY)&_ZN5S76C1D1Ev,
  (VTBL_ENTRY)&_ZN5S76C1D0Ev,
  (VTBL_ENTRY)&_ZN5S76C72v4Ev,
  (VTBL_ENTRY)&_ZN5S76C72v5Ev,
  (VTBL_ENTRY)&_ZN5S76C72v6Ev,
  (VTBL_ENTRY)&_ZN5S76C72v7Ev,
  (VTBL_ENTRY)&_ZN5S76C72v8Ev,
  (VTBL_ENTRY)&_ZN5S76C72v9Ev,
  (VTBL_ENTRY)&_ZN5S76C73v10Ev,
  (VTBL_ENTRY)&_ZN5S76C73v11Ev,
  (VTBL_ENTRY)&_ZN5S76C73v12Ev,
  (VTBL_ENTRY)&_ZN5S76C73v13Ev,
  (VTBL_ENTRY)&_ZN5S76C73v14Ev,
  (VTBL_ENTRY)&_ZN5S76C73v15Ev,
  (VTBL_ENTRY)&_ZN5S76C73v16Ev,
  (VTBL_ENTRY)&_ZN5S76C73v17Ev,
  (VTBL_ENTRY)&_ZN5S76C73v18Ev,
  (VTBL_ENTRY)&_ZN5S76C73v19Ev,
  (VTBL_ENTRY)&_ZN5S76C73v20Ev,
  (VTBL_ENTRY)&_ZN5S76C73v21Ev,
  (VTBL_ENTRY)&_ZN5S76C73v22Ev,
  (VTBL_ENTRY)&_ZN5S76C73v23Ev,
  (VTBL_ENTRY)&_ZN5S76C73v24Ev,
  (VTBL_ENTRY)&_ZN5S76C73v25Ev,
  (VTBL_ENTRY)&_ZN5S76C73v26Ev,
  (VTBL_ENTRY)&_ZN5S76C73v27Ev,
  (VTBL_ENTRY)&_ZN5S76C73v28Ev,
  (VTBL_ENTRY)&_ZN5S76C73v29Ev,
  (VTBL_ENTRY)&_ZN5S76C73v30Ev,
  (VTBL_ENTRY)&_ZN5S76C73v31Ev,
  (VTBL_ENTRY)&_ZN5S76C73v32Ev,
  (VTBL_ENTRY)&_ZN5S76C73v33Ev,
  (VTBL_ENTRY)&_ZN5S76C73v34Ev,
  (VTBL_ENTRY)&_ZN5S76C73v35Ev,
  (VTBL_ENTRY)&_ZN5S76C73v36Ev,
  (VTBL_ENTRY)&_ZN5S76C73v37Ev,
  (VTBL_ENTRY)&_ZN5S76C73v38Ev,
  (VTBL_ENTRY)&_ZN5S76C73v39Ev,
  (VTBL_ENTRY)&_ZN5S76C73v40Ev,
  (VTBL_ENTRY)&_ZN5S76C73v41Ev,
  (VTBL_ENTRY)&_ZN5S76C73v42Ev,
  (VTBL_ENTRY)&_ZN5S76C73v43Ev,
  (VTBL_ENTRY)&_ZN5S76C73v44Ev,
  (VTBL_ENTRY)&_ZN5S76C73v45Ev,
  (VTBL_ENTRY)&_ZN5S76C73v46Ev,
  (VTBL_ENTRY)&_ZN5S76C73v47Ev,
  (VTBL_ENTRY)&_ZN5S76C73v48Ev,
  (VTBL_ENTRY)&_ZN5S76C73v49Ev,
  (VTBL_ENTRY)&_ZN5S76C73v50Ev,
  (VTBL_ENTRY)&_ZN5S76C73v51Ev,
  (VTBL_ENTRY)&_ZN5S76C73v52Ev,
  (VTBL_ENTRY)&_ZN5S76C73v53Ev,
  (VTBL_ENTRY)&_ZN5S76C73v54Ev,
  (VTBL_ENTRY)&_ZN5S76C73v55Ev,
  (VTBL_ENTRY)&_ZN5S76C73v56Ev,
  (VTBL_ENTRY)&_ZN5S76C73v57Ev,
  (VTBL_ENTRY)&_ZN5S76C73v58Ev,
  (VTBL_ENTRY)&_ZN5S76C73v59Ev,
  (VTBL_ENTRY)&_ZN5S76C73v60Ev,
  (VTBL_ENTRY)&_ZN5S76C73v61Ev,
  (VTBL_ENTRY)&_ZN5S76C73v62Ev,
  (VTBL_ENTRY)&_ZN5S76C73v63Ev,
  (VTBL_ENTRY)&_ZN5S76C73v64Ev,
  (VTBL_ENTRY)&_ZN5S76C73v65Ev,
  (VTBL_ENTRY)&_ZN5S76C73v66Ev,
  (VTBL_ENTRY)&_ZN5S76C73v67Ev,
  (VTBL_ENTRY)&_ZN5S76C63v68Ev,
  (VTBL_ENTRY)&_ZN5S76C63v69Ev,
  (VTBL_ENTRY)&_ZN5S76C63v70Ev,
  (VTBL_ENTRY)&_ZN5S76C63v71Ev,
  (VTBL_ENTRY)&_ZN5S76C63v72Ev,
  (VTBL_ENTRY)&_ZN5S76C63v73Ev,
  (VTBL_ENTRY)&_ZN5S76C63v74Ev,
  (VTBL_ENTRY)&_ZN5S76C63v75Ev,
  (VTBL_ENTRY)&_ZN5S76C63v76Ev,
  (VTBL_ENTRY)&_ZN5S76C63v77Ev,
  (VTBL_ENTRY)&_ZN5S76C63v78Ev,
  (VTBL_ENTRY)&_ZN5S76C63v79Ev,
  (VTBL_ENTRY)&_ZN5S76C63v80Ev,
  (VTBL_ENTRY)&_ZN5S76C63v81Ev,
  (VTBL_ENTRY)&_ZN5S76C63v82Ev,
  (VTBL_ENTRY)&_ZN5S76C63v83Ev,
  (VTBL_ENTRY)&_ZN5S76C63v84Ev,
  (VTBL_ENTRY)&_ZN5S76C63v85Ev,
  (VTBL_ENTRY)&_ZN5S76C63v86Ev,
  (VTBL_ENTRY)&_ZN5S76C63v87Ev,
  (VTBL_ENTRY)&_ZN5S76C63v88Ev,
  (VTBL_ENTRY)&_ZN5S76C63v89Ev,
  (VTBL_ENTRY)&_ZN5S76C53v90Ev,
  (VTBL_ENTRY)&_ZN5S76C53v91Ev,
  (VTBL_ENTRY)&_ZN5S76C53v92Ev,
  (VTBL_ENTRY)&_ZN5S76C53v93Ev,
  (VTBL_ENTRY)&_ZN5S76C53v94Ev,
  (VTBL_ENTRY)&_ZN5S76C53v95Ev,
  (VTBL_ENTRY)&_ZN5S76C53v96Ev,
  (VTBL_ENTRY)&_ZN5S76C53v97Ev,
  (VTBL_ENTRY)&_ZN5S76C53v98Ev,
  (VTBL_ENTRY)&_ZN5S76C53v99Ev,
  (VTBL_ENTRY)&_ZN5S76C54v100Ev,
  (VTBL_ENTRY)&_ZN5S76C54v101Ev,
  (VTBL_ENTRY)&_ZN5S76C54v102Ev,
  (VTBL_ENTRY)&_ZN5S76C54v103Ev,
  (VTBL_ENTRY)&_ZN5S76C54v104Ev,
  (VTBL_ENTRY)&_ZN5S76C54v105Ev,
  (VTBL_ENTRY)&_ZN5S76C54v106Ev,
  (VTBL_ENTRY)&_ZN5S76C54v107Ev,
  (VTBL_ENTRY)&_ZN5S76C54v108Ev,
  (VTBL_ENTRY)&_ZN5S76C54v109Ev,
  (VTBL_ENTRY)&_ZN5S76C44v110Ev,
  (VTBL_ENTRY)&_ZN5S76C44v111Ev,
  (VTBL_ENTRY)&_ZN5S76C44v112Ev,
  (VTBL_ENTRY)&_ZN5S76C44v113Ev,
  (VTBL_ENTRY)&_ZN5S76C34v114Ev,
  (VTBL_ENTRY)&_ZN5S76C34v115Ev,
  (VTBL_ENTRY)&_ZN5S76C34v116Ev,
  (VTBL_ENTRY)&_ZN5S76C34v117Ev,
  (VTBL_ENTRY)&_ZN5S76C34v118Ev,
  (VTBL_ENTRY)&_ZN5S76C34v119Ev,
  (VTBL_ENTRY)&_ZN5S76C34v120Ev,
  (VTBL_ENTRY)&_ZN5S76C34v121Ev,
  (VTBL_ENTRY)&_ZN5S76C24v122Ev,
  (VTBL_ENTRY)&_ZN5S76C24v123Ev,
  (VTBL_ENTRY)&_ZN5S76C24v124Ev,
  (VTBL_ENTRY)&_ZN5S76C12v1Ev,
  (VTBL_ENTRY)&_ZN5S76C12v2Ev,
  (VTBL_ENTRY)&_ZN5S76C12v3Ev,
};
extern VTBL_ENTRY _ZTI5S76C1[];
extern  VTBL_ENTRY _ZTV5S76C1[];
Class_Descriptor cd_S76C1 = {  "S76C1", // class name
  bases_S76C1, 6,
  &(vtc_S76C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(312,232), // object size
  NSPAIRA(_ZTI5S76C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S76C1),128, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  6, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6644C2  {
  virtual  ~S6644C2(); // _ZN7S6644C2D1Ev
  virtual void  v28(); // _ZN7S6644C23v28Ev
  virtual void  v29(); // _ZN7S6644C23v29Ev
  virtual void  v30(); // _ZN7S6644C23v30Ev
  virtual void  v31(); // _ZN7S6644C23v31Ev
  virtual void  v32(); // _ZN7S6644C23v32Ev
  virtual void  v33(); // _ZN7S6644C23v33Ev
  virtual void  v34(); // _ZN7S6644C23v34Ev
  virtual void  v35(); // _ZN7S6644C23v35Ev
  virtual void  v36(); // _ZN7S6644C23v36Ev
  virtual void  v37(); // _ZN7S6644C23v37Ev
  virtual void  v38(); // _ZN7S6644C23v38Ev
  virtual void  v39(); // _ZN7S6644C23v39Ev
  virtual void  v40(); // _ZN7S6644C23v40Ev
  virtual void  v41(); // _ZN7S6644C23v41Ev
  virtual void  v42(); // _ZN7S6644C23v42Ev
  virtual void  v43(); // _ZN7S6644C23v43Ev
  virtual void  v44(); // _ZN7S6644C23v44Ev
  virtual void  v45(); // _ZN7S6644C23v45Ev
  virtual void  v46(); // _ZN7S6644C23v46Ev
  virtual void  v47(); // _ZN7S6644C23v47Ev
  virtual void  v48(); // _ZN7S6644C23v48Ev
  virtual void  v49(); // _ZN7S6644C23v49Ev
  virtual void  v50(); // _ZN7S6644C23v50Ev
  virtual void  v51(); // _ZN7S6644C23v51Ev
  virtual void  v52(); // _ZN7S6644C23v52Ev
  virtual void  v53(); // _ZN7S6644C23v53Ev
  virtual void  v54(); // _ZN7S6644C23v54Ev
  S6644C2(); // tgen
};
//SIG(-1 S6644C2) 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}


 S6644C2 ::~S6644C2(){ note_dtor("S6644C2", this);}
void  S6644C2 ::v28(){vfunc_called(this, "_ZN7S6644C23v28Ev");}
void  S6644C2 ::v29(){vfunc_called(this, "_ZN7S6644C23v29Ev");}
void  S6644C2 ::v30(){vfunc_called(this, "_ZN7S6644C23v30Ev");}
void  S6644C2 ::v31(){vfunc_called(this, "_ZN7S6644C23v31Ev");}
void  S6644C2 ::v32(){vfunc_called(this, "_ZN7S6644C23v32Ev");}
void  S6644C2 ::v33(){vfunc_called(this, "_ZN7S6644C23v33Ev");}
void  S6644C2 ::v34(){vfunc_called(this, "_ZN7S6644C23v34Ev");}
void  S6644C2 ::v35(){vfunc_called(this, "_ZN7S6644C23v35Ev");}
void  S6644C2 ::v36(){vfunc_called(this, "_ZN7S6644C23v36Ev");}
void  S6644C2 ::v37(){vfunc_called(this, "_ZN7S6644C23v37Ev");}
void  S6644C2 ::v38(){vfunc_called(this, "_ZN7S6644C23v38Ev");}
void  S6644C2 ::v39(){vfunc_called(this, "_ZN7S6644C23v39Ev");}
void  S6644C2 ::v40(){vfunc_called(this, "_ZN7S6644C23v40Ev");}
void  S6644C2 ::v41(){vfunc_called(this, "_ZN7S6644C23v41Ev");}
void  S6644C2 ::v42(){vfunc_called(this, "_ZN7S6644C23v42Ev");}
void  S6644C2 ::v43(){vfunc_called(this, "_ZN7S6644C23v43Ev");}
void  S6644C2 ::v44(){vfunc_called(this, "_ZN7S6644C23v44Ev");}
void  S6644C2 ::v45(){vfunc_called(this, "_ZN7S6644C23v45Ev");}
void  S6644C2 ::v46(){vfunc_called(this, "_ZN7S6644C23v46Ev");}
void  S6644C2 ::v47(){vfunc_called(this, "_ZN7S6644C23v47Ev");}
void  S6644C2 ::v48(){vfunc_called(this, "_ZN7S6644C23v48Ev");}
void  S6644C2 ::v49(){vfunc_called(this, "_ZN7S6644C23v49Ev");}
void  S6644C2 ::v50(){vfunc_called(this, "_ZN7S6644C23v50Ev");}
void  S6644C2 ::v51(){vfunc_called(this, "_ZN7S6644C23v51Ev");}
void  S6644C2 ::v52(){vfunc_called(this, "_ZN7S6644C23v52Ev");}
void  S6644C2 ::v53(){vfunc_called(this, "_ZN7S6644C23v53Ev");}
void  S6644C2 ::v54(){vfunc_called(this, "_ZN7S6644C23v54Ev");}
S6644C2 ::S6644C2(){ note_ctor("S6644C2", this);} // tgen

static void Test_S6644C2()
{
  extern Class_Descriptor cd_S6644C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6644C2, buf);
    S6644C2 *dp, &lv = *(dp=new (buf) S6644C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6644C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6644C2)");
    test_class_info(&lv, &cd_S6644C2);
    dp->~S6644C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6644C2(Test_S6644C2, "S6644C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6644C2C1Ev();
extern void _ZN7S6644C2D1Ev();
Name_Map name_map_S6644C2[] = {
  NSPAIR(_ZN7S6644C2C1Ev),
  NSPAIR(_ZN7S6644C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6644C2[];
extern void _ZN7S6644C2D1Ev();
extern void _ZN7S6644C2D0Ev();
extern void _ZN7S6644C23v28Ev();
extern void _ZN7S6644C23v29Ev();
extern void _ZN7S6644C23v30Ev();
extern void _ZN7S6644C23v31Ev();
extern void _ZN7S6644C23v32Ev();
extern void _ZN7S6644C23v33Ev();
extern void _ZN7S6644C23v34Ev();
extern void _ZN7S6644C23v35Ev();
extern void _ZN7S6644C23v36Ev();
extern void _ZN7S6644C23v37Ev();
extern void _ZN7S6644C23v38Ev();
extern void _ZN7S6644C23v39Ev();
extern void _ZN7S6644C23v40Ev();
extern void _ZN7S6644C23v41Ev();
extern void _ZN7S6644C23v42Ev();
extern void _ZN7S6644C23v43Ev();
extern void _ZN7S6644C23v44Ev();
extern void _ZN7S6644C23v45Ev();
extern void _ZN7S6644C23v46Ev();
extern void _ZN7S6644C23v47Ev();
extern void _ZN7S6644C23v48Ev();
extern void _ZN7S6644C23v49Ev();
extern void _ZN7S6644C23v50Ev();
extern void _ZN7S6644C23v51Ev();
extern void _ZN7S6644C23v52Ev();
extern void _ZN7S6644C23v53Ev();
extern void _ZN7S6644C23v54Ev();
static  VTBL_ENTRY vtc_S6644C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6644C2[0]),
  (VTBL_ENTRY)&_ZN7S6644C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6644C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v29Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v30Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v31Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v32Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v33Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v51Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v52Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v53Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v54Ev,
};
extern VTBL_ENTRY _ZTI7S6644C2[];
extern  VTBL_ENTRY _ZTV7S6644C2[];
Class_Descriptor cd_S6644C2 = {  "S6644C2", // class name
  0,0,//no base classes
  &(vtc_S6644C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6644C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6644C2),31, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6644C7_nt  {
  void *s6644c7f0;
  int s6644c7f1;
  void *s6644c7f2;
  int s6644c7f3;
  void  mf6644c7(); // _ZN10S6644C7_nt8mf6644c7Ev
};
//SIG(-1 S6644C7_nt) C1{ m Fp Fi Fp Fi}


void  S6644C7_nt ::mf6644c7(){}

//skip512 S6644C7_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6644C4_nt  {
  ::S3216C18 s6644c4f0;
  ::S6644C7_nt s6644c4f1;
  void  mf6644c4(); // _ZN10S6644C4_nt8mf6644c4Ev
};
//SIG(-1 S6644C4_nt) C1{ m FC2{ BC3{ m Fp Fi[2]}} FC4{ m Fp Fi Fp Fi}}


void  S6644C4_nt ::mf6644c4(){}

//skip512 S6644C4_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6644C11  {
  ::S3216C12 s6644c11f0;
  ::S6644C7_nt s6644c11f1;
  void  mf6644c11(); // _ZN8S6644C119mf6644c11Ev
};
//SIG(-1 S6644C11) C1{ m FC2{ BC3{ m Fp Fi[2]}} FC4{ m Fp Fi Fp Fi}}


void  S6644C11 ::mf6644c11(){}

static void Test_S6644C11()
{
  {
    init_simple_test("S6644C11");
    S6644C11 lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S6644C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6644C11)");
    check_field_offset(lv, s6644c11f0, 0, "S6644C11.s6644c11f0");
    check_field_offset(lv, s6644c11f1, ABISELECT(16,12), "S6644C11.s6644c11f1");
  }
}
static Arrange_To_Call_Me vS6644C11(Test_S6644C11, "S6644C11", ABISELECT(48,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6644C19  {
  void *s6644c19f0;
  int s6644c19f1;
  void *s6644c19f2;
  int s6644c19f3;
  void  mf6644c19(); // _ZN8S6644C199mf6644c19Ev
};
//SIG(-1 S6644C19) C1{ m Fp Fi Fp Fi}


void  S6644C19 ::mf6644c19(){}

static void Test_S6644C19()
{
  {
    init_simple_test("S6644C19");
    S6644C19 lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S6644C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6644C19)");
    check_field_offset(lv, s6644c19f0, 0, "S6644C19.s6644c19f0");
    check_field_offset(lv, s6644c19f1, ABISELECT(8,4), "S6644C19.s6644c19f1");
    check_field_offset(lv, s6644c19f2, ABISELECT(16,8), "S6644C19.s6644c19f2");
    check_field_offset(lv, s6644c19f3, ABISELECT(24,12), "S6644C19.s6644c19f3");
  }
}
static Arrange_To_Call_Me vS6644C19(Test_S6644C19, "S6644C19", ABISELECT(32,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6644C17  {
  ::S3216C6_nt s6644c17f0;
  ::S6644C19 s6644c17f1;
  void  mf6644c17(); // _ZN8S6644C179mf6644c17Ev
};
//SIG(-1 S6644C17) C1{ m FC2{ BC3{ m Fp Fi[2]}} FC4{ m Fp Fi Fp Fi}}


void  S6644C17 ::mf6644c17(){}

static void Test_S6644C17()
{
  {
    init_simple_test("S6644C17");
    S6644C17 lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S6644C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6644C17)");
    check_field_offset(lv, s6644c17f0, 0, "S6644C17.s6644c17f0");
    check_field_offset(lv, s6644c17f1, ABISELECT(16,12), "S6644C17.s6644c17f1");
  }
}
static Arrange_To_Call_Me vS6644C17(Test_S6644C17, "S6644C17", ABISELECT(48,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6644C23  {
  ::S75C21 s6644c23f0;
  ::S6644C19 s6644c23f1;
  void  mf6644c23(); // _ZN8S6644C239mf6644c23Ev
};
//SIG(-1 S6644C23) C1{ m FC2{ BC3{ m Fp Fi[2]}} FC4{ m Fp Fi Fp Fi}}


void  S6644C23 ::mf6644c23(){}

static void Test_S6644C23()
{
  {
    init_simple_test("S6644C23");
    S6644C23 lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S6644C23)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6644C23)");
    check_field_offset(lv, s6644c23f0, 0, "S6644C23.s6644c23f0");
    check_field_offset(lv, s6644c23f1, ABISELECT(16,12), "S6644C23.s6644c23f1");
  }
}
static Arrange_To_Call_Me vS6644C23(Test_S6644C23, "S6644C23", ABISELECT(48,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6644C31  {
  void *s6644c31f0;
  int s6644c31f1;
  void *s6644c31f2;
  int s6644c31f3;
  void  mf6644c31(); // _ZN8S6644C319mf6644c31Ev
};
//SIG(-1 S6644C31) C1{ m Fp Fi Fp Fi}


void  S6644C31 ::mf6644c31(){}

static void Test_S6644C31()
{
  {
    init_simple_test("S6644C31");
    S6644C31 lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S6644C31)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6644C31)");
    check_field_offset(lv, s6644c31f0, 0, "S6644C31.s6644c31f0");
    check_field_offset(lv, s6644c31f1, ABISELECT(8,4), "S6644C31.s6644c31f1");
    check_field_offset(lv, s6644c31f2, ABISELECT(16,8), "S6644C31.s6644c31f2");
    check_field_offset(lv, s6644c31f3, ABISELECT(24,12), "S6644C31.s6644c31f3");
  }
}
static Arrange_To_Call_Me vS6644C31(Test_S6644C31, "S6644C31", ABISELECT(32,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6644C29  {
  ::S75C11 s6644c29f0;
  ::S6644C31 s6644c29f1;
  void  mf6644c29(); // _ZN8S6644C299mf6644c29Ev
};
//SIG(-1 S6644C29) C1{ m FC2{ BC3{ m Fp Fi[2]}} FC4{ m Fp Fi Fp Fi}}


void  S6644C29 ::mf6644c29(){}

static void Test_S6644C29()
{
  {
    init_simple_test("S6644C29");
    S6644C29 lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S6644C29)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6644C29)");
    check_field_offset(lv, s6644c29f0, 0, "S6644C29.s6644c29f0");
    check_field_offset(lv, s6644c29f1, ABISELECT(16,12), "S6644C29.s6644c29f1");
  }
}
static Arrange_To_Call_Me vS6644C29(Test_S6644C29, "S6644C29", ABISELECT(48,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6644C3  {
  ::S6644C4_nt s6644c3f0;
  ::S6644C4_nt s6644c3f1;
  ::S6644C4_nt s6644c3f2;
  ::S6644C11 s6644c3f3;
  ::S6644C11 s6644c3f4;
  ::S6644C17 s6644c3f5;
  ::S6644C17 s6644c3f6;
  ::S6644C23 s6644c3f7;
  ::S6644C23 s6644c3f8;
  ::S6644C29 s6644c3f9;
};
//SIG(1 S6644C3) C1{ FC2{ m FC3{ BC4{ m Fp Fi[2]}} FC5{ m Fp Fi Fp Fi}} FC2 FC2 FC6{ m FC7{ BC4} FC5} FC6 FC8{ m FC9{ BC4} FC10{ m Fp Fi Fp Fi}} FC8 FC11{ m FC12{ BC4} FC10} FC11 FC13{ m FC14{ BC4} FC15{ m Fp Fi Fp Fi}}}



static void Test_S6644C3()
{
  {
    init_simple_test("S6644C3");
    S6644C3 lv;
    check2(sizeof(lv), ABISELECT(480,280), "sizeof(S6644C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6644C3)");
    check_field_offset(lv, s6644c3f0, 0, "S6644C3.s6644c3f0");
    check_field_offset(lv, s6644c3f1, ABISELECT(48,28), "S6644C3.s6644c3f1");
    check_field_offset(lv, s6644c3f2, ABISELECT(96,56), "S6644C3.s6644c3f2");
    check_field_offset(lv, s6644c3f3, ABISELECT(144,84), "S6644C3.s6644c3f3");
    check_field_offset(lv, s6644c3f4, ABISELECT(192,112), "S6644C3.s6644c3f4");
    check_field_offset(lv, s6644c3f5, ABISELECT(240,140), "S6644C3.s6644c3f5");
    check_field_offset(lv, s6644c3f6, ABISELECT(288,168), "S6644C3.s6644c3f6");
    check_field_offset(lv, s6644c3f7, ABISELECT(336,196), "S6644C3.s6644c3f7");
    check_field_offset(lv, s6644c3f8, ABISELECT(384,224), "S6644C3.s6644c3f8");
    check_field_offset(lv, s6644c3f9, ABISELECT(432,252), "S6644C3.s6644c3f9");
  }
}
static Arrange_To_Call_Me vS6644C3(Test_S6644C3, "S6644C3", ABISELECT(480,280));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6644C33_nt  : S3216C7_nt {
};
//SIG(-1 S6644C33_nt) C1{ BC2{ m Fp Fi[2]}}



//skip512 S6644C33_nt

#else // __cplusplus

extern Class_Descriptor cd_S3216C7_nt;
static Base_Class bases_S6644C33_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S6644C35_nt  {
  void *s6644c35f0;
  int s6644c35f1[6];
  void  mf6644c35(); // _ZN11S6644C35_nt9mf6644c35Ev
};
//SIG(-1 S6644C35_nt) C1{ m Fp Fi[6]}


void  S6644C35_nt ::mf6644c35(){}

//skip512 S6644C35_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6644C32_nt  {
  ::S6644C33_nt s6644c32f0;
  ::S6644C33_nt s6644c32f1;
  ::S6644C35_nt s6644c32f2;
  void  mf6644c32(); // _ZN11S6644C32_nt9mf6644c32Ev
};
//SIG(-1 S6644C32_nt) C1{ m FC2{ BC3{ m Fp Fi[2]}} FC2 FC4{ m Fp Fi[6]}}


void  S6644C32_nt ::mf6644c32(){}

//skip512 S6644C32_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6644C39  : S3216C7_nt {
};
//SIG(-1 S6644C39) C1{ BC2{ m Fp Fi[2]}}



static void Test_S6644C39()
{
  extern Class_Descriptor cd_S6644C39;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S6644C39, buf);
    S6644C39 &lv = *(new (buf) S6644C39());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S6644C39)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6644C39)");
    check_base_class_offset(lv, (S3216C7_nt*), 0, "S6644C39");
    test_class_info(&lv, &cd_S6644C39);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6644C39(Test_S6644C39, "S6644C39", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3216C7_nt;
static Base_Class bases_S6644C39[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S6644C39 = {  "S6644C39", // class name
  bases_S6644C39, 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  S6644C38  {
  ::S6644C39 s6644c38f0;
  ::S6644C33_nt s6644c38f1;
  ::S6644C35_nt s6644c38f2;
  void  mf6644c38(); // _ZN8S6644C389mf6644c38Ev
};
//SIG(-1 S6644C38) C1{ m FC2{ BC3{ m Fp Fi[2]}} FC4{ BC3} FC5{ m Fp Fi[6]}}


void  S6644C38 ::mf6644c38(){}

static void Test_S6644C38()
{
  {
    init_simple_test("S6644C38");
    S6644C38 lv;
    check2(sizeof(lv), ABISELECT(64,52), "sizeof(S6644C38)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6644C38)");
    check_field_offset(lv, s6644c38f0, 0, "S6644C38.s6644c38f0");
    check_field_offset(lv, s6644c38f1, ABISELECT(16,12), "S6644C38.s6644c38f1");
    check_field_offset(lv, s6644c38f2, ABISELECT(32,24), "S6644C38.s6644c38f2");
  }
}
static Arrange_To_Call_Me vS6644C38(Test_S6644C38, "S6644C38", ABISELECT(64,52));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6644C43  : S3216C7_nt {
};
//SIG(-1 S6644C43) C1{ BC2{ m Fp Fi[2]}}



static void Test_S6644C43()
{
  extern Class_Descriptor cd_S6644C43;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S6644C43, buf);
    S6644C43 &lv = *(new (buf) S6644C43());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S6644C43)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6644C43)");
    check_base_class_offset(lv, (S3216C7_nt*), 0, "S6644C43");
    test_class_info(&lv, &cd_S6644C43);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6644C43(Test_S6644C43, "S6644C43", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3216C7_nt;
static Base_Class bases_S6644C43[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S6644C43 = {  "S6644C43", // class name
  bases_S6644C43, 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  S6644C44_nt  {
  void *s6644c44f0;
  int s6644c44f1[2];
  ::S6644C43 s6644c44f2;
  void *s6644c44f3;
  void  mf6644c44(); // _ZN11S6644C44_nt9mf6644c44Ev
};
//SIG(-1 S6644C44_nt) C1{ m Fp Fi[2] FC2{ BC3{ m Fp Fi[2]}} Fp}


void  S6644C44_nt ::mf6644c44(){}

//skip512 S6644C44_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6644C48  : S3216C7_nt {
};
//SIG(-1 S6644C48) C1{ BC2{ m Fp Fi[2]}}



static void Test_S6644C48()
{
  extern Class_Descriptor cd_S6644C48;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S6644C48, buf);
    S6644C48 &lv = *(new (buf) S6644C48());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S6644C48)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6644C48)");
    check_base_class_offset(lv, (S3216C7_nt*), 0, "S6644C48");
    test_class_info(&lv, &cd_S6644C48);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6644C48(Test_S6644C48, "S6644C48", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3216C7_nt;
static Base_Class bases_S6644C48[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S6644C48 = {  "S6644C48", // class name
  bases_S6644C48, 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  S6644C1  : S6644C2 {
  void *s6644c1f0;
  ::S6644C3 s6644c1f1[4];
  ::S6644C32_nt s6644c1f2;
  ::S6644C32_nt s6644c1f3;
  ::S6644C38 s6644c1f4;
  ::S6644C38 s6644c1f5;
  ::S6644C38 s6644c1f6;
  ::S6644C39 s6644c1f7;
  ::S6644C43 s6644c1f8;
  ::S6644C44_nt s6644c1f9;
  ::S6644C44_nt s6644c1f10;
  int s6644c1f11[3];
  ::S6644C48 s6644c1f12;
  virtual void  v1(); // _ZN7S6644C12v1Ev
  virtual void  v2(); // _ZN7S6644C12v2Ev
  virtual void  v3(); // _ZN7S6644C12v3Ev
  virtual void  v4(); // _ZN7S6644C12v4Ev
  virtual void  v5(); // _ZN7S6644C12v5Ev
  virtual void  v6(); // _ZN7S6644C12v6Ev
  virtual void  v7(); // _ZN7S6644C12v7Ev
  virtual void  v8(); // _ZN7S6644C12v8Ev
  virtual void  v9(); // _ZN7S6644C12v9Ev
  virtual void  v10(); // _ZN7S6644C13v10Ev
  virtual void  v11(); // _ZN7S6644C13v11Ev
  virtual void  v12(); // _ZN7S6644C13v12Ev
  virtual void  v13(); // _ZN7S6644C13v13Ev
  virtual void  v14(); // _ZN7S6644C13v14Ev
  virtual void  v15(); // _ZN7S6644C13v15Ev
  virtual void  v16(); // _ZN7S6644C13v16Ev
  virtual void  v17(); // _ZN7S6644C13v17Ev
  virtual void  v18(); // _ZN7S6644C13v18Ev
  virtual void  v19(); // _ZN7S6644C13v19Ev
  virtual void  v20(); // _ZN7S6644C13v20Ev
  virtual void  v21(); // _ZN7S6644C13v21Ev
  virtual void  v22(); // _ZN7S6644C13v22Ev
  virtual void  v23(); // _ZN7S6644C13v23Ev
  virtual void  v24(); // _ZN7S6644C13v24Ev
  virtual void  v25(); // _ZN7S6644C13v25Ev
  virtual void  v26(); // _ZN7S6644C13v26Ev
  virtual void  v27(); // _ZN7S6644C13v27Ev
  ~S6644C1(); // tgen
  S6644C1(); // tgen
};
//SIG(1 S6644C1) C1{ BC2{ vd v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 Fp FC3{ FC4{ m FC5{ BC6{ m Fp Fi[2]}} FC7{ m Fp Fi Fp Fi}} FC4 FC4 FC8{ m FC9{ BC6} FC7} FC8 FC10{ m FC11{ BC6} FC12{ m Fp Fi Fp Fi}} FC10 FC13{ m FC14{ BC6} FC12} FC13 FC15{ m FC16{ BC6} FC17{ m Fp Fi Fp Fi}}}[4] FC18{ m FC19{ BC6} FC19 FC20{ m Fp Fi[6]}} FC18 FC21{ m FC22{ BC6} FC19 FC20} FC21 FC21 FC22 FC23{ BC6} FC24{ m Fp Fi[2] FC23 Fp} FC24 Fi[3] FC25{ BC6}}


void  S6644C1 ::v1(){vfunc_called(this, "_ZN7S6644C12v1Ev");}
void  S6644C1 ::v2(){vfunc_called(this, "_ZN7S6644C12v2Ev");}
void  S6644C1 ::v3(){vfunc_called(this, "_ZN7S6644C12v3Ev");}
void  S6644C1 ::v4(){vfunc_called(this, "_ZN7S6644C12v4Ev");}
void  S6644C1 ::v5(){vfunc_called(this, "_ZN7S6644C12v5Ev");}
void  S6644C1 ::v6(){vfunc_called(this, "_ZN7S6644C12v6Ev");}
void  S6644C1 ::v7(){vfunc_called(this, "_ZN7S6644C12v7Ev");}
void  S6644C1 ::v8(){vfunc_called(this, "_ZN7S6644C12v8Ev");}
void  S6644C1 ::v9(){vfunc_called(this, "_ZN7S6644C12v9Ev");}
void  S6644C1 ::v10(){vfunc_called(this, "_ZN7S6644C13v10Ev");}
void  S6644C1 ::v11(){vfunc_called(this, "_ZN7S6644C13v11Ev");}
void  S6644C1 ::v12(){vfunc_called(this, "_ZN7S6644C13v12Ev");}
void  S6644C1 ::v13(){vfunc_called(this, "_ZN7S6644C13v13Ev");}
void  S6644C1 ::v14(){vfunc_called(this, "_ZN7S6644C13v14Ev");}
void  S6644C1 ::v15(){vfunc_called(this, "_ZN7S6644C13v15Ev");}
void  S6644C1 ::v16(){vfunc_called(this, "_ZN7S6644C13v16Ev");}
void  S6644C1 ::v17(){vfunc_called(this, "_ZN7S6644C13v17Ev");}
void  S6644C1 ::v18(){vfunc_called(this, "_ZN7S6644C13v18Ev");}
void  S6644C1 ::v19(){vfunc_called(this, "_ZN7S6644C13v19Ev");}
void  S6644C1 ::v20(){vfunc_called(this, "_ZN7S6644C13v20Ev");}
void  S6644C1 ::v21(){vfunc_called(this, "_ZN7S6644C13v21Ev");}
void  S6644C1 ::v22(){vfunc_called(this, "_ZN7S6644C13v22Ev");}
void  S6644C1 ::v23(){vfunc_called(this, "_ZN7S6644C13v23Ev");}
void  S6644C1 ::v24(){vfunc_called(this, "_ZN7S6644C13v24Ev");}
void  S6644C1 ::v25(){vfunc_called(this, "_ZN7S6644C13v25Ev");}
void  S6644C1 ::v26(){vfunc_called(this, "_ZN7S6644C13v26Ev");}
void  S6644C1 ::v27(){vfunc_called(this, "_ZN7S6644C13v27Ev");}
S6644C1 ::~S6644C1(){ note_dtor("S6644C1", this);} // tgen
S6644C1 ::S6644C1(){ note_ctor("S6644C1", this);} // tgen

static void Test_S6644C1()
{
  extern Class_Descriptor cd_S6644C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(301,374)];
    init_test(&cd_S6644C1, buf);
    S6644C1 *dp, &lv = *(dp=new (buf) S6644C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2400,1492), "sizeof(S6644C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6644C1)");
    check_base_class_offset(lv, (S6644C2*), 0, "S6644C1");
    check_field_offset(lv, s6644c1f0, ABISELECT(8,4), "S6644C1.s6644c1f0");
    check_field_offset(lv, s6644c1f1, ABISELECT(16,8), "S6644C1.s6644c1f1");
    check_field_offset(lv, s6644c1f2, ABISELECT(1936,1128), "S6644C1.s6644c1f2");
    check_field_offset(lv, s6644c1f3, ABISELECT(2000,1180), "S6644C1.s6644c1f3");
    check_field_offset(lv, s6644c1f4, ABISELECT(2064,1232), "S6644C1.s6644c1f4");
    check_field_offset(lv, s6644c1f5, ABISELECT(2128,1284), "S6644C1.s6644c1f5");
    check_field_offset(lv, s6644c1f6, ABISELECT(2192,1336), "S6644C1.s6644c1f6");
    check_field_offset(lv, s6644c1f7, ABISELECT(2256,1388), "S6644C1.s6644c1f7");
    check_field_offset(lv, s6644c1f8, ABISELECT(2272,1400), "S6644C1.s6644c1f8");
    check_field_offset(lv, s6644c1f9, ABISELECT(2288,1412), "S6644C1.s6644c1f9");
    check_field_offset(lv, s6644c1f10, ABISELECT(2328,1440), "S6644C1.s6644c1f10");
    check_field_offset(lv, s6644c1f11, ABISELECT(2368,1468), "S6644C1.s6644c1f11");
    check_field_offset(lv, s6644c1f12, ABISELECT(2384,1480), "S6644C1.s6644c1f12");
    test_class_info(&lv, &cd_S6644C1);
    dp->~S6644C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6644C1(Test_S6644C1, "S6644C1", ABISELECT(2400,1492));

#else // __cplusplus

extern void _ZN7S6644C1C1Ev();
extern void _ZN7S6644C1D1Ev();
Name_Map name_map_S6644C1[] = {
  NSPAIR(_ZN7S6644C1C1Ev),
  NSPAIR(_ZN7S6644C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6644C2;
extern VTBL_ENTRY _ZTI7S6644C2[];
extern  VTBL_ENTRY _ZTV7S6644C2[];
static Base_Class bases_S6644C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6644C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6644C1[];
extern void _ZN7S6644C1D1Ev();
extern void _ZN7S6644C1D0Ev();
extern void _ZN7S6644C23v28Ev();
extern void _ZN7S6644C23v29Ev();
extern void _ZN7S6644C23v30Ev();
extern void _ZN7S6644C23v31Ev();
extern void _ZN7S6644C23v32Ev();
extern void _ZN7S6644C23v33Ev();
extern void _ZN7S6644C23v34Ev();
extern void _ZN7S6644C23v35Ev();
extern void _ZN7S6644C23v36Ev();
extern void _ZN7S6644C23v37Ev();
extern void _ZN7S6644C23v38Ev();
extern void _ZN7S6644C23v39Ev();
extern void _ZN7S6644C23v40Ev();
extern void _ZN7S6644C23v41Ev();
extern void _ZN7S6644C23v42Ev();
extern void _ZN7S6644C23v43Ev();
extern void _ZN7S6644C23v44Ev();
extern void _ZN7S6644C23v45Ev();
extern void _ZN7S6644C23v46Ev();
extern void _ZN7S6644C23v47Ev();
extern void _ZN7S6644C23v48Ev();
extern void _ZN7S6644C23v49Ev();
extern void _ZN7S6644C23v50Ev();
extern void _ZN7S6644C23v51Ev();
extern void _ZN7S6644C23v52Ev();
extern void _ZN7S6644C23v53Ev();
extern void _ZN7S6644C23v54Ev();
extern void _ZN7S6644C12v1Ev();
extern void _ZN7S6644C12v2Ev();
extern void _ZN7S6644C12v3Ev();
extern void _ZN7S6644C12v4Ev();
extern void _ZN7S6644C12v5Ev();
extern void _ZN7S6644C12v6Ev();
extern void _ZN7S6644C12v7Ev();
extern void _ZN7S6644C12v8Ev();
extern void _ZN7S6644C12v9Ev();
extern void _ZN7S6644C13v10Ev();
extern void _ZN7S6644C13v11Ev();
extern void _ZN7S6644C13v12Ev();
extern void _ZN7S6644C13v13Ev();
extern void _ZN7S6644C13v14Ev();
extern void _ZN7S6644C13v15Ev();
extern void _ZN7S6644C13v16Ev();
extern void _ZN7S6644C13v17Ev();
extern void _ZN7S6644C13v18Ev();
extern void _ZN7S6644C13v19Ev();
extern void _ZN7S6644C13v20Ev();
extern void _ZN7S6644C13v21Ev();
extern void _ZN7S6644C13v22Ev();
extern void _ZN7S6644C13v23Ev();
extern void _ZN7S6644C13v24Ev();
extern void _ZN7S6644C13v25Ev();
extern void _ZN7S6644C13v26Ev();
extern void _ZN7S6644C13v27Ev();
static  VTBL_ENTRY vtc_S6644C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6644C1[0]),
  (VTBL_ENTRY)&_ZN7S6644C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6644C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v29Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v30Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v31Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v32Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v33Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v51Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v52Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v53Ev,
  (VTBL_ENTRY)&_ZN7S6644C23v54Ev,
  (VTBL_ENTRY)&_ZN7S6644C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6644C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6644C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6644C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6644C12v5Ev,
  (VTBL_ENTRY)&_ZN7S6644C12v6Ev,
  (VTBL_ENTRY)&_ZN7S6644C12v7Ev,
  (VTBL_ENTRY)&_ZN7S6644C12v8Ev,
  (VTBL_ENTRY)&_ZN7S6644C12v9Ev,
  (VTBL_ENTRY)&_ZN7S6644C13v10Ev,
  (VTBL_ENTRY)&_ZN7S6644C13v11Ev,
  (VTBL_ENTRY)&_ZN7S6644C13v12Ev,
  (VTBL_ENTRY)&_ZN7S6644C13v13Ev,
  (VTBL_ENTRY)&_ZN7S6644C13v14Ev,
  (VTBL_ENTRY)&_ZN7S6644C13v15Ev,
  (VTBL_ENTRY)&_ZN7S6644C13v16Ev,
  (VTBL_ENTRY)&_ZN7S6644C13v17Ev,
  (VTBL_ENTRY)&_ZN7S6644C13v18Ev,
  (VTBL_ENTRY)&_ZN7S6644C13v19Ev,
  (VTBL_ENTRY)&_ZN7S6644C13v20Ev,
  (VTBL_ENTRY)&_ZN7S6644C13v21Ev,
  (VTBL_ENTRY)&_ZN7S6644C13v22Ev,
  (VTBL_ENTRY)&_ZN7S6644C13v23Ev,
  (VTBL_ENTRY)&_ZN7S6644C13v24Ev,
  (VTBL_ENTRY)&_ZN7S6644C13v25Ev,
  (VTBL_ENTRY)&_ZN7S6644C13v26Ev,
  (VTBL_ENTRY)&_ZN7S6644C13v27Ev,
};
extern VTBL_ENTRY _ZTI7S6644C1[];
extern  VTBL_ENTRY _ZTV7S6644C1[];
Class_Descriptor cd_S6644C1 = {  "S6644C1", // class name
  bases_S6644C1, 1,
  &(vtc_S6644C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(2400,1492), // object size
  NSPAIRA(_ZTI7S6644C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6644C1),58, //virtual function table var
  2, // 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  S20643C6  : S3216C8_nt {
  ::S3216C8_nt s20643c6f0[3];
  ::S3216C8_nt s20643c6f1[2];
  void *s20643c6f2;
  short s20643c6f3;
  ::S3216C8_nt s20643c6f4;
  virtual void  v2(); // _ZN8S20643C62v2Ev
  virtual void  v3(); // _ZN8S20643C62v3Ev
  virtual void  v4(); // _ZN8S20643C62v4Ev
  ~S20643C6(); // tgen
  S20643C6(); // tgen
};
//SIG(-1 S20643C6) C1{ BC2{ m Fi} v1 v2 v3 FC2[3] FC2[2] Fp Fs FC2}


void  S20643C6 ::v2(){vfunc_called(this, "_ZN8S20643C62v2Ev");}
void  S20643C6 ::v3(){vfunc_called(this, "_ZN8S20643C62v3Ev");}
void  S20643C6 ::v4(){vfunc_called(this, "_ZN8S20643C62v4Ev");}
S20643C6 ::~S20643C6(){ note_dtor("S20643C6", this);} // tgen
S20643C6 ::S20643C6(){ note_ctor("S20643C6", this);} // tgen

static void Test_S20643C6()
{
  extern Class_Descriptor cd_S20643C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,11)];
    init_test(&cd_S20643C6, buf);
    S20643C6 *dp, &lv = *(dp=new (buf) S20643C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S20643C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20643C6)");
    check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(8,4), "S20643C6");
    check_field_offset(lv, s20643c6f0, ABISELECT(12,8), "S20643C6.s20643c6f0");
    check_field_offset(lv, s20643c6f1, ABISELECT(24,20), "S20643C6.s20643c6f1");
    check_field_offset(lv, s20643c6f2, ABISELECT(32,28), "S20643C6.s20643c6f2");
    check_field_offset(lv, s20643c6f3, ABISELECT(40,32), "S20643C6.s20643c6f3");
    check_field_offset(lv, s20643c6f4, ABISELECT(44,36), "S20643C6.s20643c6f4");
    test_class_info(&lv, &cd_S20643C6);
    dp->~S20643C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20643C6(Test_S20643C6, "S20643C6", ABISELECT(48,40));

#else // __cplusplus

extern void _ZN8S20643C6C1Ev();
extern void _ZN8S20643C6D1Ev();
Name_Map name_map_S20643C6[] = {
  NSPAIR(_ZN8S20643C6C1Ev),
  NSPAIR(_ZN8S20643C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S20643C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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 _ZTI8S20643C6[];
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY vtc_S20643C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C6[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
Class_Descriptor cd_S20643C6 = {  "S20643C6", // class name
  bases_S20643C6, 1,
  &(vtc_S20643C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,40), // object size
  NSPAIRA(_ZTI8S20643C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20643C6),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  S20643C5  : S20643C6 , virtual S3216C8_nt {
  long double s20643c5f0;
  __tsi64 s20643c5f1;
  ::S20643C6 s20643c5f2;
  void *s20643c5f3;
  short s20643c5f4[3];
  ~S20643C5(); // tgen
  S20643C5(); // tgen
};
//SIG(-1 S20643C5) C1{ BC2{ BC3{ m Fi} v1 v2 v3 FC3[3] FC3[2] Fp Fs FC3} VBC3 FD FL FC2 Fp Fs[3]}


S20643C5 ::~S20643C5(){ note_dtor("S20643C5", this);} // tgen
S20643C5 ::S20643C5(){ note_ctor("S20643C5", this);} // tgen

static void Test_S20643C5()
{
  extern Class_Descriptor cd_S20643C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,30)];
    init_test(&cd_S20643C5, buf);
    S20643C5 *dp, &lv = *(dp=new (buf) S20643C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,116), "sizeof(S20643C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20643C5)");
    check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*), ABISELECT(8,4), "S20643C5");
    check_base_class_offset(lv, (S20643C6*), 0, "S20643C5");
    /*is_ambiguous_... S20643C5::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(136,112), "S20643C5");
    check_field_offset(lv, s20643c5f0, ABISELECT(48,40), "S20643C5.s20643c5f0");
    check_field_offset(lv, s20643c5f1, ABISELECT(64,52), "S20643C5.s20643c5f1");
    check_field_offset(lv, s20643c5f2, ABISELECT(72,60), "S20643C5.s20643c5f2");
    check_field_offset(lv, s20643c5f3, ABISELECT(120,100), "S20643C5.s20643c5f3");
    check_field_offset(lv, s20643c5f4, ABISELECT(128,104), "S20643C5.s20643c5f4");
    test_class_info(&lv, &cd_S20643C5);
    dp->~S20643C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20643C5(Test_S20643C5, "S20643C5", ABISELECT(144,116));

#else // __cplusplus

extern void _ZN8S20643C5C1Ev();
extern void _ZN8S20643C5D1Ev();
Name_Map name_map_S20643C5[] = {
  NSPAIR(_ZN8S20643C5C1Ev),
  NSPAIR(_ZN8S20643C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S20643C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S20643C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20643C5[];
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY vtc_S20643C5[] = {
  ABISELECT(136,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern VTBL_ENTRY _ZTV8S20643C5[];
static  VTT_ENTRY vtt_S20643C5[] = {
  {&(_ZTV8S20643C5[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
Class_Descriptor cd_S20643C5 = {  "S20643C5", // class name
  bases_S20643C5, 3,
  &(vtc_S20643C5[0]), // expected_vtbl_contents
  &(vtt_S20643C5[0]), // expected_vtt_contents
  ABISELECT(144,116), // object size
  NSPAIRA(_ZTI8S20643C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20643C5),6, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20643C5),1, //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  S20643C7  : S20643C6 {
  void *s20643c7f0[7];
  int s20643c7f1[2];
  __tsi64 s20643c7f2;
  int s20643c7f3;
  virtual  ~S20643C7(); // _ZN8S20643C7D1Ev
  virtual void  v5(); // _ZN8S20643C72v5Ev
  S20643C7(); // tgen
};
//SIG(-1 S20643C7) C1{ BC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} vd v1 Fp[7] Fi[2] FL Fi}


 S20643C7 ::~S20643C7(){ note_dtor("S20643C7", this);}
void  S20643C7 ::v5(){vfunc_called(this, "_ZN8S20643C72v5Ev");}
S20643C7 ::S20643C7(){ note_ctor("S20643C7", this);} // tgen

static void Test_S20643C7()
{
  extern Class_Descriptor cd_S20643C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,23)];
    init_test(&cd_S20643C7, buf);
    S20643C7 *dp, &lv = *(dp=new (buf) S20643C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,88), "sizeof(S20643C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20643C7)");
    check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*), ABISELECT(8,4), "S20643C7");
    check_base_class_offset(lv, (S20643C6*), 0, "S20643C7");
    check_field_offset(lv, s20643c7f0, ABISELECT(48,40), "S20643C7.s20643c7f0");
    check_field_offset(lv, s20643c7f1, ABISELECT(104,68), "S20643C7.s20643c7f1");
    check_field_offset(lv, s20643c7f2, ABISELECT(112,76), "S20643C7.s20643c7f2");
    check_field_offset(lv, s20643c7f3, ABISELECT(120,84), "S20643C7.s20643c7f3");
    test_class_info(&lv, &cd_S20643C7);
    dp->~S20643C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20643C7(Test_S20643C7, "S20643C7", ABISELECT(128,88));

#else // __cplusplus

extern void _ZN8S20643C7C1Ev();
extern void _ZN8S20643C7D1Ev();
Name_Map name_map_S20643C7[] = {
  NSPAIR(_ZN8S20643C7C1Ev),
  NSPAIR(_ZN8S20643C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
static Base_Class bases_S20643C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S20643C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20643C7[];
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C7D1Ev();
extern void _ZN8S20643C7D0Ev();
extern void _ZN8S20643C72v5Ev();
static  VTBL_ENTRY vtc_S20643C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C7[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  (VTBL_ENTRY)&_ZN8S20643C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20643C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20643C72v5Ev,
};
extern VTBL_ENTRY _ZTI8S20643C7[];
extern  VTBL_ENTRY _ZTV8S20643C7[];
Class_Descriptor cd_S20643C7 = {  "S20643C7", // class name
  bases_S20643C7, 2,
  &(vtc_S20643C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,88), // object size
  NSPAIRA(_ZTI8S20643C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20643C7),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  S20643C9  : virtual S20643C6 , virtual S3216C8_nt {
  ::S20643C6 s20643c9f0;
  long double s20643c9f1;
  void *s20643c9f2[2];
  ::S20643C6 s20643c9f3;
  virtual void  v6(); // _ZN8S20643C92v6Ev
  ~S20643C9(); // tgen
  S20643C9(); // tgen
};
//SIG(-1 S20643C9) C1{ VBC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC3 v1 FC2 FD Fp[2] FC2}


void  S20643C9 ::v6(){vfunc_called(this, "_ZN8S20643C92v6Ev");}
S20643C9 ::~S20643C9(){ note_dtor("S20643C9", this);} // tgen
S20643C9 ::S20643C9(){ note_ctor("S20643C9", this);} // tgen

static void Test_S20643C9()
{
  extern Class_Descriptor cd_S20643C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,38)];
    init_test(&cd_S20643C9, buf);
    S20643C9 *dp, &lv = *(dp=new (buf) S20643C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,148), "sizeof(S20643C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20643C9)");
    check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*), ABISELECT(152,108), "S20643C9");
    check_base_class_offset(lv, (S20643C6*), ABISELECT(144,104), "S20643C9");
    /*is_ambiguous_... S20643C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(192,144), "S20643C9");
    check_field_offset(lv, s20643c9f0, ABISELECT(8,4), "S20643C9.s20643c9f0");
    check_field_offset(lv, s20643c9f1, ABISELECT(64,44), "S20643C9.s20643c9f1");
    check_field_offset(lv, s20643c9f2, ABISELECT(80,56), "S20643C9.s20643c9f2");
    check_field_offset(lv, s20643c9f3, ABISELECT(96,64), "S20643C9.s20643c9f3");
    test_class_info(&lv, &cd_S20643C9);
    dp->~S20643C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20643C9(Test_S20643C9, "S20643C9", ABISELECT(208,148));

#else // __cplusplus

extern void _ZN8S20643C9C1Ev();
extern void _ZN8S20643C9D1Ev();
Name_Map name_map_S20643C9[] = {
  NSPAIR(_ZN8S20643C9C1Ev),
  NSPAIR(_ZN8S20643C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S20643C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(152,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
    1, //immediately_derived
  0, 0},
  {&cd_S20643C6,    ABISELECT(144,104), //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(192,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20643C9[];
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY vtc_S20643C9[] = {
  ABISELECT(192,144),
  ABISELECT(144,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  0,
  0,
  0,
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern VTBL_ENTRY _ZTV8S20643C9[];
static  VTT_ENTRY vtt_S20643C9[] = {
  {&(_ZTV8S20643C9[4]),  4,13},
  {&(_ZTV8S20643C9[10]),  10,13},
};
extern VTBL_ENTRY _ZTI8S20643C9[];
extern  VTBL_ENTRY _ZTV8S20643C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C9[];
Class_Descriptor cd_S20643C9 = {  "S20643C9", // class name
  bases_S20643C9, 3,
  &(vtc_S20643C9[0]), // expected_vtbl_contents
  &(vtt_S20643C9[0]), // expected_vtt_contents
  ABISELECT(208,148), // object size
  NSPAIRA(_ZTI8S20643C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20643C9),13, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20643C9),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  S20643C8  : virtual S20643C6 , virtual S3216C8_nt , S20643C9 , S20643C5 {
  void *s20643c8f0[2];
  long s20643c8f1;
  int s20643c8f2;
  ::S20643C6 s20643c8f3[5];
  virtual void  v7(); // _ZN8S20643C82v7Ev
  ~S20643C8(); // tgen
  S20643C8(); // tgen
};
//SIG(-1 S20643C8) C1{ VBC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC3 BC4{ VBC2 VBC3 v5 FC2 FD Fp[2] FC2} BC5{ BC2 VBC3 FD FL FC2 Fp Fs[3]} v1 Fp[2] Fl Fi FC2[5]}


void  S20643C8 ::v7(){vfunc_called(this, "_ZN8S20643C82v7Ev");}
S20643C8 ::~S20643C8(){ note_dtor("S20643C8", this);} // tgen
S20643C8 ::S20643C8(){ note_ctor("S20643C8", this);} // tgen

static void Test_S20643C8()
{
  extern Class_Descriptor cd_S20643C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(39,120)];
    init_test(&cd_S20643C8, buf);
    S20643C8 *dp, &lv = *(dp=new (buf) S20643C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(608,476), "sizeof(S20643C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20643C8)");
    /*is_ambiguous_... S20643C8::S20643C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*), ABISELECT(560,436), "S20643C8");
    /*is_ambiguous_... S20643C8::S20643C6 */ AMB_check_base_class_offset(lv, (S20643C6*), ABISELECT(552,432), "S20643C8");
    check_base_class_offset(lv, (S20643C6*)(S20643C9*), ABISELECT(552,432), "S20643C8");
    /*is_ambiguous_... S20643C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(600,472), "S20643C8");
    /*is_ambiguous_... S20643C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C9*), ABISELECT(600,472), "S20643C8");
    /*is_ambiguous_... S20643C5::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*), ABISELECT(600,472), "S20643C8");
    check_base_class_offset(lv, (S20643C9*), 0, "S20643C8");
    check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*), ABISELECT(152,108), "S20643C8");
    check_base_class_offset(lv, (S20643C6*)(S20643C5*), ABISELECT(144,104), "S20643C8");
    check_base_class_offset(lv, (S20643C5*), ABISELECT(144,104), "S20643C8");
    check_field_offset(lv, s20643c8f0, ABISELECT(280,216), "S20643C8.s20643c8f0");
    check_field_offset(lv, s20643c8f1, ABISELECT(296,224), "S20643C8.s20643c8f1");
    check_field_offset(lv, s20643c8f2, ABISELECT(304,228), "S20643C8.s20643c8f2");
    check_field_offset(lv, s20643c8f3, ABISELECT(312,232), "S20643C8.s20643c8f3");
    test_class_info(&lv, &cd_S20643C8);
    dp->~S20643C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20643C8(Test_S20643C8, "S20643C8", ABISELECT(608,476));

#else // __cplusplus

extern void _ZN8S20643C8C1Ev();
extern void _ZN8S20643C8D1Ev();
Name_Map name_map_S20643C8[] = {
  NSPAIR(_ZN8S20643C8C1Ev),
  NSPAIR(_ZN8S20643C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C9;
extern VTBL_ENTRY _ZTI8S20643C9[];
extern  VTBL_ENTRY _ZTV8S20643C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
static Base_Class bases_S20643C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(560,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
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20643C6,    ABISELECT(552,432), //bcp->offset
    12, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(600,472), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20643C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(152,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20643C6,    ABISELECT(144,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20643C5,    ABISELECT(144,104), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20643C8[];
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY vtc_S20643C8[] = {
  ABISELECT(600,472),
  ABISELECT(552,432),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
  ABISELECT(456,368),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  0,
  0,
  0,
  ABISELECT(-552,-432),
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern VTBL_ENTRY _ZTV8S20643C8[];
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C9__8S20643C8[] = {
  ABISELECT(600,472),
  ABISELECT(552,432),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C9__8S20643C8[] = {
  0,
  0,
  0,
  ABISELECT(-552,-432),
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__8S20643C8[] = {
  ABISELECT(456,368),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
static  VTT_ENTRY vtt_S20643C8[] = {
  {&(_ZTV8S20643C8[4]),  4,20},
  {&(_tg__ZTV8S20643C9__8S20643C8[4]),  4,5},
  {&(_tg__ZTV8S20643C6__8S20643C9__8S20643C8[5]),  5,8},
  {&(_tg__ZTV8S20643C5__8S20643C8[3]),  3,6},
  {&(_ZTV8S20643C8[17]),  17,20},
  {&(_ZTV8S20643C8[9]),  9,20},
};
extern VTBL_ENTRY _ZTI8S20643C8[];
extern  VTBL_ENTRY _ZTV8S20643C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C8[];
Class_Descriptor cd_S20643C8 = {  "S20643C8", // class name
  bases_S20643C8, 7,
  &(vtc_S20643C8[0]), // expected_vtbl_contents
  &(vtt_S20643C8[0]), // expected_vtt_contents
  ABISELECT(608,476), // object size
  NSPAIRA(_ZTI8S20643C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20643C8),20, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20643C8),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  S20643C4  : virtual S20643C5 , S20643C7 , virtual S20643C6 , S20643C8 , S20643C9 {
  int s20643c4f0[2];
  long double s20643c4f1;
  ::S20643C9 s20643c4f2[10];
  int s20643c4f3;
  virtual void  v8(); // _ZN8S20643C42v8Ev
  ~S20643C4(); // tgen
  S20643C4(); // tgen
};
//SIG(-1 S20643C4) C1{ VBC2{ BC3{ BC4{ m Fi} v2 v3 v4 FC4[3] FC4[2] Fp Fs FC4} VBC4 FD FL FC3 Fp Fs[3]} BC5{ BC3 vd v5 Fp[7] Fi[2] FL Fi} VBC3 BC6{ VBC3 VBC4 BC7{ VBC3 VBC4 v6 FC3 FD Fp[2] FC3} BC2 v7 Fp[2] Fl Fi FC3[5]} BC7 v1 Fi[2] FD FC7[10] Fi}


void  S20643C4 ::v8(){vfunc_called(this, "_ZN8S20643C42v8Ev");}
S20643C4 ::~S20643C4(){ note_dtor("S20643C4", this);} // tgen
S20643C4 ::S20643C4(){ note_ctor("S20643C4", this);} // tgen

static void Test_S20643C4()
{
  extern Class_Descriptor cd_S20643C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(198,572)];
    init_test(&cd_S20643C4, buf);
    S20643C4 *dp, &lv = *(dp=new (buf) S20643C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3152,2284), "sizeof(S20643C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20643C4)");
    /*is_ambiguous_... S20643C4::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*), ABISELECT(2968,2132), "S20643C4");
    /*is_ambiguous_... S20643C4::S20643C5 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C5*), ABISELECT(2960,2128), "S20643C4");
    /*is_ambiguous_... S20643C4::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*), ABISELECT(3096,2240), "S20643C4");
    /*is_ambiguous_... S20643C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C8*), ABISELECT(3096,2240), "S20643C4");
    /*is_ambiguous_... S20643C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C9*)(S20643C8*), ABISELECT(3096,2240), "S20643C4");
    /*is_ambiguous_... S20643C5::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*)(S20643C8*), ABISELECT(3096,2240), "S20643C4");
    /*is_ambiguous_... S20643C4::S20643C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C9*), ABISELECT(3096,2240), "S20643C4");
    /*is_ambiguous_... S20643C4::S20643C5 */ AMB_check_base_class_offset(lv, (S20643C5*), ABISELECT(2960,2128), "S20643C4");
    check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C7*), ABISELECT(8,4), "S20643C4");
    check_base_class_offset(lv, (S20643C6*)(S20643C7*), 0, "S20643C4");
    check_base_class_offset(lv, (S20643C7*), 0, "S20643C4");
    /*is_ambiguous_... S20643C4::S20643C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*), ABISELECT(3112,2248), "S20643C4");
    /*is_ambiguous_... S20643C4::S20643C6 */ AMB_check_base_class_offset(lv, (S20643C6*), ABISELECT(3104,2244), "S20643C4");
    /*is_ambiguous_... S20643C8::S20643C6 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C8*), ABISELECT(3104,2244), "S20643C4");
    check_base_class_offset(lv, (S20643C6*)(S20643C9*)(S20643C8*), ABISELECT(3104,2244), "S20643C4");
    /*is_ambiguous_... S20643C4::S20643C9 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C9*), ABISELECT(3104,2244), "S20643C4");
    check_base_class_offset(lv, (S20643C9*)(S20643C8*), ABISELECT(128,88), "S20643C4");
    check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*)(S20643C8*), ABISELECT(280,196), "S20643C4");
    check_base_class_offset(lv, (S20643C6*)(S20643C5*)(S20643C8*), ABISELECT(272,192), "S20643C4");
    check_base_class_offset(lv, (S20643C5*)(S20643C8*), ABISELECT(272,192), "S20643C4");
    check_base_class_offset(lv, (S20643C8*), ABISELECT(128,88), "S20643C4");
    /*is_ambiguous_... S20643C4::S20643C9 */ AMB_check_base_class_offset(lv, (S20643C9*), ABISELECT(688,520), "S20643C4");
    check_field_offset(lv, s20643c4f0, ABISELECT(832,624), "S20643C4.s20643c4f0");
    check_field_offset(lv, s20643c4f1, ABISELECT(848,632), "S20643C4.s20643c4f1");
    check_field_offset(lv, s20643c4f2, ABISELECT(864,644), "S20643C4.s20643c4f2");
    check_field_offset(lv, s20643c4f3, ABISELECT(2944,2124), "S20643C4.s20643c4f3");
    test_class_info(&lv, &cd_S20643C4);
    dp->~S20643C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20643C4(Test_S20643C4, "S20643C4", ABISELECT(3152,2284));

#else // __cplusplus

extern void _ZN8S20643C4C1Ev();
extern void _ZN8S20643C4D1Ev();
Name_Map name_map_S20643C4[] = {
  NSPAIR(_ZN8S20643C4C1Ev),
  NSPAIR(_ZN8S20643C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C7;
extern VTBL_ENTRY _ZTI8S20643C7[];
extern  VTBL_ENTRY _ZTV8S20643C7[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C9;
extern VTBL_ENTRY _ZTI8S20643C9[];
extern  VTBL_ENTRY _ZTV8S20643C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
extern Class_Descriptor cd_S20643C8;
extern VTBL_ENTRY _ZTI8S20643C8[];
extern  VTBL_ENTRY _ZTV8S20643C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C8[];
extern Class_Descriptor cd_S20643C9;
extern VTBL_ENTRY _ZTI8S20643C9[];
extern  VTBL_ENTRY _ZTV8S20643C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C9[];
static Base_Class bases_S20643C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(2968,2132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20643C6,    ABISELECT(2960,2128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3216C8_nt,    ABISELECT(3096,2240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C5,    ABISELECT(2960,2128), //bcp->offset
    29, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20643C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20643C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3216C8_nt,    ABISELECT(3112,2248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C6,    ABISELECT(3104,2244), //bcp->offset
    38, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20643C9,    ABISELECT(128,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    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
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20643C6,    ABISELECT(272,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
    12, //immediately_derived
  0, 0},
  {&cd_S20643C5,    ABISELECT(272,192), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20643C8,    ABISELECT(128,88), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20643C9,    ABISELECT(688,520), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20643C4[];
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C4D1Ev();
extern void _ZN8S20643C4D0Ev();
extern void _ZN8S20643C72v5Ev();
extern void _ZN8S20643C42v8Ev();
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY vtc_S20643C4[] = {
  ABISELECT(3104,2244),
  ABISELECT(3096,2240),
  ABISELECT(2960,2128),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C4[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  (VTBL_ENTRY)&_ZN8S20643C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20643C4D0Ev,
  (VTBL_ENTRY)&_ZN8S20643C72v5Ev,
  (VTBL_ENTRY)&_ZN8S20643C42v8Ev,
  ABISELECT(2968,2152),
  ABISELECT(2976,2156),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S20643C4[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
  ABISELECT(2824,2048),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S20643C4[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  ABISELECT(2408,1720),
  ABISELECT(2416,1724),
  ABISELECT(-688,-520),
  (VTBL_ENTRY)&(_ZTI8S20643C4[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  0,
  0,
  0,
  ABISELECT(136,112),
  ABISELECT(-2960,-2128),
  (VTBL_ENTRY)&(_ZTI8S20643C4[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  0,
  0,
  0,
  ABISELECT(-3104,-2244),
  (VTBL_ENTRY)&(_ZTI8S20643C4[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern VTBL_ENTRY _ZTV8S20643C4[];
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C8__8S20643C4[] = {
  ABISELECT(2968,2152),
  ABISELECT(2976,2156),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C98S20643C8__8S20643C4[] = {
  ABISELECT(2968,2152),
  ABISELECT(2976,2156),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C98S20643C8__8S20643C4[] = {
  0,
  0,
  0,
  ABISELECT(-2976,-2156),
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C8__A1__8S20643C4[] = {
  ABISELECT(2824,2048),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C8__8S20643C4[] = {
  0,
  0,
  0,
  ABISELECT(-2976,-2156),
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__8S20643C8__8S20643C4[] = {
  ABISELECT(2824,2048),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C9__A1__8S20643C4[] = {
  ABISELECT(2408,1720),
  ABISELECT(2416,1724),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C9__A1__8S20643C4[] = {
  0,
  0,
  0,
  ABISELECT(-2416,-1724),
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__8S20643C4[] = {
  ABISELECT(136,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
static  VTT_ENTRY vtt_S20643C4[] = {
  {&(_ZTV8S20643C4[5]),  5,46},
  {&(_tg__ZTV8S20643C8__8S20643C4[4]),  4,6},
  {&(_tg__ZTV8S20643C98S20643C8__8S20643C4[4]),  4,5},
  {&(_tg__ZTV8S20643C6__8S20643C98S20643C8__8S20643C4[5]),  5,8},
  {&(_tg__ZTV8S20643C58S20643C8__A1__8S20643C4[3]),  3,6},
  {&(_tg__ZTV8S20643C6__8S20643C8__8S20643C4[5]),  5,8},
  {&(_tg__ZTV8S20643C5__8S20643C8__8S20643C4[3]),  3,6},
  {&(_tg__ZTV8S20643C9__A1__8S20643C4[4]),  4,5},
  {&(_tg__ZTV8S20643C6__8S20643C9__A1__8S20643C4[5]),  5,8},
  {&(_ZTV8S20643C4[35]),  35,46},
  {&(_ZTV8S20643C4[43]),  43,46},
  {&(_ZTV8S20643C4[16]),  16,46},
  {&(_ZTV8S20643C4[21]),  21,46},
  {&(_ZTV8S20643C4[28]),  28,46},
  {&(_tg__ZTV8S20643C5__8S20643C4[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S20643C4[];
extern  VTBL_ENTRY _ZTV8S20643C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C4[];
Class_Descriptor cd_S20643C4 = {  "S20643C4", // class name
  bases_S20643C4, 15,
  &(vtc_S20643C4[0]), // expected_vtbl_contents
  &(vtt_S20643C4[0]), // expected_vtt_contents
  ABISELECT(3152,2284), // object size
  NSPAIRA(_ZTI8S20643C4),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20643C4),46, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20643C4),15, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20643C11  : virtual S3216C8_nt , virtual S20643C6 , virtual S20643C5 {
  void *s20643c11f0[2];
  int s20643c11f1;
  ::S20643C5 s20643c11f2[8];
  long double s20643c11f3[9];
  ~S20643C11(); // tgen
  S20643C11(); // tgen
};
//SIG(-1 S20643C11) C1{ VBC2{ m Fi} VBC3{ BC2 v1 v2 v3 FC2[3] FC2[2] Fp Fs FC2} VBC4{ BC3 VBC2 FD FL FC3 Fp Fs[3]} Fp[2] Fi FC4[8] FD[9]}


S20643C11 ::~S20643C11(){ note_dtor("S20643C11", this);} // tgen
S20643C11 ::S20643C11(){ note_ctor("S20643C11", this);} // tgen

static void Test_S20643C11()
{
  extern Class_Descriptor cd_S20643C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(97,303)];
    init_test(&cd_S20643C11, buf);
    S20643C11 *dp, &lv = *(dp=new (buf) S20643C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1536,1208), "sizeof(S20643C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20643C11)");
    /*is_ambiguous_... S20643C11::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(1328,1052), "S20643C11");
    /*is_ambiguous_... S20643C5::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*), ABISELECT(1328,1052), "S20643C11");
    /*is_ambiguous_... S20643C11::S20643C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*), ABISELECT(1344,1060), "S20643C11");
    /*is_ambiguous_... S20643C11::S20643C6 */ AMB_check_base_class_offset(lv, (S20643C6*), ABISELECT(1336,1056), "S20643C11");
    check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*), ABISELECT(1400,1100), "S20643C11");
    check_base_class_offset(lv, (S20643C6*)(S20643C5*), ABISELECT(1392,1096), "S20643C11");
    check_base_class_offset(lv, (S20643C5*), ABISELECT(1392,1096), "S20643C11");
    check_field_offset(lv, s20643c11f0, ABISELECT(8,4), "S20643C11.s20643c11f0");
    check_field_offset(lv, s20643c11f1, ABISELECT(24,12), "S20643C11.s20643c11f1");
    check_field_offset(lv, s20643c11f2, ABISELECT(32,16), "S20643C11.s20643c11f2");
    check_field_offset(lv, s20643c11f3, ABISELECT(1184,944), "S20643C11.s20643c11f3");
    test_class_info(&lv, &cd_S20643C11);
    dp->~S20643C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20643C11(Test_S20643C11, "S20643C11", ABISELECT(1536,1208));

#else // __cplusplus

extern void _ZN9S20643C11C1Ev();
extern void _ZN9S20643C11D1Ev();
Name_Map name_map_S20643C11[] = {
  NSPAIR(_ZN9S20643C11C1Ev),
  NSPAIR(_ZN9S20643C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
static Base_Class bases_S20643C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(1328,1052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1344,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20643C6,    ABISELECT(1336,1056), //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1400,1100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20643C6,    ABISELECT(1392,1096), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C5,    ABISELECT(1392,1096), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //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 _ZTI9S20643C11[];
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY vtc_S20643C11[] = {
  ABISELECT(1392,1096),
  ABISELECT(1336,1056),
  ABISELECT(1328,1052),
  0,
  (VTBL_ENTRY)&(_ZTI9S20643C11[0]),
  0,
  0,
  0,
  ABISELECT(-1336,-1056),
  (VTBL_ENTRY)&(_ZTI9S20643C11[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  0,
  0,
  0,
  ABISELECT(-64,-44),
  ABISELECT(-1392,-1096),
  (VTBL_ENTRY)&(_ZTI9S20643C11[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern VTBL_ENTRY _ZTV9S20643C11[];
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__9S20643C11[] = {
  ABISELECT(-64,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
static  VTT_ENTRY vtt_S20643C11[] = {
  {&(_ZTV9S20643C11[5]),  5,22},
  {&(_ZTV9S20643C11[10]),  10,22},
  {&(_ZTV9S20643C11[19]),  19,22},
  {&(_tg__ZTV8S20643C5__9S20643C11[3]),  3,6},
};
extern VTBL_ENTRY _ZTI9S20643C11[];
extern  VTBL_ENTRY _ZTV9S20643C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20643C11[];
Class_Descriptor cd_S20643C11 = {  "S20643C11", // class name
  bases_S20643C11, 6,
  &(vtc_S20643C11[0]), // expected_vtbl_contents
  &(vtt_S20643C11[0]), // expected_vtt_contents
  ABISELECT(1536,1208), // object size
  NSPAIRA(_ZTI9S20643C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20643C11),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20643C11),4, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20643C10  : S20643C11 , S3216C8_nt , virtual S20643C8 , S20643C7 {
  int s20643c10f0;
  void *s20643c10f1;
  int s20643c10f2;
  virtual  ~S20643C10(); // _ZN9S20643C10D2Ev
  virtual void  v9(); // _ZN9S20643C102v9Ev
  S20643C10(); // tgen
};
//SIG(-1 S20643C10) C1{ BC2{ VBC3{ m Fi} VBC4{ BC3 v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC5{ BC4 VBC3 FD FL FC4 Fp Fs[3]} Fp[2] Fi FC5[8] FD[9]} BC3 VBC6{ VBC4 VBC3 BC7{ VBC4 VBC3 v5 FC4 FD Fp[2] FC4} BC5 v6 Fp[2] Fl Fi FC4[5]} BC8{ BC4 vd v7 Fp[7] Fi[2] FL Fi} vd v1 Fi Fp Fi}


 S20643C10 ::~S20643C10(){ note_dtor("S20643C10", this);}
void  S20643C10 ::v9(){vfunc_called(this, "_ZN9S20643C102v9Ev");}
S20643C10 ::S20643C10(){ note_ctor("S20643C10", this);} // tgen

static void Test_S20643C10()
{
  extern Class_Descriptor cd_S20643C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(141,437)];
    init_test(&cd_S20643C10, buf);
    S20643C10 *dp, &lv = *(dp=new (buf) S20643C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2240,1744), "sizeof(S20643C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20643C10)");
    /*is_ambiguous_... S20643C11::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C11*), ABISELECT(1476,1156), "S20643C10");
    /*is_ambiguous_... S20643C10::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*), ABISELECT(1476,1156), "S20643C10");
    /*is_ambiguous_... S20643C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C8*), ABISELECT(1476,1156), "S20643C10");
    /*is_ambiguous_... S20643C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C9*)(S20643C8*), ABISELECT(1476,1156), "S20643C10");
    /*is_ambiguous_... S20643C5::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*)(S20643C8*), ABISELECT(1476,1156), "S20643C10");
    /*is_ambiguous_... S20643C10::S20643C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*), ABISELECT(1488,1164), "S20643C10");
    /*is_ambiguous_... S20643C11::S20643C6 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C11*), ABISELECT(1480,1160), "S20643C10");
    /*is_ambiguous_... S20643C8::S20643C6 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C8*), ABISELECT(1480,1160), "S20643C10");
    check_base_class_offset(lv, (S20643C6*)(S20643C9*)(S20643C8*), ABISELECT(1480,1160), "S20643C10");
    /*is_ambiguous_... S20643C10::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*), ABISELECT(1544,1204), "S20643C10");
    /*is_ambiguous_... S20643C10::S20643C5 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C5*), ABISELECT(1536,1200), "S20643C10");
    check_base_class_offset(lv, (S20643C5*)(S20643C11*), ABISELECT(1536,1200), "S20643C10");
    check_base_class_offset(lv, (S20643C11*), 0, "S20643C10");
    /*is_ambiguous_... S20643C10::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(1328,1052), "S20643C10");
    check_base_class_offset(lv, (S20643C9*)(S20643C8*), ABISELECT(1680,1312), "S20643C10");
    check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*)(S20643C8*), ABISELECT(1832,1420), "S20643C10");
    check_base_class_offset(lv, (S20643C6*)(S20643C5*)(S20643C8*), ABISELECT(1824,1416), "S20643C10");
    check_base_class_offset(lv, (S20643C5*)(S20643C8*), ABISELECT(1824,1416), "S20643C10");
    check_base_class_offset(lv, (S20643C8*), ABISELECT(1680,1312), "S20643C10");
    check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C7*), ABISELECT(1344,1060), "S20643C10");
    check_base_class_offset(lv, (S20643C6*)(S20643C7*), ABISELECT(1336,1056), "S20643C10");
    check_base_class_offset(lv, (S20643C7*), ABISELECT(1336,1056), "S20643C10");
    check_field_offset(lv, s20643c10f0, ABISELECT(1460,1144), "S20643C10.s20643c10f0");
    check_field_offset(lv, s20643c10f1, ABISELECT(1464,1148), "S20643C10.s20643c10f1");
    check_field_offset(lv, s20643c10f2, ABISELECT(1472,1152), "S20643C10.s20643c10f2");
    test_class_info(&lv, &cd_S20643C10);
    dp->~S20643C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20643C10(Test_S20643C10, "S20643C10", ABISELECT(2240,1744));

#else // __cplusplus

extern void _ZN9S20643C10C1Ev();
extern void _ZN9S20643C10D2Ev();
Name_Map name_map_S20643C10[] = {
  NSPAIR(_ZN9S20643C10C1Ev),
  NSPAIR(_ZN9S20643C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
extern Class_Descriptor cd_S20643C11;
extern VTBL_ENTRY _ZTI9S20643C11[];
extern  VTBL_ENTRY _ZTV9S20643C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20643C11[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C9;
extern VTBL_ENTRY _ZTI8S20643C9[];
extern  VTBL_ENTRY _ZTV8S20643C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
extern Class_Descriptor cd_S20643C8;
extern VTBL_ENTRY _ZTI8S20643C8[];
extern  VTBL_ENTRY _ZTV8S20643C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C7;
extern VTBL_ENTRY _ZTI8S20643C7[];
extern  VTBL_ENTRY _ZTV8S20643C7[];
static Base_Class bases_S20643C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(1476,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
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1488,1164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C6,    ABISELECT(1480,1160), //bcp->offset
    17, //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
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1544,1204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C6,    ABISELECT(1536,1200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C5,    ABISELECT(1536,1200), //bcp->offset
    25, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20643C11,    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_S3216C8_nt,    ABISELECT(1328,1052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20643C9,    ABISELECT(1680,1312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1832,1420), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C6,    ABISELECT(1824,1416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20643C5,    ABISELECT(1824,1416), //bcp->offset
    45, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20643C8,    ABISELECT(1680,1312), //bcp->offset
    34, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1344,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20643C6,    ABISELECT(1336,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
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20643C7,    ABISELECT(1336,1056), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20643C10[];
extern void _ZN9S20643C10D1Ev();
extern void _ZN9S20643C10D0Ev();
extern void _ZN9S20643C102v9Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void ABISELECT(_ZThn1336_N9S20643C10D1Ev,_ZThn1056_N9S20643C10D1Ev)();
extern void ABISELECT(_ZThn1336_N9S20643C10D0Ev,_ZThn1056_N9S20643C10D0Ev)();
extern void _ZN8S20643C72v5Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY vtc_S20643C10[] = {
  ABISELECT(1680,1312),
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  0,
  (VTBL_ENTRY)&(_ZTI9S20643C10[0]),
  (VTBL_ENTRY)&_ZN9S20643C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20643C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20643C102v9Ev,
  ABISELECT(-1336,-1056),
  (VTBL_ENTRY)&(_ZTI9S20643C10[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1336_N9S20643C10D1Ev,_ZThn1056_N9S20643C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1336_N9S20643C10D0Ev,_ZThn1056_N9S20643C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20643C72v5Ev,
  0,
  0,
  0,
  ABISELECT(-1480,-1160),
  (VTBL_ENTRY)&(_ZTI9S20643C10[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(-1536,-1200),
  (VTBL_ENTRY)&(_ZTI9S20643C10[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  ABISELECT(-1680,-1312),
  (VTBL_ENTRY)&(_ZTI9S20643C10[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
  ABISELECT(-348,-260),
  ABISELECT(-1824,-1416),
  (VTBL_ENTRY)&(_ZTI9S20643C10[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern VTBL_ENTRY _ZTV9S20643C10[];
static  VTBL_ENTRY _tg__ZTV9S20643C11__9S20643C10[] = {
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  0,
  (VTBL_ENTRY)&(_ZTI9S20643C11[0]),
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__9S20643C11__9S20643C10[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1160),
  (VTBL_ENTRY)&(_ZTI9S20643C11[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__9S20643C11__9S20643C10[] = {
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(-1536,-1200),
  (VTBL_ENTRY)&(_ZTI9S20643C11[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__9S20643C10[] = {
  ABISELECT(-60,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C8__9S20643C10[] = {
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C98S20643C8__9S20643C10[] = {
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C98S20643C8__9S20643C10[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C8__A1__9S20643C10[] = {
  ABISELECT(-348,-260),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C8__9S20643C10[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__8S20643C8__9S20643C10[] = {
  ABISELECT(-348,-260),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
static  VTT_ENTRY vtt_S20643C10[] = {
  {&(_ZTV9S20643C10[6]),  6,51},
  {&(_tg__ZTV9S20643C11__9S20643C10[5]),  5,5},
  {&(_tg__ZTV8S20643C6__9S20643C11__9S20643C10[5]),  5,8},
  {&(_tg__ZTV8S20643C5__9S20643C11__9S20643C10[6]),  6,9},
  {&(_ZTV9S20643C10[22]),  22,51},
  {&(_ZTV9S20643C10[31]),  31,51},
  {&(_ZTV9S20643C10[43]),  43,51},
  {&(_ZTV9S20643C10[48]),  48,51},
  {&(_tg__ZTV8S20643C5__9S20643C10[3]),  3,6},
  {&(_tg__ZTV8S20643C8__9S20643C10[4]),  4,6},
  {&(_tg__ZTV8S20643C98S20643C8__9S20643C10[4]),  4,5},
  {&(_tg__ZTV8S20643C6__8S20643C98S20643C8__9S20643C10[5]),  5,8},
  {&(_tg__ZTV8S20643C58S20643C8__A1__9S20643C10[3]),  3,6},
  {&(_tg__ZTV8S20643C6__8S20643C8__9S20643C10[5]),  5,8},
  {&(_tg__ZTV8S20643C5__8S20643C8__9S20643C10[3]),  3,6},
};
extern VTBL_ENTRY _ZTI9S20643C10[];
extern  VTBL_ENTRY _ZTV9S20643C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20643C10[];
Class_Descriptor cd_S20643C10 = {  "S20643C10", // class name
  bases_S20643C10, 16,
  &(vtc_S20643C10[0]), // expected_vtbl_contents
  &(vtt_S20643C10[0]), // expected_vtt_contents
  ABISELECT(2240,1744), // object size
  NSPAIRA(_ZTI9S20643C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20643C10),51, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20643C10),15, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20643C2  : virtual S3216C8_nt , S20643C4 , S20643C5 , virtual S20643C10 , S20643C11 {
  int s20643c2f0[2];
  void *s20643c2f1;
  char s20643c2f2:3;
  int s20643c2f3[3];
  virtual  ~S20643C2(); // _ZN8S20643C2D2Ev
  virtual void  v10(); // _ZN8S20643C23v10Ev
  virtual void  v11(); // _ZN8S20643C23v11Ev
  S20643C2(); // tgen
};
//SIG(-1 S20643C2) C1{ VBC2{ m Fi} BC3{ VBC4{ BC5{ BC2 v3 v4 v5 FC2[3] FC2[2] Fp Fs FC2} VBC2 FD FL FC5 Fp Fs[3]} BC6{ BC5 vd v6 Fp[7] Fi[2] FL Fi} VBC5 BC7{ VBC5 VBC2 BC8{ VBC5 VBC2 v7 FC5 FD Fp[2] FC5} BC4 v8 Fp[2] Fl Fi FC5[5]} BC8 v9 Fi[2] FD FC8[10] Fi} BC4 VBC9{ BC10{ VBC2 VBC5 VBC4 Fp[2] Fi FC4[8] FD[9]} BC2 VBC7 BC6 vd v10 Fi Fp Fi} BC10 vd v1 v2 Fi[2] Fp Fc:3 Fi[3]}


 S20643C2 ::~S20643C2(){ note_dtor("S20643C2", this);}
void  S20643C2 ::v10(){vfunc_called(this, "_ZN8S20643C23v10Ev");}
void  S20643C2 ::v11(){vfunc_called(this, "_ZN8S20643C23v11Ev");}
S20643C2 ::S20643C2(){ note_ctor("S20643C2", this);} // tgen

static void Test_S20643C2()
{
  extern Class_Descriptor cd_S20643C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(421,1267)];
    init_test(&cd_S20643C2, buf);
    S20643C2 *dp, &lv = *(dp=new (buf) S20643C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(6720,5064), "sizeof(S20643C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20643C2)");
    /*is_ambiguous_... S20643C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(4464,3320), "S20643C2");
    /*is_ambiguous_... S20643C2::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*), ABISELECT(4464,3320), "S20643C2");
    /*is_ambiguous_... S20643C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C8*)(S20643C4*), ABISELECT(4464,3320), "S20643C2");
    /*is_ambiguous_... S20643C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C9*)(S20643C8*)(S20643C4*), ABISELECT(4464,3320), "S20643C2");
    /*is_ambiguous_... S20643C5::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*)(S20643C8*)(S20643C4*), ABISELECT(4464,3320), "S20643C2");
    /*is_ambiguous_... S20643C4::S20643C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C9*)(S20643C4*), ABISELECT(4464,3320), "S20643C2");
    /*is_ambiguous_... S20643C2::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*), ABISELECT(4464,3320), "S20643C2");
    /*is_ambiguous_... S20643C11::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C11*)(S20643C10*), ABISELECT(4464,3320), "S20643C2");
    /*is_ambiguous_... S20643C2::S20643C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C8*), ABISELECT(4464,3320), "S20643C2");
    /*is_ambiguous_... S20643C2::S20643C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C9*)(S20643C8*), ABISELECT(4464,3320), "S20643C2");
    /*is_ambiguous_... S20643C2::S20643C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*)(S20643C8*), ABISELECT(4464,3320), "S20643C2");
    /*is_ambiguous_... S20643C2::S20643C11 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C11*), ABISELECT(4464,3320), "S20643C2");
    /*is_ambiguous_... S20643C2::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*), ABISELECT(4488,3328), "S20643C2");
    /*is_ambiguous_... S20643C2::S20643C5 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C5*), ABISELECT(4480,3324), "S20643C2");
    /*is_ambiguous_... S20643C4::S20643C5 */ AMB_check_base_class_offset(lv, (S20643C5*)(S20643C4*), ABISELECT(4480,3324), "S20643C2");
    check_base_class_offset(lv, (S20643C5*)(S20643C11*)(S20643C10*), ABISELECT(4480,3324), "S20643C2");
    /*is_ambiguous_... S20643C2::S20643C11 */ AMB_check_base_class_offset(lv, (S20643C5*)(S20643C11*), ABISELECT(4480,3324), "S20643C2");
    check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C7*)(S20643C4*), ABISELECT(8,4), "S20643C2");
    check_base_class_offset(lv, (S20643C6*)(S20643C7*)(S20643C4*), 0, "S20643C2");
    check_base_class_offset(lv, (S20643C7*)(S20643C4*), 0, "S20643C2");
    /*is_ambiguous_... S20643C2::S20643C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*), ABISELECT(4624,3440), "S20643C2");
    /*is_ambiguous_... S20643C4::S20643C6 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C4*), ABISELECT(4616,3436), "S20643C2");
    /*is_ambiguous_... S20643C8::S20643C6 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C8*)(S20643C4*), ABISELECT(4616,3436), "S20643C2");
    check_base_class_offset(lv, (S20643C6*)(S20643C9*)(S20643C8*)(S20643C4*), ABISELECT(4616,3436), "S20643C2");
    /*is_ambiguous_... S20643C4::S20643C9 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C9*)(S20643C4*), ABISELECT(4616,3436), "S20643C2");
    /*is_ambiguous_... S20643C11::S20643C6 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C11*)(S20643C10*), ABISELECT(4616,3436), "S20643C2");
    /*is_ambiguous_... S20643C2::S20643C8 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C8*), ABISELECT(4616,3436), "S20643C2");
    /*is_ambiguous_... S20643C2::S20643C8 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C9*)(S20643C8*), ABISELECT(4616,3436), "S20643C2");
    /*is_ambiguous_... S20643C2::S20643C11 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C11*), ABISELECT(4616,3436), "S20643C2");
    check_base_class_offset(lv, (S20643C9*)(S20643C8*)(S20643C4*), ABISELECT(128,88), "S20643C2");
    check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*)(S20643C8*)(S20643C4*), ABISELECT(280,196), "S20643C2");
    check_base_class_offset(lv, (S20643C6*)(S20643C5*)(S20643C8*)(S20643C4*), ABISELECT(272,192), "S20643C2");
    check_base_class_offset(lv, (S20643C5*)(S20643C8*)(S20643C4*), ABISELECT(272,192), "S20643C2");
    check_base_class_offset(lv, (S20643C8*)(S20643C4*), ABISELECT(128,88), "S20643C2");
    /*is_ambiguous_... S20643C4::S20643C9 */ AMB_check_base_class_offset(lv, (S20643C9*)(S20643C4*), ABISELECT(688,520), "S20643C2");
    check_base_class_offset(lv, (S20643C4*), 0, "S20643C2");
    /*is_ambiguous_... S20643C2::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*), ABISELECT(2968,2132), "S20643C2");
    /*is_ambiguous_... S20643C2::S20643C5 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C5*), ABISELECT(2960,2128), "S20643C2");
    /*is_ambiguous_... S20643C2::S20643C5 */ AMB_check_base_class_offset(lv, (S20643C5*), ABISELECT(2960,2128), "S20643C2");
    check_base_class_offset(lv, (S20643C11*)(S20643C10*), ABISELECT(4672,3476), "S20643C2");
    /*is_ambiguous_... S20643C10::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C10*), ABISELECT(6000,4528), "S20643C2");
    /*is_ambiguous_... S20643C2::S20643C8 */ AMB_check_base_class_offset(lv, (S20643C9*)(S20643C8*), ABISELECT(6160,4632), "S20643C2");
    /*is_ambiguous_... S20643C2::S20643C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*)(S20643C8*), ABISELECT(6312,4740), "S20643C2");
    /*is_ambiguous_... S20643C2::S20643C8 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C5*)(S20643C8*), ABISELECT(6304,4736), "S20643C2");
    /*is_ambiguous_... S20643C2::S20643C8 */ AMB_check_base_class_offset(lv, (S20643C5*)(S20643C8*), ABISELECT(6304,4736), "S20643C2");
    check_base_class_offset(lv, (S20643C8*)(S20643C10*), ABISELECT(6160,4632), "S20643C2");
    check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C7*)(S20643C10*), ABISELECT(6016,4536), "S20643C2");
    check_base_class_offset(lv, (S20643C6*)(S20643C7*)(S20643C10*), ABISELECT(6008,4532), "S20643C2");
    check_base_class_offset(lv, (S20643C7*)(S20643C10*), ABISELECT(6008,4532), "S20643C2");
    check_base_class_offset(lv, (S20643C10*), ABISELECT(4672,3476), "S20643C2");
    /*is_ambiguous_... S20643C2::S20643C11 */ AMB_check_base_class_offset(lv, (S20643C11*), ABISELECT(3104,2240), "S20643C2");
    check_field_offset(lv, s20643c2f0, ABISELECT(4432,3292), "S20643C2.s20643c2f0");
    check_field_offset(lv, s20643c2f1, ABISELECT(4440,3300), "S20643C2.s20643c2f1");
    set_bf_and_test(lv, s20643c2f2, ABISELECT(4448,3304), 0, 3, 1, "S20643C2");
    set_bf_and_test(lv, s20643c2f2, ABISELECT(4448,3304), 0, 3, hide_sll(1LL<<2), "S20643C2");
    check_field_offset(lv, s20643c2f3, ABISELECT(4452,3308), "S20643C2.s20643c2f3");
    test_class_info(&lv, &cd_S20643C2);
    dp->~S20643C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20643C2(Test_S20643C2, "S20643C2", ABISELECT(6720,5064));

#else // __cplusplus

extern void _ZN8S20643C2C1Ev();
extern void _ZN8S20643C2D2Ev();
Name_Map name_map_S20643C2[] = {
  NSPAIR(_ZN8S20643C2C1Ev),
  NSPAIR(_ZN8S20643C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C7;
extern VTBL_ENTRY _ZTI8S20643C7[];
extern  VTBL_ENTRY _ZTV8S20643C7[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C9;
extern VTBL_ENTRY _ZTI8S20643C9[];
extern  VTBL_ENTRY _ZTV8S20643C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
extern Class_Descriptor cd_S20643C8;
extern VTBL_ENTRY _ZTI8S20643C8[];
extern  VTBL_ENTRY _ZTV8S20643C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C8[];
extern Class_Descriptor cd_S20643C9;
extern VTBL_ENTRY _ZTI8S20643C9[];
extern  VTBL_ENTRY _ZTV8S20643C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C9[];
extern Class_Descriptor cd_S20643C4;
extern VTBL_ENTRY _ZTI8S20643C4[];
extern  VTBL_ENTRY _ZTV8S20643C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C4[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
extern Class_Descriptor cd_S20643C11;
extern VTBL_ENTRY _ZTI9S20643C11[];
extern  VTBL_ENTRY _ZTV9S20643C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20643C11[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C9;
extern VTBL_ENTRY _ZTI8S20643C9[];
extern  VTBL_ENTRY _ZTV8S20643C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
extern Class_Descriptor cd_S20643C8;
extern VTBL_ENTRY _ZTI8S20643C8[];
extern  VTBL_ENTRY _ZTV8S20643C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C7;
extern VTBL_ENTRY _ZTI8S20643C7[];
extern  VTBL_ENTRY _ZTV8S20643C7[];
extern Class_Descriptor cd_S20643C10;
extern VTBL_ENTRY _ZTI9S20643C10[];
extern  VTBL_ENTRY _ZTV9S20643C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20643C10[];
extern Class_Descriptor cd_S20643C11;
extern VTBL_ENTRY _ZTI9S20643C11[];
extern  VTBL_ENTRY _ZTV9S20643C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20643C11[];
static Base_Class bases_S20643C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(4464,3320), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(4488,3328), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C6,    ABISELECT(4480,3324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C5,    ABISELECT(4480,3324), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20643C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20643C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3216C8_nt,    ABISELECT(4624,3440), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C6,    ABISELECT(4616,3436), //bcp->offset
    53, //bcp->virtual_function_table_offset
    5, //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
    9, //immediately_derived
  0, 1},
  {&cd_S20643C9,    ABISELECT(128,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    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
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20643C6,    ABISELECT(272,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
    15, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20643C5,    ABISELECT(272,192), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20643C8,    ABISELECT(128,88), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20643C9,    ABISELECT(688,520), //bcp->offset
    28, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20643C4,    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
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(2968,2132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C6,    ABISELECT(2960,2128), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20643C5,    ABISELECT(2960,2128), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20643C11,    ABISELECT(4672,3476), //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
    8, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(6000,4528), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C9,    ABISELECT(6160,4632), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(6312,4740), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C6,    ABISELECT(6304,4736), //bcp->offset
    -1, //bcp->virtual_function_table_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
    24, //immediately_derived
  0, 0},
  {&cd_S20643C5,    ABISELECT(6304,4736), //bcp->offset
    95, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20643C8,    ABISELECT(6160,4632), //bcp->offset
    84, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(6016,4536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C6,    ABISELECT(6008,4532), //bcp->offset
    -1, //bcp->virtual_function_table_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
    28, //immediately_derived
  0, 0},
  {&cd_S20643C7,    ABISELECT(6008,4532), //bcp->offset
    76, //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
    10, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20643C10,    ABISELECT(4672,3476), //bcp->offset
    61, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20643C11,    ABISELECT(3104,2240), //bcp->offset
    39, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20643C2[];
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C2D1Ev();
extern void _ZN8S20643C2D0Ev();
extern void _ZN8S20643C72v5Ev();
extern void _ZN8S20643C42v8Ev();
extern void _ZN8S20643C23v10Ev();
extern void _ZN8S20643C23v11Ev();
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void ABISELECT(_ZTv0_n56_N8S20643C2D1Ev,_ZTv0_n28_N8S20643C2D1Ev)();
extern void ABISELECT(_ZThn4672_N8S20643C2D1Ev,_ZThn3476_N8S20643C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20643C2D0Ev,_ZTv0_n28_N8S20643C2D0Ev)();
extern void ABISELECT(_ZThn4672_N8S20643C2D0Ev,_ZThn3476_N8S20643C2D0Ev)() __attribute__((weak));
extern void _ZN9S20643C102v9Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N8S20643C2D1Ev,_ZTvn1056_n28_N8S20643C2D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N8S20643C2D0Ev,_ZTvn1056_n28_N8S20643C2D0Ev)();
extern void _ZN8S20643C72v5Ev();
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY vtc_S20643C2[] = {
  ABISELECT(6160,4632),
  ABISELECT(4672,3476),
  ABISELECT(4616,3436),
  ABISELECT(4464,3320),
  ABISELECT(4480,3324),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C2[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  (VTBL_ENTRY)&_ZN8S20643C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20643C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20643C72v5Ev,
  (VTBL_ENTRY)&_ZN8S20643C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20643C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20643C23v11Ev,
  ABISELECT(4336,3232),
  ABISELECT(4488,3348),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S20643C2[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
  ABISELECT(4192,3128),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S20643C2[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  ABISELECT(3776,2800),
  ABISELECT(3928,2916),
  ABISELECT(-688,-520),
  (VTBL_ENTRY)&(_ZTI8S20643C2[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  ABISELECT(1504,1192),
  ABISELECT(-2960,-2128),
  (VTBL_ENTRY)&(_ZTI8S20643C2[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  ABISELECT(1376,1084),
  ABISELECT(1512,1196),
  ABISELECT(1360,1080),
  ABISELECT(-3104,-2240),
  (VTBL_ENTRY)&(_ZTI8S20643C2[0]),
  0,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-4480,-3324),
  (VTBL_ENTRY)&(_ZTI8S20643C2[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  0,
  0,
  0,
  ABISELECT(-4616,-3436),
  (VTBL_ENTRY)&(_ZTI8S20643C2[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-4672,-3476),
  ABISELECT(1488,1156),
  ABISELECT(-192,-152),
  ABISELECT(-56,-40),
  ABISELECT(-208,-156),
  ABISELECT(-4672,-3476),
  (VTBL_ENTRY)&(_ZTI8S20643C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20643C2D1Ev,_ZTv0_n28_N8S20643C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20643C2D0Ev,_ZTv0_n28_N8S20643C2D0Ev),
  (VTBL_ENTRY)&_ZN9S20643C102v9Ev,
  ABISELECT(-6008,-4532),
  (VTBL_ENTRY)&(_ZTI8S20643C2[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20643C2D1Ev,_ZTvn1056_n28_N8S20643C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20643C2D0Ev,_ZTvn1056_n28_N8S20643C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20643C72v5Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1696,-1312),
  ABISELECT(-1544,-1196),
  ABISELECT(-6160,-4632),
  (VTBL_ENTRY)&(_ZTI8S20643C2[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
  ABISELECT(-1840,-1416),
  ABISELECT(-6304,-4736),
  (VTBL_ENTRY)&(_ZTI8S20643C2[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern VTBL_ENTRY _ZTV8S20643C2[];
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C4D1Ev();
extern void _ZN8S20643C4D0Ev();
extern void _ZN8S20643C72v5Ev();
extern void _ZN8S20643C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C4__8S20643C2[] = {
  ABISELECT(4616,3436),
  ABISELECT(4464,3320),
  ABISELECT(4480,3324),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C4[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  (VTBL_ENTRY)&_ZN8S20643C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20643C4D0Ev,
  (VTBL_ENTRY)&_ZN8S20643C72v5Ev,
  (VTBL_ENTRY)&_ZN8S20643C42v8Ev,
};
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C88S20643C4__8S20643C2[] = {
  ABISELECT(4336,3232),
  ABISELECT(4488,3348),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C98S20643C88S20643C4__8S20643C2[] = {
  ABISELECT(4336,3232),
  ABISELECT(4488,3348),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C98S20643C88S20643C4__8S20643C2[] = {
  0,
  0,
  0,
  ABISELECT(-4488,-3348),
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C88S20643C4__A1__8S20643C2[] = {
  ABISELECT(4192,3128),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C88S20643C4__8S20643C2[] = {
  0,
  0,
  0,
  ABISELECT(-4488,-3348),
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__8S20643C88S20643C4__8S20643C2[] = {
  ABISELECT(4192,3128),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C98S20643C4__A1__8S20643C2[] = {
  ABISELECT(3776,2800),
  ABISELECT(3928,2916),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C98S20643C4__A1__8S20643C2[] = {
  0,
  0,
  0,
  ABISELECT(-3928,-2916),
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__8S20643C4__8S20643C2[] = {
  0,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-4480,-3324),
  (VTBL_ENTRY)&(_ZTI8S20643C4[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__A2__8S20643C4__8S20643C2[] = {
  0,
  0,
  0,
  ABISELECT(-4616,-3436),
  (VTBL_ENTRY)&(_ZTI8S20643C4[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C8__8S20643C4__8S20643C2[] = {
  ABISELECT(4336,3232),
  ABISELECT(4488,3348),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S20643C4[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C8__A1__8S20643C4__8S20643C2[] = {
  ABISELECT(4192,3128),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S20643C4[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C9__A1__8S20643C4__8S20643C2[] = {
  ABISELECT(3776,2800),
  ABISELECT(3928,2916),
  ABISELECT(-688,-520),
  (VTBL_ENTRY)&(_ZTI8S20643C4[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__A__8S20643C2[] = {
  ABISELECT(1504,1192),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20643C11__A1__8S20643C2[] = {
  ABISELECT(1376,1084),
  ABISELECT(1512,1196),
  ABISELECT(1360,1080),
  0,
  (VTBL_ENTRY)&(_ZTI9S20643C11[0]),
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__9S20643C11__A1__8S20643C2[] = {
  0,
  0,
  0,
  ABISELECT(-1512,-1196),
  (VTBL_ENTRY)&(_ZTI9S20643C11[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__9S20643C11__A1__8S20643C2[] = {
  0,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-1376,-1084),
  (VTBL_ENTRY)&(_ZTI9S20643C11[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__8S20643C2[] = {
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN9S20643C10D1Ev();
extern void _ZN9S20643C10D0Ev();
extern void _ZN9S20643C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20643C10__8S20643C2[] = {
  ABISELECT(1488,1156),
  ABISELECT(-192,-152),
  ABISELECT(-56,-40),
  ABISELECT(-208,-156),
  0,
  (VTBL_ENTRY)&(_ZTI9S20643C10[0]),
  (VTBL_ENTRY)&_ZN9S20643C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20643C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20643C102v9Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20643C119S20643C10__8S20643C2[] = {
  ABISELECT(-192,-152),
  ABISELECT(-56,-40),
  ABISELECT(-208,-156),
  0,
  (VTBL_ENTRY)&(_ZTI9S20643C11[0]),
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__9S20643C119S20643C10__8S20643C2[] = {
  0,
  0,
  0,
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI9S20643C11[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__9S20643C119S20643C10__8S20643C2[] = {
  0,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(192,152),
  (VTBL_ENTRY)&(_ZTI9S20643C11[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__9S20643C10__8S20643C2[] = {
  0,
  0,
  0,
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI9S20643C10[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__9S20643C10__8S20643C2[] = {
  0,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(192,152),
  (VTBL_ENTRY)&(_ZTI9S20643C10[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C8__9S20643C10__8S20643C2[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1696,-1312),
  ABISELECT(-1544,-1196),
  ABISELECT(-1488,-1156),
  (VTBL_ENTRY)&(_ZTI9S20643C10[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C8__A1__9S20643C10__8S20643C2[] = {
  ABISELECT(-1840,-1416),
  ABISELECT(-1632,-1260),
  (VTBL_ENTRY)&(_ZTI9S20643C10[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C8__A1__8S20643C2[] = {
  ABISELECT(-1696,-1312),
  ABISELECT(-1544,-1196),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C98S20643C8__A2__8S20643C2[] = {
  ABISELECT(-1696,-1312),
  ABISELECT(-1544,-1196),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C98S20643C8__A2__8S20643C2[] = {
  0,
  0,
  0,
  ABISELECT(1544,1196),
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C8__A3__8S20643C2[] = {
  ABISELECT(-1840,-1416),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C8__A1__8S20643C2[] = {
  0,
  0,
  0,
  ABISELECT(1544,1196),
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__8S20643C8__A1__8S20643C2[] = {
  ABISELECT(-1840,-1416),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
static  VTT_ENTRY vtt_S20643C2[] = {
  {&(_ZTV8S20643C2[7]),  7,101},
  {&(_tg__ZTV8S20643C4__8S20643C2[5]),  5,12},
  {&(_tg__ZTV8S20643C88S20643C4__8S20643C2[4]),  4,6},
  {&(_tg__ZTV8S20643C98S20643C88S20643C4__8S20643C2[4]),  4,5},
  {&(_tg__ZTV8S20643C6__8S20643C98S20643C88S20643C4__8S20643C2[5]),  5,8},
  {&(_tg__ZTV8S20643C58S20643C88S20643C4__A1__8S20643C2[3]),  3,6},
  {&(_tg__ZTV8S20643C6__8S20643C88S20643C4__8S20643C2[5]),  5,8},
  {&(_tg__ZTV8S20643C5__8S20643C88S20643C4__8S20643C2[3]),  3,6},
  {&(_tg__ZTV8S20643C98S20643C4__A1__8S20643C2[4]),  4,5},
  {&(_tg__ZTV8S20643C6__8S20643C98S20643C4__A1__8S20643C2[5]),  5,8},
  {&(_tg__ZTV8S20643C5__8S20643C4__8S20643C2[6]),  6,9},
  {&(_tg__ZTV8S20643C6__A2__8S20643C4__8S20643C2[5]),  5,8},
  {&(_tg__ZTV8S20643C8__8S20643C4__8S20643C2[4]),  4,6},
  {&(_tg__ZTV8S20643C58S20643C8__A1__8S20643C4__8S20643C2[3]),  3,6},
  {&(_tg__ZTV8S20643C9__A1__8S20643C4__8S20643C2[4]),  4,5},
  {&(_tg__ZTV8S20643C5__A__8S20643C2[3]),  3,6},
  {&(_tg__ZTV9S20643C11__A1__8S20643C2[5]),  5,5},
  {&(_tg__ZTV8S20643C6__9S20643C11__A1__8S20643C2[5]),  5,8},
  {&(_tg__ZTV8S20643C5__9S20643C11__A1__8S20643C2[6]),  6,9},
  {&(_ZTV8S20643C2[50]),  50,101},
  {&(_ZTV8S20643C2[58]),  58,101},
  {&(_ZTV8S20643C2[20]),  20,101},
  {&(_ZTV8S20643C2[25]),  25,101},
  {&(_ZTV8S20643C2[32]),  32,101},
  {&(_ZTV8S20643C2[36]),  36,101},
  {&(_ZTV8S20643C2[73]),  73,101},
  {&(_ZTV8S20643C2[93]),  93,101},
  {&(_ZTV8S20643C2[98]),  98,101},
  {&(_ZTV8S20643C2[78]),  78,101},
  {&(_ZTV8S20643C2[44]),  44,101},
  {&(_tg__ZTV8S20643C5__8S20643C2[3]),  3,6},
  {&(_tg__ZTV9S20643C10__8S20643C2[6]),  6,9},
  {&(_tg__ZTV9S20643C119S20643C10__8S20643C2[5]),  5,5},
  {&(_tg__ZTV8S20643C6__9S20643C119S20643C10__8S20643C2[5]),  5,8},
  {&(_tg__ZTV8S20643C5__9S20643C119S20643C10__8S20643C2[6]),  6,9},
  {&(_tg__ZTV8S20643C6__9S20643C10__8S20643C2[5]),  5,8},
  {&(_tg__ZTV8S20643C5__9S20643C10__8S20643C2[6]),  6,9},
  {&(_tg__ZTV8S20643C8__9S20643C10__8S20643C2[9]),  9,11},
  {&(_tg__ZTV8S20643C58S20643C8__A1__9S20643C10__8S20643C2[3]),  3,6},
  {&(_tg__ZTV8S20643C8__A1__8S20643C2[4]),  4,6},
  {&(_tg__ZTV8S20643C98S20643C8__A2__8S20643C2[4]),  4,5},
  {&(_tg__ZTV8S20643C6__8S20643C98S20643C8__A2__8S20643C2[5]),  5,8},
  {&(_tg__ZTV8S20643C58S20643C8__A3__8S20643C2[3]),  3,6},
  {&(_tg__ZTV8S20643C6__8S20643C8__A1__8S20643C2[5]),  5,8},
  {&(_tg__ZTV8S20643C5__8S20643C8__A1__8S20643C2[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S20643C2[];
extern  VTBL_ENTRY _ZTV8S20643C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C2[];
static VTBL_ENTRY alt_thunk_names1[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20643C2D0Ev,_ZTv0_n28_N8S20643C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4672_N8S20643C2D0Ev,_ZThn3476_N8S20643C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20643C2D1Ev,_ZTv0_n28_N8S20643C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4672_N8S20643C2D1Ev,_ZThn3476_N8S20643C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20643C2 = {  "S20643C2", // class name
  bases_S20643C2, 31,
  &(vtc_S20643C2[0]), // expected_vtbl_contents
  &(vtt_S20643C2[0]), // expected_vtt_contents
  ABISELECT(6720,5064), // object size
  NSPAIRA(_ZTI8S20643C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20643C2),101, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20643C2),45, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names1,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20643C13  {
  void *s20643c13f0[7];
  ::S20643C9 s20643c13f1;
  long double s20643c13f2;
  int s20643c13f3;
  __tsi64 s20643c13f4;
  void *s20643c13f5;
  ::S20643C9 s20643c13f6;
  void *s20643c13f7[5];
  int s20643c13f8[8];
  void *s20643c13f9;
  virtual void  v12(); // _ZN9S20643C133v12Ev
  ~S20643C13(); // tgen
  S20643C13(); // tgen
};
//SIG(-1 S20643C13) C1{ v1 Fp[7] FC2{ VBC3{ BC4{ m Fi} v3 v4 v5 FC4[3] FC4[2] Fp Fs FC4} VBC4 v2 FC3 FD Fp[2] FC3} FD Fi FL Fp FC2 Fp[5] Fi[8] Fp}


void  S20643C13 ::v12(){vfunc_called(this, "_ZN9S20643C133v12Ev");}
S20643C13 ::~S20643C13(){ note_dtor("S20643C13", this);} // tgen
S20643C13 ::S20643C13(){ note_ctor("S20643C13", this);} // tgen

static void Test_S20643C13()
{
  extern Class_Descriptor cd_S20643C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(39,104)];
    init_test(&cd_S20643C13, buf);
    S20643C13 *dp, &lv = *(dp=new (buf) S20643C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(608,412), "sizeof(S20643C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20643C13)");
    check_field_offset(lv, s20643c13f0, ABISELECT(8,4), "S20643C13.s20643c13f0");
    check_field_offset(lv, s20643c13f1, ABISELECT(64,32), "S20643C13.s20643c13f1");
    check_field_offset(lv, s20643c13f2, ABISELECT(272,180), "S20643C13.s20643c13f2");
    check_field_offset(lv, s20643c13f3, ABISELECT(288,192), "S20643C13.s20643c13f3");
    check_field_offset(lv, s20643c13f4, ABISELECT(296,196), "S20643C13.s20643c13f4");
    check_field_offset(lv, s20643c13f5, ABISELECT(304,204), "S20643C13.s20643c13f5");
    check_field_offset(lv, s20643c13f6, ABISELECT(320,208), "S20643C13.s20643c13f6");
    check_field_offset(lv, s20643c13f7, ABISELECT(528,356), "S20643C13.s20643c13f7");
    check_field_offset(lv, s20643c13f8, ABISELECT(568,376), "S20643C13.s20643c13f8");
    check_field_offset(lv, s20643c13f9, ABISELECT(600,408), "S20643C13.s20643c13f9");
    test_class_info(&lv, &cd_S20643C13);
    dp->~S20643C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20643C13(Test_S20643C13, "S20643C13", ABISELECT(608,412));

#else // __cplusplus

extern void _ZN9S20643C13C1Ev();
extern void _ZN9S20643C13D1Ev();
Name_Map name_map_S20643C13[] = {
  NSPAIR(_ZN9S20643C13C1Ev),
  NSPAIR(_ZN9S20643C13D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S20643C13[];
extern void _ZN9S20643C133v12Ev();
static  VTBL_ENTRY vtc_S20643C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20643C13[0]),
  (VTBL_ENTRY)&_ZN9S20643C133v12Ev,
};
extern VTBL_ENTRY _ZTI9S20643C13[];
extern  VTBL_ENTRY _ZTV9S20643C13[];
Class_Descriptor cd_S20643C13 = {  "S20643C13", // class name
  0,0,//no base classes
  &(vtc_S20643C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(608,412), // object size
  NSPAIRA(_ZTI9S20643C13),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S20643C13),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  S20643C15_nt  {
};
//SIG(-1 S20643C15_nt) C1{}



//skip512 S20643C15_nt

#else // __cplusplus

Class_Descriptor cd_S20643C15_nt = {  "S20643C15_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20643C14  : virtual S3216C8_nt , S20643C8 , S20643C9 , S20643C5 {
  int s20643c14f0;
  ::S20643C15_nt s20643c14f1;
  void *s20643c14f2[2];
  virtual void  v13(); // _ZN9S20643C143v13Ev
  ~S20643C14(); // tgen
  S20643C14(); // tgen
};
//SIG(-1 S20643C14) C1{ VBC2{ m Fi} BC3{ VBC4{ BC2 v2 v3 v4 FC2[3] FC2[2] Fp Fs FC2} VBC2 BC5{ VBC4 VBC2 v5 FC4 FD Fp[2] FC4} BC6{ BC4 VBC2 FD FL FC4 Fp Fs[3]} v6 Fp[2] Fl Fi FC4[5]} BC5 BC6 v1 Fi FC7{} Fp[2]}


void  S20643C14 ::v13(){vfunc_called(this, "_ZN9S20643C143v13Ev");}
S20643C14 ::~S20643C14(){ note_dtor("S20643C14", this);} // tgen
S20643C14 ::S20643C14(){ note_ctor("S20643C14", this);} // tgen

static void Test_S20643C14()
{
  extern Class_Descriptor cd_S20643C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(59,178)];
    init_test(&cd_S20643C14, buf);
    S20643C14 *dp, &lv = *(dp=new (buf) S20643C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(928,708), "sizeof(S20643C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20643C14)");
    /*is_ambiguous_... S20643C14::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(864,664), "S20643C14");
    /*is_ambiguous_... S20643C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C8*), ABISELECT(864,664), "S20643C14");
    /*is_ambiguous_... S20643C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C9*)(S20643C8*), ABISELECT(864,664), "S20643C14");
    /*is_ambiguous_... S20643C5::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*)(S20643C8*), ABISELECT(864,664), "S20643C14");
    /*is_ambiguous_... S20643C14::S20643C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C9*), ABISELECT(864,664), "S20643C14");
    /*is_ambiguous_... S20643C14::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*), ABISELECT(864,664), "S20643C14");
    /*is_ambiguous_... S20643C14::S20643C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*), ABISELECT(880,672), "S20643C14");
    /*is_ambiguous_... S20643C8::S20643C6 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C8*), ABISELECT(872,668), "S20643C14");
    check_base_class_offset(lv, (S20643C6*)(S20643C9*)(S20643C8*), ABISELECT(872,668), "S20643C14");
    /*is_ambiguous_... S20643C14::S20643C9 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C9*), ABISELECT(872,668), "S20643C14");
    check_base_class_offset(lv, (S20643C9*)(S20643C8*), 0, "S20643C14");
    check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*)(S20643C8*), ABISELECT(152,108), "S20643C14");
    check_base_class_offset(lv, (S20643C6*)(S20643C5*)(S20643C8*), ABISELECT(144,104), "S20643C14");
    check_base_class_offset(lv, (S20643C5*)(S20643C8*), ABISELECT(144,104), "S20643C14");
    check_base_class_offset(lv, (S20643C8*), 0, "S20643C14");
    /*is_ambiguous_... S20643C14::S20643C9 */ AMB_check_base_class_offset(lv, (S20643C9*), ABISELECT(560,432), "S20643C14");
    /*is_ambiguous_... S20643C14::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*), ABISELECT(712,540), "S20643C14");
    /*is_ambiguous_... S20643C14::S20643C5 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C5*), ABISELECT(704,536), "S20643C14");
    /*is_ambiguous_... S20643C14::S20643C5 */ AMB_check_base_class_offset(lv, (S20643C5*), ABISELECT(704,536), "S20643C14");
    check_field_offset(lv, s20643c14f0, ABISELECT(840,648), "S20643C14.s20643c14f0");
    check_field_offset(lv, s20643c14f1, ABISELECT(844,652), "S20643C14.s20643c14f1");
    check_field_offset(lv, s20643c14f2, ABISELECT(848,656), "S20643C14.s20643c14f2");
    test_class_info(&lv, &cd_S20643C14);
    dp->~S20643C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20643C14(Test_S20643C14, "S20643C14", ABISELECT(928,708));

#else // __cplusplus

extern void _ZN9S20643C14C1Ev();
extern void _ZN9S20643C14D1Ev();
Name_Map name_map_S20643C14[] = {
  NSPAIR(_ZN9S20643C14C1Ev),
  NSPAIR(_ZN9S20643C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C9;
extern VTBL_ENTRY _ZTI8S20643C9[];
extern  VTBL_ENTRY _ZTV8S20643C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
extern Class_Descriptor cd_S20643C8;
extern VTBL_ENTRY _ZTI8S20643C8[];
extern  VTBL_ENTRY _ZTV8S20643C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C8[];
extern Class_Descriptor cd_S20643C9;
extern VTBL_ENTRY _ZTI8S20643C9[];
extern  VTBL_ENTRY _ZTV8S20643C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
static Base_Class bases_S20643C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(864,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
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(880,672), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C6,    ABISELECT(872,668), //bcp->offset
    24, //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
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20643C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(152,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20643C6,    ABISELECT(144,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20643C5,    ABISELECT(144,104), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20643C8,    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_S20643C9,    ABISELECT(560,432), //bcp->offset
    13, //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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(712,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
    10, //immediately_derived
  0, 0},
  {&cd_S20643C6,    ABISELECT(704,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
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20643C5,    ABISELECT(704,536), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20643C14[];
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
extern void _ZN9S20643C143v13Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY vtc_S20643C14[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI9S20643C14[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
  (VTBL_ENTRY)&_ZN9S20643C143v13Ev,
  ABISELECT(720,560),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI9S20643C14[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  ABISELECT(304,232),
  ABISELECT(312,236),
  ABISELECT(-560,-432),
  (VTBL_ENTRY)&(_ZTI9S20643C14[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  ABISELECT(160,128),
  ABISELECT(-704,-536),
  (VTBL_ENTRY)&(_ZTI9S20643C14[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI9S20643C14[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern VTBL_ENTRY _ZTV9S20643C14[];
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C8__9S20643C14[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C98S20643C8__9S20643C14[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C98S20643C8__9S20643C14[] = {
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C8__9S20643C14[] = {
  ABISELECT(720,560),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C8__9S20643C14[] = {
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__8S20643C8__9S20643C14[] = {
  ABISELECT(720,560),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C9__A1__9S20643C14[] = {
  ABISELECT(304,232),
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C9__A1__9S20643C14[] = {
  0,
  0,
  0,
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__A1__9S20643C14[] = {
  ABISELECT(160,128),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
static  VTT_ENTRY vtt_S20643C14[] = {
  {&(_ZTV9S20643C14[4]),  4,32},
  {&(_tg__ZTV8S20643C8__9S20643C14[4]),  4,6},
  {&(_tg__ZTV8S20643C98S20643C8__9S20643C14[4]),  4,5},
  {&(_tg__ZTV8S20643C6__8S20643C98S20643C8__9S20643C14[5]),  5,8},
  {&(_tg__ZTV8S20643C58S20643C8__9S20643C14[3]),  3,6},
  {&(_tg__ZTV8S20643C6__8S20643C8__9S20643C14[5]),  5,8},
  {&(_tg__ZTV8S20643C5__8S20643C8__9S20643C14[3]),  3,6},
  {&(_tg__ZTV8S20643C9__A1__9S20643C14[4]),  4,5},
  {&(_tg__ZTV8S20643C6__8S20643C9__A1__9S20643C14[5]),  5,8},
  {&(_tg__ZTV8S20643C5__A1__9S20643C14[3]),  3,6},
  {&(_ZTV9S20643C14[29]),  29,32},
  {&(_ZTV9S20643C14[10]),  10,32},
  {&(_ZTV9S20643C14[17]),  17,32},
  {&(_ZTV9S20643C14[21]),  21,32},
};
extern VTBL_ENTRY _ZTI9S20643C14[];
extern  VTBL_ENTRY _ZTV9S20643C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20643C14[];
Class_Descriptor cd_S20643C14 = {  "S20643C14", // class name
  bases_S20643C14, 12,
  &(vtc_S20643C14[0]), // expected_vtbl_contents
  &(vtt_S20643C14[0]), // expected_vtt_contents
  ABISELECT(928,708), // object size
  NSPAIRA(_ZTI9S20643C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20643C14),32, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20643C14),14, //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  S20643C12  : S20643C13 , S20643C5 , S20643C14 {
  virtual  ~S20643C12(); // _ZN9S20643C12D2Ev
  S20643C12(); // tgen
};
//SIG(-1 S20643C12) C1{ BC2{ v1 Fp[7] FC3{ VBC4{ BC5{ m Fi} v2 v3 v4 FC5[3] FC5[2] Fp Fs FC5} VBC5 v5 FC4 FD Fp[2] FC4} FD Fi FL Fp FC3 Fp[5] Fi[8] Fp} BC6{ BC4 VBC5 FD FL FC4 Fp Fs[3]} BC7{ VBC5 BC8{ VBC4 VBC5 BC3 BC6 v6 Fp[2] Fl Fi FC4[5]} BC3 BC6 v7 Fi FC9{} Fp[2]} vd}


 S20643C12 ::~S20643C12(){ note_dtor("S20643C12", this);}
S20643C12 ::S20643C12(){ note_ctor("S20643C12", this);} // tgen

static void Test_S20643C12()
{
  extern Class_Descriptor cd_S20643C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(106,309)];
    init_test(&cd_S20643C12, buf);
    S20643C12 *dp, &lv = *(dp=new (buf) S20643C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1680,1232), "sizeof(S20643C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20643C12)");
    check_base_class_offset(lv, (S20643C13*), 0, "S20643C12");
    /*is_ambiguous_... S20643C12::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*), ABISELECT(616,416), "S20643C12");
    /*is_ambiguous_... S20643C12::S20643C5 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C5*), ABISELECT(608,412), "S20643C12");
    /*is_ambiguous_... S20643C12::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*), ABISELECT(1616,1188), "S20643C12");
    /*is_ambiguous_... S20643C14::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C14*), ABISELECT(1616,1188), "S20643C12");
    /*is_ambiguous_... S20643C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C8*)(S20643C14*), ABISELECT(1616,1188), "S20643C12");
    /*is_ambiguous_... S20643C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C9*)(S20643C8*)(S20643C14*), ABISELECT(1616,1188), "S20643C12");
    /*is_ambiguous_... S20643C5::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*)(S20643C8*)(S20643C14*), ABISELECT(1616,1188), "S20643C12");
    /*is_ambiguous_... S20643C14::S20643C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C9*)(S20643C14*), ABISELECT(1616,1188), "S20643C12");
    /*is_ambiguous_... S20643C14::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*)(S20643C14*), ABISELECT(1616,1188), "S20643C12");
    /*is_ambiguous_... S20643C12::S20643C5 */ AMB_check_base_class_offset(lv, (S20643C5*), ABISELECT(608,412), "S20643C12");
    /*is_ambiguous_... S20643C12::S20643C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*), ABISELECT(1632,1196), "S20643C12");
    /*is_ambiguous_... S20643C8::S20643C6 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C8*)(S20643C14*), ABISELECT(1624,1192), "S20643C12");
    check_base_class_offset(lv, (S20643C6*)(S20643C9*)(S20643C8*)(S20643C14*), ABISELECT(1624,1192), "S20643C12");
    /*is_ambiguous_... S20643C14::S20643C9 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C9*)(S20643C14*), ABISELECT(1624,1192), "S20643C12");
    check_base_class_offset(lv, (S20643C9*)(S20643C8*)(S20643C14*), ABISELECT(752,524), "S20643C12");
    check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*)(S20643C8*)(S20643C14*), ABISELECT(904,632), "S20643C12");
    check_base_class_offset(lv, (S20643C6*)(S20643C5*)(S20643C8*)(S20643C14*), ABISELECT(896,628), "S20643C12");
    check_base_class_offset(lv, (S20643C5*)(S20643C8*)(S20643C14*), ABISELECT(896,628), "S20643C12");
    check_base_class_offset(lv, (S20643C8*)(S20643C14*), ABISELECT(752,524), "S20643C12");
    /*is_ambiguous_... S20643C14::S20643C9 */ AMB_check_base_class_offset(lv, (S20643C9*)(S20643C14*), ABISELECT(1312,956), "S20643C12");
    /*is_ambiguous_... S20643C14::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*)(S20643C14*), ABISELECT(1464,1064), "S20643C12");
    /*is_ambiguous_... S20643C14::S20643C5 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C5*)(S20643C14*), ABISELECT(1456,1060), "S20643C12");
    /*is_ambiguous_... S20643C14::S20643C5 */ AMB_check_base_class_offset(lv, (S20643C5*)(S20643C14*), ABISELECT(1456,1060), "S20643C12");
    check_base_class_offset(lv, (S20643C14*), ABISELECT(752,524), "S20643C12");
    test_class_info(&lv, &cd_S20643C12);
    dp->~S20643C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20643C12(Test_S20643C12, "S20643C12", ABISELECT(1680,1232));

#else // __cplusplus

extern void _ZN9S20643C12C1Ev();
extern void _ZN9S20643C12D2Ev();
Name_Map name_map_S20643C12[] = {
  NSPAIR(_ZN9S20643C12C1Ev),
  NSPAIR(_ZN9S20643C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20643C13;
extern VTBL_ENTRY _ZTI9S20643C13[];
extern  VTBL_ENTRY _ZTV9S20643C13[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C9;
extern VTBL_ENTRY _ZTI8S20643C9[];
extern  VTBL_ENTRY _ZTV8S20643C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
extern Class_Descriptor cd_S20643C8;
extern VTBL_ENTRY _ZTI8S20643C8[];
extern  VTBL_ENTRY _ZTV8S20643C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C8[];
extern Class_Descriptor cd_S20643C9;
extern VTBL_ENTRY _ZTI8S20643C9[];
extern  VTBL_ENTRY _ZTV8S20643C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
extern Class_Descriptor cd_S20643C14;
extern VTBL_ENTRY _ZTI9S20643C14[];
extern  VTBL_ENTRY _ZTV9S20643C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20643C14[];
static Base_Class bases_S20643C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20643C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3216C8_nt,    ABISELECT(616,416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C6,    ABISELECT(608,412), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3216C8_nt,    ABISELECT(1616,1188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C5,    ABISELECT(608,412), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(1632,1196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20643C6,    ABISELECT(1624,1192), //bcp->offset
    37, //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
    7, //immediately_derived
  0, 1},
  {&cd_S20643C9,    ABISELECT(752,524), //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
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(904,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
    9, //immediately_derived
  0, 0},
  {&cd_S20643C6,    ABISELECT(896,628), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20643C5,    ABISELECT(896,628), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20643C8,    ABISELECT(752,524), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20643C9,    ABISELECT(1312,956), //bcp->offset
    26, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1464,1064), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C6,    ABISELECT(1456,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20643C5,    ABISELECT(1456,1060), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20643C14,    ABISELECT(752,524), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20643C12[];
extern void _ZN9S20643C133v12Ev();
extern void _ZN9S20643C12D1Ev();
extern void _ZN9S20643C12D0Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
extern void _ZN9S20643C143v13Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY vtc_S20643C12[] = {
  ABISELECT(1624,1192),
  ABISELECT(1616,1188),
  0,
  (VTBL_ENTRY)&(_ZTI9S20643C12[0]),
  (VTBL_ENTRY)&_ZN9S20643C133v12Ev,
  (VTBL_ENTRY)&_ZN9S20643C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20643C12D0Ev,
  ABISELECT(1008,776),
  ABISELECT(-608,-412),
  (VTBL_ENTRY)&(_ZTI9S20643C12[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  ABISELECT(864,664),
  ABISELECT(872,668),
  ABISELECT(-752,-524),
  (VTBL_ENTRY)&(_ZTI9S20643C12[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
  (VTBL_ENTRY)&_ZN9S20643C143v13Ev,
  ABISELECT(720,560),
  ABISELECT(-896,-628),
  (VTBL_ENTRY)&(_ZTI9S20643C12[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  ABISELECT(304,232),
  ABISELECT(312,236),
  ABISELECT(-1312,-956),
  (VTBL_ENTRY)&(_ZTI9S20643C12[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  ABISELECT(160,128),
  ABISELECT(-1456,-1060),
  (VTBL_ENTRY)&(_ZTI9S20643C12[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  0,
  0,
  0,
  ABISELECT(-1624,-1192),
  (VTBL_ENTRY)&(_ZTI9S20643C12[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern VTBL_ENTRY _ZTV9S20643C12[];
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__9S20643C12[] = {
  ABISELECT(1008,776),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
extern void _ZN9S20643C143v13Ev();
static  VTBL_ENTRY _tg__ZTV9S20643C14__9S20643C12[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI9S20643C14[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
  (VTBL_ENTRY)&_ZN9S20643C143v13Ev,
};
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C89S20643C14__9S20643C12[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C98S20643C89S20643C14__9S20643C12[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C98S20643C89S20643C14__9S20643C12[] = {
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C89S20643C14__A1__9S20643C12[] = {
  ABISELECT(720,560),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C89S20643C14__9S20643C12[] = {
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__8S20643C89S20643C14__9S20643C12[] = {
  ABISELECT(720,560),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C99S20643C14__A1__9S20643C12[] = {
  ABISELECT(304,232),
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C99S20643C14__A1__9S20643C12[] = {
  0,
  0,
  0,
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C59S20643C14__A2__9S20643C12[] = {
  ABISELECT(160,128),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__9S20643C14__9S20643C12[] = {
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI9S20643C14[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C8__9S20643C14__9S20643C12[] = {
  ABISELECT(720,560),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI9S20643C14[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C9__A1__9S20643C14__9S20643C12[] = {
  ABISELECT(304,232),
  ABISELECT(312,236),
  ABISELECT(-560,-432),
  (VTBL_ENTRY)&(_ZTI9S20643C14[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__A1__9S20643C14__9S20643C12[] = {
  ABISELECT(160,128),
  ABISELECT(-704,-536),
  (VTBL_ENTRY)&(_ZTI9S20643C14[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
static  VTT_ENTRY vtt_S20643C12[] = {
  {&(_ZTV9S20643C12[4]),  4,45},
  {&(_tg__ZTV8S20643C5__9S20643C12[3]),  3,6},
  {&(_tg__ZTV9S20643C14__9S20643C12[4]),  4,7},
  {&(_tg__ZTV8S20643C89S20643C14__9S20643C12[4]),  4,6},
  {&(_tg__ZTV8S20643C98S20643C89S20643C14__9S20643C12[4]),  4,5},
  {&(_tg__ZTV8S20643C6__8S20643C98S20643C89S20643C14__9S20643C12[5]),  5,8},
  {&(_tg__ZTV8S20643C58S20643C89S20643C14__A1__9S20643C12[3]),  3,6},
  {&(_tg__ZTV8S20643C6__8S20643C89S20643C14__9S20643C12[5]),  5,8},
  {&(_tg__ZTV8S20643C5__8S20643C89S20643C14__9S20643C12[3]),  3,6},
  {&(_tg__ZTV8S20643C99S20643C14__A1__9S20643C12[4]),  4,5},
  {&(_tg__ZTV8S20643C6__8S20643C99S20643C14__A1__9S20643C12[5]),  5,8},
  {&(_tg__ZTV8S20643C59S20643C14__A2__9S20643C12[3]),  3,6},
  {&(_tg__ZTV8S20643C6__9S20643C14__9S20643C12[5]),  5,8},
  {&(_tg__ZTV8S20643C58S20643C8__9S20643C14__9S20643C12[3]),  3,6},
  {&(_tg__ZTV8S20643C9__A1__9S20643C14__9S20643C12[4]),  4,5},
  {&(_tg__ZTV8S20643C5__A1__9S20643C14__9S20643C12[3]),  3,6},
  {&(_ZTV9S20643C12[10]),  10,45},
  {&(_ZTV9S20643C12[17]),  17,45},
  {&(_ZTV9S20643C12[42]),  42,45},
  {&(_ZTV9S20643C12[23]),  23,45},
  {&(_ZTV9S20643C12[30]),  30,45},
  {&(_ZTV9S20643C12[34]),  34,45},
};
extern VTBL_ENTRY _ZTI9S20643C12[];
extern  VTBL_ENTRY _ZTV9S20643C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20643C12[];
Class_Descriptor cd_S20643C12 = {  "S20643C12", // class name
  bases_S20643C12, 17,
  &(vtc_S20643C12[0]), // expected_vtbl_contents
  &(vtt_S20643C12[0]), // expected_vtt_contents
  ABISELECT(1680,1232), // object size
  NSPAIRA(_ZTI9S20643C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20643C12),45, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20643C12),22, //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

union  S20643C19  {
  int s20643c19f0:3;
  int s20643c19f1;
  int s20643c19f2;
  int s20643c19f3;
  long double s20643c19f4[8];
  void *s20643c19f5;
  char s20643c19f6[5];
  long double s20643c19f7;
  char s20643c19f8[4];
  int s20643c19f9;
  void *s20643c19f10;
  char s20643c19f11[4];
  void *s20643c19f12;
  void  mf20643c19(); // _ZN9S20643C1910mf20643c19Ev
};
//SIG(1 S20643C19) U1{ m Fi:3 Fi Fi Fi FD[8] Fp Fc[5] FD Fc[4] Fi Fp Fc[4] Fp}

#endif // __cplusplus
#ifdef __cplusplus

struct  S20643C18  {
  char s20643c18f0[2];
  int s20643c18f1;
  __tsi64 s20643c18f2;
  void *s20643c18f3[7];
  ::S20643C19 s20643c18f4[4];
  ::S20643C11 s20643c18f5;
  void  mf20643c18(); // _ZN9S20643C1810mf20643c18Ev
  virtual  ~S20643C18(); // _ZN9S20643C18D1Ev
  S20643C18(); // tgen
};
//SIG(-1 S20643C18) C1{ vd m Fc[2] Fi FL Fp[7] FU2{ m Fi:3 Fi Fi Fi FD[8] Fp Fc[5] FD Fc[4] Fi Fp Fc[4] Fp}[4] FC3{ VBC4{ m Fi} VBC5{ BC4 v1 v2 v3 FC4[3] FC4[2] Fp Fs FC4} VBC6{ BC5 VBC4 FD FL FC5 Fp Fs[3]} Fp[2] Fi FC6[8] FD[9]}}


void  S20643C18 ::mf20643c18(){}
 S20643C18 ::~S20643C18(){ note_dtor("S20643C18", this);}
S20643C18 ::S20643C18(){ note_ctor("S20643C18", this);} // tgen

static void Test_S20643C18()
{
  extern Class_Descriptor cd_S20643C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(134,411)];
    init_test(&cd_S20643C18, buf);
    S20643C18 *dp, &lv = *(dp=new (buf) S20643C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2128,1640), "sizeof(S20643C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20643C18)");
    check_field_offset(lv, s20643c18f0, ABISELECT(8,4), "S20643C18.s20643c18f0");
    check_field_offset(lv, s20643c18f1, ABISELECT(12,8), "S20643C18.s20643c18f1");
    check_field_offset(lv, s20643c18f2, ABISELECT(16,12), "S20643C18.s20643c18f2");
    check_field_offset(lv, s20643c18f3, ABISELECT(24,20), "S20643C18.s20643c18f3");
    check_field_offset(lv, s20643c18f4, ABISELECT(80,48), "S20643C18.s20643c18f4");
    check_field_offset(lv, s20643c18f5, ABISELECT(592,432), "S20643C18.s20643c18f5");
    test_class_info(&lv, &cd_S20643C18);
    dp->~S20643C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20643C18(Test_S20643C18, "S20643C18", ABISELECT(2128,1640));

#else // __cplusplus

extern void _ZN9S20643C18C1Ev();
extern void _ZN9S20643C18D1Ev();
Name_Map name_map_S20643C18[] = {
  NSPAIR(_ZN9S20643C18C1Ev),
  NSPAIR(_ZN9S20643C18D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S20643C18[];
extern void _ZN9S20643C18D1Ev();
extern void _ZN9S20643C18D0Ev();
static  VTBL_ENTRY vtc_S20643C18[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20643C18[0]),
  (VTBL_ENTRY)&_ZN9S20643C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20643C18D0Ev,
};
extern VTBL_ENTRY _ZTI9S20643C18[];
extern  VTBL_ENTRY _ZTV9S20643C18[];
Class_Descriptor cd_S20643C18 = {  "S20643C18", // class name
  0,0,//no base classes
  &(vtc_S20643C18[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(2128,1640), // object size
  NSPAIRA(_ZTI9S20643C18),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S20643C18),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  S20643C17  : S20643C5 , virtual S20643C10 , S20643C8 , S20643C14 {
  int s20643c17f0;
  char s20643c17f1[2];
  int s20643c17f2;
  __tsi64 s20643c17f3;
  ::S20643C15_nt s20643c17f4;
  void *s20643c17f5[8];
  short s20643c17f6[5];
  __tsi64 s20643c17f7;
  ::S20643C18 s20643c17f8;
  virtual  ~S20643C17(); // _ZN9S20643C17D2Ev
  S20643C17(); // tgen
};
//SIG(-1 S20643C17) C1{ BC2{ BC3{ BC4{ m Fi} v1 v2 v3 FC4[3] FC4[2] Fp Fs FC4} VBC4 FD FL FC3 Fp Fs[3]} VBC5{ BC6{ VBC4 VBC3 VBC2 Fp[2] Fi FC2[8] FD[9]} BC4 VBC7{ VBC3 VBC4 BC8{ VBC3 VBC4 v4 FC3 FD Fp[2] FC3} BC2 v5 Fp[2] Fl Fi FC3[5]} BC9{ BC3 vd v6 Fp[7] Fi[2] FL Fi} vd v7 Fi Fp Fi} BC7 BC10{ VBC4 BC7 BC8 BC2 v8 Fi FC11{} Fp[2]} vd Fi Fc[2] Fi FL FC11 Fp[8] Fs[5] FL FC12{ vd m Fc[2] Fi FL Fp[7] FU13{ m Fi:3 Fi Fi Fi FD[8] Fp Fc[5] FD Fc[4] Fi Fp Fc[4] Fp}[4] FC6}}


 S20643C17 ::~S20643C17(){ note_dtor("S20643C17", this);}
S20643C17 ::S20643C17(){ note_ctor("S20643C17", this);} // tgen

static void Test_S20643C17()
{
  extern Class_Descriptor cd_S20643C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(381,1168)];
    init_test(&cd_S20643C17, buf);
    S20643C17 *dp, &lv = *(dp=new (buf) S20643C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(6080,4668), "sizeof(S20643C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20643C17)");
    /*is_ambiguous_... S20643C17::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*), ABISELECT(8,4), "S20643C17");
    /*is_ambiguous_... S20643C17::S20643C5 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C5*), 0, "S20643C17");
    /*is_ambiguous_... S20643C17::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*), ABISELECT(3824,2924), "S20643C17");
    /*is_ambiguous_... S20643C11::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C11*)(S20643C10*), ABISELECT(3824,2924), "S20643C17");
    /*is_ambiguous_... S20643C17::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*), ABISELECT(3824,2924), "S20643C17");
    /*is_ambiguous_... S20643C17::S20643C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C8*), ABISELECT(3824,2924), "S20643C17");
    /*is_ambiguous_... S20643C17::S20643C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C9*)(S20643C8*), ABISELECT(3824,2924), "S20643C17");
    /*is_ambiguous_... S20643C17::S20643C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*)(S20643C8*), ABISELECT(3824,2924), "S20643C17");
    /*is_ambiguous_... S20643C17::S20643C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C8*), ABISELECT(3824,2924), "S20643C17");
    /*is_ambiguous_... S20643C17::S20643C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C9*)(S20643C8*), ABISELECT(3824,2924), "S20643C17");
    /*is_ambiguous_... S20643C17::S20643C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*)(S20643C8*), ABISELECT(3824,2924), "S20643C17");
    /*is_ambiguous_... S20643C14::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C14*), ABISELECT(3824,2924), "S20643C17");
    /*is_ambiguous_... S20643C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C8*)(S20643C14*), ABISELECT(3824,2924), "S20643C17");
    /*is_ambiguous_... S20643C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C9*)(S20643C8*)(S20643C14*), ABISELECT(3824,2924), "S20643C17");
    /*is_ambiguous_... S20643C5::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*)(S20643C8*)(S20643C14*), ABISELECT(3824,2924), "S20643C17");
    /*is_ambiguous_... S20643C14::S20643C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C9*)(S20643C14*), ABISELECT(3824,2924), "S20643C17");
    /*is_ambiguous_... S20643C14::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*)(S20643C14*), ABISELECT(3824,2924), "S20643C17");
    /*is_ambiguous_... S20643C17::S20643C5 */ AMB_check_base_class_offset(lv, (S20643C5*), 0, "S20643C17");
    /*is_ambiguous_... S20643C17::S20643C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*), ABISELECT(5328,4088), "S20643C17");
    /*is_ambiguous_... S20643C11::S20643C6 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C11*)(S20643C10*), ABISELECT(5320,4084), "S20643C17");
    /*is_ambiguous_... S20643C17::S20643C8 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C8*), ABISELECT(5320,4084), "S20643C17");
    /*is_ambiguous_... S20643C17::S20643C8 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C9*)(S20643C8*), ABISELECT(5320,4084), "S20643C17");
    /*is_ambiguous_... S20643C17::S20643C8 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C8*), ABISELECT(5320,4084), "S20643C17");
    /*is_ambiguous_... S20643C17::S20643C8 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C9*)(S20643C8*), ABISELECT(5320,4084), "S20643C17");
    /*is_ambiguous_... S20643C8::S20643C6 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C8*)(S20643C14*), ABISELECT(5320,4084), "S20643C17");
    check_base_class_offset(lv, (S20643C6*)(S20643C9*)(S20643C8*)(S20643C14*), ABISELECT(5320,4084), "S20643C17");
    /*is_ambiguous_... S20643C14::S20643C9 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C9*)(S20643C14*), ABISELECT(5320,4084), "S20643C17");
    /*is_ambiguous_... S20643C17::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*), ABISELECT(5384,4128), "S20643C17");
    /*is_ambiguous_... S20643C17::S20643C5 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C5*), ABISELECT(5376,4124), "S20643C17");
    check_base_class_offset(lv, (S20643C5*)(S20643C11*)(S20643C10*), ABISELECT(5376,4124), "S20643C17");
    check_base_class_offset(lv, (S20643C11*)(S20643C10*), ABISELECT(3840,2928), "S20643C17");
    /*is_ambiguous_... S20643C10::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C10*), ABISELECT(5168,3980), "S20643C17");
    /*is_ambiguous_... S20643C17::S20643C8 */ AMB_check_base_class_offset(lv, (S20643C9*)(S20643C8*), ABISELECT(5520,4236), "S20643C17");
    /*is_ambiguous_... S20643C17::S20643C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*)(S20643C8*), ABISELECT(5672,4344), "S20643C17");
    /*is_ambiguous_... S20643C17::S20643C8 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C5*)(S20643C8*), ABISELECT(5664,4340), "S20643C17");
    /*is_ambiguous_... S20643C17::S20643C8 */ AMB_check_base_class_offset(lv, (S20643C5*)(S20643C8*), ABISELECT(5664,4340), "S20643C17");
    check_base_class_offset(lv, (S20643C8*)(S20643C10*), ABISELECT(5520,4236), "S20643C17");
    check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C7*)(S20643C10*), ABISELECT(5184,3988), "S20643C17");
    check_base_class_offset(lv, (S20643C6*)(S20643C7*)(S20643C10*), ABISELECT(5176,3984), "S20643C17");
    check_base_class_offset(lv, (S20643C7*)(S20643C10*), ABISELECT(5176,3984), "S20643C17");
    check_base_class_offset(lv, (S20643C10*), ABISELECT(3840,2928), "S20643C17");
    /*is_ambiguous_... S20643C17::S20643C8 */ AMB_check_base_class_offset(lv, (S20643C9*)(S20643C8*), ABISELECT(144,112), "S20643C17");
    /*is_ambiguous_... S20643C17::S20643C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*)(S20643C8*), ABISELECT(296,220), "S20643C17");
    /*is_ambiguous_... S20643C17::S20643C8 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C5*)(S20643C8*), ABISELECT(288,216), "S20643C17");
    /*is_ambiguous_... S20643C17::S20643C8 */ AMB_check_base_class_offset(lv, (S20643C5*)(S20643C8*), ABISELECT(288,216), "S20643C17");
    /*is_ambiguous_... S20643C17::S20643C8 */ AMB_check_base_class_offset(lv, (S20643C8*), ABISELECT(144,112), "S20643C17");
    check_base_class_offset(lv, (S20643C9*)(S20643C8*)(S20643C14*), ABISELECT(704,544), "S20643C17");
    check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*)(S20643C8*)(S20643C14*), ABISELECT(856,652), "S20643C17");
    check_base_class_offset(lv, (S20643C6*)(S20643C5*)(S20643C8*)(S20643C14*), ABISELECT(848,648), "S20643C17");
    check_base_class_offset(lv, (S20643C5*)(S20643C8*)(S20643C14*), ABISELECT(848,648), "S20643C17");
    check_base_class_offset(lv, (S20643C8*)(S20643C14*), ABISELECT(704,544), "S20643C17");
    /*is_ambiguous_... S20643C14::S20643C9 */ AMB_check_base_class_offset(lv, (S20643C9*)(S20643C14*), ABISELECT(1264,976), "S20643C17");
    /*is_ambiguous_... S20643C14::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*)(S20643C14*), ABISELECT(1416,1084), "S20643C17");
    /*is_ambiguous_... S20643C14::S20643C5 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C5*)(S20643C14*), ABISELECT(1408,1080), "S20643C17");
    /*is_ambiguous_... S20643C14::S20643C5 */ AMB_check_base_class_offset(lv, (S20643C5*)(S20643C14*), ABISELECT(1408,1080), "S20643C17");
    check_base_class_offset(lv, (S20643C14*), ABISELECT(704,544), "S20643C17");
    check_field_offset(lv, s20643c17f0, ABISELECT(1568,1208), "S20643C17.s20643c17f0");
    check_field_offset(lv, s20643c17f1, ABISELECT(1572,1212), "S20643C17.s20643c17f1");
    check_field_offset(lv, s20643c17f2, ABISELECT(1576,1216), "S20643C17.s20643c17f2");
    check_field_offset(lv, s20643c17f3, ABISELECT(1584,1220), "S20643C17.s20643c17f3");
    check_field_offset(lv, s20643c17f4, ABISELECT(1592,1228), "S20643C17.s20643c17f4");
    check_field_offset(lv, s20643c17f5, ABISELECT(1600,1232), "S20643C17.s20643c17f5");
    check_field_offset(lv, s20643c17f6, ABISELECT(1664,1264), "S20643C17.s20643c17f6");
    check_field_offset(lv, s20643c17f7, ABISELECT(1680,1276), "S20643C17.s20643c17f7");
    check_field_offset(lv, s20643c17f8, ABISELECT(1696,1284), "S20643C17.s20643c17f8");
    test_class_info(&lv, &cd_S20643C17);
    dp->~S20643C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20643C17(Test_S20643C17, "S20643C17", ABISELECT(6080,4668));

#else // __cplusplus

extern void _ZN9S20643C17C1Ev();
extern void _ZN9S20643C17D2Ev();
Name_Map name_map_S20643C17[] = {
  NSPAIR(_ZN9S20643C17C1Ev),
  NSPAIR(_ZN9S20643C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
extern Class_Descriptor cd_S20643C11;
extern VTBL_ENTRY _ZTI9S20643C11[];
extern  VTBL_ENTRY _ZTV9S20643C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20643C11[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C9;
extern VTBL_ENTRY _ZTI8S20643C9[];
extern  VTBL_ENTRY _ZTV8S20643C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
extern Class_Descriptor cd_S20643C8;
extern VTBL_ENTRY _ZTI8S20643C8[];
extern  VTBL_ENTRY _ZTV8S20643C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C7;
extern VTBL_ENTRY _ZTI8S20643C7[];
extern  VTBL_ENTRY _ZTV8S20643C7[];
extern Class_Descriptor cd_S20643C10;
extern VTBL_ENTRY _ZTI9S20643C10[];
extern  VTBL_ENTRY _ZTV9S20643C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20643C10[];
extern Class_Descriptor cd_S20643C9;
extern VTBL_ENTRY _ZTI8S20643C9[];
extern  VTBL_ENTRY _ZTV8S20643C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
extern Class_Descriptor cd_S20643C8;
extern VTBL_ENTRY _ZTI8S20643C8[];
extern  VTBL_ENTRY _ZTV8S20643C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C8[];
extern Class_Descriptor cd_S20643C9;
extern VTBL_ENTRY _ZTI8S20643C9[];
extern  VTBL_ENTRY _ZTV8S20643C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
extern Class_Descriptor cd_S20643C8;
extern VTBL_ENTRY _ZTI8S20643C8[];
extern  VTBL_ENTRY _ZTV8S20643C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C8[];
extern Class_Descriptor cd_S20643C9;
extern VTBL_ENTRY _ZTI8S20643C9[];
extern  VTBL_ENTRY _ZTV8S20643C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
extern Class_Descriptor cd_S20643C14;
extern VTBL_ENTRY _ZTI9S20643C14[];
extern  VTBL_ENTRY _ZTV9S20643C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20643C14[];
static Base_Class bases_S20643C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S20643C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3216C8_nt,    ABISELECT(3824,2924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C5,    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_S3216C8_nt,    ABISELECT(5328,4088), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20643C6,    ABISELECT(5320,4084), //bcp->offset
    71, //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
    9, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(5384,4128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C6,    ABISELECT(5376,4124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20643C5,    ABISELECT(5376,4124), //bcp->offset
    79, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20643C11,    ABISELECT(3840,2928), //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
    8, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(5168,3980), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C9,    ABISELECT(5520,4236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(5672,4344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C6,    ABISELECT(5664,4340), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20643C5,    ABISELECT(5664,4340), //bcp->offset
    99, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20643C8,    ABISELECT(5520,4236), //bcp->offset
    88, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(5184,3988), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C6,    ABISELECT(5176,3984), //bcp->offset
    -1, //bcp->virtual_function_table_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
    18, //immediately_derived
  0, 0},
  {&cd_S20643C7,    ABISELECT(5176,3984), //bcp->offset
    63, //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
    10, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20643C10,    ABISELECT(3840,2928), //bcp->offset
    48, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20643C9,    ABISELECT(144,112), //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
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    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
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20643C6,    ABISELECT(288,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
    15, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20643C5,    ABISELECT(288,216), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20643C8,    ABISELECT(144,112), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20643C9,    ABISELECT(704,544), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(856,652), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20643C6,    ABISELECT(848,648), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20643C5,    ABISELECT(848,648), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20643C8,    ABISELECT(704,544), //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
    21, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20643C9,    ABISELECT(1264,976), //bcp->offset
    37, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1416,1084), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S20643C6,    ABISELECT(1408,1080), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20643C5,    ABISELECT(1408,1080), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20643C14,    ABISELECT(704,544), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20643C17[];
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN9S20643C17D1Ev();
extern void _ZN9S20643C17D0Ev();
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
extern void _ZN9S20643C143v13Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void ABISELECT(_ZTv0_n56_N9S20643C17D1Ev,_ZTv0_n28_N9S20643C17D1Ev)();
extern void ABISELECT(_ZThn3840_N9S20643C17D1Ev,_ZThn2928_N9S20643C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20643C17D0Ev,_ZTv0_n28_N9S20643C17D0Ev)();
extern void ABISELECT(_ZThn3840_N9S20643C17D0Ev,_ZThn2928_N9S20643C17D0Ev)() __attribute__((weak));
extern void _ZN9S20643C102v9Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N9S20643C17D1Ev,_ZTvn1056_n28_N9S20643C17D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N9S20643C17D0Ev,_ZTvn1056_n28_N9S20643C17D0Ev)();
extern void _ZN8S20643C72v5Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY vtc_S20643C17[] = {
  ABISELECT(5520,4236),
  ABISELECT(5376,4124),
  ABISELECT(5320,4084),
  ABISELECT(3840,2928),
  ABISELECT(3824,2924),
  0,
  (VTBL_ENTRY)&(_ZTI9S20643C17[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  (VTBL_ENTRY)&_ZN9S20643C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20643C17D0Ev,
  ABISELECT(3680,2812),
  ABISELECT(5176,3972),
  ABISELECT(-144,-112),
  (VTBL_ENTRY)&(_ZTI9S20643C17[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
  ABISELECT(3536,2708),
  ABISELECT(-288,-216),
  (VTBL_ENTRY)&(_ZTI9S20643C17[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  ABISELECT(3120,2380),
  ABISELECT(4616,3540),
  ABISELECT(-704,-544),
  (VTBL_ENTRY)&(_ZTI9S20643C17[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
  (VTBL_ENTRY)&_ZN9S20643C143v13Ev,
  ABISELECT(2976,2276),
  ABISELECT(-848,-648),
  (VTBL_ENTRY)&(_ZTI9S20643C17[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  ABISELECT(2560,1948),
  ABISELECT(4056,3108),
  ABISELECT(-1264,-976),
  (VTBL_ENTRY)&(_ZTI9S20643C17[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  ABISELECT(2416,1844),
  ABISELECT(-1408,-1080),
  (VTBL_ENTRY)&(_ZTI9S20643C17[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-3840,-2928),
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-16,-4),
  ABISELECT(-3840,-2928),
  (VTBL_ENTRY)&(_ZTI9S20643C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20643C17D1Ev,_ZTv0_n28_N9S20643C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20643C17D0Ev,_ZTv0_n28_N9S20643C17D0Ev),
  (VTBL_ENTRY)&_ZN9S20643C102v9Ev,
  ABISELECT(-5176,-3984),
  (VTBL_ENTRY)&(_ZTI9S20643C17[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S20643C17D1Ev,_ZTvn1056_n28_N9S20643C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S20643C17D0Ev,_ZTvn1056_n28_N9S20643C17D0Ev),
  (VTBL_ENTRY)&_ZN8S20643C72v5Ev,
  0,
  0,
  0,
  ABISELECT(-5320,-4084),
  (VTBL_ENTRY)&(_ZTI9S20643C17[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  0,
  0,
  0,
  ABISELECT(-1552,-1200),
  ABISELECT(-5376,-4124),
  (VTBL_ENTRY)&(_ZTI9S20643C17[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1696,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-5520,-4236),
  (VTBL_ENTRY)&(_ZTI9S20643C17[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
  ABISELECT(-1840,-1416),
  ABISELECT(-5664,-4340),
  (VTBL_ENTRY)&(_ZTI9S20643C17[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern VTBL_ENTRY _ZTV9S20643C17[];
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__A__9S20643C17[] = {
  ABISELECT(3824,2924),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C8__A__9S20643C17[] = {
  ABISELECT(3680,2812),
  ABISELECT(5176,3972),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C98S20643C8__A1__9S20643C17[] = {
  ABISELECT(3680,2812),
  ABISELECT(5176,3972),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C98S20643C8__A1__9S20643C17[] = {
  0,
  0,
  0,
  ABISELECT(-5176,-3972),
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C8__A3__9S20643C17[] = {
  ABISELECT(3536,2708),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C8__A__9S20643C17[] = {
  0,
  0,
  0,
  ABISELECT(-5176,-3972),
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__8S20643C8__A__9S20643C17[] = {
  ABISELECT(3536,2708),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
extern void _ZN9S20643C143v13Ev();
static  VTBL_ENTRY _tg__ZTV9S20643C14__9S20643C17[] = {
  ABISELECT(3120,2380),
  ABISELECT(4616,3540),
  0,
  (VTBL_ENTRY)&(_ZTI9S20643C14[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
  (VTBL_ENTRY)&_ZN9S20643C143v13Ev,
};
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C89S20643C14__A2__9S20643C17[] = {
  ABISELECT(3120,2380),
  ABISELECT(4616,3540),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C98S20643C89S20643C14__A2__9S20643C17[] = {
  ABISELECT(3120,2380),
  ABISELECT(4616,3540),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C98S20643C89S20643C14__A2__9S20643C17[] = {
  0,
  0,
  0,
  ABISELECT(-4616,-3540),
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C89S20643C14__A4__9S20643C17[] = {
  ABISELECT(2976,2276),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C89S20643C14__A2__9S20643C17[] = {
  0,
  0,
  0,
  ABISELECT(-4616,-3540),
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__8S20643C89S20643C14__A2__9S20643C17[] = {
  ABISELECT(2976,2276),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C99S20643C14__A3__9S20643C17[] = {
  ABISELECT(2560,1948),
  ABISELECT(4056,3108),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C99S20643C14__A3__9S20643C17[] = {
  0,
  0,
  0,
  ABISELECT(-4056,-3108),
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C59S20643C14__A5__9S20643C17[] = {
  ABISELECT(2416,1844),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__9S20643C14__9S20643C17[] = {
  0,
  0,
  0,
  ABISELECT(-4616,-3540),
  (VTBL_ENTRY)&(_ZTI9S20643C14[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C8__9S20643C14__9S20643C17[] = {
  ABISELECT(2976,2276),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI9S20643C14[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C9__A1__9S20643C14__9S20643C17[] = {
  ABISELECT(2560,1948),
  ABISELECT(4056,3108),
  ABISELECT(-560,-432),
  (VTBL_ENTRY)&(_ZTI9S20643C14[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__A1__9S20643C14__9S20643C17[] = {
  ABISELECT(2416,1844),
  ABISELECT(-704,-536),
  (VTBL_ENTRY)&(_ZTI9S20643C14[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN9S20643C10D1Ev();
extern void _ZN9S20643C10D0Ev();
extern void _ZN9S20643C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20643C10__9S20643C17[] = {
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20643C10[0]),
  (VTBL_ENTRY)&_ZN9S20643C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20643C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20643C102v9Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20643C119S20643C10__9S20643C17[] = {
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20643C11[0]),
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__9S20643C119S20643C10__9S20643C17[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1156),
  (VTBL_ENTRY)&(_ZTI9S20643C11[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__9S20643C119S20643C10__9S20643C17[] = {
  0,
  0,
  0,
  ABISELECT(-1552,-1200),
  ABISELECT(-1536,-1196),
  (VTBL_ENTRY)&(_ZTI9S20643C11[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__9S20643C10__9S20643C17[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1156),
  (VTBL_ENTRY)&(_ZTI9S20643C10[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__9S20643C10__9S20643C17[] = {
  0,
  0,
  0,
  ABISELECT(-1552,-1200),
  ABISELECT(-1536,-1196),
  (VTBL_ENTRY)&(_ZTI9S20643C10[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C8__9S20643C10__9S20643C17[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1696,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-1680,-1308),
  (VTBL_ENTRY)&(_ZTI9S20643C10[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C8__A1__9S20643C10__9S20643C17[] = {
  ABISELECT(-1840,-1416),
  ABISELECT(-1824,-1412),
  (VTBL_ENTRY)&(_ZTI9S20643C10[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__A1__9S20643C17[] = {
  ABISELECT(-1552,-1200),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C8__9S20643C17[] = {
  ABISELECT(-1696,-1312),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C98S20643C8__9S20643C17[] = {
  ABISELECT(-1696,-1312),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C98S20643C8__9S20643C17[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C8__A2__9S20643C17[] = {
  ABISELECT(-1840,-1416),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C8__9S20643C17[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__8S20643C8__9S20643C17[] = {
  ABISELECT(-1840,-1416),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
static  VTT_ENTRY vtt_S20643C17[] = {
  {&(_ZTV9S20643C17[7]),  7,105},
  {&(_tg__ZTV8S20643C5__A__9S20643C17[3]),  3,6},
  {&(_tg__ZTV8S20643C8__A__9S20643C17[4]),  4,6},
  {&(_tg__ZTV8S20643C98S20643C8__A1__9S20643C17[4]),  4,5},
  {&(_tg__ZTV8S20643C6__8S20643C98S20643C8__A1__9S20643C17[5]),  5,8},
  {&(_tg__ZTV8S20643C58S20643C8__A3__9S20643C17[3]),  3,6},
  {&(_tg__ZTV8S20643C6__8S20643C8__A__9S20643C17[5]),  5,8},
  {&(_tg__ZTV8S20643C5__8S20643C8__A__9S20643C17[3]),  3,6},
  {&(_tg__ZTV9S20643C14__9S20643C17[4]),  4,7},
  {&(_tg__ZTV8S20643C89S20643C14__A2__9S20643C17[4]),  4,6},
  {&(_tg__ZTV8S20643C98S20643C89S20643C14__A2__9S20643C17[4]),  4,5},
  {&(_tg__ZTV8S20643C6__8S20643C98S20643C89S20643C14__A2__9S20643C17[5]),  5,8},
  {&(_tg__ZTV8S20643C58S20643C89S20643C14__A4__9S20643C17[3]),  3,6},
  {&(_tg__ZTV8S20643C6__8S20643C89S20643C14__A2__9S20643C17[5]),  5,8},
  {&(_tg__ZTV8S20643C5__8S20643C89S20643C14__A2__9S20643C17[3]),  3,6},
  {&(_tg__ZTV8S20643C99S20643C14__A3__9S20643C17[4]),  4,5},
  {&(_tg__ZTV8S20643C6__8S20643C99S20643C14__A3__9S20643C17[5]),  5,8},
  {&(_tg__ZTV8S20643C59S20643C14__A5__9S20643C17[3]),  3,6},
  {&(_tg__ZTV8S20643C6__9S20643C14__9S20643C17[5]),  5,8},
  {&(_tg__ZTV8S20643C58S20643C8__9S20643C14__9S20643C17[3]),  3,6},
  {&(_tg__ZTV8S20643C9__A1__9S20643C14__9S20643C17[4]),  4,5},
  {&(_tg__ZTV8S20643C5__A1__9S20643C14__9S20643C17[3]),  3,6},
  {&(_ZTV9S20643C17[60]),  60,105},
  {&(_ZTV9S20643C17[76]),  76,105},
  {&(_ZTV9S20643C17[85]),  85,105},
  {&(_ZTV9S20643C17[97]),  97,105},
  {&(_ZTV9S20643C17[102]),  102,105},
  {&(_ZTV9S20643C17[65]),  65,105},
  {&(_ZTV9S20643C17[16]),  16,105},
  {&(_ZTV9S20643C17[21]),  21,105},
  {&(_ZTV9S20643C17[28]),  28,105},
  {&(_ZTV9S20643C17[34]),  34,105},
  {&(_ZTV9S20643C17[41]),  41,105},
  {&(_ZTV9S20643C17[45]),  45,105},
  {&(_tg__ZTV9S20643C10__9S20643C17[6]),  6,9},
  {&(_tg__ZTV9S20643C119S20643C10__9S20643C17[5]),  5,5},
  {&(_tg__ZTV8S20643C6__9S20643C119S20643C10__9S20643C17[5]),  5,8},
  {&(_tg__ZTV8S20643C5__9S20643C119S20643C10__9S20643C17[6]),  6,9},
  {&(_tg__ZTV8S20643C6__9S20643C10__9S20643C17[5]),  5,8},
  {&(_tg__ZTV8S20643C5__9S20643C10__9S20643C17[6]),  6,9},
  {&(_tg__ZTV8S20643C8__9S20643C10__9S20643C17[9]),  9,11},
  {&(_tg__ZTV8S20643C58S20643C8__A1__9S20643C10__9S20643C17[3]),  3,6},
  {&(_tg__ZTV8S20643C5__A1__9S20643C17[3]),  3,6},
  {&(_tg__ZTV8S20643C8__9S20643C17[4]),  4,6},
  {&(_tg__ZTV8S20643C98S20643C8__9S20643C17[4]),  4,5},
  {&(_tg__ZTV8S20643C6__8S20643C98S20643C8__9S20643C17[5]),  5,8},
  {&(_tg__ZTV8S20643C58S20643C8__A2__9S20643C17[3]),  3,6},
  {&(_tg__ZTV8S20643C6__8S20643C8__9S20643C17[5]),  5,8},
  {&(_tg__ZTV8S20643C5__8S20643C8__9S20643C17[3]),  3,6},
};
extern VTBL_ENTRY _ZTI9S20643C17[];
extern  VTBL_ENTRY _ZTV9S20643C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20643C17[];
static VTBL_ENTRY alt_thunk_names2[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20643C17D0Ev,_ZTv0_n28_N9S20643C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3840_N9S20643C17D0Ev,_ZThn2928_N9S20643C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20643C17D1Ev,_ZTv0_n28_N9S20643C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3840_N9S20643C17D1Ev,_ZThn2928_N9S20643C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20643C17 = {  "S20643C17", // class name
  bases_S20643C17, 35,
  &(vtc_S20643C17[0]), // expected_vtbl_contents
  &(vtt_S20643C17[0]), // expected_vtt_contents
  ABISELECT(6080,4668), // object size
  NSPAIRA(_ZTI9S20643C17),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20643C17),105, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20643C17),49, //virtual table table var
  25, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names2,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20643C16  : virtual S20643C5 , S20643C10 , S20643C17 , S20643C9 {
  char s20643c16f0;
  int s20643c16f1;
  int s20643c16f2;
  int s20643c16f3;
  int s20643c16f4;
  void *s20643c16f5;
  char s20643c16f6[4];
  int s20643c16f7;
  virtual  ~S20643C16(); // _ZN9S20643C16D2Ev
  S20643C16(); // tgen
};
//SIG(-1 S20643C16) C1{ VBC2{ BC3{ BC4{ m Fi} v1 v2 v3 FC4[3] FC4[2] Fp Fs FC4} VBC4 FD FL FC3 Fp Fs[3]} BC5{ BC6{ VBC4 VBC3 VBC2 Fp[2] Fi FC2[8] FD[9]} BC4 VBC7{ VBC3 VBC4 BC8{ VBC3 VBC4 v4 FC3 FD Fp[2] FC3} BC2 v5 Fp[2] Fl Fi FC3[5]} BC9{ BC3 vd v6 Fp[7] Fi[2] FL Fi} vd v7 Fi Fp Fi} BC10{ BC2 VBC5 BC7 BC11{ VBC4 BC7 BC8 BC2 v8 Fi FC12{} Fp[2]} vd Fi Fc[2] Fi FL FC12 Fp[8] Fs[5] FL FC13{ vd m Fc[2] Fi FL Fp[7] FU14{ m Fi:3 Fi Fi Fi FD[8] Fp Fc[5] FD Fc[4] Fi Fp Fc[4] Fp}[4] FC6}} BC8 vd Fc Fi Fi Fi Fi Fp Fc[4] Fi}


 S20643C16 ::~S20643C16(){ note_dtor("S20643C16", this);}
S20643C16 ::S20643C16(){ note_ctor("S20643C16", this);} // tgen

static void Test_S20643C16()
{
  extern Class_Descriptor cd_S20643C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(485,1491)];
    init_test(&cd_S20643C16, buf);
    S20643C16 *dp, &lv = *(dp=new (buf) S20643C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(7744,5960), "sizeof(S20643C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20643C16)");
    /*is_ambiguous_... S20643C16::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*), ABISELECT(5512,4220), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C5 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C5*), ABISELECT(5504,4216), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*), ABISELECT(5640,4328), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C10 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C11*)(S20643C10*), ABISELECT(5640,4328), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C8*), ABISELECT(5640,4328), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C9*)(S20643C8*), ABISELECT(5640,4328), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*)(S20643C8*), ABISELECT(5640,4328), "S20643C16");
    /*is_ambiguous_... S20643C17::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*)(S20643C17*), ABISELECT(5640,4328), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C10 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C11*)(S20643C10*), ABISELECT(5640,4328), "S20643C16");
    /*is_ambiguous_... S20643C17::S20643C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C8*)(S20643C17*), ABISELECT(5640,4328), "S20643C16");
    /*is_ambiguous_... S20643C17::S20643C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C9*)(S20643C8*)(S20643C17*), ABISELECT(5640,4328), "S20643C16");
    /*is_ambiguous_... S20643C17::S20643C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*)(S20643C8*)(S20643C17*), ABISELECT(5640,4328), "S20643C16");
    /*is_ambiguous_... S20643C14::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C14*)(S20643C17*), ABISELECT(5640,4328), "S20643C16");
    /*is_ambiguous_... S20643C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C8*)(S20643C14*)(S20643C17*), ABISELECT(5640,4328), "S20643C16");
    /*is_ambiguous_... S20643C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C9*)(S20643C8*)(S20643C14*)(S20643C17*), ABISELECT(5640,4328), "S20643C16");
    /*is_ambiguous_... S20643C5::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*)(S20643C8*)(S20643C14*)(S20643C17*), ABISELECT(5640,4328), "S20643C16");
    /*is_ambiguous_... S20643C14::S20643C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C9*)(S20643C14*)(S20643C17*), ABISELECT(5640,4328), "S20643C16");
    /*is_ambiguous_... S20643C14::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*)(S20643C14*)(S20643C17*), ABISELECT(5640,4328), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C9*), ABISELECT(5640,4328), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C5 */ AMB_check_base_class_offset(lv, (S20643C5*), ABISELECT(5504,4216), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C10 */ AMB_check_base_class_offset(lv, (S20643C5*)(S20643C11*)(S20643C10*), ABISELECT(5504,4216), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C10 */ AMB_check_base_class_offset(lv, (S20643C5*)(S20643C11*)(S20643C10*), ABISELECT(5504,4216), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*), ABISELECT(5656,4336), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C10 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C11*)(S20643C10*), ABISELECT(5648,4332), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C8 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C8*), ABISELECT(5648,4332), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C8 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C9*)(S20643C8*), ABISELECT(5648,4332), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C10 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C11*)(S20643C10*), ABISELECT(5648,4332), "S20643C16");
    /*is_ambiguous_... S20643C17::S20643C8 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C8*)(S20643C17*), ABISELECT(5648,4332), "S20643C16");
    /*is_ambiguous_... S20643C17::S20643C8 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C9*)(S20643C8*)(S20643C17*), ABISELECT(5648,4332), "S20643C16");
    /*is_ambiguous_... S20643C8::S20643C6 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C8*)(S20643C14*)(S20643C17*), ABISELECT(5648,4332), "S20643C16");
    check_base_class_offset(lv, (S20643C6*)(S20643C9*)(S20643C8*)(S20643C14*)(S20643C17*), ABISELECT(5648,4332), "S20643C16");
    /*is_ambiguous_... S20643C14::S20643C9 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C9*)(S20643C14*)(S20643C17*), ABISELECT(5648,4332), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C9 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C9*), ABISELECT(5648,4332), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C10 */ AMB_check_base_class_offset(lv, (S20643C11*)(S20643C10*), 0, "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C10 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C10*), ABISELECT(1328,1052), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C8 */ AMB_check_base_class_offset(lv, (S20643C9*)(S20643C8*), ABISELECT(5696,4372), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*)(S20643C8*), ABISELECT(5848,4480), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C8 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C5*)(S20643C8*), ABISELECT(5840,4476), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C8 */ AMB_check_base_class_offset(lv, (S20643C5*)(S20643C8*), ABISELECT(5840,4476), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C10 */ AMB_check_base_class_offset(lv, (S20643C8*)(S20643C10*), ABISELECT(5696,4372), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C10 */ AMB_check_base_class_offset(lv, (S20643C8*)(S20643C10*), ABISELECT(5696,4372), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C10 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C7*)(S20643C10*), ABISELECT(1344,1060), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C10 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C7*)(S20643C10*), ABISELECT(1336,1056), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C10 */ AMB_check_base_class_offset(lv, (S20643C7*)(S20643C10*), ABISELECT(1336,1056), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C10 */ AMB_check_base_class_offset(lv, (S20643C10*), 0, "S20643C16");
    /*is_ambiguous_... S20643C17::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*)(S20643C17*), ABISELECT(1496,1160), "S20643C16");
    /*is_ambiguous_... S20643C17::S20643C5 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C5*)(S20643C17*), ABISELECT(1488,1156), "S20643C16");
    /*is_ambiguous_... S20643C17::S20643C5 */ AMB_check_base_class_offset(lv, (S20643C5*)(S20643C17*), ABISELECT(1488,1156), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C10 */ AMB_check_base_class_offset(lv, (S20643C11*)(S20643C10*), ABISELECT(6256,4804), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C10 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C10*), ABISELECT(7584,5856), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C10 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C7*)(S20643C10*), ABISELECT(7600,5864), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C10 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C7*)(S20643C10*), ABISELECT(7592,5860), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C10 */ AMB_check_base_class_offset(lv, (S20643C7*)(S20643C10*), ABISELECT(7592,5860), "S20643C16");
    check_base_class_offset(lv, (S20643C10*)(S20643C17*), ABISELECT(6256,4804), "S20643C16");
    /*is_ambiguous_... S20643C17::S20643C8 */ AMB_check_base_class_offset(lv, (S20643C9*)(S20643C8*)(S20643C17*), ABISELECT(1632,1268), "S20643C16");
    /*is_ambiguous_... S20643C17::S20643C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*)(S20643C8*)(S20643C17*), ABISELECT(1784,1376), "S20643C16");
    /*is_ambiguous_... S20643C17::S20643C8 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C5*)(S20643C8*)(S20643C17*), ABISELECT(1776,1372), "S20643C16");
    /*is_ambiguous_... S20643C17::S20643C8 */ AMB_check_base_class_offset(lv, (S20643C5*)(S20643C8*)(S20643C17*), ABISELECT(1776,1372), "S20643C16");
    /*is_ambiguous_... S20643C17::S20643C8 */ AMB_check_base_class_offset(lv, (S20643C8*)(S20643C17*), ABISELECT(1632,1268), "S20643C16");
    check_base_class_offset(lv, (S20643C9*)(S20643C8*)(S20643C14*)(S20643C17*), ABISELECT(2192,1700), "S20643C16");
    check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*)(S20643C8*)(S20643C14*)(S20643C17*), ABISELECT(2344,1808), "S20643C16");
    check_base_class_offset(lv, (S20643C6*)(S20643C5*)(S20643C8*)(S20643C14*)(S20643C17*), ABISELECT(2336,1804), "S20643C16");
    check_base_class_offset(lv, (S20643C5*)(S20643C8*)(S20643C14*)(S20643C17*), ABISELECT(2336,1804), "S20643C16");
    check_base_class_offset(lv, (S20643C8*)(S20643C14*)(S20643C17*), ABISELECT(2192,1700), "S20643C16");
    /*is_ambiguous_... S20643C14::S20643C9 */ AMB_check_base_class_offset(lv, (S20643C9*)(S20643C14*)(S20643C17*), ABISELECT(2752,2132), "S20643C16");
    /*is_ambiguous_... S20643C14::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*)(S20643C14*)(S20643C17*), ABISELECT(2904,2240), "S20643C16");
    /*is_ambiguous_... S20643C14::S20643C5 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C5*)(S20643C14*)(S20643C17*), ABISELECT(2896,2236), "S20643C16");
    /*is_ambiguous_... S20643C14::S20643C5 */ AMB_check_base_class_offset(lv, (S20643C5*)(S20643C14*)(S20643C17*), ABISELECT(2896,2236), "S20643C16");
    check_base_class_offset(lv, (S20643C14*)(S20643C17*), ABISELECT(2192,1700), "S20643C16");
    check_base_class_offset(lv, (S20643C17*), ABISELECT(1488,1156), "S20643C16");
    /*is_ambiguous_... S20643C16::S20643C9 */ AMB_check_base_class_offset(lv, (S20643C9*), ABISELECT(5312,4080), "S20643C16");
    check_field_offset(lv, s20643c16f0, ABISELECT(5456,4184), "S20643C16.s20643c16f0");
    check_field_offset(lv, s20643c16f1, ABISELECT(5460,4188), "S20643C16.s20643c16f1");
    check_field_offset(lv, s20643c16f2, ABISELECT(5464,4192), "S20643C16.s20643c16f2");
    check_field_offset(lv, s20643c16f3, ABISELECT(5468,4196), "S20643C16.s20643c16f3");
    check_field_offset(lv, s20643c16f4, ABISELECT(5472,4200), "S20643C16.s20643c16f4");
    check_field_offset(lv, s20643c16f5, ABISELECT(5480,4204), "S20643C16.s20643c16f5");
    check_field_offset(lv, s20643c16f6, ABISELECT(5488,4208), "S20643C16.s20643c16f6");
    check_field_offset(lv, s20643c16f7, ABISELECT(5492,4212), "S20643C16.s20643c16f7");
    test_class_info(&lv, &cd_S20643C16);
    dp->~S20643C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20643C16(Test_S20643C16, "S20643C16", ABISELECT(7744,5960));

#else // __cplusplus

extern void _ZN9S20643C16C1Ev();
extern void _ZN9S20643C16D2Ev();
Name_Map name_map_S20643C16[] = {
  NSPAIR(_ZN9S20643C16C1Ev),
  NSPAIR(_ZN9S20643C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C11;
extern VTBL_ENTRY _ZTI9S20643C11[];
extern  VTBL_ENTRY _ZTV9S20643C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20643C11[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C9;
extern VTBL_ENTRY _ZTI8S20643C9[];
extern  VTBL_ENTRY _ZTV8S20643C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
extern Class_Descriptor cd_S20643C8;
extern VTBL_ENTRY _ZTI8S20643C8[];
extern  VTBL_ENTRY _ZTV8S20643C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C7;
extern VTBL_ENTRY _ZTI8S20643C7[];
extern  VTBL_ENTRY _ZTV8S20643C7[];
extern Class_Descriptor cd_S20643C10;
extern VTBL_ENTRY _ZTI9S20643C10[];
extern  VTBL_ENTRY _ZTV9S20643C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20643C10[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
extern Class_Descriptor cd_S20643C11;
extern VTBL_ENTRY _ZTI9S20643C11[];
extern  VTBL_ENTRY _ZTV9S20643C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20643C11[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C7;
extern VTBL_ENTRY _ZTI8S20643C7[];
extern  VTBL_ENTRY _ZTV8S20643C7[];
extern Class_Descriptor cd_S20643C10;
extern VTBL_ENTRY _ZTI9S20643C10[];
extern  VTBL_ENTRY _ZTV9S20643C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20643C10[];
extern Class_Descriptor cd_S20643C9;
extern VTBL_ENTRY _ZTI8S20643C9[];
extern  VTBL_ENTRY _ZTV8S20643C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
extern Class_Descriptor cd_S20643C8;
extern VTBL_ENTRY _ZTI8S20643C8[];
extern  VTBL_ENTRY _ZTV8S20643C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C8[];
extern Class_Descriptor cd_S20643C9;
extern VTBL_ENTRY _ZTI8S20643C9[];
extern  VTBL_ENTRY _ZTV8S20643C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
extern Class_Descriptor cd_S20643C8;
extern VTBL_ENTRY _ZTI8S20643C8[];
extern  VTBL_ENTRY _ZTV8S20643C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C8[];
extern Class_Descriptor cd_S20643C9;
extern VTBL_ENTRY _ZTI8S20643C9[];
extern  VTBL_ENTRY _ZTV8S20643C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
extern Class_Descriptor cd_S20643C14;
extern VTBL_ENTRY _ZTI9S20643C14[];
extern  VTBL_ENTRY _ZTV9S20643C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20643C14[];
extern Class_Descriptor cd_S20643C17;
extern VTBL_ENTRY _ZTI9S20643C17[];
extern  VTBL_ENTRY _ZTV9S20643C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20643C17[];
extern Class_Descriptor cd_S20643C9;
extern VTBL_ENTRY _ZTI8S20643C9[];
extern  VTBL_ENTRY _ZTV8S20643C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C9[];
static Base_Class bases_S20643C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(5512,4220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20643C6,    ABISELECT(5504,4216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3216C8_nt,    ABISELECT(5640,4328), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C5,    ABISELECT(5504,4216), //bcp->offset
    71, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(5656,4336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20643C6,    ABISELECT(5648,4332), //bcp->offset
    80, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20643C11,    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
    12, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1328,1052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C9,    ABISELECT(5696,4372), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(5848,4480), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C6,    ABISELECT(5840,4476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20643C5,    ABISELECT(5840,4476), //bcp->offset
    99, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20643C8,    ABISELECT(5696,4372), //bcp->offset
    88, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1344,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20643C6,    ABISELECT(1336,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
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20643C7,    ABISELECT(1336,1056), //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
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20643C10,    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},
  {&cd_S3216C8_nt,    ABISELECT(1496,1160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20643C6,    ABISELECT(1488,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
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20643C5,    ABISELECT(1488,1156), //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
    17, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20643C11,    ABISELECT(6256,4804), //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
    8, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(7584,5856), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3216C8_nt,    ABISELECT(7600,5864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C6,    ABISELECT(7592,5860), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20643C7,    ABISELECT(7592,5860), //bcp->offset
    120, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20643C10,    ABISELECT(6256,4804), //bcp->offset
    105, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S20643C9,    ABISELECT(1632,1268), //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
    18, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1784,1376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C6,    ABISELECT(1776,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
    19, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20643C5,    ABISELECT(1776,1372), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20643C8,    ABISELECT(1632,1268), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20643C9,    ABISELECT(2192,1700), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(2344,1808), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C6,    ABISELECT(2336,1804), //bcp->offset
    -1, //bcp->virtual_function_table_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
    34, //immediately_derived
  0, 0},
  {&cd_S20643C5,    ABISELECT(2336,1804), //bcp->offset
    49, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20643C8,    ABISELECT(2192,1700), //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
    25, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20643C9,    ABISELECT(2752,2132), //bcp->offset
    55, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(2904,2240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S20643C6,    ABISELECT(2896,2236), //bcp->offset
    -1, //bcp->virtual_function_table_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
    39, //immediately_derived
  0, 0},
  {&cd_S20643C5,    ABISELECT(2896,2236), //bcp->offset
    60, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20643C14,    ABISELECT(2192,1700), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20643C17,    ABISELECT(1488,1156), //bcp->offset
    18, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20643C9,    ABISELECT(5312,4080), //bcp->offset
    66, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20643C16[];
extern void _ZN9S20643C16D1Ev();
extern void _ZN9S20643C16D0Ev();
extern void _ZN9S20643C102v9Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void ABISELECT(_ZThn1336_N9S20643C16D1Ev,_ZThn1056_N9S20643C16D1Ev)();
extern void ABISELECT(_ZThn1336_N9S20643C16D0Ev,_ZThn1056_N9S20643C16D0Ev)();
extern void _ZN8S20643C72v5Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void ABISELECT(_ZThn1488_N9S20643C16D1Ev,_ZThn1156_N9S20643C16D1Ev)();
extern void ABISELECT(_ZThn1488_N9S20643C16D0Ev,_ZThn1156_N9S20643C16D0Ev)();
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
extern void _ZN9S20643C143v13Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void ABISELECT(_ZTv0_n56_N9S20643C16D1Ev,_ZTv0_n28_N9S20643C16D1Ev)();
extern void ABISELECT(_ZThn6256_N9S20643C16D1Ev,_ZThn4804_N9S20643C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20643C16D0Ev,_ZTv0_n28_N9S20643C16D0Ev)();
extern void ABISELECT(_ZThn6256_N9S20643C16D0Ev,_ZThn4804_N9S20643C16D0Ev)() __attribute__((weak));
extern void _ZN9S20643C102v9Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N9S20643C16D1Ev,_ZTvn1056_n28_N9S20643C16D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N9S20643C16D0Ev,_ZTvn1056_n28_N9S20643C16D0Ev)();
extern void _ZN8S20643C72v5Ev();
static  VTBL_ENTRY vtc_S20643C16[] = {
  ABISELECT(6256,4804),
  ABISELECT(5696,4372),
  ABISELECT(5504,4216),
  ABISELECT(5648,4332),
  ABISELECT(5640,4328),
  0,
  (VTBL_ENTRY)&(_ZTI9S20643C16[0]),
  (VTBL_ENTRY)&_ZN9S20643C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20643C16D0Ev,
  (VTBL_ENTRY)&_ZN9S20643C102v9Ev,
  ABISELECT(-1336,-1056),
  (VTBL_ENTRY)&(_ZTI9S20643C16[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1336_N9S20643C16D1Ev,_ZThn1056_N9S20643C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1336_N9S20643C16D0Ev,_ZThn1056_N9S20643C16D0Ev),
  (VTBL_ENTRY)&_ZN8S20643C72v5Ev,
  ABISELECT(4208,3216),
  ABISELECT(4016,3060),
  ABISELECT(4160,3176),
  ABISELECT(4768,3648),
  ABISELECT(4152,3172),
  ABISELECT(-1488,-1156),
  (VTBL_ENTRY)&(_ZTI9S20643C16[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1488_N9S20643C16D1Ev,_ZThn1156_N9S20643C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1488_N9S20643C16D0Ev,_ZThn1156_N9S20643C16D0Ev),
  ABISELECT(4008,3060),
  ABISELECT(4016,3064),
  ABISELECT(-1632,-1268),
  (VTBL_ENTRY)&(_ZTI9S20643C16[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
  ABISELECT(3864,2956),
  ABISELECT(-1776,-1372),
  (VTBL_ENTRY)&(_ZTI9S20643C16[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  ABISELECT(3448,2628),
  ABISELECT(3456,2632),
  ABISELECT(-2192,-1700),
  (VTBL_ENTRY)&(_ZTI9S20643C16[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
  (VTBL_ENTRY)&_ZN9S20643C143v13Ev,
  ABISELECT(3304,2524),
  ABISELECT(-2336,-1804),
  (VTBL_ENTRY)&(_ZTI9S20643C16[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  ABISELECT(2888,2196),
  ABISELECT(2896,2200),
  ABISELECT(-2752,-2132),
  (VTBL_ENTRY)&(_ZTI9S20643C16[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  ABISELECT(2744,2092),
  ABISELECT(-2896,-2236),
  (VTBL_ENTRY)&(_ZTI9S20643C16[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  ABISELECT(328,248),
  ABISELECT(336,252),
  ABISELECT(-5312,-4080),
  (VTBL_ENTRY)&(_ZTI9S20643C16[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  0,
  0,
  0,
  ABISELECT(136,112),
  ABISELECT(-5504,-4216),
  (VTBL_ENTRY)&(_ZTI9S20643C16[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  0,
  0,
  0,
  ABISELECT(-5648,-4332),
  (VTBL_ENTRY)&(_ZTI9S20643C16[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-56,-44),
  ABISELECT(-48,-40),
  ABISELECT(-5696,-4372),
  (VTBL_ENTRY)&(_ZTI9S20643C16[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
  ABISELECT(-200,-148),
  ABISELECT(-5840,-4476),
  (VTBL_ENTRY)&(_ZTI9S20643C16[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-6256,-4804),
  ABISELECT(-560,-432),
  ABISELECT(-752,-588),
  ABISELECT(-608,-472),
  ABISELECT(-616,-476),
  ABISELECT(-6256,-4804),
  (VTBL_ENTRY)&(_ZTI9S20643C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20643C16D1Ev,_ZTv0_n28_N9S20643C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20643C16D0Ev,_ZTv0_n28_N9S20643C16D0Ev),
  (VTBL_ENTRY)&_ZN9S20643C102v9Ev,
  ABISELECT(-7592,-5860),
  (VTBL_ENTRY)&(_ZTI9S20643C16[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S20643C16D1Ev,_ZTvn1056_n28_N9S20643C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S20643C16D0Ev,_ZTvn1056_n28_N9S20643C16D0Ev),
  (VTBL_ENTRY)&_ZN8S20643C72v5Ev,
};
extern VTBL_ENTRY _ZTV9S20643C16[];
extern void _ZN9S20643C10D1Ev();
extern void _ZN9S20643C10D0Ev();
extern void _ZN9S20643C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20643C10__A__9S20643C16[] = {
  ABISELECT(5696,4372),
  ABISELECT(5504,4216),
  ABISELECT(5648,4332),
  ABISELECT(5640,4328),
  0,
  (VTBL_ENTRY)&(_ZTI9S20643C10[0]),
  (VTBL_ENTRY)&_ZN9S20643C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20643C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20643C102v9Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20643C119S20643C10__9S20643C16[] = {
  ABISELECT(5504,4216),
  ABISELECT(5648,4332),
  ABISELECT(5640,4328),
  0,
  (VTBL_ENTRY)&(_ZTI9S20643C11[0]),
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__9S20643C119S20643C10__9S20643C16[] = {
  0,
  0,
  0,
  ABISELECT(-5648,-4332),
  (VTBL_ENTRY)&(_ZTI9S20643C11[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__9S20643C119S20643C10__9S20643C16[] = {
  0,
  0,
  0,
  ABISELECT(136,112),
  ABISELECT(-5504,-4216),
  (VTBL_ENTRY)&(_ZTI9S20643C11[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__9S20643C10__A__9S20643C16[] = {
  0,
  0,
  0,
  ABISELECT(-5648,-4332),
  (VTBL_ENTRY)&(_ZTI9S20643C10[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__9S20643C10__A__9S20643C16[] = {
  0,
  0,
  0,
  ABISELECT(136,112),
  ABISELECT(-5504,-4216),
  (VTBL_ENTRY)&(_ZTI9S20643C10[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C8__9S20643C10__A__9S20643C16[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-56,-44),
  ABISELECT(-48,-40),
  ABISELECT(-5696,-4372),
  (VTBL_ENTRY)&(_ZTI9S20643C10[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C8__A1__9S20643C10__A__9S20643C16[] = {
  ABISELECT(-200,-148),
  ABISELECT(-5840,-4476),
  (VTBL_ENTRY)&(_ZTI9S20643C10[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN9S20643C17D1Ev();
extern void _ZN9S20643C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20643C17__9S20643C16[] = {
  ABISELECT(4208,3216),
  ABISELECT(4016,3060),
  ABISELECT(4160,3176),
  ABISELECT(4768,3648),
  ABISELECT(4152,3172),
  0,
  (VTBL_ENTRY)&(_ZTI9S20643C17[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  (VTBL_ENTRY)&_ZN9S20643C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20643C17D0Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C59S20643C17__A2__9S20643C16[] = {
  ABISELECT(4152,3172),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C89S20643C17__A1__9S20643C16[] = {
  ABISELECT(4008,3060),
  ABISELECT(4016,3064),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C98S20643C89S20643C17__A1__9S20643C16[] = {
  ABISELECT(4008,3060),
  ABISELECT(4016,3064),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C98S20643C89S20643C17__A1__9S20643C16[] = {
  0,
  0,
  0,
  ABISELECT(-4016,-3064),
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C89S20643C17__A3__9S20643C16[] = {
  ABISELECT(3864,2956),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C89S20643C17__A1__9S20643C16[] = {
  0,
  0,
  0,
  ABISELECT(-4016,-3064),
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__8S20643C89S20643C17__A1__9S20643C16[] = {
  ABISELECT(3864,2956),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
extern void _ZN9S20643C143v13Ev();
static  VTBL_ENTRY _tg__ZTV9S20643C149S20643C17__9S20643C16[] = {
  ABISELECT(3448,2628),
  ABISELECT(3456,2632),
  0,
  (VTBL_ENTRY)&(_ZTI9S20643C14[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
  (VTBL_ENTRY)&_ZN9S20643C143v13Ev,
};
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C89S20643C149S20643C17__A2__9S20643C16[] = {
  ABISELECT(3448,2628),
  ABISELECT(3456,2632),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C98S20643C89S20643C149S20643C17__A2__9S20643C16[] = {
  ABISELECT(3448,2628),
  ABISELECT(3456,2632),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C98S20643C89S20643C149S20643C17__A2__9S20643C16[] = {
  0,
  0,
  0,
  ABISELECT(-3456,-2632),
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C89S20643C149S20643C17__A4__9S20643C16[] = {
  ABISELECT(3304,2524),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C89S20643C149S20643C17__A2__9S20643C16[] = {
  0,
  0,
  0,
  ABISELECT(-3456,-2632),
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__8S20643C89S20643C149S20643C17__A2__9S20643C16[] = {
  ABISELECT(3304,2524),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C99S20643C149S20643C17__A3__9S20643C16[] = {
  ABISELECT(2888,2196),
  ABISELECT(2896,2200),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C99S20643C149S20643C17__A3__9S20643C16[] = {
  0,
  0,
  0,
  ABISELECT(-2896,-2200),
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C59S20643C149S20643C17__A5__9S20643C16[] = {
  ABISELECT(2744,2092),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__9S20643C149S20643C17__9S20643C16[] = {
  0,
  0,
  0,
  ABISELECT(-3456,-2632),
  (VTBL_ENTRY)&(_ZTI9S20643C14[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C8__9S20643C149S20643C17__9S20643C16[] = {
  ABISELECT(3304,2524),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI9S20643C14[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C9__A1__9S20643C149S20643C17__9S20643C16[] = {
  ABISELECT(2888,2196),
  ABISELECT(2896,2200),
  ABISELECT(-560,-432),
  (VTBL_ENTRY)&(_ZTI9S20643C14[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__A1__9S20643C149S20643C17__9S20643C16[] = {
  ABISELECT(2744,2092),
  ABISELECT(-704,-536),
  (VTBL_ENTRY)&(_ZTI9S20643C14[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S20643C17D1Ev,_ZTv0_n28_N9S20643C17D1Ev)();
extern void ABISELECT(_ZThn4768_N9S20643C17D1Ev,_ZThn3648_N9S20643C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20643C17D0Ev,_ZTv0_n28_N9S20643C17D0Ev)();
extern void ABISELECT(_ZThn4768_N9S20643C17D0Ev,_ZThn3648_N9S20643C17D0Ev)() __attribute__((weak));
extern void _ZN9S20643C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20643C10__9S20643C17__9S20643C16[] = {
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-4768,-3648),
  ABISELECT(-560,-432),
  ABISELECT(-752,-588),
  ABISELECT(-608,-472),
  ABISELECT(-616,-476),
  ABISELECT(-4768,-3648),
  (VTBL_ENTRY)&(_ZTI9S20643C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20643C17D1Ev,_ZTv0_n28_N9S20643C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20643C17D0Ev,_ZTv0_n28_N9S20643C17D0Ev),
  (VTBL_ENTRY)&_ZN9S20643C102v9Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__A1__9S20643C17__9S20643C16[] = {
  0,
  0,
  0,
  ABISELECT(-4160,-3176),
  (VTBL_ENTRY)&(_ZTI9S20643C17[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__A1__9S20643C17__9S20643C16[] = {
  0,
  0,
  0,
  ABISELECT(136,112),
  ABISELECT(-4016,-3060),
  (VTBL_ENTRY)&(_ZTI9S20643C17[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C8__9S20643C17__9S20643C16[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-56,-44),
  ABISELECT(-48,-40),
  ABISELECT(-4208,-3216),
  (VTBL_ENTRY)&(_ZTI9S20643C17[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C8__A2__9S20643C17__9S20643C16[] = {
  ABISELECT(-200,-148),
  ABISELECT(-4352,-3320),
  (VTBL_ENTRY)&(_ZTI9S20643C17[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N9S20643C17D1Ev,_ZTvn1056_n28_N9S20643C17D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N9S20643C17D0Ev,_ZTvn1056_n28_N9S20643C17D0Ev)();
extern void _ZN8S20643C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C79S20643C10__9S20643C17__9S20643C16[] = {
  ABISELECT(-6104,-4704),
  (VTBL_ENTRY)&(_ZTI9S20643C17[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S20643C17D1Ev,_ZTvn1056_n28_N9S20643C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S20643C17D0Ev,_ZTvn1056_n28_N9S20643C17D0Ev),
  (VTBL_ENTRY)&_ZN8S20643C72v5Ev,
};
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C8__A__9S20643C17__9S20643C16[] = {
  ABISELECT(4008,3060),
  ABISELECT(4016,3064),
  ABISELECT(-144,-112),
  (VTBL_ENTRY)&(_ZTI9S20643C17[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C8__A3__9S20643C17__9S20643C16[] = {
  ABISELECT(3864,2956),
  ABISELECT(-288,-216),
  (VTBL_ENTRY)&(_ZTI9S20643C17[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
extern void _ZN9S20643C143v13Ev();
static  VTBL_ENTRY _tg__ZTV9S20643C14__9S20643C17__9S20643C16[] = {
  ABISELECT(3448,2628),
  ABISELECT(3456,2632),
  ABISELECT(-704,-544),
  (VTBL_ENTRY)&(_ZTI9S20643C17[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
  (VTBL_ENTRY)&_ZN9S20643C143v13Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C89S20643C14__A4__9S20643C17__9S20643C16[] = {
  ABISELECT(3304,2524),
  ABISELECT(-848,-648),
  (VTBL_ENTRY)&(_ZTI9S20643C17[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C99S20643C14__A3__9S20643C17__9S20643C16[] = {
  ABISELECT(2888,2196),
  ABISELECT(2896,2200),
  ABISELECT(-1264,-976),
  (VTBL_ENTRY)&(_ZTI9S20643C17[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C59S20643C14__A5__9S20643C17__9S20643C16[] = {
  ABISELECT(2744,2092),
  ABISELECT(-1408,-1080),
  (VTBL_ENTRY)&(_ZTI9S20643C17[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C9__A4__9S20643C16[] = {
  ABISELECT(328,248),
  ABISELECT(336,252),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C9__A4__9S20643C16[] = {
  0,
  0,
  0,
  ABISELECT(-336,-252),
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__9S20643C16[] = {
  ABISELECT(136,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C8__9S20643C16[] = {
  ABISELECT(-56,-44),
  ABISELECT(-48,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C98S20643C8__9S20643C16[] = {
  ABISELECT(-56,-44),
  ABISELECT(-48,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C98S20643C8__9S20643C16[] = {
  0,
  0,
  0,
  ABISELECT(48,40),
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C8__A1__9S20643C16[] = {
  ABISELECT(-200,-148),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C8__9S20643C16[] = {
  0,
  0,
  0,
  ABISELECT(48,40),
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__8S20643C8__9S20643C16[] = {
  ABISELECT(-200,-148),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN9S20643C10D1Ev();
extern void _ZN9S20643C10D0Ev();
extern void _ZN9S20643C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20643C10__A1__9S20643C16[] = {
  ABISELECT(-560,-432),
  ABISELECT(-752,-588),
  ABISELECT(-608,-472),
  ABISELECT(-616,-476),
  0,
  (VTBL_ENTRY)&(_ZTI9S20643C10[0]),
  (VTBL_ENTRY)&_ZN9S20643C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20643C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20643C102v9Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20643C119S20643C10__A1__9S20643C16[] = {
  ABISELECT(-752,-588),
  ABISELECT(-608,-472),
  ABISELECT(-616,-476),
  0,
  (VTBL_ENTRY)&(_ZTI9S20643C11[0]),
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__9S20643C119S20643C10__A1__9S20643C16[] = {
  0,
  0,
  0,
  ABISELECT(608,472),
  (VTBL_ENTRY)&(_ZTI9S20643C11[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__9S20643C119S20643C10__A1__9S20643C16[] = {
  0,
  0,
  0,
  ABISELECT(136,112),
  ABISELECT(752,588),
  (VTBL_ENTRY)&(_ZTI9S20643C11[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__9S20643C10__A1__9S20643C16[] = {
  0,
  0,
  0,
  ABISELECT(608,472),
  (VTBL_ENTRY)&(_ZTI9S20643C10[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__9S20643C10__A1__9S20643C16[] = {
  0,
  0,
  0,
  ABISELECT(136,112),
  ABISELECT(752,588),
  (VTBL_ENTRY)&(_ZTI9S20643C10[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C8__9S20643C10__A1__9S20643C16[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-56,-44),
  ABISELECT(-48,-40),
  ABISELECT(560,432),
  (VTBL_ENTRY)&(_ZTI9S20643C10[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C8__A1__9S20643C10__A1__9S20643C16[] = {
  ABISELECT(-200,-148),
  ABISELECT(416,328),
  (VTBL_ENTRY)&(_ZTI9S20643C10[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
static  VTT_ENTRY vtt_S20643C16[] = {
  {&(_ZTV9S20643C16[7]),  7,128},
  {&(_tg__ZTV9S20643C10__A__9S20643C16[6]),  6,9},
  {&(_tg__ZTV9S20643C119S20643C10__9S20643C16[5]),  5,5},
  {&(_tg__ZTV8S20643C6__9S20643C119S20643C10__9S20643C16[5]),  5,8},
  {&(_tg__ZTV8S20643C5__9S20643C119S20643C10__9S20643C16[6]),  6,9},
  {&(_tg__ZTV8S20643C6__9S20643C10__A__9S20643C16[5]),  5,8},
  {&(_tg__ZTV8S20643C5__9S20643C10__A__9S20643C16[6]),  6,9},
  {&(_tg__ZTV8S20643C8__9S20643C10__A__9S20643C16[9]),  9,11},
  {&(_tg__ZTV8S20643C58S20643C8__A1__9S20643C10__A__9S20643C16[3]),  3,6},
  {&(_tg__ZTV9S20643C17__9S20643C16[7]),  7,12},
  {&(_tg__ZTV8S20643C59S20643C17__A2__9S20643C16[3]),  3,6},
  {&(_tg__ZTV8S20643C89S20643C17__A1__9S20643C16[4]),  4,6},
  {&(_tg__ZTV8S20643C98S20643C89S20643C17__A1__9S20643C16[4]),  4,5},
  {&(_tg__ZTV8S20643C6__8S20643C98S20643C89S20643C17__A1__9S20643C16[5]),  5,8},
  {&(_tg__ZTV8S20643C58S20643C89S20643C17__A3__9S20643C16[3]),  3,6},
  {&(_tg__ZTV8S20643C6__8S20643C89S20643C17__A1__9S20643C16[5]),  5,8},
  {&(_tg__ZTV8S20643C5__8S20643C89S20643C17__A1__9S20643C16[3]),  3,6},
  {&(_tg__ZTV9S20643C149S20643C17__9S20643C16[4]),  4,7},
  {&(_tg__ZTV8S20643C89S20643C149S20643C17__A2__9S20643C16[4]),  4,6},
  {&(_tg__ZTV8S20643C98S20643C89S20643C149S20643C17__A2__9S20643C16[4]),  4,5},
  {&(_tg__ZTV8S20643C6__8S20643C98S20643C89S20643C149S20643C17__A2__9S20643C16[5]),  5,8},
  {&(_tg__ZTV8S20643C58S20643C89S20643C149S20643C17__A4__9S20643C16[3]),  3,6},
  {&(_tg__ZTV8S20643C6__8S20643C89S20643C149S20643C17__A2__9S20643C16[5]),  5,8},
  {&(_tg__ZTV8S20643C5__8S20643C89S20643C149S20643C17__A2__9S20643C16[3]),  3,6},
  {&(_tg__ZTV8S20643C99S20643C149S20643C17__A3__9S20643C16[4]),  4,5},
  {&(_tg__ZTV8S20643C6__8S20643C99S20643C149S20643C17__A3__9S20643C16[5]),  5,8},
  {&(_tg__ZTV8S20643C59S20643C149S20643C17__A5__9S20643C16[3]),  3,6},
  {&(_tg__ZTV8S20643C6__9S20643C149S20643C17__9S20643C16[5]),  5,8},
  {&(_tg__ZTV8S20643C58S20643C8__9S20643C149S20643C17__9S20643C16[3]),  3,6},
  {&(_tg__ZTV8S20643C9__A1__9S20643C149S20643C17__9S20643C16[4]),  4,5},
  {&(_tg__ZTV8S20643C5__A1__9S20643C149S20643C17__9S20643C16[3]),  3,6},
  {&(_tg__ZTV9S20643C10__9S20643C17__9S20643C16[12]),  12,15},
  {&(_tg__ZTV8S20643C6__A1__9S20643C17__9S20643C16[5]),  5,8},
  {&(_tg__ZTV8S20643C5__A1__9S20643C17__9S20643C16[6]),  6,9},
  {&(_tg__ZTV8S20643C8__9S20643C17__9S20643C16[9]),  9,11},
  {&(_tg__ZTV8S20643C58S20643C8__A2__9S20643C17__9S20643C16[3]),  3,6},
  {&(_tg__ZTV8S20643C79S20643C10__9S20643C17__9S20643C16[2]),  2,8},
  {&(_tg__ZTV8S20643C8__A__9S20643C17__9S20643C16[4]),  4,6},
  {&(_tg__ZTV8S20643C58S20643C8__A3__9S20643C17__9S20643C16[3]),  3,6},
  {&(_tg__ZTV9S20643C14__9S20643C17__9S20643C16[4]),  4,7},
  {&(_tg__ZTV8S20643C58S20643C89S20643C14__A4__9S20643C17__9S20643C16[3]),  3,6},
  {&(_tg__ZTV8S20643C99S20643C14__A3__9S20643C17__9S20643C16[4]),  4,5},
  {&(_tg__ZTV8S20643C59S20643C14__A5__9S20643C17__9S20643C16[3]),  3,6},
  {&(_tg__ZTV8S20643C9__A4__9S20643C16[4]),  4,5},
  {&(_tg__ZTV8S20643C6__8S20643C9__A4__9S20643C16[5]),  5,8},
  {&(_ZTV9S20643C16[77]),  77,128},
  {&(_ZTV9S20643C16[85]),  85,128},
  {&(_ZTV9S20643C16[97]),  97,128},
  {&(_ZTV9S20643C16[102]),  102,128},
  {&(_ZTV9S20643C16[25]),  25,128},
  {&(_ZTV9S20643C16[117]),  117,128},
  {&(_ZTV9S20643C16[122]),  122,128},
  {&(_ZTV9S20643C16[34]),  34,128},
  {&(_ZTV9S20643C16[39]),  39,128},
  {&(_ZTV9S20643C16[46]),  46,128},
  {&(_ZTV9S20643C16[52]),  52,128},
  {&(_ZTV9S20643C16[59]),  59,128},
  {&(_ZTV9S20643C16[63]),  63,128},
  {&(_ZTV9S20643C16[70]),  70,128},
  {&(_tg__ZTV8S20643C5__9S20643C16[3]),  3,6},
  {&(_tg__ZTV8S20643C8__9S20643C16[4]),  4,6},
  {&(_tg__ZTV8S20643C98S20643C8__9S20643C16[4]),  4,5},
  {&(_tg__ZTV8S20643C6__8S20643C98S20643C8__9S20643C16[5]),  5,8},
  {&(_tg__ZTV8S20643C58S20643C8__A1__9S20643C16[3]),  3,6},
  {&(_tg__ZTV8S20643C6__8S20643C8__9S20643C16[5]),  5,8},
  {&(_tg__ZTV8S20643C5__8S20643C8__9S20643C16[3]),  3,6},
  {&(_tg__ZTV9S20643C10__A1__9S20643C16[6]),  6,9},
  {&(_tg__ZTV9S20643C119S20643C10__A1__9S20643C16[5]),  5,5},
  {&(_tg__ZTV8S20643C6__9S20643C119S20643C10__A1__9S20643C16[5]),  5,8},
  {&(_tg__ZTV8S20643C5__9S20643C119S20643C10__A1__9S20643C16[6]),  6,9},
  {&(_tg__ZTV8S20643C6__9S20643C10__A1__9S20643C16[5]),  5,8},
  {&(_tg__ZTV8S20643C5__9S20643C10__A1__9S20643C16[6]),  6,9},
  {&(_tg__ZTV8S20643C8__9S20643C10__A1__9S20643C16[9]),  9,11},
  {&(_tg__ZTV8S20643C58S20643C8__A1__9S20643C10__A1__9S20643C16[3]),  3,6},
};
extern VTBL_ENTRY _ZTI9S20643C16[];
extern  VTBL_ENTRY _ZTV9S20643C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20643C16[];
static VTBL_ENTRY alt_thunk_names3[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20643C17D0Ev,_ZTv0_n28_N9S20643C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4768_N9S20643C17D0Ev,_ZThn3648_N9S20643C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20643C17D1Ev,_ZTv0_n28_N9S20643C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4768_N9S20643C17D1Ev,_ZThn3648_N9S20643C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20643C16D0Ev,_ZTv0_n28_N9S20643C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6256_N9S20643C16D0Ev,_ZThn4804_N9S20643C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20643C16D1Ev,_ZTv0_n28_N9S20643C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6256_N9S20643C16D1Ev,_ZThn4804_N9S20643C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20643C16 = {  "S20643C16", // class name
  bases_S20643C16, 43,
  &(vtc_S20643C16[0]), // expected_vtbl_contents
  &(vtt_S20643C16[0]), // expected_vtt_contents
  ABISELECT(7744,5960), // object size
  NSPAIRA(_ZTI9S20643C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20643C16),128, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20643C16),74, //virtual table table var
  31, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names3,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20643C1  : virtual S20643C2 , S20643C12 {
  ::S20643C4 s20643c1f0;
  int s20643c1f1;
  ::S20643C16 s20643c1f2;
  int s20643c1f3;
  short s20643c1f4;
  void *s20643c1f5;
  void *s20643c1f6;
  ::S3216C8_nt s20643c1f7[8];
  virtual void  v1(); // _ZN8S20643C12v1Ev
  ~S20643C1(); // tgen
  S20643C1(); // tgen
};
//SIG(1 S20643C1) C1{ VBC2{ VBC3{ m Fi} BC4{ VBC5{ BC6{ BC3 v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC3 FD FL FC6 Fp Fs[3]} BC7{ BC6 vd v5 Fp[7] Fi[2] FL Fi} VBC6 BC8{ VBC6 VBC3 BC9{ VBC6 VBC3 v6 FC6 FD Fp[2] FC6} BC5 v7 Fp[2] Fl Fi FC6[5]} BC9 v8 Fi[2] FD FC9[10] Fi} BC5 VBC10{ BC11{ VBC3 VBC6 VBC5 Fp[2] Fi FC5[8] FD[9]} BC3 VBC8 BC7 vd v9 Fi Fp Fi} BC11 vd v10 v11 Fi[2] Fp Fc:3 Fi[3]} BC12{ BC13{ v12 Fp[7] FC9 FD Fi FL Fp FC9 Fp[5] Fi[8] Fp} BC5 BC14{ VBC3 BC8 BC9 BC5 v13 Fi FC15{} Fp[2]} vd} v1 FC4 Fi FC16{ VBC5 BC10 BC17{ BC5 VBC10 BC8 BC14 vd Fi Fc[2] Fi FL FC15 Fp[8] Fs[5] FL FC18{ vd m Fc[2] Fi FL Fp[7] FU19{ m Fi:3 Fi Fi Fi FD[8] Fp Fc[5] FD Fc[4] Fi Fp Fc[4] Fp}[4] FC11}} BC9 vd Fc Fi Fi Fi Fi Fp Fc[4] Fi} Fi Fs Fp Fp FC3[8]}


void  S20643C1 ::v1(){vfunc_called(this, "_ZN8S20643C12v1Ev");}
S20643C1 ::~S20643C1(){ note_dtor("S20643C1", this);} // tgen
S20643C1 ::S20643C1(){ note_ctor("S20643C1", this);} // tgen

static void Test_S20643C1()
{
  extern Class_Descriptor cd_S20643C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1208,3638)];
    init_test(&cd_S20643C1, buf);
    S20643C1 *dp, &lv = *(dp=new (buf) S20643C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(19312,14548), "sizeof(S20643C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20643C1)");
    /*is_ambiguous_... S20643C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C2*), ABISELECT(17056,12804), "S20643C1");
    /*is_ambiguous_... S20643C1::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*), ABISELECT(17056,12804), "S20643C1");
    /*is_ambiguous_... S20643C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C8*)(S20643C4*)(S20643C2*), ABISELECT(17056,12804), "S20643C1");
    /*is_ambiguous_... S20643C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C9*)(S20643C8*)(S20643C4*)(S20643C2*), ABISELECT(17056,12804), "S20643C1");
    /*is_ambiguous_... S20643C5::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*)(S20643C8*)(S20643C4*)(S20643C2*), ABISELECT(17056,12804), "S20643C1");
    /*is_ambiguous_... S20643C4::S20643C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C9*)(S20643C4*)(S20643C2*), ABISELECT(17056,12804), "S20643C1");
    /*is_ambiguous_... S20643C2::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*)(S20643C2*), ABISELECT(17056,12804), "S20643C1");
    /*is_ambiguous_... S20643C11::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C11*)(S20643C10*), ABISELECT(17056,12804), "S20643C1");
    /*is_ambiguous_... S20643C1::S20643C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C8*), ABISELECT(17056,12804), "S20643C1");
    /*is_ambiguous_... S20643C1::S20643C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C9*)(S20643C8*), ABISELECT(17056,12804), "S20643C1");
    /*is_ambiguous_... S20643C1::S20643C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*)(S20643C8*), ABISELECT(17056,12804), "S20643C1");
    /*is_ambiguous_... S20643C2::S20643C11 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C11*)(S20643C2*), ABISELECT(17056,12804), "S20643C1");
    /*is_ambiguous_... S20643C12::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*)(S20643C12*), ABISELECT(17056,12804), "S20643C1");
    /*is_ambiguous_... S20643C14::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C14*)(S20643C12*), ABISELECT(17056,12804), "S20643C1");
    /*is_ambiguous_... S20643C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C8*)(S20643C14*)(S20643C12*), ABISELECT(17056,12804), "S20643C1");
    /*is_ambiguous_... S20643C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C9*)(S20643C8*)(S20643C14*)(S20643C12*), ABISELECT(17056,12804), "S20643C1");
    /*is_ambiguous_... S20643C5::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*)(S20643C8*)(S20643C14*)(S20643C12*), ABISELECT(17056,12804), "S20643C1");
    /*is_ambiguous_... S20643C14::S20643C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C9*)(S20643C14*)(S20643C12*), ABISELECT(17056,12804), "S20643C1");
    /*is_ambiguous_... S20643C14::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C5*)(S20643C14*)(S20643C12*), ABISELECT(17056,12804), "S20643C1");
    /*is_ambiguous_... S20643C1::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*), ABISELECT(17080,12812), "S20643C1");
    /*is_ambiguous_... S20643C1::S20643C5 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C5*), ABISELECT(17072,12808), "S20643C1");
    /*is_ambiguous_... S20643C4::S20643C5 */ AMB_check_base_class_offset(lv, (S20643C5*)(S20643C4*)(S20643C2*), ABISELECT(17072,12808), "S20643C1");
    check_base_class_offset(lv, (S20643C5*)(S20643C11*)(S20643C10*), ABISELECT(17072,12808), "S20643C1");
    /*is_ambiguous_... S20643C2::S20643C11 */ AMB_check_base_class_offset(lv, (S20643C5*)(S20643C11*)(S20643C2*), ABISELECT(17072,12808), "S20643C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C7*)(S20643C4*)(S20643C2*), ABISELECT(12600,9488), "S20643C1");
    check_base_class_offset(lv, (S20643C6*)(S20643C7*)(S20643C4*)(S20643C2*), ABISELECT(12592,9484), "S20643C1");
    check_base_class_offset(lv, (S20643C7*)(S20643C4*)(S20643C2*), ABISELECT(12592,9484), "S20643C1");
    /*is_ambiguous_... S20643C1::S20643C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*), ABISELECT(17216,12924), "S20643C1");
    /*is_ambiguous_... S20643C4::S20643C6 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C4*)(S20643C2*), ABISELECT(17208,12920), "S20643C1");
    /*is_ambiguous_... S20643C8::S20643C6 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C8*)(S20643C4*)(S20643C2*), ABISELECT(17208,12920), "S20643C1");
    check_base_class_offset(lv, (S20643C6*)(S20643C9*)(S20643C8*)(S20643C4*)(S20643C2*), ABISELECT(17208,12920), "S20643C1");
    /*is_ambiguous_... S20643C4::S20643C9 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C9*)(S20643C4*)(S20643C2*), ABISELECT(17208,12920), "S20643C1");
    /*is_ambiguous_... S20643C11::S20643C6 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C11*)(S20643C10*), ABISELECT(17208,12920), "S20643C1");
    /*is_ambiguous_... S20643C1::S20643C8 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C8*), ABISELECT(17208,12920), "S20643C1");
    /*is_ambiguous_... S20643C1::S20643C8 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C9*)(S20643C8*), ABISELECT(17208,12920), "S20643C1");
    /*is_ambiguous_... S20643C2::S20643C11 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C11*)(S20643C2*), ABISELECT(17208,12920), "S20643C1");
    /*is_ambiguous_... S20643C8::S20643C6 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C8*)(S20643C14*)(S20643C12*), ABISELECT(17208,12920), "S20643C1");
    check_base_class_offset(lv, (S20643C6*)(S20643C9*)(S20643C8*)(S20643C14*)(S20643C12*), ABISELECT(17208,12920), "S20643C1");
    /*is_ambiguous_... S20643C14::S20643C9 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C9*)(S20643C14*)(S20643C12*), ABISELECT(17208,12920), "S20643C1");
    check_base_class_offset(lv, (S20643C9*)(S20643C8*)(S20643C4*)(S20643C2*), ABISELECT(12720,9572), "S20643C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*)(S20643C8*)(S20643C4*)(S20643C2*), ABISELECT(12872,9680), "S20643C1");
    check_base_class_offset(lv, (S20643C6*)(S20643C5*)(S20643C8*)(S20643C4*)(S20643C2*), ABISELECT(12864,9676), "S20643C1");
    check_base_class_offset(lv, (S20643C5*)(S20643C8*)(S20643C4*)(S20643C2*), ABISELECT(12864,9676), "S20643C1");
    check_base_class_offset(lv, (S20643C8*)(S20643C4*)(S20643C2*), ABISELECT(12720,9572), "S20643C1");
    /*is_ambiguous_... S20643C4::S20643C9 */ AMB_check_base_class_offset(lv, (S20643C9*)(S20643C4*)(S20643C2*), ABISELECT(13280,10004), "S20643C1");
    check_base_class_offset(lv, (S20643C4*)(S20643C2*), ABISELECT(12592,9484), "S20643C1");
    /*is_ambiguous_... S20643C2::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*)(S20643C2*), ABISELECT(15560,11616), "S20643C1");
    /*is_ambiguous_... S20643C2::S20643C5 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C5*)(S20643C2*), ABISELECT(15552,11612), "S20643C1");
    /*is_ambiguous_... S20643C2::S20643C5 */ AMB_check_base_class_offset(lv, (S20643C5*)(S20643C2*), ABISELECT(15552,11612), "S20643C1");
    check_base_class_offset(lv, (S20643C11*)(S20643C10*), ABISELECT(17264,12960), "S20643C1");
    /*is_ambiguous_... S20643C10::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C10*), ABISELECT(18592,14012), "S20643C1");
    /*is_ambiguous_... S20643C1::S20643C8 */ AMB_check_base_class_offset(lv, (S20643C9*)(S20643C8*), ABISELECT(18752,14116), "S20643C1");
    /*is_ambiguous_... S20643C1::S20643C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*)(S20643C8*), ABISELECT(18904,14224), "S20643C1");
    /*is_ambiguous_... S20643C1::S20643C8 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C5*)(S20643C8*), ABISELECT(18896,14220), "S20643C1");
    /*is_ambiguous_... S20643C1::S20643C8 */ AMB_check_base_class_offset(lv, (S20643C5*)(S20643C8*), ABISELECT(18896,14220), "S20643C1");
    check_base_class_offset(lv, (S20643C8*)(S20643C10*), ABISELECT(18752,14116), "S20643C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C7*)(S20643C10*), ABISELECT(18608,14020), "S20643C1");
    check_base_class_offset(lv, (S20643C6*)(S20643C7*)(S20643C10*), ABISELECT(18600,14016), "S20643C1");
    check_base_class_offset(lv, (S20643C7*)(S20643C10*), ABISELECT(18600,14016), "S20643C1");
    check_base_class_offset(lv, (S20643C10*)(S20643C2*), ABISELECT(17264,12960), "S20643C1");
    /*is_ambiguous_... S20643C2::S20643C11 */ AMB_check_base_class_offset(lv, (S20643C11*)(S20643C2*), ABISELECT(15696,11724), "S20643C1");
    check_base_class_offset(lv, (S20643C2*), ABISELECT(12592,9484), "S20643C1");
    check_base_class_offset(lv, (S20643C13*)(S20643C12*), 0, "S20643C1");
    /*is_ambiguous_... S20643C12::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*)(S20643C12*), ABISELECT(616,416), "S20643C1");
    /*is_ambiguous_... S20643C12::S20643C5 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C5*)(S20643C12*), ABISELECT(608,412), "S20643C1");
    /*is_ambiguous_... S20643C12::S20643C5 */ AMB_check_base_class_offset(lv, (S20643C5*)(S20643C12*), ABISELECT(608,412), "S20643C1");
    check_base_class_offset(lv, (S20643C9*)(S20643C8*)(S20643C14*)(S20643C12*), ABISELECT(752,524), "S20643C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*)(S20643C8*)(S20643C14*)(S20643C12*), ABISELECT(904,632), "S20643C1");
    check_base_class_offset(lv, (S20643C6*)(S20643C5*)(S20643C8*)(S20643C14*)(S20643C12*), ABISELECT(896,628), "S20643C1");
    check_base_class_offset(lv, (S20643C5*)(S20643C8*)(S20643C14*)(S20643C12*), ABISELECT(896,628), "S20643C1");
    check_base_class_offset(lv, (S20643C8*)(S20643C14*)(S20643C12*), ABISELECT(752,524), "S20643C1");
    /*is_ambiguous_... S20643C14::S20643C9 */ AMB_check_base_class_offset(lv, (S20643C9*)(S20643C14*)(S20643C12*), ABISELECT(1312,956), "S20643C1");
    /*is_ambiguous_... S20643C14::S20643C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20643C6*)(S20643C5*)(S20643C14*)(S20643C12*), ABISELECT(1464,1064), "S20643C1");
    /*is_ambiguous_... S20643C14::S20643C5 */ AMB_check_base_class_offset(lv, (S20643C6*)(S20643C5*)(S20643C14*)(S20643C12*), ABISELECT(1456,1060), "S20643C1");
    /*is_ambiguous_... S20643C14::S20643C5 */ AMB_check_base_class_offset(lv, (S20643C5*)(S20643C14*)(S20643C12*), ABISELECT(1456,1060), "S20643C1");
    check_base_class_offset(lv, (S20643C14*)(S20643C12*), ABISELECT(752,524), "S20643C1");
    check_base_class_offset(lv, (S20643C12*), 0, "S20643C1");
    check_field_offset(lv, s20643c1f0, ABISELECT(1616,1188), "S20643C1.s20643c1f0");
    check_field_offset(lv, s20643c1f1, ABISELECT(4768,3472), "S20643C1.s20643c1f1");
    check_field_offset(lv, s20643c1f2, ABISELECT(4784,3476), "S20643C1.s20643c1f2");
    check_field_offset(lv, s20643c1f3, ABISELECT(12528,9436), "S20643C1.s20643c1f3");
    check_field_offset(lv, s20643c1f4, ABISELECT(12532,9440), "S20643C1.s20643c1f4");
    check_field_offset(lv, s20643c1f5, ABISELECT(12536,9444), "S20643C1.s20643c1f5");
    check_field_offset(lv, s20643c1f6, ABISELECT(12544,9448), "S20643C1.s20643c1f6");
    check_field_offset(lv, s20643c1f7, ABISELECT(12552,9452), "S20643C1.s20643c1f7");
    test_class_info(&lv, &cd_S20643C1);
    dp->~S20643C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20643C1(Test_S20643C1, "S20643C1", ABISELECT(19312,14548));

#else // __cplusplus

extern void _ZN8S20643C1C1Ev();
extern void _ZN8S20643C1D1Ev();
Name_Map name_map_S20643C1[] = {
  NSPAIR(_ZN8S20643C1C1Ev),
  NSPAIR(_ZN8S20643C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C7;
extern VTBL_ENTRY _ZTI8S20643C7[];
extern  VTBL_ENTRY _ZTV8S20643C7[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C9;
extern VTBL_ENTRY _ZTI8S20643C9[];
extern  VTBL_ENTRY _ZTV8S20643C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
extern Class_Descriptor cd_S20643C8;
extern VTBL_ENTRY _ZTI8S20643C8[];
extern  VTBL_ENTRY _ZTV8S20643C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C8[];
extern Class_Descriptor cd_S20643C9;
extern VTBL_ENTRY _ZTI8S20643C9[];
extern  VTBL_ENTRY _ZTV8S20643C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C9[];
extern Class_Descriptor cd_S20643C4;
extern VTBL_ENTRY _ZTI8S20643C4[];
extern  VTBL_ENTRY _ZTV8S20643C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C4[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
extern Class_Descriptor cd_S20643C11;
extern VTBL_ENTRY _ZTI9S20643C11[];
extern  VTBL_ENTRY _ZTV9S20643C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20643C11[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C9;
extern VTBL_ENTRY _ZTI8S20643C9[];
extern  VTBL_ENTRY _ZTV8S20643C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
extern Class_Descriptor cd_S20643C8;
extern VTBL_ENTRY _ZTI8S20643C8[];
extern  VTBL_ENTRY _ZTV8S20643C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C7;
extern VTBL_ENTRY _ZTI8S20643C7[];
extern  VTBL_ENTRY _ZTV8S20643C7[];
extern Class_Descriptor cd_S20643C10;
extern VTBL_ENTRY _ZTI9S20643C10[];
extern  VTBL_ENTRY _ZTV9S20643C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20643C10[];
extern Class_Descriptor cd_S20643C11;
extern VTBL_ENTRY _ZTI9S20643C11[];
extern  VTBL_ENTRY _ZTV9S20643C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20643C11[];
extern Class_Descriptor cd_S20643C2;
extern VTBL_ENTRY _ZTI8S20643C2[];
extern  VTBL_ENTRY _ZTV8S20643C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C2[];
extern Class_Descriptor cd_S20643C13;
extern VTBL_ENTRY _ZTI9S20643C13[];
extern  VTBL_ENTRY _ZTV9S20643C13[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
extern Class_Descriptor cd_S20643C9;
extern VTBL_ENTRY _ZTI8S20643C9[];
extern  VTBL_ENTRY _ZTV8S20643C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
extern Class_Descriptor cd_S20643C8;
extern VTBL_ENTRY _ZTI8S20643C8[];
extern  VTBL_ENTRY _ZTV8S20643C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C8[];
extern Class_Descriptor cd_S20643C9;
extern VTBL_ENTRY _ZTI8S20643C9[];
extern  VTBL_ENTRY _ZTV8S20643C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20643C6;
extern VTBL_ENTRY _ZTI8S20643C6[];
extern  VTBL_ENTRY _ZTV8S20643C6[];
extern Class_Descriptor cd_S20643C5;
extern VTBL_ENTRY _ZTI8S20643C5[];
extern  VTBL_ENTRY _ZTV8S20643C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C5[];
extern Class_Descriptor cd_S20643C14;
extern VTBL_ENTRY _ZTI9S20643C14[];
extern  VTBL_ENTRY _ZTV9S20643C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20643C14[];
extern Class_Descriptor cd_S20643C12;
extern VTBL_ENTRY _ZTI9S20643C12[];
extern  VTBL_ENTRY _ZTV9S20643C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20643C12[];
static Base_Class bases_S20643C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(17056,12804), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3216C8_nt,    ABISELECT(17080,12812), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C6,    ABISELECT(17072,12808), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C5,    ABISELECT(17072,12808), //bcp->offset
    96, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(12600,9488), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20643C6,    ABISELECT(12592,9484), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20643C7,    ABISELECT(12592,9484), //bcp->offset
    -1, //bcp->virtual_function_table_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_S3216C8_nt,    ABISELECT(17216,12924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C6,    ABISELECT(17208,12920), //bcp->offset
    105, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20643C9,    ABISELECT(12720,9572), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(12872,9680), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C6,    ABISELECT(12864,9676), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20643C5,    ABISELECT(12864,9676), //bcp->offset
    74, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20643C8,    ABISELECT(12720,9572), //bcp->offset
    68, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20643C9,    ABISELECT(13280,10004), //bcp->offset
    80, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20643C4,    ABISELECT(12592,9484), //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
    19, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(15560,11616), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C6,    ABISELECT(15552,11612), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20643C5,    ABISELECT(15552,11612), //bcp->offset
    85, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20643C11,    ABISELECT(17264,12960), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(18592,14012), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20643C9,    ABISELECT(18752,14116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(18904,14224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C6,    ABISELECT(18896,14220), //bcp->offset
    -1, //bcp->virtual_function_table_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
    24, //immediately_derived
  0, 0},
  {&cd_S20643C5,    ABISELECT(18896,14220), //bcp->offset
    147, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20643C8,    ABISELECT(18752,14116), //bcp->offset
    136, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(18608,14020), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20643C6,    ABISELECT(18600,14016), //bcp->offset
    -1, //bcp->virtual_function_table_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
    28, //immediately_derived
  0, 0},
  {&cd_S20643C7,    ABISELECT(18600,14016), //bcp->offset
    128, //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
    10, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20643C10,    ABISELECT(17264,12960), //bcp->offset
    113, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S20643C11,    ABISELECT(15696,11724), //bcp->offset
    91, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20643C2,    ABISELECT(12592,9484), //bcp->offset
    42, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20643C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    46, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(616,416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20643C6,    ABISELECT(608,412), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20643C5,    ABISELECT(608,412), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S20643C9,    ABISELECT(752,524), //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
    27, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(904,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
    38, //immediately_derived
  0, 0},
  {&cd_S20643C6,    ABISELECT(896,628), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20643C5,    ABISELECT(896,628), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20643C8,    ABISELECT(752,524), //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
    30, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S20643C9,    ABISELECT(1312,956), //bcp->offset
    31, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1464,1064), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S20643C6,    ABISELECT(1456,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S20643C5,    ABISELECT(1456,1060), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S20643C14,    ABISELECT(752,524), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S20643C12,    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
    35, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20643C1[];
extern void _ZN9S20643C133v12Ev();
extern void _ZN8S20643C1D1Ev();
extern void _ZN8S20643C1D0Ev();
extern void _ZN8S20643C12v1Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
extern void _ZN9S20643C143v13Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void ABISELECT(_ZTv0_n88_N8S20643C1D1Ev,_ZTv0_n44_N8S20643C1D1Ev)();
extern void ABISELECT(_ZThn12592_N8S20643C1D1Ev,_ZThn9484_N8S20643C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20643C1D0Ev,_ZTv0_n44_N8S20643C1D0Ev)();
extern void ABISELECT(_ZThn12592_N8S20643C1D0Ev,_ZThn9484_N8S20643C1D0Ev)() __attribute__((weak));
extern void _ZN8S20643C72v5Ev();
extern void _ZN8S20643C42v8Ev();
extern void _ZN8S20643C23v10Ev();
extern void _ZN8S20643C23v11Ev();
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void ABISELECT(_ZTv0_n56_N8S20643C1D1Ev,_ZTv0_n28_N8S20643C1D1Ev)();
extern void ABISELECT(_ZThn17264_N8S20643C1D1Ev,_ZThn12960_N8S20643C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20643C1D0Ev,_ZTv0_n28_N8S20643C1D0Ev)();
extern void ABISELECT(_ZThn17264_N8S20643C1D0Ev,_ZThn12960_N8S20643C1D0Ev)() __attribute__((weak));
extern void _ZN9S20643C102v9Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N8S20643C1D1Ev,_ZTvn1056_n28_N8S20643C1D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N8S20643C1D0Ev,_ZTvn1056_n28_N8S20643C1D0Ev)();
extern void _ZN8S20643C72v5Ev();
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY vtc_S20643C1[] = {
  ABISELECT(18752,14116),
  ABISELECT(17264,12960),
  ABISELECT(17072,12808),
  ABISELECT(12592,9484),
  ABISELECT(17208,12920),
  ABISELECT(17056,12804),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C1[0]),
  (VTBL_ENTRY)&_ZN9S20643C133v12Ev,
  (VTBL_ENTRY)&_ZN8S20643C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20643C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20643C12v1Ev,
  ABISELECT(16448,12392),
  ABISELECT(-608,-412),
  (VTBL_ENTRY)&(_ZTI8S20643C1[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  ABISELECT(16304,12280),
  ABISELECT(16456,12396),
  ABISELECT(-752,-524),
  (VTBL_ENTRY)&(_ZTI8S20643C1[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
  (VTBL_ENTRY)&_ZN9S20643C143v13Ev,
  ABISELECT(16160,12176),
  ABISELECT(-896,-628),
  (VTBL_ENTRY)&(_ZTI8S20643C1[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  ABISELECT(15744,11848),
  ABISELECT(15896,11964),
  ABISELECT(-1312,-956),
  (VTBL_ENTRY)&(_ZTI8S20643C1[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  ABISELECT(15600,11744),
  ABISELECT(-1456,-1060),
  (VTBL_ENTRY)&(_ZTI8S20643C1[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  0,
  0,
  ABISELECT(128,88),
  ABISELECT(128,88),
  0,
  0,
  ABISELECT(-12592,-9484),
  0,
  0,
  0,
  ABISELECT(6160,4632),
  ABISELECT(4672,3476),
  ABISELECT(4616,3436),
  ABISELECT(4464,3320),
  ABISELECT(4480,3324),
  ABISELECT(-12592,-9484),
  (VTBL_ENTRY)&(_ZTI8S20643C1[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20643C1D1Ev,_ZTv0_n44_N8S20643C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20643C1D0Ev,_ZTv0_n44_N8S20643C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20643C72v5Ev,
  (VTBL_ENTRY)&_ZN8S20643C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20643C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20643C23v11Ev,
  ABISELECT(4336,3232),
  ABISELECT(4488,3348),
  ABISELECT(-12720,-9572),
  (VTBL_ENTRY)&(_ZTI8S20643C1[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
  ABISELECT(4192,3128),
  ABISELECT(-12864,-9676),
  (VTBL_ENTRY)&(_ZTI8S20643C1[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  ABISELECT(3776,2800),
  ABISELECT(3928,2916),
  ABISELECT(-13280,-10004),
  (VTBL_ENTRY)&(_ZTI8S20643C1[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  ABISELECT(1504,1192),
  ABISELECT(-15552,-11612),
  (VTBL_ENTRY)&(_ZTI8S20643C1[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  ABISELECT(1376,1084),
  ABISELECT(1512,1196),
  ABISELECT(1360,1080),
  ABISELECT(-15696,-11724),
  (VTBL_ENTRY)&(_ZTI8S20643C1[0]),
  0,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-17072,-12808),
  (VTBL_ENTRY)&(_ZTI8S20643C1[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  0,
  0,
  0,
  ABISELECT(-17208,-12920),
  (VTBL_ENTRY)&(_ZTI8S20643C1[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-17264,-12960),
  ABISELECT(1488,1156),
  ABISELECT(-192,-152),
  ABISELECT(-56,-40),
  ABISELECT(-208,-156),
  ABISELECT(-17264,-12960),
  (VTBL_ENTRY)&(_ZTI8S20643C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20643C1D1Ev,_ZTv0_n28_N8S20643C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20643C1D0Ev,_ZTv0_n28_N8S20643C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20643C102v9Ev,
  ABISELECT(-18600,-14016),
  (VTBL_ENTRY)&(_ZTI8S20643C1[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20643C1D1Ev,_ZTvn1056_n28_N8S20643C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20643C1D0Ev,_ZTvn1056_n28_N8S20643C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20643C72v5Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1696,-1312),
  ABISELECT(-1544,-1196),
  ABISELECT(-18752,-14116),
  (VTBL_ENTRY)&(_ZTI8S20643C1[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
  ABISELECT(-1840,-1416),
  ABISELECT(-18896,-14220),
  (VTBL_ENTRY)&(_ZTI8S20643C1[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern VTBL_ENTRY _ZTV8S20643C1[];
extern void _ZN9S20643C133v12Ev();
extern void _ZN9S20643C12D1Ev();
extern void _ZN9S20643C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20643C12__8S20643C1[] = {
  ABISELECT(17208,12920),
  ABISELECT(17056,12804),
  0,
  (VTBL_ENTRY)&(_ZTI9S20643C12[0]),
  (VTBL_ENTRY)&_ZN9S20643C133v12Ev,
  (VTBL_ENTRY)&_ZN9S20643C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20643C12D0Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C59S20643C12__A4__8S20643C1[] = {
  ABISELECT(16448,12392),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
extern void _ZN9S20643C143v13Ev();
static  VTBL_ENTRY _tg__ZTV9S20643C149S20643C12__8S20643C1[] = {
  ABISELECT(16304,12280),
  ABISELECT(16456,12396),
  0,
  (VTBL_ENTRY)&(_ZTI9S20643C14[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
  (VTBL_ENTRY)&_ZN9S20643C143v13Ev,
};
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C89S20643C149S20643C12__A2__8S20643C1[] = {
  ABISELECT(16304,12280),
  ABISELECT(16456,12396),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C98S20643C89S20643C149S20643C12__A3__8S20643C1[] = {
  ABISELECT(16304,12280),
  ABISELECT(16456,12396),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C98S20643C89S20643C149S20643C12__A3__8S20643C1[] = {
  0,
  0,
  0,
  ABISELECT(-16456,-12396),
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C89S20643C149S20643C12__A5__8S20643C1[] = {
  ABISELECT(16160,12176),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C89S20643C149S20643C12__A2__8S20643C1[] = {
  0,
  0,
  0,
  ABISELECT(-16456,-12396),
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__8S20643C89S20643C149S20643C12__A2__8S20643C1[] = {
  ABISELECT(16160,12176),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C99S20643C149S20643C12__A4__8S20643C1[] = {
  ABISELECT(15744,11848),
  ABISELECT(15896,11964),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C99S20643C149S20643C12__A4__8S20643C1[] = {
  0,
  0,
  0,
  ABISELECT(-15896,-11964),
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C59S20643C149S20643C12__A6__8S20643C1[] = {
  ABISELECT(15600,11744),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__9S20643C149S20643C12__8S20643C1[] = {
  0,
  0,
  0,
  ABISELECT(-16456,-12396),
  (VTBL_ENTRY)&(_ZTI9S20643C14[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C8__9S20643C149S20643C12__8S20643C1[] = {
  ABISELECT(16160,12176),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI9S20643C14[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C9__A1__9S20643C149S20643C12__8S20643C1[] = {
  ABISELECT(15744,11848),
  ABISELECT(15896,11964),
  ABISELECT(-560,-432),
  (VTBL_ENTRY)&(_ZTI9S20643C14[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__A1__9S20643C149S20643C12__8S20643C1[] = {
  ABISELECT(15600,11744),
  ABISELECT(-704,-536),
  (VTBL_ENTRY)&(_ZTI9S20643C14[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__9S20643C12__8S20643C1[] = {
  ABISELECT(16448,12392),
  ABISELECT(-608,-412),
  (VTBL_ENTRY)&(_ZTI9S20643C12[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
extern void _ZN9S20643C143v13Ev();
static  VTBL_ENTRY _tg__ZTV9S20643C14__9S20643C12__8S20643C1[] = {
  ABISELECT(16304,12280),
  ABISELECT(16456,12396),
  ABISELECT(-752,-524),
  (VTBL_ENTRY)&(_ZTI9S20643C12[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
  (VTBL_ENTRY)&_ZN9S20643C143v13Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__A1__9S20643C12__8S20643C1[] = {
  0,
  0,
  0,
  ABISELECT(-17208,-12920),
  (VTBL_ENTRY)&(_ZTI9S20643C12[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C89S20643C14__A1__9S20643C12__8S20643C1[] = {
  ABISELECT(16160,12176),
  ABISELECT(-896,-628),
  (VTBL_ENTRY)&(_ZTI9S20643C12[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C99S20643C14__A1__9S20643C12__8S20643C1[] = {
  ABISELECT(15744,11848),
  ABISELECT(15896,11964),
  ABISELECT(-1312,-956),
  (VTBL_ENTRY)&(_ZTI9S20643C12[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C59S20643C14__A2__9S20643C12__8S20643C1[] = {
  ABISELECT(15600,11744),
  ABISELECT(-1456,-1060),
  (VTBL_ENTRY)&(_ZTI9S20643C12[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C2D1Ev();
extern void _ZN8S20643C2D0Ev();
extern void _ZN8S20643C72v5Ev();
extern void _ZN8S20643C42v8Ev();
extern void _ZN8S20643C23v10Ev();
extern void _ZN8S20643C23v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C2__8S20643C1[] = {
  ABISELECT(6160,4632),
  ABISELECT(4672,3476),
  ABISELECT(4616,3436),
  ABISELECT(4464,3320),
  ABISELECT(4480,3324),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C2[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  (VTBL_ENTRY)&_ZN8S20643C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20643C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20643C72v5Ev,
  (VTBL_ENTRY)&_ZN8S20643C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20643C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20643C23v11Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void _ZN8S20643C4D1Ev();
extern void _ZN8S20643C4D0Ev();
extern void _ZN8S20643C72v5Ev();
extern void _ZN8S20643C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C48S20643C2__8S20643C1[] = {
  ABISELECT(4616,3436),
  ABISELECT(4464,3320),
  ABISELECT(4480,3324),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C4[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  (VTBL_ENTRY)&_ZN8S20643C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20643C4D0Ev,
  (VTBL_ENTRY)&_ZN8S20643C72v5Ev,
  (VTBL_ENTRY)&_ZN8S20643C42v8Ev,
};
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C88S20643C48S20643C2__8S20643C1[] = {
  ABISELECT(4336,3232),
  ABISELECT(4488,3348),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C98S20643C88S20643C48S20643C2__8S20643C1[] = {
  ABISELECT(4336,3232),
  ABISELECT(4488,3348),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C98S20643C88S20643C48S20643C2__8S20643C1[] = {
  0,
  0,
  0,
  ABISELECT(-4488,-3348),
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C88S20643C48S20643C2__A1__8S20643C1[] = {
  ABISELECT(4192,3128),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C88S20643C48S20643C2__8S20643C1[] = {
  0,
  0,
  0,
  ABISELECT(-4488,-3348),
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__8S20643C88S20643C48S20643C2__8S20643C1[] = {
  ABISELECT(4192,3128),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C98S20643C48S20643C2__A1__8S20643C1[] = {
  ABISELECT(3776,2800),
  ABISELECT(3928,2916),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C98S20643C48S20643C2__A1__8S20643C1[] = {
  0,
  0,
  0,
  ABISELECT(-3928,-2916),
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__8S20643C48S20643C2__8S20643C1[] = {
  0,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-4480,-3324),
  (VTBL_ENTRY)&(_ZTI8S20643C4[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__A2__8S20643C48S20643C2__8S20643C1[] = {
  0,
  0,
  0,
  ABISELECT(-4616,-3436),
  (VTBL_ENTRY)&(_ZTI8S20643C4[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C8__8S20643C48S20643C2__8S20643C1[] = {
  ABISELECT(4336,3232),
  ABISELECT(4488,3348),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S20643C4[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C8__A1__8S20643C48S20643C2__8S20643C1[] = {
  ABISELECT(4192,3128),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S20643C4[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C9__A1__8S20643C48S20643C2__8S20643C1[] = {
  ABISELECT(3776,2800),
  ABISELECT(3928,2916),
  ABISELECT(-688,-520),
  (VTBL_ENTRY)&(_ZTI8S20643C4[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C2__A2__8S20643C1[] = {
  ABISELECT(1504,1192),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20643C118S20643C2__A1__8S20643C1[] = {
  ABISELECT(1376,1084),
  ABISELECT(1512,1196),
  ABISELECT(1360,1080),
  0,
  (VTBL_ENTRY)&(_ZTI9S20643C11[0]),
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__9S20643C118S20643C2__A1__8S20643C1[] = {
  0,
  0,
  0,
  ABISELECT(-1512,-1196),
  (VTBL_ENTRY)&(_ZTI9S20643C11[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__9S20643C118S20643C2__A1__8S20643C1[] = {
  0,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-1376,-1084),
  (VTBL_ENTRY)&(_ZTI9S20643C11[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__8S20643C2__8S20643C1[] = {
  0,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-4480,-3324),
  (VTBL_ENTRY)&(_ZTI8S20643C2[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__A2__8S20643C2__8S20643C1[] = {
  0,
  0,
  0,
  ABISELECT(-4616,-3436),
  (VTBL_ENTRY)&(_ZTI8S20643C2[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C88S20643C4__8S20643C2__8S20643C1[] = {
  ABISELECT(4336,3232),
  ABISELECT(4488,3348),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S20643C2[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C88S20643C4__A1__8S20643C2__8S20643C1[] = {
  ABISELECT(4192,3128),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S20643C2[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C98S20643C4__A1__8S20643C2__8S20643C1[] = {
  ABISELECT(3776,2800),
  ABISELECT(3928,2916),
  ABISELECT(-688,-520),
  (VTBL_ENTRY)&(_ZTI8S20643C2[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__A__8S20643C2__8S20643C1[] = {
  ABISELECT(1504,1192),
  ABISELECT(-2960,-2128),
  (VTBL_ENTRY)&(_ZTI8S20643C2[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S20643C2D1Ev,_ZTv0_n28_N8S20643C2D1Ev)();
extern void ABISELECT(_ZThn4672_N8S20643C2D1Ev,_ZThn3476_N8S20643C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20643C2D0Ev,_ZTv0_n28_N8S20643C2D0Ev)();
extern void ABISELECT(_ZThn4672_N8S20643C2D0Ev,_ZThn3476_N8S20643C2D0Ev)() __attribute__((weak));
extern void _ZN9S20643C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20643C10__8S20643C2__8S20643C1[] = {
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-4672,-3476),
  ABISELECT(1488,1156),
  ABISELECT(-192,-152),
  ABISELECT(-56,-40),
  ABISELECT(-208,-156),
  ABISELECT(-4672,-3476),
  (VTBL_ENTRY)&(_ZTI8S20643C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20643C2D1Ev,_ZTv0_n28_N8S20643C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20643C2D0Ev,_ZTv0_n28_N8S20643C2D0Ev),
  (VTBL_ENTRY)&_ZN9S20643C102v9Ev,
};
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C8__A1__8S20643C2__8S20643C1[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1696,-1312),
  ABISELECT(-1544,-1196),
  ABISELECT(-6160,-4632),
  (VTBL_ENTRY)&(_ZTI8S20643C2[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C8__A3__8S20643C2__8S20643C1[] = {
  ABISELECT(-1840,-1416),
  ABISELECT(-6304,-4736),
  (VTBL_ENTRY)&(_ZTI8S20643C2[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N8S20643C2D1Ev,_ZTvn1056_n28_N8S20643C2D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N8S20643C2D0Ev,_ZTvn1056_n28_N8S20643C2D0Ev)();
extern void _ZN8S20643C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C79S20643C10__A1__8S20643C2__8S20643C1[] = {
  ABISELECT(-6008,-4532),
  (VTBL_ENTRY)&(_ZTI8S20643C2[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20643C2D1Ev,_ZTvn1056_n28_N8S20643C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20643C2D0Ev,_ZTvn1056_n28_N8S20643C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20643C72v5Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20643C11__A1__8S20643C2__8S20643C1[] = {
  ABISELECT(1376,1084),
  ABISELECT(1512,1196),
  ABISELECT(1360,1080),
  ABISELECT(-3104,-2240),
  (VTBL_ENTRY)&(_ZTI8S20643C2[0]),
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__8S20643C1[] = {
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN9S20643C10D1Ev();
extern void _ZN9S20643C10D0Ev();
extern void _ZN9S20643C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20643C10__8S20643C1[] = {
  ABISELECT(1488,1156),
  ABISELECT(-192,-152),
  ABISELECT(-56,-40),
  ABISELECT(-208,-156),
  0,
  (VTBL_ENTRY)&(_ZTI9S20643C10[0]),
  (VTBL_ENTRY)&_ZN9S20643C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20643C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20643C102v9Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20643C119S20643C10__8S20643C1[] = {
  ABISELECT(-192,-152),
  ABISELECT(-56,-40),
  ABISELECT(-208,-156),
  0,
  (VTBL_ENTRY)&(_ZTI9S20643C11[0]),
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__9S20643C119S20643C10__8S20643C1[] = {
  0,
  0,
  0,
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI9S20643C11[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__9S20643C119S20643C10__8S20643C1[] = {
  0,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(192,152),
  (VTBL_ENTRY)&(_ZTI9S20643C11[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__9S20643C10__8S20643C1[] = {
  0,
  0,
  0,
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI9S20643C10[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__9S20643C10__8S20643C1[] = {
  0,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(192,152),
  (VTBL_ENTRY)&(_ZTI9S20643C10[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C8__9S20643C10__8S20643C1[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1696,-1312),
  ABISELECT(-1544,-1196),
  ABISELECT(-1488,-1156),
  (VTBL_ENTRY)&(_ZTI9S20643C10[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C8__A1__9S20643C10__8S20643C1[] = {
  ABISELECT(-1840,-1416),
  ABISELECT(-1632,-1260),
  (VTBL_ENTRY)&(_ZTI9S20643C10[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C92v6Ev();
extern void _ZN8S20643C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C8__A1__8S20643C1[] = {
  ABISELECT(-1696,-1312),
  ABISELECT(-1544,-1196),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20643C82v7Ev,
};
extern void _ZN8S20643C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C98S20643C8__A2__8S20643C1[] = {
  ABISELECT(-1696,-1312),
  ABISELECT(-1544,-1196),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C92v6Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C98S20643C8__A2__8S20643C1[] = {
  0,
  0,
  0,
  ABISELECT(1544,1196),
  (VTBL_ENTRY)&(_ZTI8S20643C9[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C58S20643C8__A3__8S20643C1[] = {
  ABISELECT(-1840,-1416),
  0,
  (VTBL_ENTRY)&(_ZTI8S20643C5[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C6__8S20643C8__A1__8S20643C1[] = {
  0,
  0,
  0,
  ABISELECT(1544,1196),
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
extern void _ZN8S20643C62v2Ev();
extern void _ZN8S20643C62v3Ev();
extern void _ZN8S20643C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20643C5__8S20643C8__A1__8S20643C1[] = {
  ABISELECT(-1840,-1416),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20643C8[0]),
  (VTBL_ENTRY)&_ZN8S20643C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20643C62v4Ev,
};
static  VTT_ENTRY vtt_S20643C1[] = {
  {&(_ZTV8S20643C1[8]),  8,153},
  {&(_tg__ZTV9S20643C12__8S20643C1[4]),  4,7},
  {&(_tg__ZTV8S20643C59S20643C12__A4__8S20643C1[3]),  3,6},
  {&(_tg__ZTV9S20643C149S20643C12__8S20643C1[4]),  4,7},
  {&(_tg__ZTV8S20643C89S20643C149S20643C12__A2__8S20643C1[4]),  4,6},
  {&(_tg__ZTV8S20643C98S20643C89S20643C149S20643C12__A3__8S20643C1[4]),  4,5},
  {&(_tg__ZTV8S20643C6__8S20643C98S20643C89S20643C149S20643C12__A3__8S20643C1[5]),  5,8},
  {&(_tg__ZTV8S20643C58S20643C89S20643C149S20643C12__A5__8S20643C1[3]),  3,6},
  {&(_tg__ZTV8S20643C6__8S20643C89S20643C149S20643C12__A2__8S20643C1[5]),  5,8},
  {&(_tg__ZTV8S20643C5__8S20643C89S20643C149S20643C12__A2__8S20643C1[3]),  3,6},
  {&(_tg__ZTV8S20643C99S20643C149S20643C12__A4__8S20643C1[4]),  4,5},
  {&(_tg__ZTV8S20643C6__8S20643C99S20643C149S20643C12__A4__8S20643C1[5]),  5,8},
  {&(_tg__ZTV8S20643C59S20643C149S20643C12__A6__8S20643C1[3]),  3,6},
  {&(_tg__ZTV8S20643C6__9S20643C149S20643C12__8S20643C1[5]),  5,8},
  {&(_tg__ZTV8S20643C58S20643C8__9S20643C149S20643C12__8S20643C1[3]),  3,6},
  {&(_tg__ZTV8S20643C9__A1__9S20643C149S20643C12__8S20643C1[4]),  4,5},
  {&(_tg__ZTV8S20643C5__A1__9S20643C149S20643C12__8S20643C1[3]),  3,6},
  {&(_tg__ZTV8S20643C5__9S20643C12__8S20643C1[3]),  3,6},
  {&(_tg__ZTV9S20643C14__9S20643C12__8S20643C1[4]),  4,7},
  {&(_tg__ZTV8S20643C6__A1__9S20643C12__8S20643C1[5]),  5,8},
  {&(_tg__ZTV8S20643C58S20643C89S20643C14__A1__9S20643C12__8S20643C1[3]),  3,6},
  {&(_tg__ZTV8S20643C99S20643C14__A1__9S20643C12__8S20643C1[4]),  4,5},
  {&(_tg__ZTV8S20643C59S20643C14__A2__9S20643C12__8S20643C1[3]),  3,6},
  {&(_ZTV8S20643C1[59]),  59,153},
  {&(_ZTV8S20643C1[102]),  102,153},
  {&(_ZTV8S20643C1[110]),  110,153},
  {&(_ZTV8S20643C1[72]),  72,153},
  {&(_ZTV8S20643C1[77]),  77,153},
  {&(_ZTV8S20643C1[84]),  84,153},
  {&(_ZTV8S20643C1[88]),  88,153},
  {&(_ZTV8S20643C1[125]),  125,153},
  {&(_ZTV8S20643C1[145]),  145,153},
  {&(_ZTV8S20643C1[150]),  150,153},
  {&(_ZTV8S20643C1[130]),  130,153},
  {&(_ZTV8S20643C1[96]),  96,153},
  {&(_ZTV8S20643C1[15]),  15,153},
  {&(_ZTV8S20643C1[22]),  22,153},
  {&(_ZTV8S20643C1[28]),  28,153},
  {&(_ZTV8S20643C1[35]),  35,153},
  {&(_ZTV8S20643C1[39]),  39,153},
  {&(_tg__ZTV8S20643C2__8S20643C1[7]),  7,16},
  {&(_tg__ZTV8S20643C48S20643C2__8S20643C1[5]),  5,12},
  {&(_tg__ZTV8S20643C88S20643C48S20643C2__8S20643C1[4]),  4,6},
  {&(_tg__ZTV8S20643C98S20643C88S20643C48S20643C2__8S20643C1[4]),  4,5},
  {&(_tg__ZTV8S20643C6__8S20643C98S20643C88S20643C48S20643C2__8S20643C1[5]),  5,8},
  {&(_tg__ZTV8S20643C58S20643C88S20643C48S20643C2__A1__8S20643C1[3]),  3,6},
  {&(_tg__ZTV8S20643C6__8S20643C88S20643C48S20643C2__8S20643C1[5]),  5,8},
  {&(_tg__ZTV8S20643C5__8S20643C88S20643C48S20643C2__8S20643C1[3]),  3,6},
  {&(_tg__ZTV8S20643C98S20643C48S20643C2__A1__8S20643C1[4]),  4,5},
  {&(_tg__ZTV8S20643C6__8S20643C98S20643C48S20643C2__A1__8S20643C1[5]),  5,8},
  {&(_tg__ZTV8S20643C5__8S20643C48S20643C2__8S20643C1[6]),  6,9},
  {&(_tg__ZTV8S20643C6__A2__8S20643C48S20643C2__8S20643C1[5]),  5,8},
  {&(_tg__ZTV8S20643C8__8S20643C48S20643C2__8S20643C1[4]),  4,6},
  {&(_tg__ZTV8S20643C58S20643C8__A1__8S20643C48S20643C2__8S20643C1[3]),  3,6},
  {&(_tg__ZTV8S20643C9__A1__8S20643C48S20643C2__8S20643C1[4]),  4,5},
  {&(_tg__ZTV8S20643C58S20643C2__A2__8S20643C1[3]),  3,6},
  {&(_tg__ZTV9S20643C118S20643C2__A1__8S20643C1[5]),  5,5},
  {&(_tg__ZTV8S20643C6__9S20643C118S20643C2__A1__8S20643C1[5]),  5,8},
  {&(_tg__ZTV8S20643C5__9S20643C118S20643C2__A1__8S20643C1[6]),  6,9},
  {&(_tg__ZTV8S20643C5__8S20643C2__8S20643C1[6]),  6,9},
  {&(_tg__ZTV8S20643C6__A2__8S20643C2__8S20643C1[5]),  5,8},
  {&(_tg__ZTV8S20643C88S20643C4__8S20643C2__8S20643C1[4]),  4,6},
  {&(_tg__ZTV8S20643C58S20643C88S20643C4__A1__8S20643C2__8S20643C1[3]),  3,6},
  {&(_tg__ZTV8S20643C98S20643C4__A1__8S20643C2__8S20643C1[4]),  4,5},
  {&(_tg__ZTV8S20643C5__A__8S20643C2__8S20643C1[3]),  3,6},
  {&(_tg__ZTV9S20643C10__8S20643C2__8S20643C1[12]),  12,15},
  {&(_tg__ZTV8S20643C8__A1__8S20643C2__8S20643C1[9]),  9,11},
  {&(_tg__ZTV8S20643C58S20643C8__A3__8S20643C2__8S20643C1[3]),  3,6},
  {&(_tg__ZTV8S20643C79S20643C10__A1__8S20643C2__8S20643C1[2]),  2,8},
  {&(_tg__ZTV9S20643C11__A1__8S20643C2__8S20643C1[5]),  5,5},
  {&(_tg__ZTV8S20643C5__8S20643C1[3]),  3,6},
  {&(_tg__ZTV9S20643C10__8S20643C1[6]),  6,9},
  {&(_tg__ZTV9S20643C119S20643C10__8S20643C1[5]),  5,5},
  {&(_tg__ZTV8S20643C6__9S20643C119S20643C10__8S20643C1[5]),  5,8},
  {&(_tg__ZTV8S20643C5__9S20643C119S20643C10__8S20643C1[6]),  6,9},
  {&(_tg__ZTV8S20643C6__9S20643C10__8S20643C1[5]),  5,8},
  {&(_tg__ZTV8S20643C5__9S20643C10__8S20643C1[6]),  6,9},
  {&(_tg__ZTV8S20643C8__9S20643C10__8S20643C1[9]),  9,11},
  {&(_tg__ZTV8S20643C58S20643C8__A1__9S20643C10__8S20643C1[3]),  3,6},
  {&(_tg__ZTV8S20643C8__A1__8S20643C1[4]),  4,6},
  {&(_tg__ZTV8S20643C98S20643C8__A2__8S20643C1[4]),  4,5},
  {&(_tg__ZTV8S20643C6__8S20643C98S20643C8__A2__8S20643C1[5]),  5,8},
  {&(_tg__ZTV8S20643C58S20643C8__A3__8S20643C1[3]),  3,6},
  {&(_tg__ZTV8S20643C6__8S20643C8__A1__8S20643C1[5]),  5,8},
  {&(_tg__ZTV8S20643C5__8S20643C8__A1__8S20643C1[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S20643C1[];
extern  VTBL_ENTRY _ZTV8S20643C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20643C1[];
static VTBL_ENTRY alt_thunk_names4[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20643C2D0Ev,_ZTv0_n28_N8S20643C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4672_N8S20643C2D0Ev,_ZThn3476_N8S20643C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20643C2D1Ev,_ZTv0_n28_N8S20643C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4672_N8S20643C2D1Ev,_ZThn3476_N8S20643C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20643C1D0Ev,_ZTv0_n28_N8S20643C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn17264_N8S20643C1D0Ev,_ZThn12960_N8S20643C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20643C1D1Ev,_ZTv0_n28_N8S20643C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn17264_N8S20643C1D1Ev,_ZThn12960_N8S20643C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20643C1D0Ev,_ZTv0_n44_N8S20643C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12592_N8S20643C1D0Ev,_ZThn9484_N8S20643C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20643C1D1Ev,_ZTv0_n44_N8S20643C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12592_N8S20643C1D1Ev,_ZThn9484_N8S20643C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20643C1 = {  "S20643C1", // class name
  bases_S20643C1, 47,
  &(vtc_S20643C1[0]), // expected_vtbl_contents
  &(vtt_S20643C1[0]), // expected_vtt_contents
  ABISELECT(19312,14548), // object size
  NSPAIRA(_ZTI8S20643C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20643C1),153, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20643C1),85, //virtual table table var
  35, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names4,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20644C6  : S3216C8_nt {
  ::S3216C8_nt s20644c6f0[3];
  ::S3216C8_nt s20644c6f1[2];
  void *s20644c6f2;
  short s20644c6f3;
  ::S3216C8_nt s20644c6f4;
  virtual void  v2(); // _ZN8S20644C62v2Ev
  virtual void  v3(); // _ZN8S20644C62v3Ev
  virtual void  v4(); // _ZN8S20644C62v4Ev
  ~S20644C6(); // tgen
  S20644C6(); // tgen
};
//SIG(-1 S20644C6) C1{ BC2{ m Fi} v1 v2 v3 FC2[3] FC2[2] Fp Fs FC2}


void  S20644C6 ::v2(){vfunc_called(this, "_ZN8S20644C62v2Ev");}
void  S20644C6 ::v3(){vfunc_called(this, "_ZN8S20644C62v3Ev");}
void  S20644C6 ::v4(){vfunc_called(this, "_ZN8S20644C62v4Ev");}
S20644C6 ::~S20644C6(){ note_dtor("S20644C6", this);} // tgen
S20644C6 ::S20644C6(){ note_ctor("S20644C6", this);} // tgen

static void Test_S20644C6()
{
  extern Class_Descriptor cd_S20644C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,11)];
    init_test(&cd_S20644C6, buf);
    S20644C6 *dp, &lv = *(dp=new (buf) S20644C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S20644C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20644C6)");
    check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(8,4), "S20644C6");
    check_field_offset(lv, s20644c6f0, ABISELECT(12,8), "S20644C6.s20644c6f0");
    check_field_offset(lv, s20644c6f1, ABISELECT(24,20), "S20644C6.s20644c6f1");
    check_field_offset(lv, s20644c6f2, ABISELECT(32,28), "S20644C6.s20644c6f2");
    check_field_offset(lv, s20644c6f3, ABISELECT(40,32), "S20644C6.s20644c6f3");
    check_field_offset(lv, s20644c6f4, ABISELECT(44,36), "S20644C6.s20644c6f4");
    test_class_info(&lv, &cd_S20644C6);
    dp->~S20644C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20644C6(Test_S20644C6, "S20644C6", ABISELECT(48,40));

#else // __cplusplus

extern void _ZN8S20644C6C1Ev();
extern void _ZN8S20644C6D1Ev();
Name_Map name_map_S20644C6[] = {
  NSPAIR(_ZN8S20644C6C1Ev),
  NSPAIR(_ZN8S20644C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S20644C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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 _ZTI8S20644C6[];
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY vtc_S20644C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C6[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
Class_Descriptor cd_S20644C6 = {  "S20644C6", // class name
  bases_S20644C6, 1,
  &(vtc_S20644C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,40), // object size
  NSPAIRA(_ZTI8S20644C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20644C6),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  S20644C5  : S20644C6 , virtual S3216C8_nt {
  long double s20644c5f0;
  __tsi64 s20644c5f1;
  ::S20644C6 s20644c5f2;
  void *s20644c5f3;
  short s20644c5f4[3];
  ~S20644C5(); // tgen
  S20644C5(); // tgen
};
//SIG(-1 S20644C5) C1{ BC2{ BC3{ m Fi} v1 v2 v3 FC3[3] FC3[2] Fp Fs FC3} VBC3 FD FL FC2 Fp Fs[3]}


S20644C5 ::~S20644C5(){ note_dtor("S20644C5", this);} // tgen
S20644C5 ::S20644C5(){ note_ctor("S20644C5", this);} // tgen

static void Test_S20644C5()
{
  extern Class_Descriptor cd_S20644C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,30)];
    init_test(&cd_S20644C5, buf);
    S20644C5 *dp, &lv = *(dp=new (buf) S20644C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,116), "sizeof(S20644C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20644C5)");
    check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*), ABISELECT(8,4), "S20644C5");
    check_base_class_offset(lv, (S20644C6*), 0, "S20644C5");
    /*is_ambiguous_... S20644C5::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(136,112), "S20644C5");
    check_field_offset(lv, s20644c5f0, ABISELECT(48,40), "S20644C5.s20644c5f0");
    check_field_offset(lv, s20644c5f1, ABISELECT(64,52), "S20644C5.s20644c5f1");
    check_field_offset(lv, s20644c5f2, ABISELECT(72,60), "S20644C5.s20644c5f2");
    check_field_offset(lv, s20644c5f3, ABISELECT(120,100), "S20644C5.s20644c5f3");
    check_field_offset(lv, s20644c5f4, ABISELECT(128,104), "S20644C5.s20644c5f4");
    test_class_info(&lv, &cd_S20644C5);
    dp->~S20644C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20644C5(Test_S20644C5, "S20644C5", ABISELECT(144,116));

#else // __cplusplus

extern void _ZN8S20644C5C1Ev();
extern void _ZN8S20644C5D1Ev();
Name_Map name_map_S20644C5[] = {
  NSPAIR(_ZN8S20644C5C1Ev),
  NSPAIR(_ZN8S20644C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S20644C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S20644C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20644C5[];
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY vtc_S20644C5[] = {
  ABISELECT(136,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern VTBL_ENTRY _ZTV8S20644C5[];
static  VTT_ENTRY vtt_S20644C5[] = {
  {&(_ZTV8S20644C5[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
Class_Descriptor cd_S20644C5 = {  "S20644C5", // class name
  bases_S20644C5, 3,
  &(vtc_S20644C5[0]), // expected_vtbl_contents
  &(vtt_S20644C5[0]), // expected_vtt_contents
  ABISELECT(144,116), // object size
  NSPAIRA(_ZTI8S20644C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20644C5),6, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20644C5),1, //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  S20644C7  : S20644C6 {
  void *s20644c7f0[7];
  int s20644c7f1[2];
  __tsi64 s20644c7f2;
  int s20644c7f3;
  virtual  ~S20644C7(); // _ZN8S20644C7D1Ev
  virtual void  v5(); // _ZN8S20644C72v5Ev
  S20644C7(); // tgen
};
//SIG(-1 S20644C7) C1{ BC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} vd v1 Fp[7] Fi[2] FL Fi}


 S20644C7 ::~S20644C7(){ note_dtor("S20644C7", this);}
void  S20644C7 ::v5(){vfunc_called(this, "_ZN8S20644C72v5Ev");}
S20644C7 ::S20644C7(){ note_ctor("S20644C7", this);} // tgen

static void Test_S20644C7()
{
  extern Class_Descriptor cd_S20644C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,23)];
    init_test(&cd_S20644C7, buf);
    S20644C7 *dp, &lv = *(dp=new (buf) S20644C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,88), "sizeof(S20644C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20644C7)");
    check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*), ABISELECT(8,4), "S20644C7");
    check_base_class_offset(lv, (S20644C6*), 0, "S20644C7");
    check_field_offset(lv, s20644c7f0, ABISELECT(48,40), "S20644C7.s20644c7f0");
    check_field_offset(lv, s20644c7f1, ABISELECT(104,68), "S20644C7.s20644c7f1");
    check_field_offset(lv, s20644c7f2, ABISELECT(112,76), "S20644C7.s20644c7f2");
    check_field_offset(lv, s20644c7f3, ABISELECT(120,84), "S20644C7.s20644c7f3");
    test_class_info(&lv, &cd_S20644C7);
    dp->~S20644C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20644C7(Test_S20644C7, "S20644C7", ABISELECT(128,88));

#else // __cplusplus

extern void _ZN8S20644C7C1Ev();
extern void _ZN8S20644C7D1Ev();
Name_Map name_map_S20644C7[] = {
  NSPAIR(_ZN8S20644C7C1Ev),
  NSPAIR(_ZN8S20644C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
static Base_Class bases_S20644C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S20644C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20644C7[];
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C7D1Ev();
extern void _ZN8S20644C7D0Ev();
extern void _ZN8S20644C72v5Ev();
static  VTBL_ENTRY vtc_S20644C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C7[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  (VTBL_ENTRY)&_ZN8S20644C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20644C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20644C72v5Ev,
};
extern VTBL_ENTRY _ZTI8S20644C7[];
extern  VTBL_ENTRY _ZTV8S20644C7[];
Class_Descriptor cd_S20644C7 = {  "S20644C7", // class name
  bases_S20644C7, 2,
  &(vtc_S20644C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,88), // object size
  NSPAIRA(_ZTI8S20644C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20644C7),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  S20644C9  : virtual S20644C6 , virtual S3216C8_nt {
  ::S20644C6 s20644c9f0;
  long double s20644c9f1;
  void *s20644c9f2[2];
  ::S20644C6 s20644c9f3;
  virtual void  v6(); // _ZN8S20644C92v6Ev
  ~S20644C9(); // tgen
  S20644C9(); // tgen
};
//SIG(-1 S20644C9) C1{ VBC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC3 v1 FC2 FD Fp[2] FC2}


void  S20644C9 ::v6(){vfunc_called(this, "_ZN8S20644C92v6Ev");}
S20644C9 ::~S20644C9(){ note_dtor("S20644C9", this);} // tgen
S20644C9 ::S20644C9(){ note_ctor("S20644C9", this);} // tgen

static void Test_S20644C9()
{
  extern Class_Descriptor cd_S20644C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,38)];
    init_test(&cd_S20644C9, buf);
    S20644C9 *dp, &lv = *(dp=new (buf) S20644C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,148), "sizeof(S20644C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20644C9)");
    check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*), ABISELECT(152,108), "S20644C9");
    check_base_class_offset(lv, (S20644C6*), ABISELECT(144,104), "S20644C9");
    /*is_ambiguous_... S20644C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(192,144), "S20644C9");
    check_field_offset(lv, s20644c9f0, ABISELECT(8,4), "S20644C9.s20644c9f0");
    check_field_offset(lv, s20644c9f1, ABISELECT(64,44), "S20644C9.s20644c9f1");
    check_field_offset(lv, s20644c9f2, ABISELECT(80,56), "S20644C9.s20644c9f2");
    check_field_offset(lv, s20644c9f3, ABISELECT(96,64), "S20644C9.s20644c9f3");
    test_class_info(&lv, &cd_S20644C9);
    dp->~S20644C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20644C9(Test_S20644C9, "S20644C9", ABISELECT(208,148));

#else // __cplusplus

extern void _ZN8S20644C9C1Ev();
extern void _ZN8S20644C9D1Ev();
Name_Map name_map_S20644C9[] = {
  NSPAIR(_ZN8S20644C9C1Ev),
  NSPAIR(_ZN8S20644C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S20644C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(152,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
    1, //immediately_derived
  0, 0},
  {&cd_S20644C6,    ABISELECT(144,104), //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(192,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20644C9[];
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY vtc_S20644C9[] = {
  ABISELECT(192,144),
  ABISELECT(144,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  0,
  0,
  0,
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern VTBL_ENTRY _ZTV8S20644C9[];
static  VTT_ENTRY vtt_S20644C9[] = {
  {&(_ZTV8S20644C9[4]),  4,13},
  {&(_ZTV8S20644C9[10]),  10,13},
};
extern VTBL_ENTRY _ZTI8S20644C9[];
extern  VTBL_ENTRY _ZTV8S20644C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C9[];
Class_Descriptor cd_S20644C9 = {  "S20644C9", // class name
  bases_S20644C9, 3,
  &(vtc_S20644C9[0]), // expected_vtbl_contents
  &(vtt_S20644C9[0]), // expected_vtt_contents
  ABISELECT(208,148), // object size
  NSPAIRA(_ZTI8S20644C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20644C9),13, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20644C9),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  S20644C8  : virtual S20644C6 , virtual S3216C8_nt , S20644C9 , S20644C5 {
  void *s20644c8f0[2];
  long s20644c8f1;
  int s20644c8f2;
  ::S20644C6 s20644c8f3[5];
  virtual void  v7(); // _ZN8S20644C82v7Ev
  ~S20644C8(); // tgen
  S20644C8(); // tgen
};
//SIG(-1 S20644C8) C1{ VBC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC3 BC4{ VBC2 VBC3 v5 FC2 FD Fp[2] FC2} BC5{ BC2 VBC3 FD FL FC2 Fp Fs[3]} v1 Fp[2] Fl Fi FC2[5]}


void  S20644C8 ::v7(){vfunc_called(this, "_ZN8S20644C82v7Ev");}
S20644C8 ::~S20644C8(){ note_dtor("S20644C8", this);} // tgen
S20644C8 ::S20644C8(){ note_ctor("S20644C8", this);} // tgen

static void Test_S20644C8()
{
  extern Class_Descriptor cd_S20644C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(39,120)];
    init_test(&cd_S20644C8, buf);
    S20644C8 *dp, &lv = *(dp=new (buf) S20644C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(608,476), "sizeof(S20644C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20644C8)");
    /*is_ambiguous_... S20644C8::S20644C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*), ABISELECT(560,436), "S20644C8");
    /*is_ambiguous_... S20644C8::S20644C6 */ AMB_check_base_class_offset(lv, (S20644C6*), ABISELECT(552,432), "S20644C8");
    check_base_class_offset(lv, (S20644C6*)(S20644C9*), ABISELECT(552,432), "S20644C8");
    /*is_ambiguous_... S20644C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(600,472), "S20644C8");
    /*is_ambiguous_... S20644C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C9*), ABISELECT(600,472), "S20644C8");
    /*is_ambiguous_... S20644C5::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*), ABISELECT(600,472), "S20644C8");
    check_base_class_offset(lv, (S20644C9*), 0, "S20644C8");
    check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*), ABISELECT(152,108), "S20644C8");
    check_base_class_offset(lv, (S20644C6*)(S20644C5*), ABISELECT(144,104), "S20644C8");
    check_base_class_offset(lv, (S20644C5*), ABISELECT(144,104), "S20644C8");
    check_field_offset(lv, s20644c8f0, ABISELECT(280,216), "S20644C8.s20644c8f0");
    check_field_offset(lv, s20644c8f1, ABISELECT(296,224), "S20644C8.s20644c8f1");
    check_field_offset(lv, s20644c8f2, ABISELECT(304,228), "S20644C8.s20644c8f2");
    check_field_offset(lv, s20644c8f3, ABISELECT(312,232), "S20644C8.s20644c8f3");
    test_class_info(&lv, &cd_S20644C8);
    dp->~S20644C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20644C8(Test_S20644C8, "S20644C8", ABISELECT(608,476));

#else // __cplusplus

extern void _ZN8S20644C8C1Ev();
extern void _ZN8S20644C8D1Ev();
Name_Map name_map_S20644C8[] = {
  NSPAIR(_ZN8S20644C8C1Ev),
  NSPAIR(_ZN8S20644C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C9;
extern VTBL_ENTRY _ZTI8S20644C9[];
extern  VTBL_ENTRY _ZTV8S20644C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
static Base_Class bases_S20644C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(560,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
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20644C6,    ABISELECT(552,432), //bcp->offset
    12, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(600,472), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20644C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(152,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20644C6,    ABISELECT(144,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20644C5,    ABISELECT(144,104), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20644C8[];
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY vtc_S20644C8[] = {
  ABISELECT(600,472),
  ABISELECT(552,432),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
  ABISELECT(456,368),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  0,
  0,
  0,
  ABISELECT(-552,-432),
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern VTBL_ENTRY _ZTV8S20644C8[];
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C9__8S20644C8[] = {
  ABISELECT(600,472),
  ABISELECT(552,432),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C9__8S20644C8[] = {
  0,
  0,
  0,
  ABISELECT(-552,-432),
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__8S20644C8[] = {
  ABISELECT(456,368),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
static  VTT_ENTRY vtt_S20644C8[] = {
  {&(_ZTV8S20644C8[4]),  4,20},
  {&(_tg__ZTV8S20644C9__8S20644C8[4]),  4,5},
  {&(_tg__ZTV8S20644C6__8S20644C9__8S20644C8[5]),  5,8},
  {&(_tg__ZTV8S20644C5__8S20644C8[3]),  3,6},
  {&(_ZTV8S20644C8[17]),  17,20},
  {&(_ZTV8S20644C8[9]),  9,20},
};
extern VTBL_ENTRY _ZTI8S20644C8[];
extern  VTBL_ENTRY _ZTV8S20644C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C8[];
Class_Descriptor cd_S20644C8 = {  "S20644C8", // class name
  bases_S20644C8, 7,
  &(vtc_S20644C8[0]), // expected_vtbl_contents
  &(vtt_S20644C8[0]), // expected_vtt_contents
  ABISELECT(608,476), // object size
  NSPAIRA(_ZTI8S20644C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20644C8),20, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20644C8),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  S20644C4  : virtual S20644C5 , S20644C7 , virtual S20644C6 , S20644C8 , S20644C9 {
  int s20644c4f0[2];
  long double s20644c4f1;
  ::S20644C9 s20644c4f2[10];
  int s20644c4f3;
  virtual void  v8(); // _ZN8S20644C42v8Ev
  ~S20644C4(); // tgen
  S20644C4(); // tgen
};
//SIG(-1 S20644C4) C1{ VBC2{ BC3{ BC4{ m Fi} v2 v3 v4 FC4[3] FC4[2] Fp Fs FC4} VBC4 FD FL FC3 Fp Fs[3]} BC5{ BC3 vd v5 Fp[7] Fi[2] FL Fi} VBC3 BC6{ VBC3 VBC4 BC7{ VBC3 VBC4 v6 FC3 FD Fp[2] FC3} BC2 v7 Fp[2] Fl Fi FC3[5]} BC7 v1 Fi[2] FD FC7[10] Fi}


void  S20644C4 ::v8(){vfunc_called(this, "_ZN8S20644C42v8Ev");}
S20644C4 ::~S20644C4(){ note_dtor("S20644C4", this);} // tgen
S20644C4 ::S20644C4(){ note_ctor("S20644C4", this);} // tgen

static void Test_S20644C4()
{
  extern Class_Descriptor cd_S20644C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(198,572)];
    init_test(&cd_S20644C4, buf);
    S20644C4 *dp, &lv = *(dp=new (buf) S20644C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3152,2284), "sizeof(S20644C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20644C4)");
    /*is_ambiguous_... S20644C4::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*), ABISELECT(2968,2132), "S20644C4");
    /*is_ambiguous_... S20644C4::S20644C5 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C5*), ABISELECT(2960,2128), "S20644C4");
    /*is_ambiguous_... S20644C4::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*), ABISELECT(3096,2240), "S20644C4");
    /*is_ambiguous_... S20644C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C8*), ABISELECT(3096,2240), "S20644C4");
    /*is_ambiguous_... S20644C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C9*)(S20644C8*), ABISELECT(3096,2240), "S20644C4");
    /*is_ambiguous_... S20644C5::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*)(S20644C8*), ABISELECT(3096,2240), "S20644C4");
    /*is_ambiguous_... S20644C4::S20644C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C9*), ABISELECT(3096,2240), "S20644C4");
    /*is_ambiguous_... S20644C4::S20644C5 */ AMB_check_base_class_offset(lv, (S20644C5*), ABISELECT(2960,2128), "S20644C4");
    check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C7*), ABISELECT(8,4), "S20644C4");
    check_base_class_offset(lv, (S20644C6*)(S20644C7*), 0, "S20644C4");
    check_base_class_offset(lv, (S20644C7*), 0, "S20644C4");
    /*is_ambiguous_... S20644C4::S20644C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*), ABISELECT(3112,2248), "S20644C4");
    /*is_ambiguous_... S20644C4::S20644C6 */ AMB_check_base_class_offset(lv, (S20644C6*), ABISELECT(3104,2244), "S20644C4");
    /*is_ambiguous_... S20644C8::S20644C6 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C8*), ABISELECT(3104,2244), "S20644C4");
    check_base_class_offset(lv, (S20644C6*)(S20644C9*)(S20644C8*), ABISELECT(3104,2244), "S20644C4");
    /*is_ambiguous_... S20644C4::S20644C9 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C9*), ABISELECT(3104,2244), "S20644C4");
    check_base_class_offset(lv, (S20644C9*)(S20644C8*), ABISELECT(128,88), "S20644C4");
    check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*)(S20644C8*), ABISELECT(280,196), "S20644C4");
    check_base_class_offset(lv, (S20644C6*)(S20644C5*)(S20644C8*), ABISELECT(272,192), "S20644C4");
    check_base_class_offset(lv, (S20644C5*)(S20644C8*), ABISELECT(272,192), "S20644C4");
    check_base_class_offset(lv, (S20644C8*), ABISELECT(128,88), "S20644C4");
    /*is_ambiguous_... S20644C4::S20644C9 */ AMB_check_base_class_offset(lv, (S20644C9*), ABISELECT(688,520), "S20644C4");
    check_field_offset(lv, s20644c4f0, ABISELECT(832,624), "S20644C4.s20644c4f0");
    check_field_offset(lv, s20644c4f1, ABISELECT(848,632), "S20644C4.s20644c4f1");
    check_field_offset(lv, s20644c4f2, ABISELECT(864,644), "S20644C4.s20644c4f2");
    check_field_offset(lv, s20644c4f3, ABISELECT(2944,2124), "S20644C4.s20644c4f3");
    test_class_info(&lv, &cd_S20644C4);
    dp->~S20644C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20644C4(Test_S20644C4, "S20644C4", ABISELECT(3152,2284));

#else // __cplusplus

extern void _ZN8S20644C4C1Ev();
extern void _ZN8S20644C4D1Ev();
Name_Map name_map_S20644C4[] = {
  NSPAIR(_ZN8S20644C4C1Ev),
  NSPAIR(_ZN8S20644C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C7;
extern VTBL_ENTRY _ZTI8S20644C7[];
extern  VTBL_ENTRY _ZTV8S20644C7[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C9;
extern VTBL_ENTRY _ZTI8S20644C9[];
extern  VTBL_ENTRY _ZTV8S20644C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
extern Class_Descriptor cd_S20644C8;
extern VTBL_ENTRY _ZTI8S20644C8[];
extern  VTBL_ENTRY _ZTV8S20644C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C8[];
extern Class_Descriptor cd_S20644C9;
extern VTBL_ENTRY _ZTI8S20644C9[];
extern  VTBL_ENTRY _ZTV8S20644C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C9[];
static Base_Class bases_S20644C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(2968,2132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20644C6,    ABISELECT(2960,2128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3216C8_nt,    ABISELECT(3096,2240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C5,    ABISELECT(2960,2128), //bcp->offset
    29, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20644C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20644C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3216C8_nt,    ABISELECT(3112,2248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C6,    ABISELECT(3104,2244), //bcp->offset
    38, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20644C9,    ABISELECT(128,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    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
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20644C6,    ABISELECT(272,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
    12, //immediately_derived
  0, 0},
  {&cd_S20644C5,    ABISELECT(272,192), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20644C8,    ABISELECT(128,88), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20644C9,    ABISELECT(688,520), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20644C4[];
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C4D1Ev();
extern void _ZN8S20644C4D0Ev();
extern void _ZN8S20644C72v5Ev();
extern void _ZN8S20644C42v8Ev();
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY vtc_S20644C4[] = {
  ABISELECT(3104,2244),
  ABISELECT(3096,2240),
  ABISELECT(2960,2128),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C4[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  (VTBL_ENTRY)&_ZN8S20644C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20644C4D0Ev,
  (VTBL_ENTRY)&_ZN8S20644C72v5Ev,
  (VTBL_ENTRY)&_ZN8S20644C42v8Ev,
  ABISELECT(2968,2152),
  ABISELECT(2976,2156),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S20644C4[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
  ABISELECT(2824,2048),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S20644C4[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  ABISELECT(2408,1720),
  ABISELECT(2416,1724),
  ABISELECT(-688,-520),
  (VTBL_ENTRY)&(_ZTI8S20644C4[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  0,
  0,
  0,
  ABISELECT(136,112),
  ABISELECT(-2960,-2128),
  (VTBL_ENTRY)&(_ZTI8S20644C4[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  0,
  0,
  0,
  ABISELECT(-3104,-2244),
  (VTBL_ENTRY)&(_ZTI8S20644C4[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern VTBL_ENTRY _ZTV8S20644C4[];
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C8__8S20644C4[] = {
  ABISELECT(2968,2152),
  ABISELECT(2976,2156),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C98S20644C8__8S20644C4[] = {
  ABISELECT(2968,2152),
  ABISELECT(2976,2156),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C98S20644C8__8S20644C4[] = {
  0,
  0,
  0,
  ABISELECT(-2976,-2156),
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C8__A1__8S20644C4[] = {
  ABISELECT(2824,2048),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C8__8S20644C4[] = {
  0,
  0,
  0,
  ABISELECT(-2976,-2156),
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__8S20644C8__8S20644C4[] = {
  ABISELECT(2824,2048),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C9__A1__8S20644C4[] = {
  ABISELECT(2408,1720),
  ABISELECT(2416,1724),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C9__A1__8S20644C4[] = {
  0,
  0,
  0,
  ABISELECT(-2416,-1724),
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__8S20644C4[] = {
  ABISELECT(136,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
static  VTT_ENTRY vtt_S20644C4[] = {
  {&(_ZTV8S20644C4[5]),  5,46},
  {&(_tg__ZTV8S20644C8__8S20644C4[4]),  4,6},
  {&(_tg__ZTV8S20644C98S20644C8__8S20644C4[4]),  4,5},
  {&(_tg__ZTV8S20644C6__8S20644C98S20644C8__8S20644C4[5]),  5,8},
  {&(_tg__ZTV8S20644C58S20644C8__A1__8S20644C4[3]),  3,6},
  {&(_tg__ZTV8S20644C6__8S20644C8__8S20644C4[5]),  5,8},
  {&(_tg__ZTV8S20644C5__8S20644C8__8S20644C4[3]),  3,6},
  {&(_tg__ZTV8S20644C9__A1__8S20644C4[4]),  4,5},
  {&(_tg__ZTV8S20644C6__8S20644C9__A1__8S20644C4[5]),  5,8},
  {&(_ZTV8S20644C4[35]),  35,46},
  {&(_ZTV8S20644C4[43]),  43,46},
  {&(_ZTV8S20644C4[16]),  16,46},
  {&(_ZTV8S20644C4[21]),  21,46},
  {&(_ZTV8S20644C4[28]),  28,46},
  {&(_tg__ZTV8S20644C5__8S20644C4[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S20644C4[];
extern  VTBL_ENTRY _ZTV8S20644C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C4[];
Class_Descriptor cd_S20644C4 = {  "S20644C4", // class name
  bases_S20644C4, 15,
  &(vtc_S20644C4[0]), // expected_vtbl_contents
  &(vtt_S20644C4[0]), // expected_vtt_contents
  ABISELECT(3152,2284), // object size
  NSPAIRA(_ZTI8S20644C4),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20644C4),46, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20644C4),15, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20644C11  : virtual S3216C8_nt , virtual S20644C6 , virtual S20644C5 {
  void *s20644c11f0[2];
  int s20644c11f1;
  ::S20644C5 s20644c11f2[8];
  long double s20644c11f3[9];
  ~S20644C11(); // tgen
  S20644C11(); // tgen
};
//SIG(-1 S20644C11) C1{ VBC2{ m Fi} VBC3{ BC2 v1 v2 v3 FC2[3] FC2[2] Fp Fs FC2} VBC4{ BC3 VBC2 FD FL FC3 Fp Fs[3]} Fp[2] Fi FC4[8] FD[9]}


S20644C11 ::~S20644C11(){ note_dtor("S20644C11", this);} // tgen
S20644C11 ::S20644C11(){ note_ctor("S20644C11", this);} // tgen

static void Test_S20644C11()
{
  extern Class_Descriptor cd_S20644C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(97,303)];
    init_test(&cd_S20644C11, buf);
    S20644C11 *dp, &lv = *(dp=new (buf) S20644C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1536,1208), "sizeof(S20644C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20644C11)");
    /*is_ambiguous_... S20644C11::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(1328,1052), "S20644C11");
    /*is_ambiguous_... S20644C5::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*), ABISELECT(1328,1052), "S20644C11");
    /*is_ambiguous_... S20644C11::S20644C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*), ABISELECT(1344,1060), "S20644C11");
    /*is_ambiguous_... S20644C11::S20644C6 */ AMB_check_base_class_offset(lv, (S20644C6*), ABISELECT(1336,1056), "S20644C11");
    check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*), ABISELECT(1400,1100), "S20644C11");
    check_base_class_offset(lv, (S20644C6*)(S20644C5*), ABISELECT(1392,1096), "S20644C11");
    check_base_class_offset(lv, (S20644C5*), ABISELECT(1392,1096), "S20644C11");
    check_field_offset(lv, s20644c11f0, ABISELECT(8,4), "S20644C11.s20644c11f0");
    check_field_offset(lv, s20644c11f1, ABISELECT(24,12), "S20644C11.s20644c11f1");
    check_field_offset(lv, s20644c11f2, ABISELECT(32,16), "S20644C11.s20644c11f2");
    check_field_offset(lv, s20644c11f3, ABISELECT(1184,944), "S20644C11.s20644c11f3");
    test_class_info(&lv, &cd_S20644C11);
    dp->~S20644C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20644C11(Test_S20644C11, "S20644C11", ABISELECT(1536,1208));

#else // __cplusplus

extern void _ZN9S20644C11C1Ev();
extern void _ZN9S20644C11D1Ev();
Name_Map name_map_S20644C11[] = {
  NSPAIR(_ZN9S20644C11C1Ev),
  NSPAIR(_ZN9S20644C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
static Base_Class bases_S20644C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(1328,1052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1344,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20644C6,    ABISELECT(1336,1056), //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1400,1100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20644C6,    ABISELECT(1392,1096), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C5,    ABISELECT(1392,1096), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //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 _ZTI9S20644C11[];
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY vtc_S20644C11[] = {
  ABISELECT(1392,1096),
  ABISELECT(1336,1056),
  ABISELECT(1328,1052),
  0,
  (VTBL_ENTRY)&(_ZTI9S20644C11[0]),
  0,
  0,
  0,
  ABISELECT(-1336,-1056),
  (VTBL_ENTRY)&(_ZTI9S20644C11[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  0,
  0,
  0,
  ABISELECT(-64,-44),
  ABISELECT(-1392,-1096),
  (VTBL_ENTRY)&(_ZTI9S20644C11[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern VTBL_ENTRY _ZTV9S20644C11[];
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__9S20644C11[] = {
  ABISELECT(-64,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
static  VTT_ENTRY vtt_S20644C11[] = {
  {&(_ZTV9S20644C11[5]),  5,22},
  {&(_ZTV9S20644C11[10]),  10,22},
  {&(_ZTV9S20644C11[19]),  19,22},
  {&(_tg__ZTV8S20644C5__9S20644C11[3]),  3,6},
};
extern VTBL_ENTRY _ZTI9S20644C11[];
extern  VTBL_ENTRY _ZTV9S20644C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20644C11[];
Class_Descriptor cd_S20644C11 = {  "S20644C11", // class name
  bases_S20644C11, 6,
  &(vtc_S20644C11[0]), // expected_vtbl_contents
  &(vtt_S20644C11[0]), // expected_vtt_contents
  ABISELECT(1536,1208), // object size
  NSPAIRA(_ZTI9S20644C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20644C11),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20644C11),4, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20644C10  : S20644C11 , S3216C8_nt , virtual S20644C8 , S20644C7 {
  int s20644c10f0;
  void *s20644c10f1;
  int s20644c10f2;
  virtual  ~S20644C10(); // _ZN9S20644C10D2Ev
  virtual void  v9(); // _ZN9S20644C102v9Ev
  S20644C10(); // tgen
};
//SIG(-1 S20644C10) C1{ BC2{ VBC3{ m Fi} VBC4{ BC3 v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC5{ BC4 VBC3 FD FL FC4 Fp Fs[3]} Fp[2] Fi FC5[8] FD[9]} BC3 VBC6{ VBC4 VBC3 BC7{ VBC4 VBC3 v5 FC4 FD Fp[2] FC4} BC5 v6 Fp[2] Fl Fi FC4[5]} BC8{ BC4 vd v7 Fp[7] Fi[2] FL Fi} vd v1 Fi Fp Fi}


 S20644C10 ::~S20644C10(){ note_dtor("S20644C10", this);}
void  S20644C10 ::v9(){vfunc_called(this, "_ZN9S20644C102v9Ev");}
S20644C10 ::S20644C10(){ note_ctor("S20644C10", this);} // tgen

static void Test_S20644C10()
{
  extern Class_Descriptor cd_S20644C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(141,437)];
    init_test(&cd_S20644C10, buf);
    S20644C10 *dp, &lv = *(dp=new (buf) S20644C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2240,1744), "sizeof(S20644C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20644C10)");
    /*is_ambiguous_... S20644C11::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C11*), ABISELECT(1476,1156), "S20644C10");
    /*is_ambiguous_... S20644C10::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*), ABISELECT(1476,1156), "S20644C10");
    /*is_ambiguous_... S20644C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C8*), ABISELECT(1476,1156), "S20644C10");
    /*is_ambiguous_... S20644C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C9*)(S20644C8*), ABISELECT(1476,1156), "S20644C10");
    /*is_ambiguous_... S20644C5::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*)(S20644C8*), ABISELECT(1476,1156), "S20644C10");
    /*is_ambiguous_... S20644C10::S20644C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*), ABISELECT(1488,1164), "S20644C10");
    /*is_ambiguous_... S20644C11::S20644C6 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C11*), ABISELECT(1480,1160), "S20644C10");
    /*is_ambiguous_... S20644C8::S20644C6 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C8*), ABISELECT(1480,1160), "S20644C10");
    check_base_class_offset(lv, (S20644C6*)(S20644C9*)(S20644C8*), ABISELECT(1480,1160), "S20644C10");
    /*is_ambiguous_... S20644C10::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*), ABISELECT(1544,1204), "S20644C10");
    /*is_ambiguous_... S20644C10::S20644C5 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C5*), ABISELECT(1536,1200), "S20644C10");
    check_base_class_offset(lv, (S20644C5*)(S20644C11*), ABISELECT(1536,1200), "S20644C10");
    check_base_class_offset(lv, (S20644C11*), 0, "S20644C10");
    /*is_ambiguous_... S20644C10::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(1328,1052), "S20644C10");
    check_base_class_offset(lv, (S20644C9*)(S20644C8*), ABISELECT(1680,1312), "S20644C10");
    check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*)(S20644C8*), ABISELECT(1832,1420), "S20644C10");
    check_base_class_offset(lv, (S20644C6*)(S20644C5*)(S20644C8*), ABISELECT(1824,1416), "S20644C10");
    check_base_class_offset(lv, (S20644C5*)(S20644C8*), ABISELECT(1824,1416), "S20644C10");
    check_base_class_offset(lv, (S20644C8*), ABISELECT(1680,1312), "S20644C10");
    check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C7*), ABISELECT(1344,1060), "S20644C10");
    check_base_class_offset(lv, (S20644C6*)(S20644C7*), ABISELECT(1336,1056), "S20644C10");
    check_base_class_offset(lv, (S20644C7*), ABISELECT(1336,1056), "S20644C10");
    check_field_offset(lv, s20644c10f0, ABISELECT(1460,1144), "S20644C10.s20644c10f0");
    check_field_offset(lv, s20644c10f1, ABISELECT(1464,1148), "S20644C10.s20644c10f1");
    check_field_offset(lv, s20644c10f2, ABISELECT(1472,1152), "S20644C10.s20644c10f2");
    test_class_info(&lv, &cd_S20644C10);
    dp->~S20644C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20644C10(Test_S20644C10, "S20644C10", ABISELECT(2240,1744));

#else // __cplusplus

extern void _ZN9S20644C10C1Ev();
extern void _ZN9S20644C10D2Ev();
Name_Map name_map_S20644C10[] = {
  NSPAIR(_ZN9S20644C10C1Ev),
  NSPAIR(_ZN9S20644C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
extern Class_Descriptor cd_S20644C11;
extern VTBL_ENTRY _ZTI9S20644C11[];
extern  VTBL_ENTRY _ZTV9S20644C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20644C11[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C9;
extern VTBL_ENTRY _ZTI8S20644C9[];
extern  VTBL_ENTRY _ZTV8S20644C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
extern Class_Descriptor cd_S20644C8;
extern VTBL_ENTRY _ZTI8S20644C8[];
extern  VTBL_ENTRY _ZTV8S20644C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C7;
extern VTBL_ENTRY _ZTI8S20644C7[];
extern  VTBL_ENTRY _ZTV8S20644C7[];
static Base_Class bases_S20644C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(1476,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
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1488,1164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C6,    ABISELECT(1480,1160), //bcp->offset
    17, //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
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1544,1204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C6,    ABISELECT(1536,1200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C5,    ABISELECT(1536,1200), //bcp->offset
    25, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20644C11,    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_S3216C8_nt,    ABISELECT(1328,1052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20644C9,    ABISELECT(1680,1312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1832,1420), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C6,    ABISELECT(1824,1416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20644C5,    ABISELECT(1824,1416), //bcp->offset
    45, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20644C8,    ABISELECT(1680,1312), //bcp->offset
    34, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1344,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20644C6,    ABISELECT(1336,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
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20644C7,    ABISELECT(1336,1056), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20644C10[];
extern void _ZN9S20644C10D1Ev();
extern void _ZN9S20644C10D0Ev();
extern void _ZN9S20644C102v9Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void ABISELECT(_ZThn1336_N9S20644C10D1Ev,_ZThn1056_N9S20644C10D1Ev)();
extern void ABISELECT(_ZThn1336_N9S20644C10D0Ev,_ZThn1056_N9S20644C10D0Ev)();
extern void _ZN8S20644C72v5Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY vtc_S20644C10[] = {
  ABISELECT(1680,1312),
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  0,
  (VTBL_ENTRY)&(_ZTI9S20644C10[0]),
  (VTBL_ENTRY)&_ZN9S20644C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20644C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20644C102v9Ev,
  ABISELECT(-1336,-1056),
  (VTBL_ENTRY)&(_ZTI9S20644C10[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1336_N9S20644C10D1Ev,_ZThn1056_N9S20644C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1336_N9S20644C10D0Ev,_ZThn1056_N9S20644C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20644C72v5Ev,
  0,
  0,
  0,
  ABISELECT(-1480,-1160),
  (VTBL_ENTRY)&(_ZTI9S20644C10[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(-1536,-1200),
  (VTBL_ENTRY)&(_ZTI9S20644C10[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  ABISELECT(-1680,-1312),
  (VTBL_ENTRY)&(_ZTI9S20644C10[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
  ABISELECT(-348,-260),
  ABISELECT(-1824,-1416),
  (VTBL_ENTRY)&(_ZTI9S20644C10[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern VTBL_ENTRY _ZTV9S20644C10[];
static  VTBL_ENTRY _tg__ZTV9S20644C11__9S20644C10[] = {
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  0,
  (VTBL_ENTRY)&(_ZTI9S20644C11[0]),
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__9S20644C11__9S20644C10[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1160),
  (VTBL_ENTRY)&(_ZTI9S20644C11[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__9S20644C11__9S20644C10[] = {
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(-1536,-1200),
  (VTBL_ENTRY)&(_ZTI9S20644C11[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__9S20644C10[] = {
  ABISELECT(-60,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C8__9S20644C10[] = {
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C98S20644C8__9S20644C10[] = {
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C98S20644C8__9S20644C10[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C8__A1__9S20644C10[] = {
  ABISELECT(-348,-260),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C8__9S20644C10[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__8S20644C8__9S20644C10[] = {
  ABISELECT(-348,-260),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
static  VTT_ENTRY vtt_S20644C10[] = {
  {&(_ZTV9S20644C10[6]),  6,51},
  {&(_tg__ZTV9S20644C11__9S20644C10[5]),  5,5},
  {&(_tg__ZTV8S20644C6__9S20644C11__9S20644C10[5]),  5,8},
  {&(_tg__ZTV8S20644C5__9S20644C11__9S20644C10[6]),  6,9},
  {&(_ZTV9S20644C10[22]),  22,51},
  {&(_ZTV9S20644C10[31]),  31,51},
  {&(_ZTV9S20644C10[43]),  43,51},
  {&(_ZTV9S20644C10[48]),  48,51},
  {&(_tg__ZTV8S20644C5__9S20644C10[3]),  3,6},
  {&(_tg__ZTV8S20644C8__9S20644C10[4]),  4,6},
  {&(_tg__ZTV8S20644C98S20644C8__9S20644C10[4]),  4,5},
  {&(_tg__ZTV8S20644C6__8S20644C98S20644C8__9S20644C10[5]),  5,8},
  {&(_tg__ZTV8S20644C58S20644C8__A1__9S20644C10[3]),  3,6},
  {&(_tg__ZTV8S20644C6__8S20644C8__9S20644C10[5]),  5,8},
  {&(_tg__ZTV8S20644C5__8S20644C8__9S20644C10[3]),  3,6},
};
extern VTBL_ENTRY _ZTI9S20644C10[];
extern  VTBL_ENTRY _ZTV9S20644C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20644C10[];
Class_Descriptor cd_S20644C10 = {  "S20644C10", // class name
  bases_S20644C10, 16,
  &(vtc_S20644C10[0]), // expected_vtbl_contents
  &(vtt_S20644C10[0]), // expected_vtt_contents
  ABISELECT(2240,1744), // object size
  NSPAIRA(_ZTI9S20644C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20644C10),51, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20644C10),15, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20644C2  : virtual S3216C8_nt , S20644C4 , S20644C5 , virtual S20644C10 , S20644C11 {
  int s20644c2f0[2];
  void *s20644c2f1;
  char s20644c2f2:3;
  int s20644c2f3[3];
  virtual  ~S20644C2(); // _ZN8S20644C2D2Ev
  virtual void  v10(); // _ZN8S20644C23v10Ev
  virtual void  v11(); // _ZN8S20644C23v11Ev
  S20644C2(); // tgen
};
//SIG(-1 S20644C2) C1{ VBC2{ m Fi} BC3{ VBC4{ BC5{ BC2 v3 v4 v5 FC2[3] FC2[2] Fp Fs FC2} VBC2 FD FL FC5 Fp Fs[3]} BC6{ BC5 vd v6 Fp[7] Fi[2] FL Fi} VBC5 BC7{ VBC5 VBC2 BC8{ VBC5 VBC2 v7 FC5 FD Fp[2] FC5} BC4 v8 Fp[2] Fl Fi FC5[5]} BC8 v9 Fi[2] FD FC8[10] Fi} BC4 VBC9{ BC10{ VBC2 VBC5 VBC4 Fp[2] Fi FC4[8] FD[9]} BC2 VBC7 BC6 vd v10 Fi Fp Fi} BC10 vd v1 v2 Fi[2] Fp Fc:3 Fi[3]}


 S20644C2 ::~S20644C2(){ note_dtor("S20644C2", this);}
void  S20644C2 ::v10(){vfunc_called(this, "_ZN8S20644C23v10Ev");}
void  S20644C2 ::v11(){vfunc_called(this, "_ZN8S20644C23v11Ev");}
S20644C2 ::S20644C2(){ note_ctor("S20644C2", this);} // tgen

static void Test_S20644C2()
{
  extern Class_Descriptor cd_S20644C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(421,1267)];
    init_test(&cd_S20644C2, buf);
    S20644C2 *dp, &lv = *(dp=new (buf) S20644C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(6720,5064), "sizeof(S20644C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20644C2)");
    /*is_ambiguous_... S20644C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(4464,3320), "S20644C2");
    /*is_ambiguous_... S20644C2::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*), ABISELECT(4464,3320), "S20644C2");
    /*is_ambiguous_... S20644C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C8*)(S20644C4*), ABISELECT(4464,3320), "S20644C2");
    /*is_ambiguous_... S20644C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C9*)(S20644C8*)(S20644C4*), ABISELECT(4464,3320), "S20644C2");
    /*is_ambiguous_... S20644C5::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*)(S20644C8*)(S20644C4*), ABISELECT(4464,3320), "S20644C2");
    /*is_ambiguous_... S20644C4::S20644C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C9*)(S20644C4*), ABISELECT(4464,3320), "S20644C2");
    /*is_ambiguous_... S20644C2::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*), ABISELECT(4464,3320), "S20644C2");
    /*is_ambiguous_... S20644C11::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C11*)(S20644C10*), ABISELECT(4464,3320), "S20644C2");
    /*is_ambiguous_... S20644C2::S20644C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C8*), ABISELECT(4464,3320), "S20644C2");
    /*is_ambiguous_... S20644C2::S20644C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C9*)(S20644C8*), ABISELECT(4464,3320), "S20644C2");
    /*is_ambiguous_... S20644C2::S20644C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*)(S20644C8*), ABISELECT(4464,3320), "S20644C2");
    /*is_ambiguous_... S20644C2::S20644C11 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C11*), ABISELECT(4464,3320), "S20644C2");
    /*is_ambiguous_... S20644C2::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*), ABISELECT(4488,3328), "S20644C2");
    /*is_ambiguous_... S20644C2::S20644C5 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C5*), ABISELECT(4480,3324), "S20644C2");
    /*is_ambiguous_... S20644C4::S20644C5 */ AMB_check_base_class_offset(lv, (S20644C5*)(S20644C4*), ABISELECT(4480,3324), "S20644C2");
    check_base_class_offset(lv, (S20644C5*)(S20644C11*)(S20644C10*), ABISELECT(4480,3324), "S20644C2");
    /*is_ambiguous_... S20644C2::S20644C11 */ AMB_check_base_class_offset(lv, (S20644C5*)(S20644C11*), ABISELECT(4480,3324), "S20644C2");
    check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C7*)(S20644C4*), ABISELECT(8,4), "S20644C2");
    check_base_class_offset(lv, (S20644C6*)(S20644C7*)(S20644C4*), 0, "S20644C2");
    check_base_class_offset(lv, (S20644C7*)(S20644C4*), 0, "S20644C2");
    /*is_ambiguous_... S20644C2::S20644C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*), ABISELECT(4624,3440), "S20644C2");
    /*is_ambiguous_... S20644C4::S20644C6 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C4*), ABISELECT(4616,3436), "S20644C2");
    /*is_ambiguous_... S20644C8::S20644C6 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C8*)(S20644C4*), ABISELECT(4616,3436), "S20644C2");
    check_base_class_offset(lv, (S20644C6*)(S20644C9*)(S20644C8*)(S20644C4*), ABISELECT(4616,3436), "S20644C2");
    /*is_ambiguous_... S20644C4::S20644C9 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C9*)(S20644C4*), ABISELECT(4616,3436), "S20644C2");
    /*is_ambiguous_... S20644C11::S20644C6 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C11*)(S20644C10*), ABISELECT(4616,3436), "S20644C2");
    /*is_ambiguous_... S20644C2::S20644C8 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C8*), ABISELECT(4616,3436), "S20644C2");
    /*is_ambiguous_... S20644C2::S20644C8 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C9*)(S20644C8*), ABISELECT(4616,3436), "S20644C2");
    /*is_ambiguous_... S20644C2::S20644C11 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C11*), ABISELECT(4616,3436), "S20644C2");
    check_base_class_offset(lv, (S20644C9*)(S20644C8*)(S20644C4*), ABISELECT(128,88), "S20644C2");
    check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*)(S20644C8*)(S20644C4*), ABISELECT(280,196), "S20644C2");
    check_base_class_offset(lv, (S20644C6*)(S20644C5*)(S20644C8*)(S20644C4*), ABISELECT(272,192), "S20644C2");
    check_base_class_offset(lv, (S20644C5*)(S20644C8*)(S20644C4*), ABISELECT(272,192), "S20644C2");
    check_base_class_offset(lv, (S20644C8*)(S20644C4*), ABISELECT(128,88), "S20644C2");
    /*is_ambiguous_... S20644C4::S20644C9 */ AMB_check_base_class_offset(lv, (S20644C9*)(S20644C4*), ABISELECT(688,520), "S20644C2");
    check_base_class_offset(lv, (S20644C4*), 0, "S20644C2");
    /*is_ambiguous_... S20644C2::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*), ABISELECT(2968,2132), "S20644C2");
    /*is_ambiguous_... S20644C2::S20644C5 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C5*), ABISELECT(2960,2128), "S20644C2");
    /*is_ambiguous_... S20644C2::S20644C5 */ AMB_check_base_class_offset(lv, (S20644C5*), ABISELECT(2960,2128), "S20644C2");
    check_base_class_offset(lv, (S20644C11*)(S20644C10*), ABISELECT(4672,3476), "S20644C2");
    /*is_ambiguous_... S20644C10::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C10*), ABISELECT(6000,4528), "S20644C2");
    /*is_ambiguous_... S20644C2::S20644C8 */ AMB_check_base_class_offset(lv, (S20644C9*)(S20644C8*), ABISELECT(6160,4632), "S20644C2");
    /*is_ambiguous_... S20644C2::S20644C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*)(S20644C8*), ABISELECT(6312,4740), "S20644C2");
    /*is_ambiguous_... S20644C2::S20644C8 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C5*)(S20644C8*), ABISELECT(6304,4736), "S20644C2");
    /*is_ambiguous_... S20644C2::S20644C8 */ AMB_check_base_class_offset(lv, (S20644C5*)(S20644C8*), ABISELECT(6304,4736), "S20644C2");
    check_base_class_offset(lv, (S20644C8*)(S20644C10*), ABISELECT(6160,4632), "S20644C2");
    check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C7*)(S20644C10*), ABISELECT(6016,4536), "S20644C2");
    check_base_class_offset(lv, (S20644C6*)(S20644C7*)(S20644C10*), ABISELECT(6008,4532), "S20644C2");
    check_base_class_offset(lv, (S20644C7*)(S20644C10*), ABISELECT(6008,4532), "S20644C2");
    check_base_class_offset(lv, (S20644C10*), ABISELECT(4672,3476), "S20644C2");
    /*is_ambiguous_... S20644C2::S20644C11 */ AMB_check_base_class_offset(lv, (S20644C11*), ABISELECT(3104,2240), "S20644C2");
    check_field_offset(lv, s20644c2f0, ABISELECT(4432,3292), "S20644C2.s20644c2f0");
    check_field_offset(lv, s20644c2f1, ABISELECT(4440,3300), "S20644C2.s20644c2f1");
    set_bf_and_test(lv, s20644c2f2, ABISELECT(4448,3304), 0, 3, 1, "S20644C2");
    set_bf_and_test(lv, s20644c2f2, ABISELECT(4448,3304), 0, 3, hide_sll(1LL<<2), "S20644C2");
    check_field_offset(lv, s20644c2f3, ABISELECT(4452,3308), "S20644C2.s20644c2f3");
    test_class_info(&lv, &cd_S20644C2);
    dp->~S20644C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20644C2(Test_S20644C2, "S20644C2", ABISELECT(6720,5064));

#else // __cplusplus

extern void _ZN8S20644C2C1Ev();
extern void _ZN8S20644C2D2Ev();
Name_Map name_map_S20644C2[] = {
  NSPAIR(_ZN8S20644C2C1Ev),
  NSPAIR(_ZN8S20644C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C7;
extern VTBL_ENTRY _ZTI8S20644C7[];
extern  VTBL_ENTRY _ZTV8S20644C7[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C9;
extern VTBL_ENTRY _ZTI8S20644C9[];
extern  VTBL_ENTRY _ZTV8S20644C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
extern Class_Descriptor cd_S20644C8;
extern VTBL_ENTRY _ZTI8S20644C8[];
extern  VTBL_ENTRY _ZTV8S20644C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C8[];
extern Class_Descriptor cd_S20644C9;
extern VTBL_ENTRY _ZTI8S20644C9[];
extern  VTBL_ENTRY _ZTV8S20644C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C9[];
extern Class_Descriptor cd_S20644C4;
extern VTBL_ENTRY _ZTI8S20644C4[];
extern  VTBL_ENTRY _ZTV8S20644C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C4[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
extern Class_Descriptor cd_S20644C11;
extern VTBL_ENTRY _ZTI9S20644C11[];
extern  VTBL_ENTRY _ZTV9S20644C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20644C11[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C9;
extern VTBL_ENTRY _ZTI8S20644C9[];
extern  VTBL_ENTRY _ZTV8S20644C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
extern Class_Descriptor cd_S20644C8;
extern VTBL_ENTRY _ZTI8S20644C8[];
extern  VTBL_ENTRY _ZTV8S20644C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C7;
extern VTBL_ENTRY _ZTI8S20644C7[];
extern  VTBL_ENTRY _ZTV8S20644C7[];
extern Class_Descriptor cd_S20644C10;
extern VTBL_ENTRY _ZTI9S20644C10[];
extern  VTBL_ENTRY _ZTV9S20644C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20644C10[];
extern Class_Descriptor cd_S20644C11;
extern VTBL_ENTRY _ZTI9S20644C11[];
extern  VTBL_ENTRY _ZTV9S20644C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20644C11[];
static Base_Class bases_S20644C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(4464,3320), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(4488,3328), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C6,    ABISELECT(4480,3324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C5,    ABISELECT(4480,3324), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20644C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20644C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3216C8_nt,    ABISELECT(4624,3440), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C6,    ABISELECT(4616,3436), //bcp->offset
    53, //bcp->virtual_function_table_offset
    5, //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
    9, //immediately_derived
  0, 1},
  {&cd_S20644C9,    ABISELECT(128,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    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
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20644C6,    ABISELECT(272,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
    15, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20644C5,    ABISELECT(272,192), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20644C8,    ABISELECT(128,88), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20644C9,    ABISELECT(688,520), //bcp->offset
    28, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20644C4,    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
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(2968,2132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C6,    ABISELECT(2960,2128), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20644C5,    ABISELECT(2960,2128), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20644C11,    ABISELECT(4672,3476), //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
    8, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(6000,4528), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C9,    ABISELECT(6160,4632), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(6312,4740), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C6,    ABISELECT(6304,4736), //bcp->offset
    -1, //bcp->virtual_function_table_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
    24, //immediately_derived
  0, 0},
  {&cd_S20644C5,    ABISELECT(6304,4736), //bcp->offset
    95, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20644C8,    ABISELECT(6160,4632), //bcp->offset
    84, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(6016,4536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C6,    ABISELECT(6008,4532), //bcp->offset
    -1, //bcp->virtual_function_table_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
    28, //immediately_derived
  0, 0},
  {&cd_S20644C7,    ABISELECT(6008,4532), //bcp->offset
    76, //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
    10, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20644C10,    ABISELECT(4672,3476), //bcp->offset
    61, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20644C11,    ABISELECT(3104,2240), //bcp->offset
    39, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20644C2[];
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C2D1Ev();
extern void _ZN8S20644C2D0Ev();
extern void _ZN8S20644C72v5Ev();
extern void _ZN8S20644C42v8Ev();
extern void _ZN8S20644C23v10Ev();
extern void _ZN8S20644C23v11Ev();
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void ABISELECT(_ZTv0_n56_N8S20644C2D1Ev,_ZTv0_n28_N8S20644C2D1Ev)();
extern void ABISELECT(_ZThn4672_N8S20644C2D1Ev,_ZThn3476_N8S20644C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20644C2D0Ev,_ZTv0_n28_N8S20644C2D0Ev)();
extern void ABISELECT(_ZThn4672_N8S20644C2D0Ev,_ZThn3476_N8S20644C2D0Ev)() __attribute__((weak));
extern void _ZN9S20644C102v9Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N8S20644C2D1Ev,_ZTvn1056_n28_N8S20644C2D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N8S20644C2D0Ev,_ZTvn1056_n28_N8S20644C2D0Ev)();
extern void _ZN8S20644C72v5Ev();
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY vtc_S20644C2[] = {
  ABISELECT(6160,4632),
  ABISELECT(4672,3476),
  ABISELECT(4616,3436),
  ABISELECT(4464,3320),
  ABISELECT(4480,3324),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C2[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  (VTBL_ENTRY)&_ZN8S20644C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20644C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20644C72v5Ev,
  (VTBL_ENTRY)&_ZN8S20644C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20644C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20644C23v11Ev,
  ABISELECT(4336,3232),
  ABISELECT(4488,3348),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S20644C2[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
  ABISELECT(4192,3128),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S20644C2[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  ABISELECT(3776,2800),
  ABISELECT(3928,2916),
  ABISELECT(-688,-520),
  (VTBL_ENTRY)&(_ZTI8S20644C2[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  ABISELECT(1504,1192),
  ABISELECT(-2960,-2128),
  (VTBL_ENTRY)&(_ZTI8S20644C2[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  ABISELECT(1376,1084),
  ABISELECT(1512,1196),
  ABISELECT(1360,1080),
  ABISELECT(-3104,-2240),
  (VTBL_ENTRY)&(_ZTI8S20644C2[0]),
  0,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-4480,-3324),
  (VTBL_ENTRY)&(_ZTI8S20644C2[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  0,
  0,
  0,
  ABISELECT(-4616,-3436),
  (VTBL_ENTRY)&(_ZTI8S20644C2[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-4672,-3476),
  ABISELECT(1488,1156),
  ABISELECT(-192,-152),
  ABISELECT(-56,-40),
  ABISELECT(-208,-156),
  ABISELECT(-4672,-3476),
  (VTBL_ENTRY)&(_ZTI8S20644C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20644C2D1Ev,_ZTv0_n28_N8S20644C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20644C2D0Ev,_ZTv0_n28_N8S20644C2D0Ev),
  (VTBL_ENTRY)&_ZN9S20644C102v9Ev,
  ABISELECT(-6008,-4532),
  (VTBL_ENTRY)&(_ZTI8S20644C2[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20644C2D1Ev,_ZTvn1056_n28_N8S20644C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20644C2D0Ev,_ZTvn1056_n28_N8S20644C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20644C72v5Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1696,-1312),
  ABISELECT(-1544,-1196),
  ABISELECT(-6160,-4632),
  (VTBL_ENTRY)&(_ZTI8S20644C2[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
  ABISELECT(-1840,-1416),
  ABISELECT(-6304,-4736),
  (VTBL_ENTRY)&(_ZTI8S20644C2[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern VTBL_ENTRY _ZTV8S20644C2[];
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C4D1Ev();
extern void _ZN8S20644C4D0Ev();
extern void _ZN8S20644C72v5Ev();
extern void _ZN8S20644C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C4__8S20644C2[] = {
  ABISELECT(4616,3436),
  ABISELECT(4464,3320),
  ABISELECT(4480,3324),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C4[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  (VTBL_ENTRY)&_ZN8S20644C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20644C4D0Ev,
  (VTBL_ENTRY)&_ZN8S20644C72v5Ev,
  (VTBL_ENTRY)&_ZN8S20644C42v8Ev,
};
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C88S20644C4__8S20644C2[] = {
  ABISELECT(4336,3232),
  ABISELECT(4488,3348),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C98S20644C88S20644C4__8S20644C2[] = {
  ABISELECT(4336,3232),
  ABISELECT(4488,3348),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C98S20644C88S20644C4__8S20644C2[] = {
  0,
  0,
  0,
  ABISELECT(-4488,-3348),
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C88S20644C4__A1__8S20644C2[] = {
  ABISELECT(4192,3128),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C88S20644C4__8S20644C2[] = {
  0,
  0,
  0,
  ABISELECT(-4488,-3348),
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__8S20644C88S20644C4__8S20644C2[] = {
  ABISELECT(4192,3128),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C98S20644C4__A1__8S20644C2[] = {
  ABISELECT(3776,2800),
  ABISELECT(3928,2916),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C98S20644C4__A1__8S20644C2[] = {
  0,
  0,
  0,
  ABISELECT(-3928,-2916),
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__8S20644C4__8S20644C2[] = {
  0,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-4480,-3324),
  (VTBL_ENTRY)&(_ZTI8S20644C4[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__A2__8S20644C4__8S20644C2[] = {
  0,
  0,
  0,
  ABISELECT(-4616,-3436),
  (VTBL_ENTRY)&(_ZTI8S20644C4[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C8__8S20644C4__8S20644C2[] = {
  ABISELECT(4336,3232),
  ABISELECT(4488,3348),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S20644C4[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C8__A1__8S20644C4__8S20644C2[] = {
  ABISELECT(4192,3128),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S20644C4[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C9__A1__8S20644C4__8S20644C2[] = {
  ABISELECT(3776,2800),
  ABISELECT(3928,2916),
  ABISELECT(-688,-520),
  (VTBL_ENTRY)&(_ZTI8S20644C4[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__A__8S20644C2[] = {
  ABISELECT(1504,1192),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20644C11__A1__8S20644C2[] = {
  ABISELECT(1376,1084),
  ABISELECT(1512,1196),
  ABISELECT(1360,1080),
  0,
  (VTBL_ENTRY)&(_ZTI9S20644C11[0]),
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__9S20644C11__A1__8S20644C2[] = {
  0,
  0,
  0,
  ABISELECT(-1512,-1196),
  (VTBL_ENTRY)&(_ZTI9S20644C11[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__9S20644C11__A1__8S20644C2[] = {
  0,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-1376,-1084),
  (VTBL_ENTRY)&(_ZTI9S20644C11[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__8S20644C2[] = {
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN9S20644C10D1Ev();
extern void _ZN9S20644C10D0Ev();
extern void _ZN9S20644C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20644C10__8S20644C2[] = {
  ABISELECT(1488,1156),
  ABISELECT(-192,-152),
  ABISELECT(-56,-40),
  ABISELECT(-208,-156),
  0,
  (VTBL_ENTRY)&(_ZTI9S20644C10[0]),
  (VTBL_ENTRY)&_ZN9S20644C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20644C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20644C102v9Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20644C119S20644C10__8S20644C2[] = {
  ABISELECT(-192,-152),
  ABISELECT(-56,-40),
  ABISELECT(-208,-156),
  0,
  (VTBL_ENTRY)&(_ZTI9S20644C11[0]),
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__9S20644C119S20644C10__8S20644C2[] = {
  0,
  0,
  0,
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI9S20644C11[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__9S20644C119S20644C10__8S20644C2[] = {
  0,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(192,152),
  (VTBL_ENTRY)&(_ZTI9S20644C11[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__9S20644C10__8S20644C2[] = {
  0,
  0,
  0,
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI9S20644C10[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__9S20644C10__8S20644C2[] = {
  0,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(192,152),
  (VTBL_ENTRY)&(_ZTI9S20644C10[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C8__9S20644C10__8S20644C2[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1696,-1312),
  ABISELECT(-1544,-1196),
  ABISELECT(-1488,-1156),
  (VTBL_ENTRY)&(_ZTI9S20644C10[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C8__A1__9S20644C10__8S20644C2[] = {
  ABISELECT(-1840,-1416),
  ABISELECT(-1632,-1260),
  (VTBL_ENTRY)&(_ZTI9S20644C10[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C8__A1__8S20644C2[] = {
  ABISELECT(-1696,-1312),
  ABISELECT(-1544,-1196),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C98S20644C8__A2__8S20644C2[] = {
  ABISELECT(-1696,-1312),
  ABISELECT(-1544,-1196),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C98S20644C8__A2__8S20644C2[] = {
  0,
  0,
  0,
  ABISELECT(1544,1196),
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C8__A3__8S20644C2[] = {
  ABISELECT(-1840,-1416),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C8__A1__8S20644C2[] = {
  0,
  0,
  0,
  ABISELECT(1544,1196),
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__8S20644C8__A1__8S20644C2[] = {
  ABISELECT(-1840,-1416),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
static  VTT_ENTRY vtt_S20644C2[] = {
  {&(_ZTV8S20644C2[7]),  7,101},
  {&(_tg__ZTV8S20644C4__8S20644C2[5]),  5,12},
  {&(_tg__ZTV8S20644C88S20644C4__8S20644C2[4]),  4,6},
  {&(_tg__ZTV8S20644C98S20644C88S20644C4__8S20644C2[4]),  4,5},
  {&(_tg__ZTV8S20644C6__8S20644C98S20644C88S20644C4__8S20644C2[5]),  5,8},
  {&(_tg__ZTV8S20644C58S20644C88S20644C4__A1__8S20644C2[3]),  3,6},
  {&(_tg__ZTV8S20644C6__8S20644C88S20644C4__8S20644C2[5]),  5,8},
  {&(_tg__ZTV8S20644C5__8S20644C88S20644C4__8S20644C2[3]),  3,6},
  {&(_tg__ZTV8S20644C98S20644C4__A1__8S20644C2[4]),  4,5},
  {&(_tg__ZTV8S20644C6__8S20644C98S20644C4__A1__8S20644C2[5]),  5,8},
  {&(_tg__ZTV8S20644C5__8S20644C4__8S20644C2[6]),  6,9},
  {&(_tg__ZTV8S20644C6__A2__8S20644C4__8S20644C2[5]),  5,8},
  {&(_tg__ZTV8S20644C8__8S20644C4__8S20644C2[4]),  4,6},
  {&(_tg__ZTV8S20644C58S20644C8__A1__8S20644C4__8S20644C2[3]),  3,6},
  {&(_tg__ZTV8S20644C9__A1__8S20644C4__8S20644C2[4]),  4,5},
  {&(_tg__ZTV8S20644C5__A__8S20644C2[3]),  3,6},
  {&(_tg__ZTV9S20644C11__A1__8S20644C2[5]),  5,5},
  {&(_tg__ZTV8S20644C6__9S20644C11__A1__8S20644C2[5]),  5,8},
  {&(_tg__ZTV8S20644C5__9S20644C11__A1__8S20644C2[6]),  6,9},
  {&(_ZTV8S20644C2[50]),  50,101},
  {&(_ZTV8S20644C2[58]),  58,101},
  {&(_ZTV8S20644C2[20]),  20,101},
  {&(_ZTV8S20644C2[25]),  25,101},
  {&(_ZTV8S20644C2[32]),  32,101},
  {&(_ZTV8S20644C2[36]),  36,101},
  {&(_ZTV8S20644C2[73]),  73,101},
  {&(_ZTV8S20644C2[93]),  93,101},
  {&(_ZTV8S20644C2[98]),  98,101},
  {&(_ZTV8S20644C2[78]),  78,101},
  {&(_ZTV8S20644C2[44]),  44,101},
  {&(_tg__ZTV8S20644C5__8S20644C2[3]),  3,6},
  {&(_tg__ZTV9S20644C10__8S20644C2[6]),  6,9},
  {&(_tg__ZTV9S20644C119S20644C10__8S20644C2[5]),  5,5},
  {&(_tg__ZTV8S20644C6__9S20644C119S20644C10__8S20644C2[5]),  5,8},
  {&(_tg__ZTV8S20644C5__9S20644C119S20644C10__8S20644C2[6]),  6,9},
  {&(_tg__ZTV8S20644C6__9S20644C10__8S20644C2[5]),  5,8},
  {&(_tg__ZTV8S20644C5__9S20644C10__8S20644C2[6]),  6,9},
  {&(_tg__ZTV8S20644C8__9S20644C10__8S20644C2[9]),  9,11},
  {&(_tg__ZTV8S20644C58S20644C8__A1__9S20644C10__8S20644C2[3]),  3,6},
  {&(_tg__ZTV8S20644C8__A1__8S20644C2[4]),  4,6},
  {&(_tg__ZTV8S20644C98S20644C8__A2__8S20644C2[4]),  4,5},
  {&(_tg__ZTV8S20644C6__8S20644C98S20644C8__A2__8S20644C2[5]),  5,8},
  {&(_tg__ZTV8S20644C58S20644C8__A3__8S20644C2[3]),  3,6},
  {&(_tg__ZTV8S20644C6__8S20644C8__A1__8S20644C2[5]),  5,8},
  {&(_tg__ZTV8S20644C5__8S20644C8__A1__8S20644C2[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S20644C2[];
extern  VTBL_ENTRY _ZTV8S20644C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C2[];
static VTBL_ENTRY alt_thunk_names5[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20644C2D0Ev,_ZTv0_n28_N8S20644C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4672_N8S20644C2D0Ev,_ZThn3476_N8S20644C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20644C2D1Ev,_ZTv0_n28_N8S20644C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4672_N8S20644C2D1Ev,_ZThn3476_N8S20644C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20644C2 = {  "S20644C2", // class name
  bases_S20644C2, 31,
  &(vtc_S20644C2[0]), // expected_vtbl_contents
  &(vtt_S20644C2[0]), // expected_vtt_contents
  ABISELECT(6720,5064), // object size
  NSPAIRA(_ZTI8S20644C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20644C2),101, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20644C2),45, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names5,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20644C13  {
  void *s20644c13f0[7];
  ::S20644C9 s20644c13f1;
  long double s20644c13f2;
  int s20644c13f3;
  __tsi64 s20644c13f4;
  void *s20644c13f5;
  ::S20644C9 s20644c13f6;
  void *s20644c13f7[5];
  int s20644c13f8[8];
  void *s20644c13f9;
  virtual void  v12(); // _ZN9S20644C133v12Ev
  ~S20644C13(); // tgen
  S20644C13(); // tgen
};
//SIG(-1 S20644C13) C1{ v1 Fp[7] FC2{ VBC3{ BC4{ m Fi} v3 v4 v5 FC4[3] FC4[2] Fp Fs FC4} VBC4 v2 FC3 FD Fp[2] FC3} FD Fi FL Fp FC2 Fp[5] Fi[8] Fp}


void  S20644C13 ::v12(){vfunc_called(this, "_ZN9S20644C133v12Ev");}
S20644C13 ::~S20644C13(){ note_dtor("S20644C13", this);} // tgen
S20644C13 ::S20644C13(){ note_ctor("S20644C13", this);} // tgen

static void Test_S20644C13()
{
  extern Class_Descriptor cd_S20644C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(39,104)];
    init_test(&cd_S20644C13, buf);
    S20644C13 *dp, &lv = *(dp=new (buf) S20644C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(608,412), "sizeof(S20644C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20644C13)");
    check_field_offset(lv, s20644c13f0, ABISELECT(8,4), "S20644C13.s20644c13f0");
    check_field_offset(lv, s20644c13f1, ABISELECT(64,32), "S20644C13.s20644c13f1");
    check_field_offset(lv, s20644c13f2, ABISELECT(272,180), "S20644C13.s20644c13f2");
    check_field_offset(lv, s20644c13f3, ABISELECT(288,192), "S20644C13.s20644c13f3");
    check_field_offset(lv, s20644c13f4, ABISELECT(296,196), "S20644C13.s20644c13f4");
    check_field_offset(lv, s20644c13f5, ABISELECT(304,204), "S20644C13.s20644c13f5");
    check_field_offset(lv, s20644c13f6, ABISELECT(320,208), "S20644C13.s20644c13f6");
    check_field_offset(lv, s20644c13f7, ABISELECT(528,356), "S20644C13.s20644c13f7");
    check_field_offset(lv, s20644c13f8, ABISELECT(568,376), "S20644C13.s20644c13f8");
    check_field_offset(lv, s20644c13f9, ABISELECT(600,408), "S20644C13.s20644c13f9");
    test_class_info(&lv, &cd_S20644C13);
    dp->~S20644C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20644C13(Test_S20644C13, "S20644C13", ABISELECT(608,412));

#else // __cplusplus

extern void _ZN9S20644C13C1Ev();
extern void _ZN9S20644C13D1Ev();
Name_Map name_map_S20644C13[] = {
  NSPAIR(_ZN9S20644C13C1Ev),
  NSPAIR(_ZN9S20644C13D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S20644C13[];
extern void _ZN9S20644C133v12Ev();
static  VTBL_ENTRY vtc_S20644C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20644C13[0]),
  (VTBL_ENTRY)&_ZN9S20644C133v12Ev,
};
extern VTBL_ENTRY _ZTI9S20644C13[];
extern  VTBL_ENTRY _ZTV9S20644C13[];
Class_Descriptor cd_S20644C13 = {  "S20644C13", // class name
  0,0,//no base classes
  &(vtc_S20644C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(608,412), // object size
  NSPAIRA(_ZTI9S20644C13),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S20644C13),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  S20644C14  : virtual S3216C8_nt , S20644C8 , S20644C9 , S20644C5 {
  int s20644c14f0;
  ::S20643C15_nt s20644c14f1;
  void *s20644c14f2[2];
  virtual void  v13(); // _ZN9S20644C143v13Ev
  ~S20644C14(); // tgen
  S20644C14(); // tgen
};
//SIG(-1 S20644C14) C1{ VBC2{ m Fi} BC3{ VBC4{ BC2 v2 v3 v4 FC2[3] FC2[2] Fp Fs FC2} VBC2 BC5{ VBC4 VBC2 v5 FC4 FD Fp[2] FC4} BC6{ BC4 VBC2 FD FL FC4 Fp Fs[3]} v6 Fp[2] Fl Fi FC4[5]} BC5 BC6 v1 Fi FC7{} Fp[2]}


void  S20644C14 ::v13(){vfunc_called(this, "_ZN9S20644C143v13Ev");}
S20644C14 ::~S20644C14(){ note_dtor("S20644C14", this);} // tgen
S20644C14 ::S20644C14(){ note_ctor("S20644C14", this);} // tgen

static void Test_S20644C14()
{
  extern Class_Descriptor cd_S20644C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(59,178)];
    init_test(&cd_S20644C14, buf);
    S20644C14 *dp, &lv = *(dp=new (buf) S20644C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(928,708), "sizeof(S20644C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20644C14)");
    /*is_ambiguous_... S20644C14::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(864,664), "S20644C14");
    /*is_ambiguous_... S20644C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C8*), ABISELECT(864,664), "S20644C14");
    /*is_ambiguous_... S20644C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C9*)(S20644C8*), ABISELECT(864,664), "S20644C14");
    /*is_ambiguous_... S20644C5::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*)(S20644C8*), ABISELECT(864,664), "S20644C14");
    /*is_ambiguous_... S20644C14::S20644C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C9*), ABISELECT(864,664), "S20644C14");
    /*is_ambiguous_... S20644C14::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*), ABISELECT(864,664), "S20644C14");
    /*is_ambiguous_... S20644C14::S20644C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*), ABISELECT(880,672), "S20644C14");
    /*is_ambiguous_... S20644C8::S20644C6 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C8*), ABISELECT(872,668), "S20644C14");
    check_base_class_offset(lv, (S20644C6*)(S20644C9*)(S20644C8*), ABISELECT(872,668), "S20644C14");
    /*is_ambiguous_... S20644C14::S20644C9 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C9*), ABISELECT(872,668), "S20644C14");
    check_base_class_offset(lv, (S20644C9*)(S20644C8*), 0, "S20644C14");
    check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*)(S20644C8*), ABISELECT(152,108), "S20644C14");
    check_base_class_offset(lv, (S20644C6*)(S20644C5*)(S20644C8*), ABISELECT(144,104), "S20644C14");
    check_base_class_offset(lv, (S20644C5*)(S20644C8*), ABISELECT(144,104), "S20644C14");
    check_base_class_offset(lv, (S20644C8*), 0, "S20644C14");
    /*is_ambiguous_... S20644C14::S20644C9 */ AMB_check_base_class_offset(lv, (S20644C9*), ABISELECT(560,432), "S20644C14");
    /*is_ambiguous_... S20644C14::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*), ABISELECT(712,540), "S20644C14");
    /*is_ambiguous_... S20644C14::S20644C5 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C5*), ABISELECT(704,536), "S20644C14");
    /*is_ambiguous_... S20644C14::S20644C5 */ AMB_check_base_class_offset(lv, (S20644C5*), ABISELECT(704,536), "S20644C14");
    check_field_offset(lv, s20644c14f0, ABISELECT(840,648), "S20644C14.s20644c14f0");
    check_field_offset(lv, s20644c14f1, ABISELECT(844,652), "S20644C14.s20644c14f1");
    check_field_offset(lv, s20644c14f2, ABISELECT(848,656), "S20644C14.s20644c14f2");
    test_class_info(&lv, &cd_S20644C14);
    dp->~S20644C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20644C14(Test_S20644C14, "S20644C14", ABISELECT(928,708));

#else // __cplusplus

extern void _ZN9S20644C14C1Ev();
extern void _ZN9S20644C14D1Ev();
Name_Map name_map_S20644C14[] = {
  NSPAIR(_ZN9S20644C14C1Ev),
  NSPAIR(_ZN9S20644C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C9;
extern VTBL_ENTRY _ZTI8S20644C9[];
extern  VTBL_ENTRY _ZTV8S20644C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
extern Class_Descriptor cd_S20644C8;
extern VTBL_ENTRY _ZTI8S20644C8[];
extern  VTBL_ENTRY _ZTV8S20644C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C8[];
extern Class_Descriptor cd_S20644C9;
extern VTBL_ENTRY _ZTI8S20644C9[];
extern  VTBL_ENTRY _ZTV8S20644C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
static Base_Class bases_S20644C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(864,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
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(880,672), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C6,    ABISELECT(872,668), //bcp->offset
    24, //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
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20644C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(152,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20644C6,    ABISELECT(144,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20644C5,    ABISELECT(144,104), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20644C8,    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_S20644C9,    ABISELECT(560,432), //bcp->offset
    13, //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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(712,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
    10, //immediately_derived
  0, 0},
  {&cd_S20644C6,    ABISELECT(704,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
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20644C5,    ABISELECT(704,536), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20644C14[];
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
extern void _ZN9S20644C143v13Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY vtc_S20644C14[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI9S20644C14[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
  (VTBL_ENTRY)&_ZN9S20644C143v13Ev,
  ABISELECT(720,560),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI9S20644C14[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  ABISELECT(304,232),
  ABISELECT(312,236),
  ABISELECT(-560,-432),
  (VTBL_ENTRY)&(_ZTI9S20644C14[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  ABISELECT(160,128),
  ABISELECT(-704,-536),
  (VTBL_ENTRY)&(_ZTI9S20644C14[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI9S20644C14[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern VTBL_ENTRY _ZTV9S20644C14[];
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C8__9S20644C14[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C98S20644C8__9S20644C14[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C98S20644C8__9S20644C14[] = {
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C8__9S20644C14[] = {
  ABISELECT(720,560),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C8__9S20644C14[] = {
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__8S20644C8__9S20644C14[] = {
  ABISELECT(720,560),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C9__A1__9S20644C14[] = {
  ABISELECT(304,232),
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C9__A1__9S20644C14[] = {
  0,
  0,
  0,
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__A1__9S20644C14[] = {
  ABISELECT(160,128),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
static  VTT_ENTRY vtt_S20644C14[] = {
  {&(_ZTV9S20644C14[4]),  4,32},
  {&(_tg__ZTV8S20644C8__9S20644C14[4]),  4,6},
  {&(_tg__ZTV8S20644C98S20644C8__9S20644C14[4]),  4,5},
  {&(_tg__ZTV8S20644C6__8S20644C98S20644C8__9S20644C14[5]),  5,8},
  {&(_tg__ZTV8S20644C58S20644C8__9S20644C14[3]),  3,6},
  {&(_tg__ZTV8S20644C6__8S20644C8__9S20644C14[5]),  5,8},
  {&(_tg__ZTV8S20644C5__8S20644C8__9S20644C14[3]),  3,6},
  {&(_tg__ZTV8S20644C9__A1__9S20644C14[4]),  4,5},
  {&(_tg__ZTV8S20644C6__8S20644C9__A1__9S20644C14[5]),  5,8},
  {&(_tg__ZTV8S20644C5__A1__9S20644C14[3]),  3,6},
  {&(_ZTV9S20644C14[29]),  29,32},
  {&(_ZTV9S20644C14[10]),  10,32},
  {&(_ZTV9S20644C14[17]),  17,32},
  {&(_ZTV9S20644C14[21]),  21,32},
};
extern VTBL_ENTRY _ZTI9S20644C14[];
extern  VTBL_ENTRY _ZTV9S20644C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20644C14[];
Class_Descriptor cd_S20644C14 = {  "S20644C14", // class name
  bases_S20644C14, 12,
  &(vtc_S20644C14[0]), // expected_vtbl_contents
  &(vtt_S20644C14[0]), // expected_vtt_contents
  ABISELECT(928,708), // object size
  NSPAIRA(_ZTI9S20644C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20644C14),32, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20644C14),14, //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  S20644C12  : S20644C13 , S20644C5 , S20644C14 {
  virtual  ~S20644C12(); // _ZN9S20644C12D2Ev
  S20644C12(); // tgen
};
//SIG(-1 S20644C12) C1{ BC2{ v1 Fp[7] FC3{ VBC4{ BC5{ m Fi} v2 v3 v4 FC5[3] FC5[2] Fp Fs FC5} VBC5 v5 FC4 FD Fp[2] FC4} FD Fi FL Fp FC3 Fp[5] Fi[8] Fp} BC6{ BC4 VBC5 FD FL FC4 Fp Fs[3]} BC7{ VBC5 BC8{ VBC4 VBC5 BC3 BC6 v6 Fp[2] Fl Fi FC4[5]} BC3 BC6 v7 Fi FC9{} Fp[2]} vd}


 S20644C12 ::~S20644C12(){ note_dtor("S20644C12", this);}
S20644C12 ::S20644C12(){ note_ctor("S20644C12", this);} // tgen

static void Test_S20644C12()
{
  extern Class_Descriptor cd_S20644C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(106,309)];
    init_test(&cd_S20644C12, buf);
    S20644C12 *dp, &lv = *(dp=new (buf) S20644C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1680,1232), "sizeof(S20644C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20644C12)");
    check_base_class_offset(lv, (S20644C13*), 0, "S20644C12");
    /*is_ambiguous_... S20644C12::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*), ABISELECT(616,416), "S20644C12");
    /*is_ambiguous_... S20644C12::S20644C5 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C5*), ABISELECT(608,412), "S20644C12");
    /*is_ambiguous_... S20644C12::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*), ABISELECT(1616,1188), "S20644C12");
    /*is_ambiguous_... S20644C14::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C14*), ABISELECT(1616,1188), "S20644C12");
    /*is_ambiguous_... S20644C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C8*)(S20644C14*), ABISELECT(1616,1188), "S20644C12");
    /*is_ambiguous_... S20644C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C9*)(S20644C8*)(S20644C14*), ABISELECT(1616,1188), "S20644C12");
    /*is_ambiguous_... S20644C5::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*)(S20644C8*)(S20644C14*), ABISELECT(1616,1188), "S20644C12");
    /*is_ambiguous_... S20644C14::S20644C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C9*)(S20644C14*), ABISELECT(1616,1188), "S20644C12");
    /*is_ambiguous_... S20644C14::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*)(S20644C14*), ABISELECT(1616,1188), "S20644C12");
    /*is_ambiguous_... S20644C12::S20644C5 */ AMB_check_base_class_offset(lv, (S20644C5*), ABISELECT(608,412), "S20644C12");
    /*is_ambiguous_... S20644C12::S20644C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*), ABISELECT(1632,1196), "S20644C12");
    /*is_ambiguous_... S20644C8::S20644C6 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C8*)(S20644C14*), ABISELECT(1624,1192), "S20644C12");
    check_base_class_offset(lv, (S20644C6*)(S20644C9*)(S20644C8*)(S20644C14*), ABISELECT(1624,1192), "S20644C12");
    /*is_ambiguous_... S20644C14::S20644C9 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C9*)(S20644C14*), ABISELECT(1624,1192), "S20644C12");
    check_base_class_offset(lv, (S20644C9*)(S20644C8*)(S20644C14*), ABISELECT(752,524), "S20644C12");
    check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*)(S20644C8*)(S20644C14*), ABISELECT(904,632), "S20644C12");
    check_base_class_offset(lv, (S20644C6*)(S20644C5*)(S20644C8*)(S20644C14*), ABISELECT(896,628), "S20644C12");
    check_base_class_offset(lv, (S20644C5*)(S20644C8*)(S20644C14*), ABISELECT(896,628), "S20644C12");
    check_base_class_offset(lv, (S20644C8*)(S20644C14*), ABISELECT(752,524), "S20644C12");
    /*is_ambiguous_... S20644C14::S20644C9 */ AMB_check_base_class_offset(lv, (S20644C9*)(S20644C14*), ABISELECT(1312,956), "S20644C12");
    /*is_ambiguous_... S20644C14::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*)(S20644C14*), ABISELECT(1464,1064), "S20644C12");
    /*is_ambiguous_... S20644C14::S20644C5 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C5*)(S20644C14*), ABISELECT(1456,1060), "S20644C12");
    /*is_ambiguous_... S20644C14::S20644C5 */ AMB_check_base_class_offset(lv, (S20644C5*)(S20644C14*), ABISELECT(1456,1060), "S20644C12");
    check_base_class_offset(lv, (S20644C14*), ABISELECT(752,524), "S20644C12");
    test_class_info(&lv, &cd_S20644C12);
    dp->~S20644C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20644C12(Test_S20644C12, "S20644C12", ABISELECT(1680,1232));

#else // __cplusplus

extern void _ZN9S20644C12C1Ev();
extern void _ZN9S20644C12D2Ev();
Name_Map name_map_S20644C12[] = {
  NSPAIR(_ZN9S20644C12C1Ev),
  NSPAIR(_ZN9S20644C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20644C13;
extern VTBL_ENTRY _ZTI9S20644C13[];
extern  VTBL_ENTRY _ZTV9S20644C13[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C9;
extern VTBL_ENTRY _ZTI8S20644C9[];
extern  VTBL_ENTRY _ZTV8S20644C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
extern Class_Descriptor cd_S20644C8;
extern VTBL_ENTRY _ZTI8S20644C8[];
extern  VTBL_ENTRY _ZTV8S20644C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C8[];
extern Class_Descriptor cd_S20644C9;
extern VTBL_ENTRY _ZTI8S20644C9[];
extern  VTBL_ENTRY _ZTV8S20644C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
extern Class_Descriptor cd_S20644C14;
extern VTBL_ENTRY _ZTI9S20644C14[];
extern  VTBL_ENTRY _ZTV9S20644C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20644C14[];
static Base_Class bases_S20644C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20644C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3216C8_nt,    ABISELECT(616,416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C6,    ABISELECT(608,412), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3216C8_nt,    ABISELECT(1616,1188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C5,    ABISELECT(608,412), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(1632,1196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20644C6,    ABISELECT(1624,1192), //bcp->offset
    37, //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
    7, //immediately_derived
  0, 1},
  {&cd_S20644C9,    ABISELECT(752,524), //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
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(904,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
    9, //immediately_derived
  0, 0},
  {&cd_S20644C6,    ABISELECT(896,628), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20644C5,    ABISELECT(896,628), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20644C8,    ABISELECT(752,524), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20644C9,    ABISELECT(1312,956), //bcp->offset
    26, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1464,1064), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C6,    ABISELECT(1456,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20644C5,    ABISELECT(1456,1060), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20644C14,    ABISELECT(752,524), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20644C12[];
extern void _ZN9S20644C133v12Ev();
extern void _ZN9S20644C12D1Ev();
extern void _ZN9S20644C12D0Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
extern void _ZN9S20644C143v13Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY vtc_S20644C12[] = {
  ABISELECT(1624,1192),
  ABISELECT(1616,1188),
  0,
  (VTBL_ENTRY)&(_ZTI9S20644C12[0]),
  (VTBL_ENTRY)&_ZN9S20644C133v12Ev,
  (VTBL_ENTRY)&_ZN9S20644C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20644C12D0Ev,
  ABISELECT(1008,776),
  ABISELECT(-608,-412),
  (VTBL_ENTRY)&(_ZTI9S20644C12[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  ABISELECT(864,664),
  ABISELECT(872,668),
  ABISELECT(-752,-524),
  (VTBL_ENTRY)&(_ZTI9S20644C12[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
  (VTBL_ENTRY)&_ZN9S20644C143v13Ev,
  ABISELECT(720,560),
  ABISELECT(-896,-628),
  (VTBL_ENTRY)&(_ZTI9S20644C12[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  ABISELECT(304,232),
  ABISELECT(312,236),
  ABISELECT(-1312,-956),
  (VTBL_ENTRY)&(_ZTI9S20644C12[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  ABISELECT(160,128),
  ABISELECT(-1456,-1060),
  (VTBL_ENTRY)&(_ZTI9S20644C12[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  0,
  0,
  0,
  ABISELECT(-1624,-1192),
  (VTBL_ENTRY)&(_ZTI9S20644C12[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern VTBL_ENTRY _ZTV9S20644C12[];
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__9S20644C12[] = {
  ABISELECT(1008,776),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
extern void _ZN9S20644C143v13Ev();
static  VTBL_ENTRY _tg__ZTV9S20644C14__9S20644C12[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI9S20644C14[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
  (VTBL_ENTRY)&_ZN9S20644C143v13Ev,
};
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C89S20644C14__9S20644C12[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C98S20644C89S20644C14__9S20644C12[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C98S20644C89S20644C14__9S20644C12[] = {
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C89S20644C14__A1__9S20644C12[] = {
  ABISELECT(720,560),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C89S20644C14__9S20644C12[] = {
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__8S20644C89S20644C14__9S20644C12[] = {
  ABISELECT(720,560),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C99S20644C14__A1__9S20644C12[] = {
  ABISELECT(304,232),
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C99S20644C14__A1__9S20644C12[] = {
  0,
  0,
  0,
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C59S20644C14__A2__9S20644C12[] = {
  ABISELECT(160,128),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__9S20644C14__9S20644C12[] = {
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI9S20644C14[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C8__9S20644C14__9S20644C12[] = {
  ABISELECT(720,560),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI9S20644C14[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C9__A1__9S20644C14__9S20644C12[] = {
  ABISELECT(304,232),
  ABISELECT(312,236),
  ABISELECT(-560,-432),
  (VTBL_ENTRY)&(_ZTI9S20644C14[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__A1__9S20644C14__9S20644C12[] = {
  ABISELECT(160,128),
  ABISELECT(-704,-536),
  (VTBL_ENTRY)&(_ZTI9S20644C14[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
static  VTT_ENTRY vtt_S20644C12[] = {
  {&(_ZTV9S20644C12[4]),  4,45},
  {&(_tg__ZTV8S20644C5__9S20644C12[3]),  3,6},
  {&(_tg__ZTV9S20644C14__9S20644C12[4]),  4,7},
  {&(_tg__ZTV8S20644C89S20644C14__9S20644C12[4]),  4,6},
  {&(_tg__ZTV8S20644C98S20644C89S20644C14__9S20644C12[4]),  4,5},
  {&(_tg__ZTV8S20644C6__8S20644C98S20644C89S20644C14__9S20644C12[5]),  5,8},
  {&(_tg__ZTV8S20644C58S20644C89S20644C14__A1__9S20644C12[3]),  3,6},
  {&(_tg__ZTV8S20644C6__8S20644C89S20644C14__9S20644C12[5]),  5,8},
  {&(_tg__ZTV8S20644C5__8S20644C89S20644C14__9S20644C12[3]),  3,6},
  {&(_tg__ZTV8S20644C99S20644C14__A1__9S20644C12[4]),  4,5},
  {&(_tg__ZTV8S20644C6__8S20644C99S20644C14__A1__9S20644C12[5]),  5,8},
  {&(_tg__ZTV8S20644C59S20644C14__A2__9S20644C12[3]),  3,6},
  {&(_tg__ZTV8S20644C6__9S20644C14__9S20644C12[5]),  5,8},
  {&(_tg__ZTV8S20644C58S20644C8__9S20644C14__9S20644C12[3]),  3,6},
  {&(_tg__ZTV8S20644C9__A1__9S20644C14__9S20644C12[4]),  4,5},
  {&(_tg__ZTV8S20644C5__A1__9S20644C14__9S20644C12[3]),  3,6},
  {&(_ZTV9S20644C12[10]),  10,45},
  {&(_ZTV9S20644C12[17]),  17,45},
  {&(_ZTV9S20644C12[42]),  42,45},
  {&(_ZTV9S20644C12[23]),  23,45},
  {&(_ZTV9S20644C12[30]),  30,45},
  {&(_ZTV9S20644C12[34]),  34,45},
};
extern VTBL_ENTRY _ZTI9S20644C12[];
extern  VTBL_ENTRY _ZTV9S20644C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20644C12[];
Class_Descriptor cd_S20644C12 = {  "S20644C12", // class name
  bases_S20644C12, 17,
  &(vtc_S20644C12[0]), // expected_vtbl_contents
  &(vtt_S20644C12[0]), // expected_vtt_contents
  ABISELECT(1680,1232), // object size
  NSPAIRA(_ZTI9S20644C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20644C12),45, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20644C12),22, //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

union  S20644C19  {
  __tsi64 s20644c19f0:3;
  int s20644c19f1;
  int s20644c19f2;
  int s20644c19f3;
  long double s20644c19f4[8];
  void *s20644c19f5;
  char s20644c19f6[5];
  long double s20644c19f7;
  char s20644c19f8[4];
  int s20644c19f9;
  void *s20644c19f10;
  char s20644c19f11[4];
  void *s20644c19f12;
  void  mf20644c19(); // _ZN9S20644C1910mf20644c19Ev
};
//SIG(1 S20644C19) U1{ m FL:3 Fi Fi Fi FD[8] Fp Fc[5] FD Fc[4] Fi Fp Fc[4] Fp}

#endif // __cplusplus
#ifdef __cplusplus

struct  S20644C18  {
  char s20644c18f0[2];
  int s20644c18f1;
  __tsi64 s20644c18f2;
  void *s20644c18f3[7];
  ::S20644C19 s20644c18f4[4];
  ::S20644C11 s20644c18f5;
  void  mf20644c18(); // _ZN9S20644C1810mf20644c18Ev
  virtual  ~S20644C18(); // _ZN9S20644C18D1Ev
  S20644C18(); // tgen
};
//SIG(-1 S20644C18) C1{ vd m Fc[2] Fi FL Fp[7] FU2{ m FL:3 Fi Fi Fi FD[8] Fp Fc[5] FD Fc[4] Fi Fp Fc[4] Fp}[4] FC3{ VBC4{ m Fi} VBC5{ BC4 v1 v2 v3 FC4[3] FC4[2] Fp Fs FC4} VBC6{ BC5 VBC4 FD FL FC5 Fp Fs[3]} Fp[2] Fi FC6[8] FD[9]}}


void  S20644C18 ::mf20644c18(){}
 S20644C18 ::~S20644C18(){ note_dtor("S20644C18", this);}
S20644C18 ::S20644C18(){ note_ctor("S20644C18", this);} // tgen

static void Test_S20644C18()
{
  extern Class_Descriptor cd_S20644C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(134,411)];
    init_test(&cd_S20644C18, buf);
    S20644C18 *dp, &lv = *(dp=new (buf) S20644C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2128,1640), "sizeof(S20644C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20644C18)");
    check_field_offset(lv, s20644c18f0, ABISELECT(8,4), "S20644C18.s20644c18f0");
    check_field_offset(lv, s20644c18f1, ABISELECT(12,8), "S20644C18.s20644c18f1");
    check_field_offset(lv, s20644c18f2, ABISELECT(16,12), "S20644C18.s20644c18f2");
    check_field_offset(lv, s20644c18f3, ABISELECT(24,20), "S20644C18.s20644c18f3");
    check_field_offset(lv, s20644c18f4, ABISELECT(80,48), "S20644C18.s20644c18f4");
    check_field_offset(lv, s20644c18f5, ABISELECT(592,432), "S20644C18.s20644c18f5");
    test_class_info(&lv, &cd_S20644C18);
    dp->~S20644C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20644C18(Test_S20644C18, "S20644C18", ABISELECT(2128,1640));

#else // __cplusplus

extern void _ZN9S20644C18C1Ev();
extern void _ZN9S20644C18D1Ev();
Name_Map name_map_S20644C18[] = {
  NSPAIR(_ZN9S20644C18C1Ev),
  NSPAIR(_ZN9S20644C18D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S20644C18[];
extern void _ZN9S20644C18D1Ev();
extern void _ZN9S20644C18D0Ev();
static  VTBL_ENTRY vtc_S20644C18[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20644C18[0]),
  (VTBL_ENTRY)&_ZN9S20644C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20644C18D0Ev,
};
extern VTBL_ENTRY _ZTI9S20644C18[];
extern  VTBL_ENTRY _ZTV9S20644C18[];
Class_Descriptor cd_S20644C18 = {  "S20644C18", // class name
  0,0,//no base classes
  &(vtc_S20644C18[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(2128,1640), // object size
  NSPAIRA(_ZTI9S20644C18),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S20644C18),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  S20644C17  : S20644C5 , virtual S20644C10 , S20644C8 , S20644C14 {
  int s20644c17f0;
  char s20644c17f1[2];
  int s20644c17f2;
  __tsi64 s20644c17f3;
  ::S20643C15_nt s20644c17f4;
  void *s20644c17f5[8];
  short s20644c17f6[5];
  __tsi64 s20644c17f7;
  ::S20644C18 s20644c17f8;
  virtual  ~S20644C17(); // _ZN9S20644C17D2Ev
  S20644C17(); // tgen
};
//SIG(-1 S20644C17) C1{ BC2{ BC3{ BC4{ m Fi} v1 v2 v3 FC4[3] FC4[2] Fp Fs FC4} VBC4 FD FL FC3 Fp Fs[3]} VBC5{ BC6{ VBC4 VBC3 VBC2 Fp[2] Fi FC2[8] FD[9]} BC4 VBC7{ VBC3 VBC4 BC8{ VBC3 VBC4 v4 FC3 FD Fp[2] FC3} BC2 v5 Fp[2] Fl Fi FC3[5]} BC9{ BC3 vd v6 Fp[7] Fi[2] FL Fi} vd v7 Fi Fp Fi} BC7 BC10{ VBC4 BC7 BC8 BC2 v8 Fi FC11{} Fp[2]} vd Fi Fc[2] Fi FL FC11 Fp[8] Fs[5] FL FC12{ vd m Fc[2] Fi FL Fp[7] FU13{ m FL:3 Fi Fi Fi FD[8] Fp Fc[5] FD Fc[4] Fi Fp Fc[4] Fp}[4] FC6}}


 S20644C17 ::~S20644C17(){ note_dtor("S20644C17", this);}
S20644C17 ::S20644C17(){ note_ctor("S20644C17", this);} // tgen

static void Test_S20644C17()
{
  extern Class_Descriptor cd_S20644C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(381,1168)];
    init_test(&cd_S20644C17, buf);
    S20644C17 *dp, &lv = *(dp=new (buf) S20644C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(6080,4668), "sizeof(S20644C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20644C17)");
    /*is_ambiguous_... S20644C17::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*), ABISELECT(8,4), "S20644C17");
    /*is_ambiguous_... S20644C17::S20644C5 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C5*), 0, "S20644C17");
    /*is_ambiguous_... S20644C17::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*), ABISELECT(3824,2924), "S20644C17");
    /*is_ambiguous_... S20644C11::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C11*)(S20644C10*), ABISELECT(3824,2924), "S20644C17");
    /*is_ambiguous_... S20644C17::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*), ABISELECT(3824,2924), "S20644C17");
    /*is_ambiguous_... S20644C17::S20644C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C8*), ABISELECT(3824,2924), "S20644C17");
    /*is_ambiguous_... S20644C17::S20644C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C9*)(S20644C8*), ABISELECT(3824,2924), "S20644C17");
    /*is_ambiguous_... S20644C17::S20644C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*)(S20644C8*), ABISELECT(3824,2924), "S20644C17");
    /*is_ambiguous_... S20644C17::S20644C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C8*), ABISELECT(3824,2924), "S20644C17");
    /*is_ambiguous_... S20644C17::S20644C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C9*)(S20644C8*), ABISELECT(3824,2924), "S20644C17");
    /*is_ambiguous_... S20644C17::S20644C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*)(S20644C8*), ABISELECT(3824,2924), "S20644C17");
    /*is_ambiguous_... S20644C14::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C14*), ABISELECT(3824,2924), "S20644C17");
    /*is_ambiguous_... S20644C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C8*)(S20644C14*), ABISELECT(3824,2924), "S20644C17");
    /*is_ambiguous_... S20644C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C9*)(S20644C8*)(S20644C14*), ABISELECT(3824,2924), "S20644C17");
    /*is_ambiguous_... S20644C5::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*)(S20644C8*)(S20644C14*), ABISELECT(3824,2924), "S20644C17");
    /*is_ambiguous_... S20644C14::S20644C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C9*)(S20644C14*), ABISELECT(3824,2924), "S20644C17");
    /*is_ambiguous_... S20644C14::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*)(S20644C14*), ABISELECT(3824,2924), "S20644C17");
    /*is_ambiguous_... S20644C17::S20644C5 */ AMB_check_base_class_offset(lv, (S20644C5*), 0, "S20644C17");
    /*is_ambiguous_... S20644C17::S20644C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*), ABISELECT(5328,4088), "S20644C17");
    /*is_ambiguous_... S20644C11::S20644C6 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C11*)(S20644C10*), ABISELECT(5320,4084), "S20644C17");
    /*is_ambiguous_... S20644C17::S20644C8 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C8*), ABISELECT(5320,4084), "S20644C17");
    /*is_ambiguous_... S20644C17::S20644C8 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C9*)(S20644C8*), ABISELECT(5320,4084), "S20644C17");
    /*is_ambiguous_... S20644C17::S20644C8 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C8*), ABISELECT(5320,4084), "S20644C17");
    /*is_ambiguous_... S20644C17::S20644C8 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C9*)(S20644C8*), ABISELECT(5320,4084), "S20644C17");
    /*is_ambiguous_... S20644C8::S20644C6 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C8*)(S20644C14*), ABISELECT(5320,4084), "S20644C17");
    check_base_class_offset(lv, (S20644C6*)(S20644C9*)(S20644C8*)(S20644C14*), ABISELECT(5320,4084), "S20644C17");
    /*is_ambiguous_... S20644C14::S20644C9 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C9*)(S20644C14*), ABISELECT(5320,4084), "S20644C17");
    /*is_ambiguous_... S20644C17::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*), ABISELECT(5384,4128), "S20644C17");
    /*is_ambiguous_... S20644C17::S20644C5 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C5*), ABISELECT(5376,4124), "S20644C17");
    check_base_class_offset(lv, (S20644C5*)(S20644C11*)(S20644C10*), ABISELECT(5376,4124), "S20644C17");
    check_base_class_offset(lv, (S20644C11*)(S20644C10*), ABISELECT(3840,2928), "S20644C17");
    /*is_ambiguous_... S20644C10::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C10*), ABISELECT(5168,3980), "S20644C17");
    /*is_ambiguous_... S20644C17::S20644C8 */ AMB_check_base_class_offset(lv, (S20644C9*)(S20644C8*), ABISELECT(5520,4236), "S20644C17");
    /*is_ambiguous_... S20644C17::S20644C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*)(S20644C8*), ABISELECT(5672,4344), "S20644C17");
    /*is_ambiguous_... S20644C17::S20644C8 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C5*)(S20644C8*), ABISELECT(5664,4340), "S20644C17");
    /*is_ambiguous_... S20644C17::S20644C8 */ AMB_check_base_class_offset(lv, (S20644C5*)(S20644C8*), ABISELECT(5664,4340), "S20644C17");
    check_base_class_offset(lv, (S20644C8*)(S20644C10*), ABISELECT(5520,4236), "S20644C17");
    check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C7*)(S20644C10*), ABISELECT(5184,3988), "S20644C17");
    check_base_class_offset(lv, (S20644C6*)(S20644C7*)(S20644C10*), ABISELECT(5176,3984), "S20644C17");
    check_base_class_offset(lv, (S20644C7*)(S20644C10*), ABISELECT(5176,3984), "S20644C17");
    check_base_class_offset(lv, (S20644C10*), ABISELECT(3840,2928), "S20644C17");
    /*is_ambiguous_... S20644C17::S20644C8 */ AMB_check_base_class_offset(lv, (S20644C9*)(S20644C8*), ABISELECT(144,112), "S20644C17");
    /*is_ambiguous_... S20644C17::S20644C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*)(S20644C8*), ABISELECT(296,220), "S20644C17");
    /*is_ambiguous_... S20644C17::S20644C8 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C5*)(S20644C8*), ABISELECT(288,216), "S20644C17");
    /*is_ambiguous_... S20644C17::S20644C8 */ AMB_check_base_class_offset(lv, (S20644C5*)(S20644C8*), ABISELECT(288,216), "S20644C17");
    /*is_ambiguous_... S20644C17::S20644C8 */ AMB_check_base_class_offset(lv, (S20644C8*), ABISELECT(144,112), "S20644C17");
    check_base_class_offset(lv, (S20644C9*)(S20644C8*)(S20644C14*), ABISELECT(704,544), "S20644C17");
    check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*)(S20644C8*)(S20644C14*), ABISELECT(856,652), "S20644C17");
    check_base_class_offset(lv, (S20644C6*)(S20644C5*)(S20644C8*)(S20644C14*), ABISELECT(848,648), "S20644C17");
    check_base_class_offset(lv, (S20644C5*)(S20644C8*)(S20644C14*), ABISELECT(848,648), "S20644C17");
    check_base_class_offset(lv, (S20644C8*)(S20644C14*), ABISELECT(704,544), "S20644C17");
    /*is_ambiguous_... S20644C14::S20644C9 */ AMB_check_base_class_offset(lv, (S20644C9*)(S20644C14*), ABISELECT(1264,976), "S20644C17");
    /*is_ambiguous_... S20644C14::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*)(S20644C14*), ABISELECT(1416,1084), "S20644C17");
    /*is_ambiguous_... S20644C14::S20644C5 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C5*)(S20644C14*), ABISELECT(1408,1080), "S20644C17");
    /*is_ambiguous_... S20644C14::S20644C5 */ AMB_check_base_class_offset(lv, (S20644C5*)(S20644C14*), ABISELECT(1408,1080), "S20644C17");
    check_base_class_offset(lv, (S20644C14*), ABISELECT(704,544), "S20644C17");
    check_field_offset(lv, s20644c17f0, ABISELECT(1568,1208), "S20644C17.s20644c17f0");
    check_field_offset(lv, s20644c17f1, ABISELECT(1572,1212), "S20644C17.s20644c17f1");
    check_field_offset(lv, s20644c17f2, ABISELECT(1576,1216), "S20644C17.s20644c17f2");
    check_field_offset(lv, s20644c17f3, ABISELECT(1584,1220), "S20644C17.s20644c17f3");
    check_field_offset(lv, s20644c17f4, ABISELECT(1592,1228), "S20644C17.s20644c17f4");
    check_field_offset(lv, s20644c17f5, ABISELECT(1600,1232), "S20644C17.s20644c17f5");
    check_field_offset(lv, s20644c17f6, ABISELECT(1664,1264), "S20644C17.s20644c17f6");
    check_field_offset(lv, s20644c17f7, ABISELECT(1680,1276), "S20644C17.s20644c17f7");
    check_field_offset(lv, s20644c17f8, ABISELECT(1696,1284), "S20644C17.s20644c17f8");
    test_class_info(&lv, &cd_S20644C17);
    dp->~S20644C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20644C17(Test_S20644C17, "S20644C17", ABISELECT(6080,4668));

#else // __cplusplus

extern void _ZN9S20644C17C1Ev();
extern void _ZN9S20644C17D2Ev();
Name_Map name_map_S20644C17[] = {
  NSPAIR(_ZN9S20644C17C1Ev),
  NSPAIR(_ZN9S20644C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
extern Class_Descriptor cd_S20644C11;
extern VTBL_ENTRY _ZTI9S20644C11[];
extern  VTBL_ENTRY _ZTV9S20644C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20644C11[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C9;
extern VTBL_ENTRY _ZTI8S20644C9[];
extern  VTBL_ENTRY _ZTV8S20644C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
extern Class_Descriptor cd_S20644C8;
extern VTBL_ENTRY _ZTI8S20644C8[];
extern  VTBL_ENTRY _ZTV8S20644C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C7;
extern VTBL_ENTRY _ZTI8S20644C7[];
extern  VTBL_ENTRY _ZTV8S20644C7[];
extern Class_Descriptor cd_S20644C10;
extern VTBL_ENTRY _ZTI9S20644C10[];
extern  VTBL_ENTRY _ZTV9S20644C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20644C10[];
extern Class_Descriptor cd_S20644C9;
extern VTBL_ENTRY _ZTI8S20644C9[];
extern  VTBL_ENTRY _ZTV8S20644C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
extern Class_Descriptor cd_S20644C8;
extern VTBL_ENTRY _ZTI8S20644C8[];
extern  VTBL_ENTRY _ZTV8S20644C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C8[];
extern Class_Descriptor cd_S20644C9;
extern VTBL_ENTRY _ZTI8S20644C9[];
extern  VTBL_ENTRY _ZTV8S20644C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
extern Class_Descriptor cd_S20644C8;
extern VTBL_ENTRY _ZTI8S20644C8[];
extern  VTBL_ENTRY _ZTV8S20644C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C8[];
extern Class_Descriptor cd_S20644C9;
extern VTBL_ENTRY _ZTI8S20644C9[];
extern  VTBL_ENTRY _ZTV8S20644C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
extern Class_Descriptor cd_S20644C14;
extern VTBL_ENTRY _ZTI9S20644C14[];
extern  VTBL_ENTRY _ZTV9S20644C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20644C14[];
static Base_Class bases_S20644C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S20644C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3216C8_nt,    ABISELECT(3824,2924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C5,    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_S3216C8_nt,    ABISELECT(5328,4088), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20644C6,    ABISELECT(5320,4084), //bcp->offset
    71, //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
    9, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(5384,4128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C6,    ABISELECT(5376,4124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20644C5,    ABISELECT(5376,4124), //bcp->offset
    79, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20644C11,    ABISELECT(3840,2928), //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
    8, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(5168,3980), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C9,    ABISELECT(5520,4236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(5672,4344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C6,    ABISELECT(5664,4340), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20644C5,    ABISELECT(5664,4340), //bcp->offset
    99, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20644C8,    ABISELECT(5520,4236), //bcp->offset
    88, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(5184,3988), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C6,    ABISELECT(5176,3984), //bcp->offset
    -1, //bcp->virtual_function_table_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
    18, //immediately_derived
  0, 0},
  {&cd_S20644C7,    ABISELECT(5176,3984), //bcp->offset
    63, //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
    10, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20644C10,    ABISELECT(3840,2928), //bcp->offset
    48, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20644C9,    ABISELECT(144,112), //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
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    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
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20644C6,    ABISELECT(288,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
    15, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20644C5,    ABISELECT(288,216), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20644C8,    ABISELECT(144,112), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20644C9,    ABISELECT(704,544), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(856,652), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20644C6,    ABISELECT(848,648), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20644C5,    ABISELECT(848,648), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20644C8,    ABISELECT(704,544), //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
    21, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20644C9,    ABISELECT(1264,976), //bcp->offset
    37, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1416,1084), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S20644C6,    ABISELECT(1408,1080), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20644C5,    ABISELECT(1408,1080), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20644C14,    ABISELECT(704,544), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20644C17[];
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN9S20644C17D1Ev();
extern void _ZN9S20644C17D0Ev();
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
extern void _ZN9S20644C143v13Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void ABISELECT(_ZTv0_n56_N9S20644C17D1Ev,_ZTv0_n28_N9S20644C17D1Ev)();
extern void ABISELECT(_ZThn3840_N9S20644C17D1Ev,_ZThn2928_N9S20644C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20644C17D0Ev,_ZTv0_n28_N9S20644C17D0Ev)();
extern void ABISELECT(_ZThn3840_N9S20644C17D0Ev,_ZThn2928_N9S20644C17D0Ev)() __attribute__((weak));
extern void _ZN9S20644C102v9Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N9S20644C17D1Ev,_ZTvn1056_n28_N9S20644C17D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N9S20644C17D0Ev,_ZTvn1056_n28_N9S20644C17D0Ev)();
extern void _ZN8S20644C72v5Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY vtc_S20644C17[] = {
  ABISELECT(5520,4236),
  ABISELECT(5376,4124),
  ABISELECT(5320,4084),
  ABISELECT(3840,2928),
  ABISELECT(3824,2924),
  0,
  (VTBL_ENTRY)&(_ZTI9S20644C17[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  (VTBL_ENTRY)&_ZN9S20644C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20644C17D0Ev,
  ABISELECT(3680,2812),
  ABISELECT(5176,3972),
  ABISELECT(-144,-112),
  (VTBL_ENTRY)&(_ZTI9S20644C17[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
  ABISELECT(3536,2708),
  ABISELECT(-288,-216),
  (VTBL_ENTRY)&(_ZTI9S20644C17[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  ABISELECT(3120,2380),
  ABISELECT(4616,3540),
  ABISELECT(-704,-544),
  (VTBL_ENTRY)&(_ZTI9S20644C17[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
  (VTBL_ENTRY)&_ZN9S20644C143v13Ev,
  ABISELECT(2976,2276),
  ABISELECT(-848,-648),
  (VTBL_ENTRY)&(_ZTI9S20644C17[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  ABISELECT(2560,1948),
  ABISELECT(4056,3108),
  ABISELECT(-1264,-976),
  (VTBL_ENTRY)&(_ZTI9S20644C17[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  ABISELECT(2416,1844),
  ABISELECT(-1408,-1080),
  (VTBL_ENTRY)&(_ZTI9S20644C17[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-3840,-2928),
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-16,-4),
  ABISELECT(-3840,-2928),
  (VTBL_ENTRY)&(_ZTI9S20644C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20644C17D1Ev,_ZTv0_n28_N9S20644C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20644C17D0Ev,_ZTv0_n28_N9S20644C17D0Ev),
  (VTBL_ENTRY)&_ZN9S20644C102v9Ev,
  ABISELECT(-5176,-3984),
  (VTBL_ENTRY)&(_ZTI9S20644C17[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S20644C17D1Ev,_ZTvn1056_n28_N9S20644C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S20644C17D0Ev,_ZTvn1056_n28_N9S20644C17D0Ev),
  (VTBL_ENTRY)&_ZN8S20644C72v5Ev,
  0,
  0,
  0,
  ABISELECT(-5320,-4084),
  (VTBL_ENTRY)&(_ZTI9S20644C17[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  0,
  0,
  0,
  ABISELECT(-1552,-1200),
  ABISELECT(-5376,-4124),
  (VTBL_ENTRY)&(_ZTI9S20644C17[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1696,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-5520,-4236),
  (VTBL_ENTRY)&(_ZTI9S20644C17[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
  ABISELECT(-1840,-1416),
  ABISELECT(-5664,-4340),
  (VTBL_ENTRY)&(_ZTI9S20644C17[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern VTBL_ENTRY _ZTV9S20644C17[];
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__A__9S20644C17[] = {
  ABISELECT(3824,2924),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C8__A__9S20644C17[] = {
  ABISELECT(3680,2812),
  ABISELECT(5176,3972),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C98S20644C8__A1__9S20644C17[] = {
  ABISELECT(3680,2812),
  ABISELECT(5176,3972),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C98S20644C8__A1__9S20644C17[] = {
  0,
  0,
  0,
  ABISELECT(-5176,-3972),
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C8__A3__9S20644C17[] = {
  ABISELECT(3536,2708),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C8__A__9S20644C17[] = {
  0,
  0,
  0,
  ABISELECT(-5176,-3972),
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__8S20644C8__A__9S20644C17[] = {
  ABISELECT(3536,2708),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
extern void _ZN9S20644C143v13Ev();
static  VTBL_ENTRY _tg__ZTV9S20644C14__9S20644C17[] = {
  ABISELECT(3120,2380),
  ABISELECT(4616,3540),
  0,
  (VTBL_ENTRY)&(_ZTI9S20644C14[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
  (VTBL_ENTRY)&_ZN9S20644C143v13Ev,
};
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C89S20644C14__A2__9S20644C17[] = {
  ABISELECT(3120,2380),
  ABISELECT(4616,3540),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C98S20644C89S20644C14__A2__9S20644C17[] = {
  ABISELECT(3120,2380),
  ABISELECT(4616,3540),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C98S20644C89S20644C14__A2__9S20644C17[] = {
  0,
  0,
  0,
  ABISELECT(-4616,-3540),
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C89S20644C14__A4__9S20644C17[] = {
  ABISELECT(2976,2276),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C89S20644C14__A2__9S20644C17[] = {
  0,
  0,
  0,
  ABISELECT(-4616,-3540),
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__8S20644C89S20644C14__A2__9S20644C17[] = {
  ABISELECT(2976,2276),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C99S20644C14__A3__9S20644C17[] = {
  ABISELECT(2560,1948),
  ABISELECT(4056,3108),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C99S20644C14__A3__9S20644C17[] = {
  0,
  0,
  0,
  ABISELECT(-4056,-3108),
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C59S20644C14__A5__9S20644C17[] = {
  ABISELECT(2416,1844),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__9S20644C14__9S20644C17[] = {
  0,
  0,
  0,
  ABISELECT(-4616,-3540),
  (VTBL_ENTRY)&(_ZTI9S20644C14[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C8__9S20644C14__9S20644C17[] = {
  ABISELECT(2976,2276),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI9S20644C14[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C9__A1__9S20644C14__9S20644C17[] = {
  ABISELECT(2560,1948),
  ABISELECT(4056,3108),
  ABISELECT(-560,-432),
  (VTBL_ENTRY)&(_ZTI9S20644C14[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__A1__9S20644C14__9S20644C17[] = {
  ABISELECT(2416,1844),
  ABISELECT(-704,-536),
  (VTBL_ENTRY)&(_ZTI9S20644C14[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN9S20644C10D1Ev();
extern void _ZN9S20644C10D0Ev();
extern void _ZN9S20644C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20644C10__9S20644C17[] = {
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20644C10[0]),
  (VTBL_ENTRY)&_ZN9S20644C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20644C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20644C102v9Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20644C119S20644C10__9S20644C17[] = {
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20644C11[0]),
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__9S20644C119S20644C10__9S20644C17[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1156),
  (VTBL_ENTRY)&(_ZTI9S20644C11[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__9S20644C119S20644C10__9S20644C17[] = {
  0,
  0,
  0,
  ABISELECT(-1552,-1200),
  ABISELECT(-1536,-1196),
  (VTBL_ENTRY)&(_ZTI9S20644C11[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__9S20644C10__9S20644C17[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1156),
  (VTBL_ENTRY)&(_ZTI9S20644C10[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__9S20644C10__9S20644C17[] = {
  0,
  0,
  0,
  ABISELECT(-1552,-1200),
  ABISELECT(-1536,-1196),
  (VTBL_ENTRY)&(_ZTI9S20644C10[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C8__9S20644C10__9S20644C17[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1696,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-1680,-1308),
  (VTBL_ENTRY)&(_ZTI9S20644C10[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C8__A1__9S20644C10__9S20644C17[] = {
  ABISELECT(-1840,-1416),
  ABISELECT(-1824,-1412),
  (VTBL_ENTRY)&(_ZTI9S20644C10[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__A1__9S20644C17[] = {
  ABISELECT(-1552,-1200),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C8__9S20644C17[] = {
  ABISELECT(-1696,-1312),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C98S20644C8__9S20644C17[] = {
  ABISELECT(-1696,-1312),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C98S20644C8__9S20644C17[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C8__A2__9S20644C17[] = {
  ABISELECT(-1840,-1416),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C8__9S20644C17[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__8S20644C8__9S20644C17[] = {
  ABISELECT(-1840,-1416),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
static  VTT_ENTRY vtt_S20644C17[] = {
  {&(_ZTV9S20644C17[7]),  7,105},
  {&(_tg__ZTV8S20644C5__A__9S20644C17[3]),  3,6},
  {&(_tg__ZTV8S20644C8__A__9S20644C17[4]),  4,6},
  {&(_tg__ZTV8S20644C98S20644C8__A1__9S20644C17[4]),  4,5},
  {&(_tg__ZTV8S20644C6__8S20644C98S20644C8__A1__9S20644C17[5]),  5,8},
  {&(_tg__ZTV8S20644C58S20644C8__A3__9S20644C17[3]),  3,6},
  {&(_tg__ZTV8S20644C6__8S20644C8__A__9S20644C17[5]),  5,8},
  {&(_tg__ZTV8S20644C5__8S20644C8__A__9S20644C17[3]),  3,6},
  {&(_tg__ZTV9S20644C14__9S20644C17[4]),  4,7},
  {&(_tg__ZTV8S20644C89S20644C14__A2__9S20644C17[4]),  4,6},
  {&(_tg__ZTV8S20644C98S20644C89S20644C14__A2__9S20644C17[4]),  4,5},
  {&(_tg__ZTV8S20644C6__8S20644C98S20644C89S20644C14__A2__9S20644C17[5]),  5,8},
  {&(_tg__ZTV8S20644C58S20644C89S20644C14__A4__9S20644C17[3]),  3,6},
  {&(_tg__ZTV8S20644C6__8S20644C89S20644C14__A2__9S20644C17[5]),  5,8},
  {&(_tg__ZTV8S20644C5__8S20644C89S20644C14__A2__9S20644C17[3]),  3,6},
  {&(_tg__ZTV8S20644C99S20644C14__A3__9S20644C17[4]),  4,5},
  {&(_tg__ZTV8S20644C6__8S20644C99S20644C14__A3__9S20644C17[5]),  5,8},
  {&(_tg__ZTV8S20644C59S20644C14__A5__9S20644C17[3]),  3,6},
  {&(_tg__ZTV8S20644C6__9S20644C14__9S20644C17[5]),  5,8},
  {&(_tg__ZTV8S20644C58S20644C8__9S20644C14__9S20644C17[3]),  3,6},
  {&(_tg__ZTV8S20644C9__A1__9S20644C14__9S20644C17[4]),  4,5},
  {&(_tg__ZTV8S20644C5__A1__9S20644C14__9S20644C17[3]),  3,6},
  {&(_ZTV9S20644C17[60]),  60,105},
  {&(_ZTV9S20644C17[76]),  76,105},
  {&(_ZTV9S20644C17[85]),  85,105},
  {&(_ZTV9S20644C17[97]),  97,105},
  {&(_ZTV9S20644C17[102]),  102,105},
  {&(_ZTV9S20644C17[65]),  65,105},
  {&(_ZTV9S20644C17[16]),  16,105},
  {&(_ZTV9S20644C17[21]),  21,105},
  {&(_ZTV9S20644C17[28]),  28,105},
  {&(_ZTV9S20644C17[34]),  34,105},
  {&(_ZTV9S20644C17[41]),  41,105},
  {&(_ZTV9S20644C17[45]),  45,105},
  {&(_tg__ZTV9S20644C10__9S20644C17[6]),  6,9},
  {&(_tg__ZTV9S20644C119S20644C10__9S20644C17[5]),  5,5},
  {&(_tg__ZTV8S20644C6__9S20644C119S20644C10__9S20644C17[5]),  5,8},
  {&(_tg__ZTV8S20644C5__9S20644C119S20644C10__9S20644C17[6]),  6,9},
  {&(_tg__ZTV8S20644C6__9S20644C10__9S20644C17[5]),  5,8},
  {&(_tg__ZTV8S20644C5__9S20644C10__9S20644C17[6]),  6,9},
  {&(_tg__ZTV8S20644C8__9S20644C10__9S20644C17[9]),  9,11},
  {&(_tg__ZTV8S20644C58S20644C8__A1__9S20644C10__9S20644C17[3]),  3,6},
  {&(_tg__ZTV8S20644C5__A1__9S20644C17[3]),  3,6},
  {&(_tg__ZTV8S20644C8__9S20644C17[4]),  4,6},
  {&(_tg__ZTV8S20644C98S20644C8__9S20644C17[4]),  4,5},
  {&(_tg__ZTV8S20644C6__8S20644C98S20644C8__9S20644C17[5]),  5,8},
  {&(_tg__ZTV8S20644C58S20644C8__A2__9S20644C17[3]),  3,6},
  {&(_tg__ZTV8S20644C6__8S20644C8__9S20644C17[5]),  5,8},
  {&(_tg__ZTV8S20644C5__8S20644C8__9S20644C17[3]),  3,6},
};
extern VTBL_ENTRY _ZTI9S20644C17[];
extern  VTBL_ENTRY _ZTV9S20644C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20644C17[];
static VTBL_ENTRY alt_thunk_names6[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20644C17D0Ev,_ZTv0_n28_N9S20644C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3840_N9S20644C17D0Ev,_ZThn2928_N9S20644C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20644C17D1Ev,_ZTv0_n28_N9S20644C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3840_N9S20644C17D1Ev,_ZThn2928_N9S20644C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20644C17 = {  "S20644C17", // class name
  bases_S20644C17, 35,
  &(vtc_S20644C17[0]), // expected_vtbl_contents
  &(vtt_S20644C17[0]), // expected_vtt_contents
  ABISELECT(6080,4668), // object size
  NSPAIRA(_ZTI9S20644C17),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20644C17),105, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20644C17),49, //virtual table table var
  25, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names6,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20644C16  : virtual S20644C5 , S20644C10 , S20644C17 , S20644C9 {
  char s20644c16f0;
  int s20644c16f1;
  int s20644c16f2;
  int s20644c16f3;
  int s20644c16f4;
  void *s20644c16f5;
  char s20644c16f6[4];
  int s20644c16f7;
  virtual  ~S20644C16(); // _ZN9S20644C16D2Ev
  S20644C16(); // tgen
};
//SIG(-1 S20644C16) C1{ VBC2{ BC3{ BC4{ m Fi} v1 v2 v3 FC4[3] FC4[2] Fp Fs FC4} VBC4 FD FL FC3 Fp Fs[3]} BC5{ BC6{ VBC4 VBC3 VBC2 Fp[2] Fi FC2[8] FD[9]} BC4 VBC7{ VBC3 VBC4 BC8{ VBC3 VBC4 v4 FC3 FD Fp[2] FC3} BC2 v5 Fp[2] Fl Fi FC3[5]} BC9{ BC3 vd v6 Fp[7] Fi[2] FL Fi} vd v7 Fi Fp Fi} BC10{ BC2 VBC5 BC7 BC11{ VBC4 BC7 BC8 BC2 v8 Fi FC12{} Fp[2]} vd Fi Fc[2] Fi FL FC12 Fp[8] Fs[5] FL FC13{ vd m Fc[2] Fi FL Fp[7] FU14{ m FL:3 Fi Fi Fi FD[8] Fp Fc[5] FD Fc[4] Fi Fp Fc[4] Fp}[4] FC6}} BC8 vd Fc Fi Fi Fi Fi Fp Fc[4] Fi}


 S20644C16 ::~S20644C16(){ note_dtor("S20644C16", this);}
S20644C16 ::S20644C16(){ note_ctor("S20644C16", this);} // tgen

static void Test_S20644C16()
{
  extern Class_Descriptor cd_S20644C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(485,1491)];
    init_test(&cd_S20644C16, buf);
    S20644C16 *dp, &lv = *(dp=new (buf) S20644C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(7744,5960), "sizeof(S20644C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20644C16)");
    /*is_ambiguous_... S20644C16::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*), ABISELECT(5512,4220), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C5 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C5*), ABISELECT(5504,4216), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*), ABISELECT(5640,4328), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C10 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C11*)(S20644C10*), ABISELECT(5640,4328), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C8*), ABISELECT(5640,4328), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C9*)(S20644C8*), ABISELECT(5640,4328), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*)(S20644C8*), ABISELECT(5640,4328), "S20644C16");
    /*is_ambiguous_... S20644C17::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*)(S20644C17*), ABISELECT(5640,4328), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C10 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C11*)(S20644C10*), ABISELECT(5640,4328), "S20644C16");
    /*is_ambiguous_... S20644C17::S20644C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C8*)(S20644C17*), ABISELECT(5640,4328), "S20644C16");
    /*is_ambiguous_... S20644C17::S20644C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C9*)(S20644C8*)(S20644C17*), ABISELECT(5640,4328), "S20644C16");
    /*is_ambiguous_... S20644C17::S20644C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*)(S20644C8*)(S20644C17*), ABISELECT(5640,4328), "S20644C16");
    /*is_ambiguous_... S20644C14::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C14*)(S20644C17*), ABISELECT(5640,4328), "S20644C16");
    /*is_ambiguous_... S20644C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C8*)(S20644C14*)(S20644C17*), ABISELECT(5640,4328), "S20644C16");
    /*is_ambiguous_... S20644C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C9*)(S20644C8*)(S20644C14*)(S20644C17*), ABISELECT(5640,4328), "S20644C16");
    /*is_ambiguous_... S20644C5::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*)(S20644C8*)(S20644C14*)(S20644C17*), ABISELECT(5640,4328), "S20644C16");
    /*is_ambiguous_... S20644C14::S20644C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C9*)(S20644C14*)(S20644C17*), ABISELECT(5640,4328), "S20644C16");
    /*is_ambiguous_... S20644C14::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*)(S20644C14*)(S20644C17*), ABISELECT(5640,4328), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C9*), ABISELECT(5640,4328), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C5 */ AMB_check_base_class_offset(lv, (S20644C5*), ABISELECT(5504,4216), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C10 */ AMB_check_base_class_offset(lv, (S20644C5*)(S20644C11*)(S20644C10*), ABISELECT(5504,4216), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C10 */ AMB_check_base_class_offset(lv, (S20644C5*)(S20644C11*)(S20644C10*), ABISELECT(5504,4216), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*), ABISELECT(5656,4336), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C10 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C11*)(S20644C10*), ABISELECT(5648,4332), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C8 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C8*), ABISELECT(5648,4332), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C8 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C9*)(S20644C8*), ABISELECT(5648,4332), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C10 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C11*)(S20644C10*), ABISELECT(5648,4332), "S20644C16");
    /*is_ambiguous_... S20644C17::S20644C8 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C8*)(S20644C17*), ABISELECT(5648,4332), "S20644C16");
    /*is_ambiguous_... S20644C17::S20644C8 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C9*)(S20644C8*)(S20644C17*), ABISELECT(5648,4332), "S20644C16");
    /*is_ambiguous_... S20644C8::S20644C6 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C8*)(S20644C14*)(S20644C17*), ABISELECT(5648,4332), "S20644C16");
    check_base_class_offset(lv, (S20644C6*)(S20644C9*)(S20644C8*)(S20644C14*)(S20644C17*), ABISELECT(5648,4332), "S20644C16");
    /*is_ambiguous_... S20644C14::S20644C9 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C9*)(S20644C14*)(S20644C17*), ABISELECT(5648,4332), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C9 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C9*), ABISELECT(5648,4332), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C10 */ AMB_check_base_class_offset(lv, (S20644C11*)(S20644C10*), 0, "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C10 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C10*), ABISELECT(1328,1052), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C8 */ AMB_check_base_class_offset(lv, (S20644C9*)(S20644C8*), ABISELECT(5696,4372), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*)(S20644C8*), ABISELECT(5848,4480), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C8 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C5*)(S20644C8*), ABISELECT(5840,4476), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C8 */ AMB_check_base_class_offset(lv, (S20644C5*)(S20644C8*), ABISELECT(5840,4476), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C10 */ AMB_check_base_class_offset(lv, (S20644C8*)(S20644C10*), ABISELECT(5696,4372), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C10 */ AMB_check_base_class_offset(lv, (S20644C8*)(S20644C10*), ABISELECT(5696,4372), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C10 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C7*)(S20644C10*), ABISELECT(1344,1060), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C10 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C7*)(S20644C10*), ABISELECT(1336,1056), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C10 */ AMB_check_base_class_offset(lv, (S20644C7*)(S20644C10*), ABISELECT(1336,1056), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C10 */ AMB_check_base_class_offset(lv, (S20644C10*), 0, "S20644C16");
    /*is_ambiguous_... S20644C17::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*)(S20644C17*), ABISELECT(1496,1160), "S20644C16");
    /*is_ambiguous_... S20644C17::S20644C5 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C5*)(S20644C17*), ABISELECT(1488,1156), "S20644C16");
    /*is_ambiguous_... S20644C17::S20644C5 */ AMB_check_base_class_offset(lv, (S20644C5*)(S20644C17*), ABISELECT(1488,1156), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C10 */ AMB_check_base_class_offset(lv, (S20644C11*)(S20644C10*), ABISELECT(6256,4804), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C10 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C10*), ABISELECT(7584,5856), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C10 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C7*)(S20644C10*), ABISELECT(7600,5864), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C10 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C7*)(S20644C10*), ABISELECT(7592,5860), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C10 */ AMB_check_base_class_offset(lv, (S20644C7*)(S20644C10*), ABISELECT(7592,5860), "S20644C16");
    check_base_class_offset(lv, (S20644C10*)(S20644C17*), ABISELECT(6256,4804), "S20644C16");
    /*is_ambiguous_... S20644C17::S20644C8 */ AMB_check_base_class_offset(lv, (S20644C9*)(S20644C8*)(S20644C17*), ABISELECT(1632,1268), "S20644C16");
    /*is_ambiguous_... S20644C17::S20644C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*)(S20644C8*)(S20644C17*), ABISELECT(1784,1376), "S20644C16");
    /*is_ambiguous_... S20644C17::S20644C8 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C5*)(S20644C8*)(S20644C17*), ABISELECT(1776,1372), "S20644C16");
    /*is_ambiguous_... S20644C17::S20644C8 */ AMB_check_base_class_offset(lv, (S20644C5*)(S20644C8*)(S20644C17*), ABISELECT(1776,1372), "S20644C16");
    /*is_ambiguous_... S20644C17::S20644C8 */ AMB_check_base_class_offset(lv, (S20644C8*)(S20644C17*), ABISELECT(1632,1268), "S20644C16");
    check_base_class_offset(lv, (S20644C9*)(S20644C8*)(S20644C14*)(S20644C17*), ABISELECT(2192,1700), "S20644C16");
    check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*)(S20644C8*)(S20644C14*)(S20644C17*), ABISELECT(2344,1808), "S20644C16");
    check_base_class_offset(lv, (S20644C6*)(S20644C5*)(S20644C8*)(S20644C14*)(S20644C17*), ABISELECT(2336,1804), "S20644C16");
    check_base_class_offset(lv, (S20644C5*)(S20644C8*)(S20644C14*)(S20644C17*), ABISELECT(2336,1804), "S20644C16");
    check_base_class_offset(lv, (S20644C8*)(S20644C14*)(S20644C17*), ABISELECT(2192,1700), "S20644C16");
    /*is_ambiguous_... S20644C14::S20644C9 */ AMB_check_base_class_offset(lv, (S20644C9*)(S20644C14*)(S20644C17*), ABISELECT(2752,2132), "S20644C16");
    /*is_ambiguous_... S20644C14::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*)(S20644C14*)(S20644C17*), ABISELECT(2904,2240), "S20644C16");
    /*is_ambiguous_... S20644C14::S20644C5 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C5*)(S20644C14*)(S20644C17*), ABISELECT(2896,2236), "S20644C16");
    /*is_ambiguous_... S20644C14::S20644C5 */ AMB_check_base_class_offset(lv, (S20644C5*)(S20644C14*)(S20644C17*), ABISELECT(2896,2236), "S20644C16");
    check_base_class_offset(lv, (S20644C14*)(S20644C17*), ABISELECT(2192,1700), "S20644C16");
    check_base_class_offset(lv, (S20644C17*), ABISELECT(1488,1156), "S20644C16");
    /*is_ambiguous_... S20644C16::S20644C9 */ AMB_check_base_class_offset(lv, (S20644C9*), ABISELECT(5312,4080), "S20644C16");
    check_field_offset(lv, s20644c16f0, ABISELECT(5456,4184), "S20644C16.s20644c16f0");
    check_field_offset(lv, s20644c16f1, ABISELECT(5460,4188), "S20644C16.s20644c16f1");
    check_field_offset(lv, s20644c16f2, ABISELECT(5464,4192), "S20644C16.s20644c16f2");
    check_field_offset(lv, s20644c16f3, ABISELECT(5468,4196), "S20644C16.s20644c16f3");
    check_field_offset(lv, s20644c16f4, ABISELECT(5472,4200), "S20644C16.s20644c16f4");
    check_field_offset(lv, s20644c16f5, ABISELECT(5480,4204), "S20644C16.s20644c16f5");
    check_field_offset(lv, s20644c16f6, ABISELECT(5488,4208), "S20644C16.s20644c16f6");
    check_field_offset(lv, s20644c16f7, ABISELECT(5492,4212), "S20644C16.s20644c16f7");
    test_class_info(&lv, &cd_S20644C16);
    dp->~S20644C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20644C16(Test_S20644C16, "S20644C16", ABISELECT(7744,5960));

#else // __cplusplus

extern void _ZN9S20644C16C1Ev();
extern void _ZN9S20644C16D2Ev();
Name_Map name_map_S20644C16[] = {
  NSPAIR(_ZN9S20644C16C1Ev),
  NSPAIR(_ZN9S20644C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C11;
extern VTBL_ENTRY _ZTI9S20644C11[];
extern  VTBL_ENTRY _ZTV9S20644C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20644C11[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C9;
extern VTBL_ENTRY _ZTI8S20644C9[];
extern  VTBL_ENTRY _ZTV8S20644C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
extern Class_Descriptor cd_S20644C8;
extern VTBL_ENTRY _ZTI8S20644C8[];
extern  VTBL_ENTRY _ZTV8S20644C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C7;
extern VTBL_ENTRY _ZTI8S20644C7[];
extern  VTBL_ENTRY _ZTV8S20644C7[];
extern Class_Descriptor cd_S20644C10;
extern VTBL_ENTRY _ZTI9S20644C10[];
extern  VTBL_ENTRY _ZTV9S20644C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20644C10[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
extern Class_Descriptor cd_S20644C11;
extern VTBL_ENTRY _ZTI9S20644C11[];
extern  VTBL_ENTRY _ZTV9S20644C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20644C11[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C7;
extern VTBL_ENTRY _ZTI8S20644C7[];
extern  VTBL_ENTRY _ZTV8S20644C7[];
extern Class_Descriptor cd_S20644C10;
extern VTBL_ENTRY _ZTI9S20644C10[];
extern  VTBL_ENTRY _ZTV9S20644C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20644C10[];
extern Class_Descriptor cd_S20644C9;
extern VTBL_ENTRY _ZTI8S20644C9[];
extern  VTBL_ENTRY _ZTV8S20644C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
extern Class_Descriptor cd_S20644C8;
extern VTBL_ENTRY _ZTI8S20644C8[];
extern  VTBL_ENTRY _ZTV8S20644C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C8[];
extern Class_Descriptor cd_S20644C9;
extern VTBL_ENTRY _ZTI8S20644C9[];
extern  VTBL_ENTRY _ZTV8S20644C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
extern Class_Descriptor cd_S20644C8;
extern VTBL_ENTRY _ZTI8S20644C8[];
extern  VTBL_ENTRY _ZTV8S20644C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C8[];
extern Class_Descriptor cd_S20644C9;
extern VTBL_ENTRY _ZTI8S20644C9[];
extern  VTBL_ENTRY _ZTV8S20644C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
extern Class_Descriptor cd_S20644C14;
extern VTBL_ENTRY _ZTI9S20644C14[];
extern  VTBL_ENTRY _ZTV9S20644C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20644C14[];
extern Class_Descriptor cd_S20644C17;
extern VTBL_ENTRY _ZTI9S20644C17[];
extern  VTBL_ENTRY _ZTV9S20644C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20644C17[];
extern Class_Descriptor cd_S20644C9;
extern VTBL_ENTRY _ZTI8S20644C9[];
extern  VTBL_ENTRY _ZTV8S20644C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C9[];
static Base_Class bases_S20644C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(5512,4220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20644C6,    ABISELECT(5504,4216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3216C8_nt,    ABISELECT(5640,4328), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C5,    ABISELECT(5504,4216), //bcp->offset
    71, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(5656,4336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20644C6,    ABISELECT(5648,4332), //bcp->offset
    80, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20644C11,    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
    12, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1328,1052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C9,    ABISELECT(5696,4372), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(5848,4480), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C6,    ABISELECT(5840,4476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20644C5,    ABISELECT(5840,4476), //bcp->offset
    99, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20644C8,    ABISELECT(5696,4372), //bcp->offset
    88, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1344,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20644C6,    ABISELECT(1336,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
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20644C7,    ABISELECT(1336,1056), //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
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20644C10,    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},
  {&cd_S3216C8_nt,    ABISELECT(1496,1160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20644C6,    ABISELECT(1488,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
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20644C5,    ABISELECT(1488,1156), //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
    17, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20644C11,    ABISELECT(6256,4804), //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
    8, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(7584,5856), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3216C8_nt,    ABISELECT(7600,5864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C6,    ABISELECT(7592,5860), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20644C7,    ABISELECT(7592,5860), //bcp->offset
    120, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20644C10,    ABISELECT(6256,4804), //bcp->offset
    105, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S20644C9,    ABISELECT(1632,1268), //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
    18, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1784,1376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C6,    ABISELECT(1776,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
    19, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20644C5,    ABISELECT(1776,1372), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20644C8,    ABISELECT(1632,1268), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20644C9,    ABISELECT(2192,1700), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(2344,1808), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C6,    ABISELECT(2336,1804), //bcp->offset
    -1, //bcp->virtual_function_table_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
    34, //immediately_derived
  0, 0},
  {&cd_S20644C5,    ABISELECT(2336,1804), //bcp->offset
    49, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20644C8,    ABISELECT(2192,1700), //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
    25, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20644C9,    ABISELECT(2752,2132), //bcp->offset
    55, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(2904,2240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S20644C6,    ABISELECT(2896,2236), //bcp->offset
    -1, //bcp->virtual_function_table_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
    39, //immediately_derived
  0, 0},
  {&cd_S20644C5,    ABISELECT(2896,2236), //bcp->offset
    60, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20644C14,    ABISELECT(2192,1700), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20644C17,    ABISELECT(1488,1156), //bcp->offset
    18, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20644C9,    ABISELECT(5312,4080), //bcp->offset
    66, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20644C16[];
extern void _ZN9S20644C16D1Ev();
extern void _ZN9S20644C16D0Ev();
extern void _ZN9S20644C102v9Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void ABISELECT(_ZThn1336_N9S20644C16D1Ev,_ZThn1056_N9S20644C16D1Ev)();
extern void ABISELECT(_ZThn1336_N9S20644C16D0Ev,_ZThn1056_N9S20644C16D0Ev)();
extern void _ZN8S20644C72v5Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void ABISELECT(_ZThn1488_N9S20644C16D1Ev,_ZThn1156_N9S20644C16D1Ev)();
extern void ABISELECT(_ZThn1488_N9S20644C16D0Ev,_ZThn1156_N9S20644C16D0Ev)();
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
extern void _ZN9S20644C143v13Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void ABISELECT(_ZTv0_n56_N9S20644C16D1Ev,_ZTv0_n28_N9S20644C16D1Ev)();
extern void ABISELECT(_ZThn6256_N9S20644C16D1Ev,_ZThn4804_N9S20644C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20644C16D0Ev,_ZTv0_n28_N9S20644C16D0Ev)();
extern void ABISELECT(_ZThn6256_N9S20644C16D0Ev,_ZThn4804_N9S20644C16D0Ev)() __attribute__((weak));
extern void _ZN9S20644C102v9Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N9S20644C16D1Ev,_ZTvn1056_n28_N9S20644C16D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N9S20644C16D0Ev,_ZTvn1056_n28_N9S20644C16D0Ev)();
extern void _ZN8S20644C72v5Ev();
static  VTBL_ENTRY vtc_S20644C16[] = {
  ABISELECT(6256,4804),
  ABISELECT(5696,4372),
  ABISELECT(5504,4216),
  ABISELECT(5648,4332),
  ABISELECT(5640,4328),
  0,
  (VTBL_ENTRY)&(_ZTI9S20644C16[0]),
  (VTBL_ENTRY)&_ZN9S20644C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20644C16D0Ev,
  (VTBL_ENTRY)&_ZN9S20644C102v9Ev,
  ABISELECT(-1336,-1056),
  (VTBL_ENTRY)&(_ZTI9S20644C16[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1336_N9S20644C16D1Ev,_ZThn1056_N9S20644C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1336_N9S20644C16D0Ev,_ZThn1056_N9S20644C16D0Ev),
  (VTBL_ENTRY)&_ZN8S20644C72v5Ev,
  ABISELECT(4208,3216),
  ABISELECT(4016,3060),
  ABISELECT(4160,3176),
  ABISELECT(4768,3648),
  ABISELECT(4152,3172),
  ABISELECT(-1488,-1156),
  (VTBL_ENTRY)&(_ZTI9S20644C16[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1488_N9S20644C16D1Ev,_ZThn1156_N9S20644C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1488_N9S20644C16D0Ev,_ZThn1156_N9S20644C16D0Ev),
  ABISELECT(4008,3060),
  ABISELECT(4016,3064),
  ABISELECT(-1632,-1268),
  (VTBL_ENTRY)&(_ZTI9S20644C16[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
  ABISELECT(3864,2956),
  ABISELECT(-1776,-1372),
  (VTBL_ENTRY)&(_ZTI9S20644C16[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  ABISELECT(3448,2628),
  ABISELECT(3456,2632),
  ABISELECT(-2192,-1700),
  (VTBL_ENTRY)&(_ZTI9S20644C16[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
  (VTBL_ENTRY)&_ZN9S20644C143v13Ev,
  ABISELECT(3304,2524),
  ABISELECT(-2336,-1804),
  (VTBL_ENTRY)&(_ZTI9S20644C16[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  ABISELECT(2888,2196),
  ABISELECT(2896,2200),
  ABISELECT(-2752,-2132),
  (VTBL_ENTRY)&(_ZTI9S20644C16[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  ABISELECT(2744,2092),
  ABISELECT(-2896,-2236),
  (VTBL_ENTRY)&(_ZTI9S20644C16[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  ABISELECT(328,248),
  ABISELECT(336,252),
  ABISELECT(-5312,-4080),
  (VTBL_ENTRY)&(_ZTI9S20644C16[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  0,
  0,
  0,
  ABISELECT(136,112),
  ABISELECT(-5504,-4216),
  (VTBL_ENTRY)&(_ZTI9S20644C16[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  0,
  0,
  0,
  ABISELECT(-5648,-4332),
  (VTBL_ENTRY)&(_ZTI9S20644C16[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-56,-44),
  ABISELECT(-48,-40),
  ABISELECT(-5696,-4372),
  (VTBL_ENTRY)&(_ZTI9S20644C16[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
  ABISELECT(-200,-148),
  ABISELECT(-5840,-4476),
  (VTBL_ENTRY)&(_ZTI9S20644C16[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-6256,-4804),
  ABISELECT(-560,-432),
  ABISELECT(-752,-588),
  ABISELECT(-608,-472),
  ABISELECT(-616,-476),
  ABISELECT(-6256,-4804),
  (VTBL_ENTRY)&(_ZTI9S20644C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20644C16D1Ev,_ZTv0_n28_N9S20644C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20644C16D0Ev,_ZTv0_n28_N9S20644C16D0Ev),
  (VTBL_ENTRY)&_ZN9S20644C102v9Ev,
  ABISELECT(-7592,-5860),
  (VTBL_ENTRY)&(_ZTI9S20644C16[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S20644C16D1Ev,_ZTvn1056_n28_N9S20644C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S20644C16D0Ev,_ZTvn1056_n28_N9S20644C16D0Ev),
  (VTBL_ENTRY)&_ZN8S20644C72v5Ev,
};
extern VTBL_ENTRY _ZTV9S20644C16[];
extern void _ZN9S20644C10D1Ev();
extern void _ZN9S20644C10D0Ev();
extern void _ZN9S20644C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20644C10__A__9S20644C16[] = {
  ABISELECT(5696,4372),
  ABISELECT(5504,4216),
  ABISELECT(5648,4332),
  ABISELECT(5640,4328),
  0,
  (VTBL_ENTRY)&(_ZTI9S20644C10[0]),
  (VTBL_ENTRY)&_ZN9S20644C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20644C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20644C102v9Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20644C119S20644C10__9S20644C16[] = {
  ABISELECT(5504,4216),
  ABISELECT(5648,4332),
  ABISELECT(5640,4328),
  0,
  (VTBL_ENTRY)&(_ZTI9S20644C11[0]),
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__9S20644C119S20644C10__9S20644C16[] = {
  0,
  0,
  0,
  ABISELECT(-5648,-4332),
  (VTBL_ENTRY)&(_ZTI9S20644C11[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__9S20644C119S20644C10__9S20644C16[] = {
  0,
  0,
  0,
  ABISELECT(136,112),
  ABISELECT(-5504,-4216),
  (VTBL_ENTRY)&(_ZTI9S20644C11[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__9S20644C10__A__9S20644C16[] = {
  0,
  0,
  0,
  ABISELECT(-5648,-4332),
  (VTBL_ENTRY)&(_ZTI9S20644C10[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__9S20644C10__A__9S20644C16[] = {
  0,
  0,
  0,
  ABISELECT(136,112),
  ABISELECT(-5504,-4216),
  (VTBL_ENTRY)&(_ZTI9S20644C10[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C8__9S20644C10__A__9S20644C16[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-56,-44),
  ABISELECT(-48,-40),
  ABISELECT(-5696,-4372),
  (VTBL_ENTRY)&(_ZTI9S20644C10[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C8__A1__9S20644C10__A__9S20644C16[] = {
  ABISELECT(-200,-148),
  ABISELECT(-5840,-4476),
  (VTBL_ENTRY)&(_ZTI9S20644C10[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN9S20644C17D1Ev();
extern void _ZN9S20644C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20644C17__9S20644C16[] = {
  ABISELECT(4208,3216),
  ABISELECT(4016,3060),
  ABISELECT(4160,3176),
  ABISELECT(4768,3648),
  ABISELECT(4152,3172),
  0,
  (VTBL_ENTRY)&(_ZTI9S20644C17[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  (VTBL_ENTRY)&_ZN9S20644C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20644C17D0Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C59S20644C17__A2__9S20644C16[] = {
  ABISELECT(4152,3172),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C89S20644C17__A1__9S20644C16[] = {
  ABISELECT(4008,3060),
  ABISELECT(4016,3064),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C98S20644C89S20644C17__A1__9S20644C16[] = {
  ABISELECT(4008,3060),
  ABISELECT(4016,3064),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C98S20644C89S20644C17__A1__9S20644C16[] = {
  0,
  0,
  0,
  ABISELECT(-4016,-3064),
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C89S20644C17__A3__9S20644C16[] = {
  ABISELECT(3864,2956),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C89S20644C17__A1__9S20644C16[] = {
  0,
  0,
  0,
  ABISELECT(-4016,-3064),
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__8S20644C89S20644C17__A1__9S20644C16[] = {
  ABISELECT(3864,2956),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
extern void _ZN9S20644C143v13Ev();
static  VTBL_ENTRY _tg__ZTV9S20644C149S20644C17__9S20644C16[] = {
  ABISELECT(3448,2628),
  ABISELECT(3456,2632),
  0,
  (VTBL_ENTRY)&(_ZTI9S20644C14[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
  (VTBL_ENTRY)&_ZN9S20644C143v13Ev,
};
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C89S20644C149S20644C17__A2__9S20644C16[] = {
  ABISELECT(3448,2628),
  ABISELECT(3456,2632),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C98S20644C89S20644C149S20644C17__A2__9S20644C16[] = {
  ABISELECT(3448,2628),
  ABISELECT(3456,2632),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C98S20644C89S20644C149S20644C17__A2__9S20644C16[] = {
  0,
  0,
  0,
  ABISELECT(-3456,-2632),
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C89S20644C149S20644C17__A4__9S20644C16[] = {
  ABISELECT(3304,2524),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C89S20644C149S20644C17__A2__9S20644C16[] = {
  0,
  0,
  0,
  ABISELECT(-3456,-2632),
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__8S20644C89S20644C149S20644C17__A2__9S20644C16[] = {
  ABISELECT(3304,2524),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C99S20644C149S20644C17__A3__9S20644C16[] = {
  ABISELECT(2888,2196),
  ABISELECT(2896,2200),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C99S20644C149S20644C17__A3__9S20644C16[] = {
  0,
  0,
  0,
  ABISELECT(-2896,-2200),
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C59S20644C149S20644C17__A5__9S20644C16[] = {
  ABISELECT(2744,2092),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__9S20644C149S20644C17__9S20644C16[] = {
  0,
  0,
  0,
  ABISELECT(-3456,-2632),
  (VTBL_ENTRY)&(_ZTI9S20644C14[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C8__9S20644C149S20644C17__9S20644C16[] = {
  ABISELECT(3304,2524),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI9S20644C14[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C9__A1__9S20644C149S20644C17__9S20644C16[] = {
  ABISELECT(2888,2196),
  ABISELECT(2896,2200),
  ABISELECT(-560,-432),
  (VTBL_ENTRY)&(_ZTI9S20644C14[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__A1__9S20644C149S20644C17__9S20644C16[] = {
  ABISELECT(2744,2092),
  ABISELECT(-704,-536),
  (VTBL_ENTRY)&(_ZTI9S20644C14[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S20644C17D1Ev,_ZTv0_n28_N9S20644C17D1Ev)();
extern void ABISELECT(_ZThn4768_N9S20644C17D1Ev,_ZThn3648_N9S20644C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20644C17D0Ev,_ZTv0_n28_N9S20644C17D0Ev)();
extern void ABISELECT(_ZThn4768_N9S20644C17D0Ev,_ZThn3648_N9S20644C17D0Ev)() __attribute__((weak));
extern void _ZN9S20644C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20644C10__9S20644C17__9S20644C16[] = {
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-4768,-3648),
  ABISELECT(-560,-432),
  ABISELECT(-752,-588),
  ABISELECT(-608,-472),
  ABISELECT(-616,-476),
  ABISELECT(-4768,-3648),
  (VTBL_ENTRY)&(_ZTI9S20644C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20644C17D1Ev,_ZTv0_n28_N9S20644C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20644C17D0Ev,_ZTv0_n28_N9S20644C17D0Ev),
  (VTBL_ENTRY)&_ZN9S20644C102v9Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__A1__9S20644C17__9S20644C16[] = {
  0,
  0,
  0,
  ABISELECT(-4160,-3176),
  (VTBL_ENTRY)&(_ZTI9S20644C17[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__A1__9S20644C17__9S20644C16[] = {
  0,
  0,
  0,
  ABISELECT(136,112),
  ABISELECT(-4016,-3060),
  (VTBL_ENTRY)&(_ZTI9S20644C17[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C8__9S20644C17__9S20644C16[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-56,-44),
  ABISELECT(-48,-40),
  ABISELECT(-4208,-3216),
  (VTBL_ENTRY)&(_ZTI9S20644C17[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C8__A2__9S20644C17__9S20644C16[] = {
  ABISELECT(-200,-148),
  ABISELECT(-4352,-3320),
  (VTBL_ENTRY)&(_ZTI9S20644C17[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N9S20644C17D1Ev,_ZTvn1056_n28_N9S20644C17D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N9S20644C17D0Ev,_ZTvn1056_n28_N9S20644C17D0Ev)();
extern void _ZN8S20644C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C79S20644C10__9S20644C17__9S20644C16[] = {
  ABISELECT(-6104,-4704),
  (VTBL_ENTRY)&(_ZTI9S20644C17[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S20644C17D1Ev,_ZTvn1056_n28_N9S20644C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S20644C17D0Ev,_ZTvn1056_n28_N9S20644C17D0Ev),
  (VTBL_ENTRY)&_ZN8S20644C72v5Ev,
};
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C8__A__9S20644C17__9S20644C16[] = {
  ABISELECT(4008,3060),
  ABISELECT(4016,3064),
  ABISELECT(-144,-112),
  (VTBL_ENTRY)&(_ZTI9S20644C17[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C8__A3__9S20644C17__9S20644C16[] = {
  ABISELECT(3864,2956),
  ABISELECT(-288,-216),
  (VTBL_ENTRY)&(_ZTI9S20644C17[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
extern void _ZN9S20644C143v13Ev();
static  VTBL_ENTRY _tg__ZTV9S20644C14__9S20644C17__9S20644C16[] = {
  ABISELECT(3448,2628),
  ABISELECT(3456,2632),
  ABISELECT(-704,-544),
  (VTBL_ENTRY)&(_ZTI9S20644C17[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
  (VTBL_ENTRY)&_ZN9S20644C143v13Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C89S20644C14__A4__9S20644C17__9S20644C16[] = {
  ABISELECT(3304,2524),
  ABISELECT(-848,-648),
  (VTBL_ENTRY)&(_ZTI9S20644C17[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C99S20644C14__A3__9S20644C17__9S20644C16[] = {
  ABISELECT(2888,2196),
  ABISELECT(2896,2200),
  ABISELECT(-1264,-976),
  (VTBL_ENTRY)&(_ZTI9S20644C17[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C59S20644C14__A5__9S20644C17__9S20644C16[] = {
  ABISELECT(2744,2092),
  ABISELECT(-1408,-1080),
  (VTBL_ENTRY)&(_ZTI9S20644C17[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C9__A4__9S20644C16[] = {
  ABISELECT(328,248),
  ABISELECT(336,252),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C9__A4__9S20644C16[] = {
  0,
  0,
  0,
  ABISELECT(-336,-252),
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__9S20644C16[] = {
  ABISELECT(136,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C8__9S20644C16[] = {
  ABISELECT(-56,-44),
  ABISELECT(-48,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C98S20644C8__9S20644C16[] = {
  ABISELECT(-56,-44),
  ABISELECT(-48,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C98S20644C8__9S20644C16[] = {
  0,
  0,
  0,
  ABISELECT(48,40),
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C8__A1__9S20644C16[] = {
  ABISELECT(-200,-148),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C8__9S20644C16[] = {
  0,
  0,
  0,
  ABISELECT(48,40),
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__8S20644C8__9S20644C16[] = {
  ABISELECT(-200,-148),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN9S20644C10D1Ev();
extern void _ZN9S20644C10D0Ev();
extern void _ZN9S20644C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20644C10__A1__9S20644C16[] = {
  ABISELECT(-560,-432),
  ABISELECT(-752,-588),
  ABISELECT(-608,-472),
  ABISELECT(-616,-476),
  0,
  (VTBL_ENTRY)&(_ZTI9S20644C10[0]),
  (VTBL_ENTRY)&_ZN9S20644C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20644C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20644C102v9Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20644C119S20644C10__A1__9S20644C16[] = {
  ABISELECT(-752,-588),
  ABISELECT(-608,-472),
  ABISELECT(-616,-476),
  0,
  (VTBL_ENTRY)&(_ZTI9S20644C11[0]),
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__9S20644C119S20644C10__A1__9S20644C16[] = {
  0,
  0,
  0,
  ABISELECT(608,472),
  (VTBL_ENTRY)&(_ZTI9S20644C11[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__9S20644C119S20644C10__A1__9S20644C16[] = {
  0,
  0,
  0,
  ABISELECT(136,112),
  ABISELECT(752,588),
  (VTBL_ENTRY)&(_ZTI9S20644C11[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__9S20644C10__A1__9S20644C16[] = {
  0,
  0,
  0,
  ABISELECT(608,472),
  (VTBL_ENTRY)&(_ZTI9S20644C10[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__9S20644C10__A1__9S20644C16[] = {
  0,
  0,
  0,
  ABISELECT(136,112),
  ABISELECT(752,588),
  (VTBL_ENTRY)&(_ZTI9S20644C10[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C8__9S20644C10__A1__9S20644C16[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-56,-44),
  ABISELECT(-48,-40),
  ABISELECT(560,432),
  (VTBL_ENTRY)&(_ZTI9S20644C10[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C8__A1__9S20644C10__A1__9S20644C16[] = {
  ABISELECT(-200,-148),
  ABISELECT(416,328),
  (VTBL_ENTRY)&(_ZTI9S20644C10[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
static  VTT_ENTRY vtt_S20644C16[] = {
  {&(_ZTV9S20644C16[7]),  7,128},
  {&(_tg__ZTV9S20644C10__A__9S20644C16[6]),  6,9},
  {&(_tg__ZTV9S20644C119S20644C10__9S20644C16[5]),  5,5},
  {&(_tg__ZTV8S20644C6__9S20644C119S20644C10__9S20644C16[5]),  5,8},
  {&(_tg__ZTV8S20644C5__9S20644C119S20644C10__9S20644C16[6]),  6,9},
  {&(_tg__ZTV8S20644C6__9S20644C10__A__9S20644C16[5]),  5,8},
  {&(_tg__ZTV8S20644C5__9S20644C10__A__9S20644C16[6]),  6,9},
  {&(_tg__ZTV8S20644C8__9S20644C10__A__9S20644C16[9]),  9,11},
  {&(_tg__ZTV8S20644C58S20644C8__A1__9S20644C10__A__9S20644C16[3]),  3,6},
  {&(_tg__ZTV9S20644C17__9S20644C16[7]),  7,12},
  {&(_tg__ZTV8S20644C59S20644C17__A2__9S20644C16[3]),  3,6},
  {&(_tg__ZTV8S20644C89S20644C17__A1__9S20644C16[4]),  4,6},
  {&(_tg__ZTV8S20644C98S20644C89S20644C17__A1__9S20644C16[4]),  4,5},
  {&(_tg__ZTV8S20644C6__8S20644C98S20644C89S20644C17__A1__9S20644C16[5]),  5,8},
  {&(_tg__ZTV8S20644C58S20644C89S20644C17__A3__9S20644C16[3]),  3,6},
  {&(_tg__ZTV8S20644C6__8S20644C89S20644C17__A1__9S20644C16[5]),  5,8},
  {&(_tg__ZTV8S20644C5__8S20644C89S20644C17__A1__9S20644C16[3]),  3,6},
  {&(_tg__ZTV9S20644C149S20644C17__9S20644C16[4]),  4,7},
  {&(_tg__ZTV8S20644C89S20644C149S20644C17__A2__9S20644C16[4]),  4,6},
  {&(_tg__ZTV8S20644C98S20644C89S20644C149S20644C17__A2__9S20644C16[4]),  4,5},
  {&(_tg__ZTV8S20644C6__8S20644C98S20644C89S20644C149S20644C17__A2__9S20644C16[5]),  5,8},
  {&(_tg__ZTV8S20644C58S20644C89S20644C149S20644C17__A4__9S20644C16[3]),  3,6},
  {&(_tg__ZTV8S20644C6__8S20644C89S20644C149S20644C17__A2__9S20644C16[5]),  5,8},
  {&(_tg__ZTV8S20644C5__8S20644C89S20644C149S20644C17__A2__9S20644C16[3]),  3,6},
  {&(_tg__ZTV8S20644C99S20644C149S20644C17__A3__9S20644C16[4]),  4,5},
  {&(_tg__ZTV8S20644C6__8S20644C99S20644C149S20644C17__A3__9S20644C16[5]),  5,8},
  {&(_tg__ZTV8S20644C59S20644C149S20644C17__A5__9S20644C16[3]),  3,6},
  {&(_tg__ZTV8S20644C6__9S20644C149S20644C17__9S20644C16[5]),  5,8},
  {&(_tg__ZTV8S20644C58S20644C8__9S20644C149S20644C17__9S20644C16[3]),  3,6},
  {&(_tg__ZTV8S20644C9__A1__9S20644C149S20644C17__9S20644C16[4]),  4,5},
  {&(_tg__ZTV8S20644C5__A1__9S20644C149S20644C17__9S20644C16[3]),  3,6},
  {&(_tg__ZTV9S20644C10__9S20644C17__9S20644C16[12]),  12,15},
  {&(_tg__ZTV8S20644C6__A1__9S20644C17__9S20644C16[5]),  5,8},
  {&(_tg__ZTV8S20644C5__A1__9S20644C17__9S20644C16[6]),  6,9},
  {&(_tg__ZTV8S20644C8__9S20644C17__9S20644C16[9]),  9,11},
  {&(_tg__ZTV8S20644C58S20644C8__A2__9S20644C17__9S20644C16[3]),  3,6},
  {&(_tg__ZTV8S20644C79S20644C10__9S20644C17__9S20644C16[2]),  2,8},
  {&(_tg__ZTV8S20644C8__A__9S20644C17__9S20644C16[4]),  4,6},
  {&(_tg__ZTV8S20644C58S20644C8__A3__9S20644C17__9S20644C16[3]),  3,6},
  {&(_tg__ZTV9S20644C14__9S20644C17__9S20644C16[4]),  4,7},
  {&(_tg__ZTV8S20644C58S20644C89S20644C14__A4__9S20644C17__9S20644C16[3]),  3,6},
  {&(_tg__ZTV8S20644C99S20644C14__A3__9S20644C17__9S20644C16[4]),  4,5},
  {&(_tg__ZTV8S20644C59S20644C14__A5__9S20644C17__9S20644C16[3]),  3,6},
  {&(_tg__ZTV8S20644C9__A4__9S20644C16[4]),  4,5},
  {&(_tg__ZTV8S20644C6__8S20644C9__A4__9S20644C16[5]),  5,8},
  {&(_ZTV9S20644C16[77]),  77,128},
  {&(_ZTV9S20644C16[85]),  85,128},
  {&(_ZTV9S20644C16[97]),  97,128},
  {&(_ZTV9S20644C16[102]),  102,128},
  {&(_ZTV9S20644C16[25]),  25,128},
  {&(_ZTV9S20644C16[117]),  117,128},
  {&(_ZTV9S20644C16[122]),  122,128},
  {&(_ZTV9S20644C16[34]),  34,128},
  {&(_ZTV9S20644C16[39]),  39,128},
  {&(_ZTV9S20644C16[46]),  46,128},
  {&(_ZTV9S20644C16[52]),  52,128},
  {&(_ZTV9S20644C16[59]),  59,128},
  {&(_ZTV9S20644C16[63]),  63,128},
  {&(_ZTV9S20644C16[70]),  70,128},
  {&(_tg__ZTV8S20644C5__9S20644C16[3]),  3,6},
  {&(_tg__ZTV8S20644C8__9S20644C16[4]),  4,6},
  {&(_tg__ZTV8S20644C98S20644C8__9S20644C16[4]),  4,5},
  {&(_tg__ZTV8S20644C6__8S20644C98S20644C8__9S20644C16[5]),  5,8},
  {&(_tg__ZTV8S20644C58S20644C8__A1__9S20644C16[3]),  3,6},
  {&(_tg__ZTV8S20644C6__8S20644C8__9S20644C16[5]),  5,8},
  {&(_tg__ZTV8S20644C5__8S20644C8__9S20644C16[3]),  3,6},
  {&(_tg__ZTV9S20644C10__A1__9S20644C16[6]),  6,9},
  {&(_tg__ZTV9S20644C119S20644C10__A1__9S20644C16[5]),  5,5},
  {&(_tg__ZTV8S20644C6__9S20644C119S20644C10__A1__9S20644C16[5]),  5,8},
  {&(_tg__ZTV8S20644C5__9S20644C119S20644C10__A1__9S20644C16[6]),  6,9},
  {&(_tg__ZTV8S20644C6__9S20644C10__A1__9S20644C16[5]),  5,8},
  {&(_tg__ZTV8S20644C5__9S20644C10__A1__9S20644C16[6]),  6,9},
  {&(_tg__ZTV8S20644C8__9S20644C10__A1__9S20644C16[9]),  9,11},
  {&(_tg__ZTV8S20644C58S20644C8__A1__9S20644C10__A1__9S20644C16[3]),  3,6},
};
extern VTBL_ENTRY _ZTI9S20644C16[];
extern  VTBL_ENTRY _ZTV9S20644C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20644C16[];
static VTBL_ENTRY alt_thunk_names7[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20644C17D0Ev,_ZTv0_n28_N9S20644C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4768_N9S20644C17D0Ev,_ZThn3648_N9S20644C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20644C17D1Ev,_ZTv0_n28_N9S20644C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4768_N9S20644C17D1Ev,_ZThn3648_N9S20644C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20644C16D0Ev,_ZTv0_n28_N9S20644C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6256_N9S20644C16D0Ev,_ZThn4804_N9S20644C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20644C16D1Ev,_ZTv0_n28_N9S20644C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6256_N9S20644C16D1Ev,_ZThn4804_N9S20644C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20644C16 = {  "S20644C16", // class name
  bases_S20644C16, 43,
  &(vtc_S20644C16[0]), // expected_vtbl_contents
  &(vtt_S20644C16[0]), // expected_vtt_contents
  ABISELECT(7744,5960), // object size
  NSPAIRA(_ZTI9S20644C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20644C16),128, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20644C16),74, //virtual table table var
  31, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names7,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20644C1  : virtual S20644C2 , S20644C12 {
  ::S20644C4 s20644c1f0;
  int s20644c1f1;
  ::S20644C16 s20644c1f2;
  int s20644c1f3;
  short s20644c1f4;
  void *s20644c1f5;
  void *s20644c1f6;
  ::S3216C8_nt s20644c1f7[8];
  virtual void  v1(); // _ZN8S20644C12v1Ev
  ~S20644C1(); // tgen
  S20644C1(); // tgen
};
//SIG(1 S20644C1) C1{ VBC2{ VBC3{ m Fi} BC4{ VBC5{ BC6{ BC3 v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC3 FD FL FC6 Fp Fs[3]} BC7{ BC6 vd v5 Fp[7] Fi[2] FL Fi} VBC6 BC8{ VBC6 VBC3 BC9{ VBC6 VBC3 v6 FC6 FD Fp[2] FC6} BC5 v7 Fp[2] Fl Fi FC6[5]} BC9 v8 Fi[2] FD FC9[10] Fi} BC5 VBC10{ BC11{ VBC3 VBC6 VBC5 Fp[2] Fi FC5[8] FD[9]} BC3 VBC8 BC7 vd v9 Fi Fp Fi} BC11 vd v10 v11 Fi[2] Fp Fc:3 Fi[3]} BC12{ BC13{ v12 Fp[7] FC9 FD Fi FL Fp FC9 Fp[5] Fi[8] Fp} BC5 BC14{ VBC3 BC8 BC9 BC5 v13 Fi FC15{} Fp[2]} vd} v1 FC4 Fi FC16{ VBC5 BC10 BC17{ BC5 VBC10 BC8 BC14 vd Fi Fc[2] Fi FL FC15 Fp[8] Fs[5] FL FC18{ vd m Fc[2] Fi FL Fp[7] FU19{ m FL:3 Fi Fi Fi FD[8] Fp Fc[5] FD Fc[4] Fi Fp Fc[4] Fp}[4] FC11}} BC9 vd Fc Fi Fi Fi Fi Fp Fc[4] Fi} Fi Fs Fp Fp FC3[8]}


void  S20644C1 ::v1(){vfunc_called(this, "_ZN8S20644C12v1Ev");}
S20644C1 ::~S20644C1(){ note_dtor("S20644C1", this);} // tgen
S20644C1 ::S20644C1(){ note_ctor("S20644C1", this);} // tgen

static void Test_S20644C1()
{
  extern Class_Descriptor cd_S20644C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1208,3638)];
    init_test(&cd_S20644C1, buf);
    S20644C1 *dp, &lv = *(dp=new (buf) S20644C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(19312,14548), "sizeof(S20644C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20644C1)");
    /*is_ambiguous_... S20644C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C2*), ABISELECT(17056,12804), "S20644C1");
    /*is_ambiguous_... S20644C1::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*), ABISELECT(17056,12804), "S20644C1");
    /*is_ambiguous_... S20644C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C8*)(S20644C4*)(S20644C2*), ABISELECT(17056,12804), "S20644C1");
    /*is_ambiguous_... S20644C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C9*)(S20644C8*)(S20644C4*)(S20644C2*), ABISELECT(17056,12804), "S20644C1");
    /*is_ambiguous_... S20644C5::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*)(S20644C8*)(S20644C4*)(S20644C2*), ABISELECT(17056,12804), "S20644C1");
    /*is_ambiguous_... S20644C4::S20644C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C9*)(S20644C4*)(S20644C2*), ABISELECT(17056,12804), "S20644C1");
    /*is_ambiguous_... S20644C2::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*)(S20644C2*), ABISELECT(17056,12804), "S20644C1");
    /*is_ambiguous_... S20644C11::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C11*)(S20644C10*), ABISELECT(17056,12804), "S20644C1");
    /*is_ambiguous_... S20644C1::S20644C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C8*), ABISELECT(17056,12804), "S20644C1");
    /*is_ambiguous_... S20644C1::S20644C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C9*)(S20644C8*), ABISELECT(17056,12804), "S20644C1");
    /*is_ambiguous_... S20644C1::S20644C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*)(S20644C8*), ABISELECT(17056,12804), "S20644C1");
    /*is_ambiguous_... S20644C2::S20644C11 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C11*)(S20644C2*), ABISELECT(17056,12804), "S20644C1");
    /*is_ambiguous_... S20644C12::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*)(S20644C12*), ABISELECT(17056,12804), "S20644C1");
    /*is_ambiguous_... S20644C14::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C14*)(S20644C12*), ABISELECT(17056,12804), "S20644C1");
    /*is_ambiguous_... S20644C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C8*)(S20644C14*)(S20644C12*), ABISELECT(17056,12804), "S20644C1");
    /*is_ambiguous_... S20644C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C9*)(S20644C8*)(S20644C14*)(S20644C12*), ABISELECT(17056,12804), "S20644C1");
    /*is_ambiguous_... S20644C5::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*)(S20644C8*)(S20644C14*)(S20644C12*), ABISELECT(17056,12804), "S20644C1");
    /*is_ambiguous_... S20644C14::S20644C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C9*)(S20644C14*)(S20644C12*), ABISELECT(17056,12804), "S20644C1");
    /*is_ambiguous_... S20644C14::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C5*)(S20644C14*)(S20644C12*), ABISELECT(17056,12804), "S20644C1");
    /*is_ambiguous_... S20644C1::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*), ABISELECT(17080,12812), "S20644C1");
    /*is_ambiguous_... S20644C1::S20644C5 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C5*), ABISELECT(17072,12808), "S20644C1");
    /*is_ambiguous_... S20644C4::S20644C5 */ AMB_check_base_class_offset(lv, (S20644C5*)(S20644C4*)(S20644C2*), ABISELECT(17072,12808), "S20644C1");
    check_base_class_offset(lv, (S20644C5*)(S20644C11*)(S20644C10*), ABISELECT(17072,12808), "S20644C1");
    /*is_ambiguous_... S20644C2::S20644C11 */ AMB_check_base_class_offset(lv, (S20644C5*)(S20644C11*)(S20644C2*), ABISELECT(17072,12808), "S20644C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C7*)(S20644C4*)(S20644C2*), ABISELECT(12600,9488), "S20644C1");
    check_base_class_offset(lv, (S20644C6*)(S20644C7*)(S20644C4*)(S20644C2*), ABISELECT(12592,9484), "S20644C1");
    check_base_class_offset(lv, (S20644C7*)(S20644C4*)(S20644C2*), ABISELECT(12592,9484), "S20644C1");
    /*is_ambiguous_... S20644C1::S20644C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*), ABISELECT(17216,12924), "S20644C1");
    /*is_ambiguous_... S20644C4::S20644C6 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C4*)(S20644C2*), ABISELECT(17208,12920), "S20644C1");
    /*is_ambiguous_... S20644C8::S20644C6 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C8*)(S20644C4*)(S20644C2*), ABISELECT(17208,12920), "S20644C1");
    check_base_class_offset(lv, (S20644C6*)(S20644C9*)(S20644C8*)(S20644C4*)(S20644C2*), ABISELECT(17208,12920), "S20644C1");
    /*is_ambiguous_... S20644C4::S20644C9 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C9*)(S20644C4*)(S20644C2*), ABISELECT(17208,12920), "S20644C1");
    /*is_ambiguous_... S20644C11::S20644C6 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C11*)(S20644C10*), ABISELECT(17208,12920), "S20644C1");
    /*is_ambiguous_... S20644C1::S20644C8 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C8*), ABISELECT(17208,12920), "S20644C1");
    /*is_ambiguous_... S20644C1::S20644C8 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C9*)(S20644C8*), ABISELECT(17208,12920), "S20644C1");
    /*is_ambiguous_... S20644C2::S20644C11 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C11*)(S20644C2*), ABISELECT(17208,12920), "S20644C1");
    /*is_ambiguous_... S20644C8::S20644C6 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C8*)(S20644C14*)(S20644C12*), ABISELECT(17208,12920), "S20644C1");
    check_base_class_offset(lv, (S20644C6*)(S20644C9*)(S20644C8*)(S20644C14*)(S20644C12*), ABISELECT(17208,12920), "S20644C1");
    /*is_ambiguous_... S20644C14::S20644C9 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C9*)(S20644C14*)(S20644C12*), ABISELECT(17208,12920), "S20644C1");
    check_base_class_offset(lv, (S20644C9*)(S20644C8*)(S20644C4*)(S20644C2*), ABISELECT(12720,9572), "S20644C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*)(S20644C8*)(S20644C4*)(S20644C2*), ABISELECT(12872,9680), "S20644C1");
    check_base_class_offset(lv, (S20644C6*)(S20644C5*)(S20644C8*)(S20644C4*)(S20644C2*), ABISELECT(12864,9676), "S20644C1");
    check_base_class_offset(lv, (S20644C5*)(S20644C8*)(S20644C4*)(S20644C2*), ABISELECT(12864,9676), "S20644C1");
    check_base_class_offset(lv, (S20644C8*)(S20644C4*)(S20644C2*), ABISELECT(12720,9572), "S20644C1");
    /*is_ambiguous_... S20644C4::S20644C9 */ AMB_check_base_class_offset(lv, (S20644C9*)(S20644C4*)(S20644C2*), ABISELECT(13280,10004), "S20644C1");
    check_base_class_offset(lv, (S20644C4*)(S20644C2*), ABISELECT(12592,9484), "S20644C1");
    /*is_ambiguous_... S20644C2::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*)(S20644C2*), ABISELECT(15560,11616), "S20644C1");
    /*is_ambiguous_... S20644C2::S20644C5 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C5*)(S20644C2*), ABISELECT(15552,11612), "S20644C1");
    /*is_ambiguous_... S20644C2::S20644C5 */ AMB_check_base_class_offset(lv, (S20644C5*)(S20644C2*), ABISELECT(15552,11612), "S20644C1");
    check_base_class_offset(lv, (S20644C11*)(S20644C10*), ABISELECT(17264,12960), "S20644C1");
    /*is_ambiguous_... S20644C10::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C10*), ABISELECT(18592,14012), "S20644C1");
    /*is_ambiguous_... S20644C1::S20644C8 */ AMB_check_base_class_offset(lv, (S20644C9*)(S20644C8*), ABISELECT(18752,14116), "S20644C1");
    /*is_ambiguous_... S20644C1::S20644C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*)(S20644C8*), ABISELECT(18904,14224), "S20644C1");
    /*is_ambiguous_... S20644C1::S20644C8 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C5*)(S20644C8*), ABISELECT(18896,14220), "S20644C1");
    /*is_ambiguous_... S20644C1::S20644C8 */ AMB_check_base_class_offset(lv, (S20644C5*)(S20644C8*), ABISELECT(18896,14220), "S20644C1");
    check_base_class_offset(lv, (S20644C8*)(S20644C10*), ABISELECT(18752,14116), "S20644C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C7*)(S20644C10*), ABISELECT(18608,14020), "S20644C1");
    check_base_class_offset(lv, (S20644C6*)(S20644C7*)(S20644C10*), ABISELECT(18600,14016), "S20644C1");
    check_base_class_offset(lv, (S20644C7*)(S20644C10*), ABISELECT(18600,14016), "S20644C1");
    check_base_class_offset(lv, (S20644C10*)(S20644C2*), ABISELECT(17264,12960), "S20644C1");
    /*is_ambiguous_... S20644C2::S20644C11 */ AMB_check_base_class_offset(lv, (S20644C11*)(S20644C2*), ABISELECT(15696,11724), "S20644C1");
    check_base_class_offset(lv, (S20644C2*), ABISELECT(12592,9484), "S20644C1");
    check_base_class_offset(lv, (S20644C13*)(S20644C12*), 0, "S20644C1");
    /*is_ambiguous_... S20644C12::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*)(S20644C12*), ABISELECT(616,416), "S20644C1");
    /*is_ambiguous_... S20644C12::S20644C5 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C5*)(S20644C12*), ABISELECT(608,412), "S20644C1");
    /*is_ambiguous_... S20644C12::S20644C5 */ AMB_check_base_class_offset(lv, (S20644C5*)(S20644C12*), ABISELECT(608,412), "S20644C1");
    check_base_class_offset(lv, (S20644C9*)(S20644C8*)(S20644C14*)(S20644C12*), ABISELECT(752,524), "S20644C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*)(S20644C8*)(S20644C14*)(S20644C12*), ABISELECT(904,632), "S20644C1");
    check_base_class_offset(lv, (S20644C6*)(S20644C5*)(S20644C8*)(S20644C14*)(S20644C12*), ABISELECT(896,628), "S20644C1");
    check_base_class_offset(lv, (S20644C5*)(S20644C8*)(S20644C14*)(S20644C12*), ABISELECT(896,628), "S20644C1");
    check_base_class_offset(lv, (S20644C8*)(S20644C14*)(S20644C12*), ABISELECT(752,524), "S20644C1");
    /*is_ambiguous_... S20644C14::S20644C9 */ AMB_check_base_class_offset(lv, (S20644C9*)(S20644C14*)(S20644C12*), ABISELECT(1312,956), "S20644C1");
    /*is_ambiguous_... S20644C14::S20644C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20644C6*)(S20644C5*)(S20644C14*)(S20644C12*), ABISELECT(1464,1064), "S20644C1");
    /*is_ambiguous_... S20644C14::S20644C5 */ AMB_check_base_class_offset(lv, (S20644C6*)(S20644C5*)(S20644C14*)(S20644C12*), ABISELECT(1456,1060), "S20644C1");
    /*is_ambiguous_... S20644C14::S20644C5 */ AMB_check_base_class_offset(lv, (S20644C5*)(S20644C14*)(S20644C12*), ABISELECT(1456,1060), "S20644C1");
    check_base_class_offset(lv, (S20644C14*)(S20644C12*), ABISELECT(752,524), "S20644C1");
    check_base_class_offset(lv, (S20644C12*), 0, "S20644C1");
    check_field_offset(lv, s20644c1f0, ABISELECT(1616,1188), "S20644C1.s20644c1f0");
    check_field_offset(lv, s20644c1f1, ABISELECT(4768,3472), "S20644C1.s20644c1f1");
    check_field_offset(lv, s20644c1f2, ABISELECT(4784,3476), "S20644C1.s20644c1f2");
    check_field_offset(lv, s20644c1f3, ABISELECT(12528,9436), "S20644C1.s20644c1f3");
    check_field_offset(lv, s20644c1f4, ABISELECT(12532,9440), "S20644C1.s20644c1f4");
    check_field_offset(lv, s20644c1f5, ABISELECT(12536,9444), "S20644C1.s20644c1f5");
    check_field_offset(lv, s20644c1f6, ABISELECT(12544,9448), "S20644C1.s20644c1f6");
    check_field_offset(lv, s20644c1f7, ABISELECT(12552,9452), "S20644C1.s20644c1f7");
    test_class_info(&lv, &cd_S20644C1);
    dp->~S20644C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20644C1(Test_S20644C1, "S20644C1", ABISELECT(19312,14548));

#else // __cplusplus

extern void _ZN8S20644C1C1Ev();
extern void _ZN8S20644C1D1Ev();
Name_Map name_map_S20644C1[] = {
  NSPAIR(_ZN8S20644C1C1Ev),
  NSPAIR(_ZN8S20644C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C7;
extern VTBL_ENTRY _ZTI8S20644C7[];
extern  VTBL_ENTRY _ZTV8S20644C7[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C9;
extern VTBL_ENTRY _ZTI8S20644C9[];
extern  VTBL_ENTRY _ZTV8S20644C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
extern Class_Descriptor cd_S20644C8;
extern VTBL_ENTRY _ZTI8S20644C8[];
extern  VTBL_ENTRY _ZTV8S20644C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C8[];
extern Class_Descriptor cd_S20644C9;
extern VTBL_ENTRY _ZTI8S20644C9[];
extern  VTBL_ENTRY _ZTV8S20644C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C9[];
extern Class_Descriptor cd_S20644C4;
extern VTBL_ENTRY _ZTI8S20644C4[];
extern  VTBL_ENTRY _ZTV8S20644C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C4[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
extern Class_Descriptor cd_S20644C11;
extern VTBL_ENTRY _ZTI9S20644C11[];
extern  VTBL_ENTRY _ZTV9S20644C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20644C11[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C9;
extern VTBL_ENTRY _ZTI8S20644C9[];
extern  VTBL_ENTRY _ZTV8S20644C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
extern Class_Descriptor cd_S20644C8;
extern VTBL_ENTRY _ZTI8S20644C8[];
extern  VTBL_ENTRY _ZTV8S20644C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C7;
extern VTBL_ENTRY _ZTI8S20644C7[];
extern  VTBL_ENTRY _ZTV8S20644C7[];
extern Class_Descriptor cd_S20644C10;
extern VTBL_ENTRY _ZTI9S20644C10[];
extern  VTBL_ENTRY _ZTV9S20644C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20644C10[];
extern Class_Descriptor cd_S20644C11;
extern VTBL_ENTRY _ZTI9S20644C11[];
extern  VTBL_ENTRY _ZTV9S20644C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20644C11[];
extern Class_Descriptor cd_S20644C2;
extern VTBL_ENTRY _ZTI8S20644C2[];
extern  VTBL_ENTRY _ZTV8S20644C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C2[];
extern Class_Descriptor cd_S20644C13;
extern VTBL_ENTRY _ZTI9S20644C13[];
extern  VTBL_ENTRY _ZTV9S20644C13[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
extern Class_Descriptor cd_S20644C9;
extern VTBL_ENTRY _ZTI8S20644C9[];
extern  VTBL_ENTRY _ZTV8S20644C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
extern Class_Descriptor cd_S20644C8;
extern VTBL_ENTRY _ZTI8S20644C8[];
extern  VTBL_ENTRY _ZTV8S20644C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C8[];
extern Class_Descriptor cd_S20644C9;
extern VTBL_ENTRY _ZTI8S20644C9[];
extern  VTBL_ENTRY _ZTV8S20644C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20644C6;
extern VTBL_ENTRY _ZTI8S20644C6[];
extern  VTBL_ENTRY _ZTV8S20644C6[];
extern Class_Descriptor cd_S20644C5;
extern VTBL_ENTRY _ZTI8S20644C5[];
extern  VTBL_ENTRY _ZTV8S20644C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C5[];
extern Class_Descriptor cd_S20644C14;
extern VTBL_ENTRY _ZTI9S20644C14[];
extern  VTBL_ENTRY _ZTV9S20644C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20644C14[];
extern Class_Descriptor cd_S20644C12;
extern VTBL_ENTRY _ZTI9S20644C12[];
extern  VTBL_ENTRY _ZTV9S20644C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20644C12[];
static Base_Class bases_S20644C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(17056,12804), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3216C8_nt,    ABISELECT(17080,12812), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C6,    ABISELECT(17072,12808), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C5,    ABISELECT(17072,12808), //bcp->offset
    96, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(12600,9488), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20644C6,    ABISELECT(12592,9484), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20644C7,    ABISELECT(12592,9484), //bcp->offset
    -1, //bcp->virtual_function_table_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_S3216C8_nt,    ABISELECT(17216,12924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C6,    ABISELECT(17208,12920), //bcp->offset
    105, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20644C9,    ABISELECT(12720,9572), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(12872,9680), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C6,    ABISELECT(12864,9676), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20644C5,    ABISELECT(12864,9676), //bcp->offset
    74, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20644C8,    ABISELECT(12720,9572), //bcp->offset
    68, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20644C9,    ABISELECT(13280,10004), //bcp->offset
    80, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20644C4,    ABISELECT(12592,9484), //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
    19, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(15560,11616), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C6,    ABISELECT(15552,11612), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20644C5,    ABISELECT(15552,11612), //bcp->offset
    85, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20644C11,    ABISELECT(17264,12960), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(18592,14012), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20644C9,    ABISELECT(18752,14116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(18904,14224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C6,    ABISELECT(18896,14220), //bcp->offset
    -1, //bcp->virtual_function_table_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
    24, //immediately_derived
  0, 0},
  {&cd_S20644C5,    ABISELECT(18896,14220), //bcp->offset
    147, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20644C8,    ABISELECT(18752,14116), //bcp->offset
    136, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(18608,14020), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20644C6,    ABISELECT(18600,14016), //bcp->offset
    -1, //bcp->virtual_function_table_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
    28, //immediately_derived
  0, 0},
  {&cd_S20644C7,    ABISELECT(18600,14016), //bcp->offset
    128, //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
    10, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20644C10,    ABISELECT(17264,12960), //bcp->offset
    113, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S20644C11,    ABISELECT(15696,11724), //bcp->offset
    91, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20644C2,    ABISELECT(12592,9484), //bcp->offset
    42, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20644C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    46, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(616,416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20644C6,    ABISELECT(608,412), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20644C5,    ABISELECT(608,412), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S20644C9,    ABISELECT(752,524), //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
    27, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(904,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
    38, //immediately_derived
  0, 0},
  {&cd_S20644C6,    ABISELECT(896,628), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20644C5,    ABISELECT(896,628), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20644C8,    ABISELECT(752,524), //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
    30, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S20644C9,    ABISELECT(1312,956), //bcp->offset
    31, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1464,1064), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S20644C6,    ABISELECT(1456,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S20644C5,    ABISELECT(1456,1060), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S20644C14,    ABISELECT(752,524), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S20644C12,    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
    35, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20644C1[];
extern void _ZN9S20644C133v12Ev();
extern void _ZN8S20644C1D1Ev();
extern void _ZN8S20644C1D0Ev();
extern void _ZN8S20644C12v1Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
extern void _ZN9S20644C143v13Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void ABISELECT(_ZTv0_n88_N8S20644C1D1Ev,_ZTv0_n44_N8S20644C1D1Ev)();
extern void ABISELECT(_ZThn12592_N8S20644C1D1Ev,_ZThn9484_N8S20644C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20644C1D0Ev,_ZTv0_n44_N8S20644C1D0Ev)();
extern void ABISELECT(_ZThn12592_N8S20644C1D0Ev,_ZThn9484_N8S20644C1D0Ev)() __attribute__((weak));
extern void _ZN8S20644C72v5Ev();
extern void _ZN8S20644C42v8Ev();
extern void _ZN8S20644C23v10Ev();
extern void _ZN8S20644C23v11Ev();
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void ABISELECT(_ZTv0_n56_N8S20644C1D1Ev,_ZTv0_n28_N8S20644C1D1Ev)();
extern void ABISELECT(_ZThn17264_N8S20644C1D1Ev,_ZThn12960_N8S20644C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20644C1D0Ev,_ZTv0_n28_N8S20644C1D0Ev)();
extern void ABISELECT(_ZThn17264_N8S20644C1D0Ev,_ZThn12960_N8S20644C1D0Ev)() __attribute__((weak));
extern void _ZN9S20644C102v9Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N8S20644C1D1Ev,_ZTvn1056_n28_N8S20644C1D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N8S20644C1D0Ev,_ZTvn1056_n28_N8S20644C1D0Ev)();
extern void _ZN8S20644C72v5Ev();
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY vtc_S20644C1[] = {
  ABISELECT(18752,14116),
  ABISELECT(17264,12960),
  ABISELECT(17072,12808),
  ABISELECT(12592,9484),
  ABISELECT(17208,12920),
  ABISELECT(17056,12804),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C1[0]),
  (VTBL_ENTRY)&_ZN9S20644C133v12Ev,
  (VTBL_ENTRY)&_ZN8S20644C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20644C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20644C12v1Ev,
  ABISELECT(16448,12392),
  ABISELECT(-608,-412),
  (VTBL_ENTRY)&(_ZTI8S20644C1[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  ABISELECT(16304,12280),
  ABISELECT(16456,12396),
  ABISELECT(-752,-524),
  (VTBL_ENTRY)&(_ZTI8S20644C1[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
  (VTBL_ENTRY)&_ZN9S20644C143v13Ev,
  ABISELECT(16160,12176),
  ABISELECT(-896,-628),
  (VTBL_ENTRY)&(_ZTI8S20644C1[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  ABISELECT(15744,11848),
  ABISELECT(15896,11964),
  ABISELECT(-1312,-956),
  (VTBL_ENTRY)&(_ZTI8S20644C1[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  ABISELECT(15600,11744),
  ABISELECT(-1456,-1060),
  (VTBL_ENTRY)&(_ZTI8S20644C1[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  0,
  0,
  ABISELECT(128,88),
  ABISELECT(128,88),
  0,
  0,
  ABISELECT(-12592,-9484),
  0,
  0,
  0,
  ABISELECT(6160,4632),
  ABISELECT(4672,3476),
  ABISELECT(4616,3436),
  ABISELECT(4464,3320),
  ABISELECT(4480,3324),
  ABISELECT(-12592,-9484),
  (VTBL_ENTRY)&(_ZTI8S20644C1[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20644C1D1Ev,_ZTv0_n44_N8S20644C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20644C1D0Ev,_ZTv0_n44_N8S20644C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20644C72v5Ev,
  (VTBL_ENTRY)&_ZN8S20644C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20644C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20644C23v11Ev,
  ABISELECT(4336,3232),
  ABISELECT(4488,3348),
  ABISELECT(-12720,-9572),
  (VTBL_ENTRY)&(_ZTI8S20644C1[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
  ABISELECT(4192,3128),
  ABISELECT(-12864,-9676),
  (VTBL_ENTRY)&(_ZTI8S20644C1[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  ABISELECT(3776,2800),
  ABISELECT(3928,2916),
  ABISELECT(-13280,-10004),
  (VTBL_ENTRY)&(_ZTI8S20644C1[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  ABISELECT(1504,1192),
  ABISELECT(-15552,-11612),
  (VTBL_ENTRY)&(_ZTI8S20644C1[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  ABISELECT(1376,1084),
  ABISELECT(1512,1196),
  ABISELECT(1360,1080),
  ABISELECT(-15696,-11724),
  (VTBL_ENTRY)&(_ZTI8S20644C1[0]),
  0,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-17072,-12808),
  (VTBL_ENTRY)&(_ZTI8S20644C1[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  0,
  0,
  0,
  ABISELECT(-17208,-12920),
  (VTBL_ENTRY)&(_ZTI8S20644C1[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-17264,-12960),
  ABISELECT(1488,1156),
  ABISELECT(-192,-152),
  ABISELECT(-56,-40),
  ABISELECT(-208,-156),
  ABISELECT(-17264,-12960),
  (VTBL_ENTRY)&(_ZTI8S20644C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20644C1D1Ev,_ZTv0_n28_N8S20644C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20644C1D0Ev,_ZTv0_n28_N8S20644C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20644C102v9Ev,
  ABISELECT(-18600,-14016),
  (VTBL_ENTRY)&(_ZTI8S20644C1[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20644C1D1Ev,_ZTvn1056_n28_N8S20644C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20644C1D0Ev,_ZTvn1056_n28_N8S20644C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20644C72v5Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1696,-1312),
  ABISELECT(-1544,-1196),
  ABISELECT(-18752,-14116),
  (VTBL_ENTRY)&(_ZTI8S20644C1[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
  ABISELECT(-1840,-1416),
  ABISELECT(-18896,-14220),
  (VTBL_ENTRY)&(_ZTI8S20644C1[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern VTBL_ENTRY _ZTV8S20644C1[];
extern void _ZN9S20644C133v12Ev();
extern void _ZN9S20644C12D1Ev();
extern void _ZN9S20644C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20644C12__8S20644C1[] = {
  ABISELECT(17208,12920),
  ABISELECT(17056,12804),
  0,
  (VTBL_ENTRY)&(_ZTI9S20644C12[0]),
  (VTBL_ENTRY)&_ZN9S20644C133v12Ev,
  (VTBL_ENTRY)&_ZN9S20644C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20644C12D0Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C59S20644C12__A4__8S20644C1[] = {
  ABISELECT(16448,12392),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
extern void _ZN9S20644C143v13Ev();
static  VTBL_ENTRY _tg__ZTV9S20644C149S20644C12__8S20644C1[] = {
  ABISELECT(16304,12280),
  ABISELECT(16456,12396),
  0,
  (VTBL_ENTRY)&(_ZTI9S20644C14[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
  (VTBL_ENTRY)&_ZN9S20644C143v13Ev,
};
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C89S20644C149S20644C12__A2__8S20644C1[] = {
  ABISELECT(16304,12280),
  ABISELECT(16456,12396),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C98S20644C89S20644C149S20644C12__A3__8S20644C1[] = {
  ABISELECT(16304,12280),
  ABISELECT(16456,12396),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C98S20644C89S20644C149S20644C12__A3__8S20644C1[] = {
  0,
  0,
  0,
  ABISELECT(-16456,-12396),
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C89S20644C149S20644C12__A5__8S20644C1[] = {
  ABISELECT(16160,12176),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C89S20644C149S20644C12__A2__8S20644C1[] = {
  0,
  0,
  0,
  ABISELECT(-16456,-12396),
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__8S20644C89S20644C149S20644C12__A2__8S20644C1[] = {
  ABISELECT(16160,12176),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C99S20644C149S20644C12__A4__8S20644C1[] = {
  ABISELECT(15744,11848),
  ABISELECT(15896,11964),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C99S20644C149S20644C12__A4__8S20644C1[] = {
  0,
  0,
  0,
  ABISELECT(-15896,-11964),
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C59S20644C149S20644C12__A6__8S20644C1[] = {
  ABISELECT(15600,11744),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__9S20644C149S20644C12__8S20644C1[] = {
  0,
  0,
  0,
  ABISELECT(-16456,-12396),
  (VTBL_ENTRY)&(_ZTI9S20644C14[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C8__9S20644C149S20644C12__8S20644C1[] = {
  ABISELECT(16160,12176),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI9S20644C14[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C9__A1__9S20644C149S20644C12__8S20644C1[] = {
  ABISELECT(15744,11848),
  ABISELECT(15896,11964),
  ABISELECT(-560,-432),
  (VTBL_ENTRY)&(_ZTI9S20644C14[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__A1__9S20644C149S20644C12__8S20644C1[] = {
  ABISELECT(15600,11744),
  ABISELECT(-704,-536),
  (VTBL_ENTRY)&(_ZTI9S20644C14[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__9S20644C12__8S20644C1[] = {
  ABISELECT(16448,12392),
  ABISELECT(-608,-412),
  (VTBL_ENTRY)&(_ZTI9S20644C12[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
extern void _ZN9S20644C143v13Ev();
static  VTBL_ENTRY _tg__ZTV9S20644C14__9S20644C12__8S20644C1[] = {
  ABISELECT(16304,12280),
  ABISELECT(16456,12396),
  ABISELECT(-752,-524),
  (VTBL_ENTRY)&(_ZTI9S20644C12[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
  (VTBL_ENTRY)&_ZN9S20644C143v13Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__A1__9S20644C12__8S20644C1[] = {
  0,
  0,
  0,
  ABISELECT(-17208,-12920),
  (VTBL_ENTRY)&(_ZTI9S20644C12[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C89S20644C14__A1__9S20644C12__8S20644C1[] = {
  ABISELECT(16160,12176),
  ABISELECT(-896,-628),
  (VTBL_ENTRY)&(_ZTI9S20644C12[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C99S20644C14__A1__9S20644C12__8S20644C1[] = {
  ABISELECT(15744,11848),
  ABISELECT(15896,11964),
  ABISELECT(-1312,-956),
  (VTBL_ENTRY)&(_ZTI9S20644C12[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C59S20644C14__A2__9S20644C12__8S20644C1[] = {
  ABISELECT(15600,11744),
  ABISELECT(-1456,-1060),
  (VTBL_ENTRY)&(_ZTI9S20644C12[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C2D1Ev();
extern void _ZN8S20644C2D0Ev();
extern void _ZN8S20644C72v5Ev();
extern void _ZN8S20644C42v8Ev();
extern void _ZN8S20644C23v10Ev();
extern void _ZN8S20644C23v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C2__8S20644C1[] = {
  ABISELECT(6160,4632),
  ABISELECT(4672,3476),
  ABISELECT(4616,3436),
  ABISELECT(4464,3320),
  ABISELECT(4480,3324),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C2[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  (VTBL_ENTRY)&_ZN8S20644C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20644C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20644C72v5Ev,
  (VTBL_ENTRY)&_ZN8S20644C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20644C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20644C23v11Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void _ZN8S20644C4D1Ev();
extern void _ZN8S20644C4D0Ev();
extern void _ZN8S20644C72v5Ev();
extern void _ZN8S20644C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C48S20644C2__8S20644C1[] = {
  ABISELECT(4616,3436),
  ABISELECT(4464,3320),
  ABISELECT(4480,3324),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C4[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  (VTBL_ENTRY)&_ZN8S20644C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20644C4D0Ev,
  (VTBL_ENTRY)&_ZN8S20644C72v5Ev,
  (VTBL_ENTRY)&_ZN8S20644C42v8Ev,
};
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C88S20644C48S20644C2__8S20644C1[] = {
  ABISELECT(4336,3232),
  ABISELECT(4488,3348),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C98S20644C88S20644C48S20644C2__8S20644C1[] = {
  ABISELECT(4336,3232),
  ABISELECT(4488,3348),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C98S20644C88S20644C48S20644C2__8S20644C1[] = {
  0,
  0,
  0,
  ABISELECT(-4488,-3348),
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C88S20644C48S20644C2__A1__8S20644C1[] = {
  ABISELECT(4192,3128),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C88S20644C48S20644C2__8S20644C1[] = {
  0,
  0,
  0,
  ABISELECT(-4488,-3348),
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__8S20644C88S20644C48S20644C2__8S20644C1[] = {
  ABISELECT(4192,3128),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C98S20644C48S20644C2__A1__8S20644C1[] = {
  ABISELECT(3776,2800),
  ABISELECT(3928,2916),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C98S20644C48S20644C2__A1__8S20644C1[] = {
  0,
  0,
  0,
  ABISELECT(-3928,-2916),
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__8S20644C48S20644C2__8S20644C1[] = {
  0,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-4480,-3324),
  (VTBL_ENTRY)&(_ZTI8S20644C4[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__A2__8S20644C48S20644C2__8S20644C1[] = {
  0,
  0,
  0,
  ABISELECT(-4616,-3436),
  (VTBL_ENTRY)&(_ZTI8S20644C4[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C8__8S20644C48S20644C2__8S20644C1[] = {
  ABISELECT(4336,3232),
  ABISELECT(4488,3348),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S20644C4[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C8__A1__8S20644C48S20644C2__8S20644C1[] = {
  ABISELECT(4192,3128),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S20644C4[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C9__A1__8S20644C48S20644C2__8S20644C1[] = {
  ABISELECT(3776,2800),
  ABISELECT(3928,2916),
  ABISELECT(-688,-520),
  (VTBL_ENTRY)&(_ZTI8S20644C4[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C2__A2__8S20644C1[] = {
  ABISELECT(1504,1192),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20644C118S20644C2__A1__8S20644C1[] = {
  ABISELECT(1376,1084),
  ABISELECT(1512,1196),
  ABISELECT(1360,1080),
  0,
  (VTBL_ENTRY)&(_ZTI9S20644C11[0]),
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__9S20644C118S20644C2__A1__8S20644C1[] = {
  0,
  0,
  0,
  ABISELECT(-1512,-1196),
  (VTBL_ENTRY)&(_ZTI9S20644C11[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__9S20644C118S20644C2__A1__8S20644C1[] = {
  0,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-1376,-1084),
  (VTBL_ENTRY)&(_ZTI9S20644C11[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__8S20644C2__8S20644C1[] = {
  0,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-4480,-3324),
  (VTBL_ENTRY)&(_ZTI8S20644C2[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__A2__8S20644C2__8S20644C1[] = {
  0,
  0,
  0,
  ABISELECT(-4616,-3436),
  (VTBL_ENTRY)&(_ZTI8S20644C2[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C88S20644C4__8S20644C2__8S20644C1[] = {
  ABISELECT(4336,3232),
  ABISELECT(4488,3348),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S20644C2[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C88S20644C4__A1__8S20644C2__8S20644C1[] = {
  ABISELECT(4192,3128),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S20644C2[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C98S20644C4__A1__8S20644C2__8S20644C1[] = {
  ABISELECT(3776,2800),
  ABISELECT(3928,2916),
  ABISELECT(-688,-520),
  (VTBL_ENTRY)&(_ZTI8S20644C2[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__A__8S20644C2__8S20644C1[] = {
  ABISELECT(1504,1192),
  ABISELECT(-2960,-2128),
  (VTBL_ENTRY)&(_ZTI8S20644C2[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S20644C2D1Ev,_ZTv0_n28_N8S20644C2D1Ev)();
extern void ABISELECT(_ZThn4672_N8S20644C2D1Ev,_ZThn3476_N8S20644C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20644C2D0Ev,_ZTv0_n28_N8S20644C2D0Ev)();
extern void ABISELECT(_ZThn4672_N8S20644C2D0Ev,_ZThn3476_N8S20644C2D0Ev)() __attribute__((weak));
extern void _ZN9S20644C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20644C10__8S20644C2__8S20644C1[] = {
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-4672,-3476),
  ABISELECT(1488,1156),
  ABISELECT(-192,-152),
  ABISELECT(-56,-40),
  ABISELECT(-208,-156),
  ABISELECT(-4672,-3476),
  (VTBL_ENTRY)&(_ZTI8S20644C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20644C2D1Ev,_ZTv0_n28_N8S20644C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20644C2D0Ev,_ZTv0_n28_N8S20644C2D0Ev),
  (VTBL_ENTRY)&_ZN9S20644C102v9Ev,
};
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C8__A1__8S20644C2__8S20644C1[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1696,-1312),
  ABISELECT(-1544,-1196),
  ABISELECT(-6160,-4632),
  (VTBL_ENTRY)&(_ZTI8S20644C2[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C8__A3__8S20644C2__8S20644C1[] = {
  ABISELECT(-1840,-1416),
  ABISELECT(-6304,-4736),
  (VTBL_ENTRY)&(_ZTI8S20644C2[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N8S20644C2D1Ev,_ZTvn1056_n28_N8S20644C2D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N8S20644C2D0Ev,_ZTvn1056_n28_N8S20644C2D0Ev)();
extern void _ZN8S20644C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C79S20644C10__A1__8S20644C2__8S20644C1[] = {
  ABISELECT(-6008,-4532),
  (VTBL_ENTRY)&(_ZTI8S20644C2[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20644C2D1Ev,_ZTvn1056_n28_N8S20644C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20644C2D0Ev,_ZTvn1056_n28_N8S20644C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20644C72v5Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20644C11__A1__8S20644C2__8S20644C1[] = {
  ABISELECT(1376,1084),
  ABISELECT(1512,1196),
  ABISELECT(1360,1080),
  ABISELECT(-3104,-2240),
  (VTBL_ENTRY)&(_ZTI8S20644C2[0]),
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__8S20644C1[] = {
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN9S20644C10D1Ev();
extern void _ZN9S20644C10D0Ev();
extern void _ZN9S20644C102v9Ev();
static  VTBL_ENTRY _tg__ZTV9S20644C10__8S20644C1[] = {
  ABISELECT(1488,1156),
  ABISELECT(-192,-152),
  ABISELECT(-56,-40),
  ABISELECT(-208,-156),
  0,
  (VTBL_ENTRY)&(_ZTI9S20644C10[0]),
  (VTBL_ENTRY)&_ZN9S20644C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20644C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20644C102v9Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20644C119S20644C10__8S20644C1[] = {
  ABISELECT(-192,-152),
  ABISELECT(-56,-40),
  ABISELECT(-208,-156),
  0,
  (VTBL_ENTRY)&(_ZTI9S20644C11[0]),
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__9S20644C119S20644C10__8S20644C1[] = {
  0,
  0,
  0,
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI9S20644C11[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__9S20644C119S20644C10__8S20644C1[] = {
  0,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(192,152),
  (VTBL_ENTRY)&(_ZTI9S20644C11[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__9S20644C10__8S20644C1[] = {
  0,
  0,
  0,
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI9S20644C10[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__9S20644C10__8S20644C1[] = {
  0,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(192,152),
  (VTBL_ENTRY)&(_ZTI9S20644C10[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C8__9S20644C10__8S20644C1[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1696,-1312),
  ABISELECT(-1544,-1196),
  ABISELECT(-1488,-1156),
  (VTBL_ENTRY)&(_ZTI9S20644C10[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C8__A1__9S20644C10__8S20644C1[] = {
  ABISELECT(-1840,-1416),
  ABISELECT(-1632,-1260),
  (VTBL_ENTRY)&(_ZTI9S20644C10[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C92v6Ev();
extern void _ZN8S20644C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C8__A1__8S20644C1[] = {
  ABISELECT(-1696,-1312),
  ABISELECT(-1544,-1196),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20644C82v7Ev,
};
extern void _ZN8S20644C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C98S20644C8__A2__8S20644C1[] = {
  ABISELECT(-1696,-1312),
  ABISELECT(-1544,-1196),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C92v6Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C98S20644C8__A2__8S20644C1[] = {
  0,
  0,
  0,
  ABISELECT(1544,1196),
  (VTBL_ENTRY)&(_ZTI8S20644C9[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C58S20644C8__A3__8S20644C1[] = {
  ABISELECT(-1840,-1416),
  0,
  (VTBL_ENTRY)&(_ZTI8S20644C5[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C6__8S20644C8__A1__8S20644C1[] = {
  0,
  0,
  0,
  ABISELECT(1544,1196),
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
extern void _ZN8S20644C62v2Ev();
extern void _ZN8S20644C62v3Ev();
extern void _ZN8S20644C62v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20644C5__8S20644C8__A1__8S20644C1[] = {
  ABISELECT(-1840,-1416),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20644C8[0]),
  (VTBL_ENTRY)&_ZN8S20644C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v3Ev,
  (VTBL_ENTRY)&_ZN8S20644C62v4Ev,
};
static  VTT_ENTRY vtt_S20644C1[] = {
  {&(_ZTV8S20644C1[8]),  8,153},
  {&(_tg__ZTV9S20644C12__8S20644C1[4]),  4,7},
  {&(_tg__ZTV8S20644C59S20644C12__A4__8S20644C1[3]),  3,6},
  {&(_tg__ZTV9S20644C149S20644C12__8S20644C1[4]),  4,7},
  {&(_tg__ZTV8S20644C89S20644C149S20644C12__A2__8S20644C1[4]),  4,6},
  {&(_tg__ZTV8S20644C98S20644C89S20644C149S20644C12__A3__8S20644C1[4]),  4,5},
  {&(_tg__ZTV8S20644C6__8S20644C98S20644C89S20644C149S20644C12__A3__8S20644C1[5]),  5,8},
  {&(_tg__ZTV8S20644C58S20644C89S20644C149S20644C12__A5__8S20644C1[3]),  3,6},
  {&(_tg__ZTV8S20644C6__8S20644C89S20644C149S20644C12__A2__8S20644C1[5]),  5,8},
  {&(_tg__ZTV8S20644C5__8S20644C89S20644C149S20644C12__A2__8S20644C1[3]),  3,6},
  {&(_tg__ZTV8S20644C99S20644C149S20644C12__A4__8S20644C1[4]),  4,5},
  {&(_tg__ZTV8S20644C6__8S20644C99S20644C149S20644C12__A4__8S20644C1[5]),  5,8},
  {&(_tg__ZTV8S20644C59S20644C149S20644C12__A6__8S20644C1[3]),  3,6},
  {&(_tg__ZTV8S20644C6__9S20644C149S20644C12__8S20644C1[5]),  5,8},
  {&(_tg__ZTV8S20644C58S20644C8__9S20644C149S20644C12__8S20644C1[3]),  3,6},
  {&(_tg__ZTV8S20644C9__A1__9S20644C149S20644C12__8S20644C1[4]),  4,5},
  {&(_tg__ZTV8S20644C5__A1__9S20644C149S20644C12__8S20644C1[3]),  3,6},
  {&(_tg__ZTV8S20644C5__9S20644C12__8S20644C1[3]),  3,6},
  {&(_tg__ZTV9S20644C14__9S20644C12__8S20644C1[4]),  4,7},
  {&(_tg__ZTV8S20644C6__A1__9S20644C12__8S20644C1[5]),  5,8},
  {&(_tg__ZTV8S20644C58S20644C89S20644C14__A1__9S20644C12__8S20644C1[3]),  3,6},
  {&(_tg__ZTV8S20644C99S20644C14__A1__9S20644C12__8S20644C1[4]),  4,5},
  {&(_tg__ZTV8S20644C59S20644C14__A2__9S20644C12__8S20644C1[3]),  3,6},
  {&(_ZTV8S20644C1[59]),  59,153},
  {&(_ZTV8S20644C1[102]),  102,153},
  {&(_ZTV8S20644C1[110]),  110,153},
  {&(_ZTV8S20644C1[72]),  72,153},
  {&(_ZTV8S20644C1[77]),  77,153},
  {&(_ZTV8S20644C1[84]),  84,153},
  {&(_ZTV8S20644C1[88]),  88,153},
  {&(_ZTV8S20644C1[125]),  125,153},
  {&(_ZTV8S20644C1[145]),  145,153},
  {&(_ZTV8S20644C1[150]),  150,153},
  {&(_ZTV8S20644C1[130]),  130,153},
  {&(_ZTV8S20644C1[96]),  96,153},
  {&(_ZTV8S20644C1[15]),  15,153},
  {&(_ZTV8S20644C1[22]),  22,153},
  {&(_ZTV8S20644C1[28]),  28,153},
  {&(_ZTV8S20644C1[35]),  35,153},
  {&(_ZTV8S20644C1[39]),  39,153},
  {&(_tg__ZTV8S20644C2__8S20644C1[7]),  7,16},
  {&(_tg__ZTV8S20644C48S20644C2__8S20644C1[5]),  5,12},
  {&(_tg__ZTV8S20644C88S20644C48S20644C2__8S20644C1[4]),  4,6},
  {&(_tg__ZTV8S20644C98S20644C88S20644C48S20644C2__8S20644C1[4]),  4,5},
  {&(_tg__ZTV8S20644C6__8S20644C98S20644C88S20644C48S20644C2__8S20644C1[5]),  5,8},
  {&(_tg__ZTV8S20644C58S20644C88S20644C48S20644C2__A1__8S20644C1[3]),  3,6},
  {&(_tg__ZTV8S20644C6__8S20644C88S20644C48S20644C2__8S20644C1[5]),  5,8},
  {&(_tg__ZTV8S20644C5__8S20644C88S20644C48S20644C2__8S20644C1[3]),  3,6},
  {&(_tg__ZTV8S20644C98S20644C48S20644C2__A1__8S20644C1[4]),  4,5},
  {&(_tg__ZTV8S20644C6__8S20644C98S20644C48S20644C2__A1__8S20644C1[5]),  5,8},
  {&(_tg__ZTV8S20644C5__8S20644C48S20644C2__8S20644C1[6]),  6,9},
  {&(_tg__ZTV8S20644C6__A2__8S20644C48S20644C2__8S20644C1[5]),  5,8},
  {&(_tg__ZTV8S20644C8__8S20644C48S20644C2__8S20644C1[4]),  4,6},
  {&(_tg__ZTV8S20644C58S20644C8__A1__8S20644C48S20644C2__8S20644C1[3]),  3,6},
  {&(_tg__ZTV8S20644C9__A1__8S20644C48S20644C2__8S20644C1[4]),  4,5},
  {&(_tg__ZTV8S20644C58S20644C2__A2__8S20644C1[3]),  3,6},
  {&(_tg__ZTV9S20644C118S20644C2__A1__8S20644C1[5]),  5,5},
  {&(_tg__ZTV8S20644C6__9S20644C118S20644C2__A1__8S20644C1[5]),  5,8},
  {&(_tg__ZTV8S20644C5__9S20644C118S20644C2__A1__8S20644C1[6]),  6,9},
  {&(_tg__ZTV8S20644C5__8S20644C2__8S20644C1[6]),  6,9},
  {&(_tg__ZTV8S20644C6__A2__8S20644C2__8S20644C1[5]),  5,8},
  {&(_tg__ZTV8S20644C88S20644C4__8S20644C2__8S20644C1[4]),  4,6},
  {&(_tg__ZTV8S20644C58S20644C88S20644C4__A1__8S20644C2__8S20644C1[3]),  3,6},
  {&(_tg__ZTV8S20644C98S20644C4__A1__8S20644C2__8S20644C1[4]),  4,5},
  {&(_tg__ZTV8S20644C5__A__8S20644C2__8S20644C1[3]),  3,6},
  {&(_tg__ZTV9S20644C10__8S20644C2__8S20644C1[12]),  12,15},
  {&(_tg__ZTV8S20644C8__A1__8S20644C2__8S20644C1[9]),  9,11},
  {&(_tg__ZTV8S20644C58S20644C8__A3__8S20644C2__8S20644C1[3]),  3,6},
  {&(_tg__ZTV8S20644C79S20644C10__A1__8S20644C2__8S20644C1[2]),  2,8},
  {&(_tg__ZTV9S20644C11__A1__8S20644C2__8S20644C1[5]),  5,5},
  {&(_tg__ZTV8S20644C5__8S20644C1[3]),  3,6},
  {&(_tg__ZTV9S20644C10__8S20644C1[6]),  6,9},
  {&(_tg__ZTV9S20644C119S20644C10__8S20644C1[5]),  5,5},
  {&(_tg__ZTV8S20644C6__9S20644C119S20644C10__8S20644C1[5]),  5,8},
  {&(_tg__ZTV8S20644C5__9S20644C119S20644C10__8S20644C1[6]),  6,9},
  {&(_tg__ZTV8S20644C6__9S20644C10__8S20644C1[5]),  5,8},
  {&(_tg__ZTV8S20644C5__9S20644C10__8S20644C1[6]),  6,9},
  {&(_tg__ZTV8S20644C8__9S20644C10__8S20644C1[9]),  9,11},
  {&(_tg__ZTV8S20644C58S20644C8__A1__9S20644C10__8S20644C1[3]),  3,6},
  {&(_tg__ZTV8S20644C8__A1__8S20644C1[4]),  4,6},
  {&(_tg__ZTV8S20644C98S20644C8__A2__8S20644C1[4]),  4,5},
  {&(_tg__ZTV8S20644C6__8S20644C98S20644C8__A2__8S20644C1[5]),  5,8},
  {&(_tg__ZTV8S20644C58S20644C8__A3__8S20644C1[3]),  3,6},
  {&(_tg__ZTV8S20644C6__8S20644C8__A1__8S20644C1[5]),  5,8},
  {&(_tg__ZTV8S20644C5__8S20644C8__A1__8S20644C1[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S20644C1[];
extern  VTBL_ENTRY _ZTV8S20644C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20644C1[];
static VTBL_ENTRY alt_thunk_names8[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20644C2D0Ev,_ZTv0_n28_N8S20644C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4672_N8S20644C2D0Ev,_ZThn3476_N8S20644C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20644C2D1Ev,_ZTv0_n28_N8S20644C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4672_N8S20644C2D1Ev,_ZThn3476_N8S20644C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20644C1D0Ev,_ZTv0_n28_N8S20644C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn17264_N8S20644C1D0Ev,_ZThn12960_N8S20644C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20644C1D1Ev,_ZTv0_n28_N8S20644C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn17264_N8S20644C1D1Ev,_ZThn12960_N8S20644C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20644C1D0Ev,_ZTv0_n44_N8S20644C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12592_N8S20644C1D0Ev,_ZThn9484_N8S20644C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20644C1D1Ev,_ZTv0_n44_N8S20644C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12592_N8S20644C1D1Ev,_ZThn9484_N8S20644C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20644C1 = {  "S20644C1", // class name
  bases_S20644C1, 47,
  &(vtc_S20644C1[0]), // expected_vtbl_contents
  &(vtt_S20644C1[0]), // expected_vtt_contents
  ABISELECT(19312,14548), // object size
  NSPAIRA(_ZTI8S20644C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20644C1),153, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20644C1),85, //virtual table table var
  35, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names8,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7251C3  : S3216C8_nt {
  ::S3216C8_nt s7251c3f0[3];
  ::S3216C8_nt s7251c3f1[2];
  void *s7251c3f2;
  short s7251c3f3;
  ::S3216C8_nt s7251c3f4;
  virtual void  v3(); // _ZN7S7251C32v3Ev
  virtual void  v4(); // _ZN7S7251C32v4Ev
  virtual void  v5(); // _ZN7S7251C32v5Ev
  ~S7251C3(); // tgen
  S7251C3(); // tgen
};
//SIG(-1 S7251C3) C1{ BC2{ m Fi} v1 v2 v3 FC2[3] FC2[2] Fp Fs FC2}


void  S7251C3 ::v3(){vfunc_called(this, "_ZN7S7251C32v3Ev");}
void  S7251C3 ::v4(){vfunc_called(this, "_ZN7S7251C32v4Ev");}
void  S7251C3 ::v5(){vfunc_called(this, "_ZN7S7251C32v5Ev");}
S7251C3 ::~S7251C3(){ note_dtor("S7251C3", this);} // tgen
S7251C3 ::S7251C3(){ note_ctor("S7251C3", this);} // tgen

static void Test_S7251C3()
{
  extern Class_Descriptor cd_S7251C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,11)];
    init_test(&cd_S7251C3, buf);
    S7251C3 *dp, &lv = *(dp=new (buf) S7251C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S7251C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7251C3)");
    check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(8,4), "S7251C3");
    check_field_offset(lv, s7251c3f0, ABISELECT(12,8), "S7251C3.s7251c3f0");
    check_field_offset(lv, s7251c3f1, ABISELECT(24,20), "S7251C3.s7251c3f1");
    check_field_offset(lv, s7251c3f2, ABISELECT(32,28), "S7251C3.s7251c3f2");
    check_field_offset(lv, s7251c3f3, ABISELECT(40,32), "S7251C3.s7251c3f3");
    check_field_offset(lv, s7251c3f4, ABISELECT(44,36), "S7251C3.s7251c3f4");
    test_class_info(&lv, &cd_S7251C3);
    dp->~S7251C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7251C3(Test_S7251C3, "S7251C3", ABISELECT(48,40));

#else // __cplusplus

extern void _ZN7S7251C3C1Ev();
extern void _ZN7S7251C3D1Ev();
Name_Map name_map_S7251C3[] = {
  NSPAIR(_ZN7S7251C3C1Ev),
  NSPAIR(_ZN7S7251C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S7251C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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 _ZTI7S7251C3[];
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY vtc_S7251C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C3[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
Class_Descriptor cd_S7251C3 = {  "S7251C3", // class name
  bases_S7251C3, 1,
  &(vtc_S7251C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,40), // object size
  NSPAIRA(_ZTI7S7251C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7251C3),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  S7251C2  : virtual S7251C3 , virtual S3216C8_nt {
  ::S7251C3 s7251c2f0;
  long double s7251c2f1;
  void *s7251c2f2[2];
  ::S7251C3 s7251c2f3;
  virtual void  v6(); // _ZN7S7251C22v6Ev
  ~S7251C2(); // tgen
  S7251C2(); // tgen
};
//SIG(-1 S7251C2) C1{ VBC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC3 v1 FC2 FD Fp[2] FC2}


void  S7251C2 ::v6(){vfunc_called(this, "_ZN7S7251C22v6Ev");}
S7251C2 ::~S7251C2(){ note_dtor("S7251C2", this);} // tgen
S7251C2 ::S7251C2(){ note_ctor("S7251C2", this);} // tgen

static void Test_S7251C2()
{
  extern Class_Descriptor cd_S7251C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,38)];
    init_test(&cd_S7251C2, buf);
    S7251C2 *dp, &lv = *(dp=new (buf) S7251C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,148), "sizeof(S7251C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7251C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*), ABISELECT(152,108), "S7251C2");
    check_base_class_offset(lv, (S7251C3*), ABISELECT(144,104), "S7251C2");
    /*is_ambiguous_... S7251C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(192,144), "S7251C2");
    check_field_offset(lv, s7251c2f0, ABISELECT(8,4), "S7251C2.s7251c2f0");
    check_field_offset(lv, s7251c2f1, ABISELECT(64,44), "S7251C2.s7251c2f1");
    check_field_offset(lv, s7251c2f2, ABISELECT(80,56), "S7251C2.s7251c2f2");
    check_field_offset(lv, s7251c2f3, ABISELECT(96,64), "S7251C2.s7251c2f3");
    test_class_info(&lv, &cd_S7251C2);
    dp->~S7251C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7251C2(Test_S7251C2, "S7251C2", ABISELECT(208,148));

#else // __cplusplus

extern void _ZN7S7251C2C1Ev();
extern void _ZN7S7251C2D1Ev();
Name_Map name_map_S7251C2[] = {
  NSPAIR(_ZN7S7251C2C1Ev),
  NSPAIR(_ZN7S7251C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S7251C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(152,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
    1, //immediately_derived
  0, 0},
  {&cd_S7251C3,    ABISELECT(144,104), //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(192,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7251C2[];
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY vtc_S7251C2[] = {
  ABISELECT(192,144),
  ABISELECT(144,104),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  0,
  0,
  0,
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern VTBL_ENTRY _ZTV7S7251C2[];
static  VTT_ENTRY vtt_S7251C2[] = {
  {&(_ZTV7S7251C2[4]),  4,13},
  {&(_ZTV7S7251C2[10]),  10,13},
};
extern VTBL_ENTRY _ZTI7S7251C2[];
extern  VTBL_ENTRY _ZTV7S7251C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C2[];
Class_Descriptor cd_S7251C2 = {  "S7251C2", // class name
  bases_S7251C2, 3,
  &(vtc_S7251C2[0]), // expected_vtbl_contents
  &(vtt_S7251C2[0]), // expected_vtt_contents
  ABISELECT(208,148), // object size
  NSPAIRA(_ZTI7S7251C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7251C2),13, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7251C2),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  S7251C7  : S7251C3 , virtual S3216C8_nt {
  long double s7251c7f0;
  __tsi64 s7251c7f1;
  ::S7251C3 s7251c7f2;
  void *s7251c7f3;
  short s7251c7f4[3];
  ~S7251C7(); // tgen
  S7251C7(); // tgen
};
//SIG(-1 S7251C7) C1{ BC2{ BC3{ m Fi} v1 v2 v3 FC3[3] FC3[2] Fp Fs FC3} VBC3 FD FL FC2 Fp Fs[3]}


S7251C7 ::~S7251C7(){ note_dtor("S7251C7", this);} // tgen
S7251C7 ::S7251C7(){ note_ctor("S7251C7", this);} // tgen

static void Test_S7251C7()
{
  extern Class_Descriptor cd_S7251C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,30)];
    init_test(&cd_S7251C7, buf);
    S7251C7 *dp, &lv = *(dp=new (buf) S7251C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,116), "sizeof(S7251C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7251C7)");
    check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*), ABISELECT(8,4), "S7251C7");
    check_base_class_offset(lv, (S7251C3*), 0, "S7251C7");
    /*is_ambiguous_... S7251C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(136,112), "S7251C7");
    check_field_offset(lv, s7251c7f0, ABISELECT(48,40), "S7251C7.s7251c7f0");
    check_field_offset(lv, s7251c7f1, ABISELECT(64,52), "S7251C7.s7251c7f1");
    check_field_offset(lv, s7251c7f2, ABISELECT(72,60), "S7251C7.s7251c7f2");
    check_field_offset(lv, s7251c7f3, ABISELECT(120,100), "S7251C7.s7251c7f3");
    check_field_offset(lv, s7251c7f4, ABISELECT(128,104), "S7251C7.s7251c7f4");
    test_class_info(&lv, &cd_S7251C7);
    dp->~S7251C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7251C7(Test_S7251C7, "S7251C7", ABISELECT(144,116));

#else // __cplusplus

extern void _ZN7S7251C7C1Ev();
extern void _ZN7S7251C7D1Ev();
Name_Map name_map_S7251C7[] = {
  NSPAIR(_ZN7S7251C7C1Ev),
  NSPAIR(_ZN7S7251C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S7251C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S7251C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7251C7[];
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY vtc_S7251C7[] = {
  ABISELECT(136,112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C7[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern VTBL_ENTRY _ZTV7S7251C7[];
static  VTT_ENTRY vtt_S7251C7[] = {
  {&(_ZTV7S7251C7[3]),  3,6},
};
extern VTBL_ENTRY _ZTI7S7251C7[];
extern  VTBL_ENTRY _ZTV7S7251C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C7[];
Class_Descriptor cd_S7251C7 = {  "S7251C7", // class name
  bases_S7251C7, 3,
  &(vtc_S7251C7[0]), // expected_vtbl_contents
  &(vtt_S7251C7[0]), // expected_vtt_contents
  ABISELECT(144,116), // object size
  NSPAIRA(_ZTI7S7251C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7251C7),6, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7251C7),1, //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  S7251C8  : S7251C3 {
  void *s7251c8f0[7];
  int s7251c8f1[2];
  __tsi64 s7251c8f2;
  int s7251c8f3;
  virtual  ~S7251C8(); // _ZN7S7251C8D1Ev
  virtual void  v9(); // _ZN7S7251C82v9Ev
  S7251C8(); // tgen
};
//SIG(-1 S7251C8) C1{ BC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} vd v1 Fp[7] Fi[2] FL Fi}


 S7251C8 ::~S7251C8(){ note_dtor("S7251C8", this);}
void  S7251C8 ::v9(){vfunc_called(this, "_ZN7S7251C82v9Ev");}
S7251C8 ::S7251C8(){ note_ctor("S7251C8", this);} // tgen

static void Test_S7251C8()
{
  extern Class_Descriptor cd_S7251C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,23)];
    init_test(&cd_S7251C8, buf);
    S7251C8 *dp, &lv = *(dp=new (buf) S7251C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,88), "sizeof(S7251C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7251C8)");
    check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*), ABISELECT(8,4), "S7251C8");
    check_base_class_offset(lv, (S7251C3*), 0, "S7251C8");
    check_field_offset(lv, s7251c8f0, ABISELECT(48,40), "S7251C8.s7251c8f0");
    check_field_offset(lv, s7251c8f1, ABISELECT(104,68), "S7251C8.s7251c8f1");
    check_field_offset(lv, s7251c8f2, ABISELECT(112,76), "S7251C8.s7251c8f2");
    check_field_offset(lv, s7251c8f3, ABISELECT(120,84), "S7251C8.s7251c8f3");
    test_class_info(&lv, &cd_S7251C8);
    dp->~S7251C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7251C8(Test_S7251C8, "S7251C8", ABISELECT(128,88));

#else // __cplusplus

extern void _ZN7S7251C8C1Ev();
extern void _ZN7S7251C8D1Ev();
Name_Map name_map_S7251C8[] = {
  NSPAIR(_ZN7S7251C8C1Ev),
  NSPAIR(_ZN7S7251C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
static Base_Class bases_S7251C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S7251C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7251C8[];
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void _ZN7S7251C8D1Ev();
extern void _ZN7S7251C8D0Ev();
extern void _ZN7S7251C82v9Ev();
static  VTBL_ENTRY vtc_S7251C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C8[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7251C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7251C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7251C82v9Ev,
};
extern VTBL_ENTRY _ZTI7S7251C8[];
extern  VTBL_ENTRY _ZTV7S7251C8[];
Class_Descriptor cd_S7251C8 = {  "S7251C8", // class name
  bases_S7251C8, 2,
  &(vtc_S7251C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,88), // object size
  NSPAIRA(_ZTI7S7251C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7251C8),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  S7251C9  : virtual S7251C3 , virtual S3216C8_nt , S7251C2 , S7251C7 {
  void *s7251c9f0[2];
  long s7251c9f1;
  int s7251c9f2;
  ::S7251C3 s7251c9f3[5];
  virtual void  v10(); // _ZN7S7251C93v10Ev
  ~S7251C9(); // tgen
  S7251C9(); // tgen
};
//SIG(-1 S7251C9) C1{ VBC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC3 BC4{ VBC2 VBC3 v5 FC2 FD Fp[2] FC2} BC5{ BC2 VBC3 FD FL FC2 Fp Fs[3]} v1 Fp[2] Fl Fi FC2[5]}


void  S7251C9 ::v10(){vfunc_called(this, "_ZN7S7251C93v10Ev");}
S7251C9 ::~S7251C9(){ note_dtor("S7251C9", this);} // tgen
S7251C9 ::S7251C9(){ note_ctor("S7251C9", this);} // tgen

static void Test_S7251C9()
{
  extern Class_Descriptor cd_S7251C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(39,120)];
    init_test(&cd_S7251C9, buf);
    S7251C9 *dp, &lv = *(dp=new (buf) S7251C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(608,476), "sizeof(S7251C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7251C9)");
    /*is_ambiguous_... S7251C9::S7251C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*), ABISELECT(560,436), "S7251C9");
    /*is_ambiguous_... S7251C9::S7251C3 */ AMB_check_base_class_offset(lv, (S7251C3*), ABISELECT(552,432), "S7251C9");
    check_base_class_offset(lv, (S7251C3*)(S7251C2*), ABISELECT(552,432), "S7251C9");
    /*is_ambiguous_... S7251C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(600,472), "S7251C9");
    /*is_ambiguous_... S7251C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C2*), ABISELECT(600,472), "S7251C9");
    /*is_ambiguous_... S7251C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C7*), ABISELECT(600,472), "S7251C9");
    check_base_class_offset(lv, (S7251C2*), 0, "S7251C9");
    check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C7*), ABISELECT(152,108), "S7251C9");
    check_base_class_offset(lv, (S7251C3*)(S7251C7*), ABISELECT(144,104), "S7251C9");
    check_base_class_offset(lv, (S7251C7*), ABISELECT(144,104), "S7251C9");
    check_field_offset(lv, s7251c9f0, ABISELECT(280,216), "S7251C9.s7251c9f0");
    check_field_offset(lv, s7251c9f1, ABISELECT(296,224), "S7251C9.s7251c9f1");
    check_field_offset(lv, s7251c9f2, ABISELECT(304,228), "S7251C9.s7251c9f2");
    check_field_offset(lv, s7251c9f3, ABISELECT(312,232), "S7251C9.s7251c9f3");
    test_class_info(&lv, &cd_S7251C9);
    dp->~S7251C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7251C9(Test_S7251C9, "S7251C9", ABISELECT(608,476));

#else // __cplusplus

extern void _ZN7S7251C9C1Ev();
extern void _ZN7S7251C9D1Ev();
Name_Map name_map_S7251C9[] = {
  NSPAIR(_ZN7S7251C9C1Ev),
  NSPAIR(_ZN7S7251C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C2;
extern VTBL_ENTRY _ZTI7S7251C2[];
extern  VTBL_ENTRY _ZTV7S7251C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C7;
extern VTBL_ENTRY _ZTI7S7251C7[];
extern  VTBL_ENTRY _ZTV7S7251C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C7[];
static Base_Class bases_S7251C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(560,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
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7251C3,    ABISELECT(552,432), //bcp->offset
    12, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(600,472), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7251C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(152,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7251C3,    ABISELECT(144,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7251C7,    ABISELECT(144,104), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7251C9[];
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY vtc_S7251C9[] = {
  ABISELECT(600,472),
  ABISELECT(552,432),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
  ABISELECT(456,368),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  0,
  0,
  0,
  ABISELECT(-552,-432),
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern VTBL_ENTRY _ZTV7S7251C9[];
extern void _ZN7S7251C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C2__7S7251C9[] = {
  ABISELECT(600,472),
  ABISELECT(552,432),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C2__7S7251C9[] = {
  0,
  0,
  0,
  ABISELECT(-552,-432),
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__7S7251C9[] = {
  ABISELECT(456,368),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C7[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
static  VTT_ENTRY vtt_S7251C9[] = {
  {&(_ZTV7S7251C9[4]),  4,20},
  {&(_tg__ZTV7S7251C2__7S7251C9[4]),  4,5},
  {&(_tg__ZTV7S7251C3__7S7251C2__7S7251C9[5]),  5,8},
  {&(_tg__ZTV7S7251C7__7S7251C9[3]),  3,6},
  {&(_ZTV7S7251C9[17]),  17,20},
  {&(_ZTV7S7251C9[9]),  9,20},
};
extern VTBL_ENTRY _ZTI7S7251C9[];
extern  VTBL_ENTRY _ZTV7S7251C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C9[];
Class_Descriptor cd_S7251C9 = {  "S7251C9", // class name
  bases_S7251C9, 7,
  &(vtc_S7251C9[0]), // expected_vtbl_contents
  &(vtt_S7251C9[0]), // expected_vtt_contents
  ABISELECT(608,476), // object size
  NSPAIRA(_ZTI7S7251C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7251C9),20, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7251C9),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  S7251C6  : virtual S7251C7 , S7251C8 , virtual S7251C3 , S7251C9 , S7251C2 {
  int s7251c6f0[2];
  long double s7251c6f1;
  ::S7251C2 s7251c6f2[10];
  int s7251c6f3;
  virtual void  v15(); // _ZN7S7251C63v15Ev
  ~S7251C6(); // tgen
  S7251C6(); // tgen
};
//SIG(-1 S7251C6) C1{ VBC2{ BC3{ BC4{ m Fi} v2 v3 v4 FC4[3] FC4[2] Fp Fs FC4} VBC4 FD FL FC3 Fp Fs[3]} BC5{ BC3 vd v5 Fp[7] Fi[2] FL Fi} VBC3 BC6{ VBC3 VBC4 BC7{ VBC3 VBC4 v6 FC3 FD Fp[2] FC3} BC2 v7 Fp[2] Fl Fi FC3[5]} BC7 v1 Fi[2] FD FC7[10] Fi}


void  S7251C6 ::v15(){vfunc_called(this, "_ZN7S7251C63v15Ev");}
S7251C6 ::~S7251C6(){ note_dtor("S7251C6", this);} // tgen
S7251C6 ::S7251C6(){ note_ctor("S7251C6", this);} // tgen

static void Test_S7251C6()
{
  extern Class_Descriptor cd_S7251C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(198,572)];
    init_test(&cd_S7251C6, buf);
    S7251C6 *dp, &lv = *(dp=new (buf) S7251C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3152,2284), "sizeof(S7251C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7251C6)");
    /*is_ambiguous_... S7251C6::S7251C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C7*), ABISELECT(2968,2132), "S7251C6");
    /*is_ambiguous_... S7251C6::S7251C7 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C7*), ABISELECT(2960,2128), "S7251C6");
    /*is_ambiguous_... S7251C6::S7251C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C7*), ABISELECT(3096,2240), "S7251C6");
    /*is_ambiguous_... S7251C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C9*), ABISELECT(3096,2240), "S7251C6");
    /*is_ambiguous_... S7251C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C2*)(S7251C9*), ABISELECT(3096,2240), "S7251C6");
    /*is_ambiguous_... S7251C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C7*)(S7251C9*), ABISELECT(3096,2240), "S7251C6");
    /*is_ambiguous_... S7251C6::S7251C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C2*), ABISELECT(3096,2240), "S7251C6");
    /*is_ambiguous_... S7251C6::S7251C7 */ AMB_check_base_class_offset(lv, (S7251C7*), ABISELECT(2960,2128), "S7251C6");
    check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C8*), ABISELECT(8,4), "S7251C6");
    check_base_class_offset(lv, (S7251C3*)(S7251C8*), 0, "S7251C6");
    check_base_class_offset(lv, (S7251C8*), 0, "S7251C6");
    /*is_ambiguous_... S7251C6::S7251C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*), ABISELECT(3112,2248), "S7251C6");
    /*is_ambiguous_... S7251C6::S7251C3 */ AMB_check_base_class_offset(lv, (S7251C3*), ABISELECT(3104,2244), "S7251C6");
    /*is_ambiguous_... S7251C9::S7251C3 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C9*), ABISELECT(3104,2244), "S7251C6");
    check_base_class_offset(lv, (S7251C3*)(S7251C2*)(S7251C9*), ABISELECT(3104,2244), "S7251C6");
    /*is_ambiguous_... S7251C6::S7251C2 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C2*), ABISELECT(3104,2244), "S7251C6");
    check_base_class_offset(lv, (S7251C2*)(S7251C9*), ABISELECT(128,88), "S7251C6");
    check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C7*)(S7251C9*), ABISELECT(280,196), "S7251C6");
    check_base_class_offset(lv, (S7251C3*)(S7251C7*)(S7251C9*), ABISELECT(272,192), "S7251C6");
    check_base_class_offset(lv, (S7251C7*)(S7251C9*), ABISELECT(272,192), "S7251C6");
    check_base_class_offset(lv, (S7251C9*), ABISELECT(128,88), "S7251C6");
    /*is_ambiguous_... S7251C6::S7251C2 */ AMB_check_base_class_offset(lv, (S7251C2*), ABISELECT(688,520), "S7251C6");
    check_field_offset(lv, s7251c6f0, ABISELECT(832,624), "S7251C6.s7251c6f0");
    check_field_offset(lv, s7251c6f1, ABISELECT(848,632), "S7251C6.s7251c6f1");
    check_field_offset(lv, s7251c6f2, ABISELECT(864,644), "S7251C6.s7251c6f2");
    check_field_offset(lv, s7251c6f3, ABISELECT(2944,2124), "S7251C6.s7251c6f3");
    test_class_info(&lv, &cd_S7251C6);
    dp->~S7251C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7251C6(Test_S7251C6, "S7251C6", ABISELECT(3152,2284));

#else // __cplusplus

extern void _ZN7S7251C6C1Ev();
extern void _ZN7S7251C6D1Ev();
Name_Map name_map_S7251C6[] = {
  NSPAIR(_ZN7S7251C6C1Ev),
  NSPAIR(_ZN7S7251C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C7;
extern VTBL_ENTRY _ZTI7S7251C7[];
extern  VTBL_ENTRY _ZTV7S7251C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C7[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C8;
extern VTBL_ENTRY _ZTI7S7251C8[];
extern  VTBL_ENTRY _ZTV7S7251C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C2;
extern VTBL_ENTRY _ZTI7S7251C2[];
extern  VTBL_ENTRY _ZTV7S7251C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C7;
extern VTBL_ENTRY _ZTI7S7251C7[];
extern  VTBL_ENTRY _ZTV7S7251C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C7[];
extern Class_Descriptor cd_S7251C9;
extern VTBL_ENTRY _ZTI7S7251C9[];
extern  VTBL_ENTRY _ZTV7S7251C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C9[];
extern Class_Descriptor cd_S7251C2;
extern VTBL_ENTRY _ZTI7S7251C2[];
extern  VTBL_ENTRY _ZTV7S7251C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C2[];
static Base_Class bases_S7251C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(2968,2132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7251C3,    ABISELECT(2960,2128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3216C8_nt,    ABISELECT(3096,2240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7251C7,    ABISELECT(2960,2128), //bcp->offset
    29, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7251C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7251C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3216C8_nt,    ABISELECT(3112,2248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7251C3,    ABISELECT(3104,2244), //bcp->offset
    38, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7251C2,    ABISELECT(128,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    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
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7251C3,    ABISELECT(272,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
    12, //immediately_derived
  0, 0},
  {&cd_S7251C7,    ABISELECT(272,192), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7251C9,    ABISELECT(128,88), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7251C2,    ABISELECT(688,520), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7251C6[];
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void _ZN7S7251C6D1Ev();
extern void _ZN7S7251C6D0Ev();
extern void _ZN7S7251C82v9Ev();
extern void _ZN7S7251C63v15Ev();
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY vtc_S7251C6[] = {
  ABISELECT(3104,2244),
  ABISELECT(3096,2240),
  ABISELECT(2960,2128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C6[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7251C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7251C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7251C82v9Ev,
  (VTBL_ENTRY)&_ZN7S7251C63v15Ev,
  ABISELECT(2968,2152),
  ABISELECT(2976,2156),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI7S7251C6[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
  ABISELECT(2824,2048),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI7S7251C6[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  ABISELECT(2408,1720),
  ABISELECT(2416,1724),
  ABISELECT(-688,-520),
  (VTBL_ENTRY)&(_ZTI7S7251C6[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  0,
  0,
  0,
  ABISELECT(136,112),
  ABISELECT(-2960,-2128),
  (VTBL_ENTRY)&(_ZTI7S7251C6[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  0,
  0,
  0,
  ABISELECT(-3104,-2244),
  (VTBL_ENTRY)&(_ZTI7S7251C6[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern VTBL_ENTRY _ZTV7S7251C6[];
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C9__7S7251C6[] = {
  ABISELECT(2968,2152),
  ABISELECT(2976,2156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
};
extern void _ZN7S7251C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C27S7251C9__7S7251C6[] = {
  ABISELECT(2968,2152),
  ABISELECT(2976,2156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C27S7251C9__7S7251C6[] = {
  0,
  0,
  0,
  ABISELECT(-2976,-2156),
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C77S7251C9__A1__7S7251C6[] = {
  ABISELECT(2824,2048),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C7[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C9__7S7251C6[] = {
  0,
  0,
  0,
  ABISELECT(-2976,-2156),
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__7S7251C9__7S7251C6[] = {
  ABISELECT(2824,2048),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C2__A1__7S7251C6[] = {
  ABISELECT(2408,1720),
  ABISELECT(2416,1724),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C2__A1__7S7251C6[] = {
  0,
  0,
  0,
  ABISELECT(-2416,-1724),
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__7S7251C6[] = {
  ABISELECT(136,112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C7[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
static  VTT_ENTRY vtt_S7251C6[] = {
  {&(_ZTV7S7251C6[5]),  5,46},
  {&(_tg__ZTV7S7251C9__7S7251C6[4]),  4,6},
  {&(_tg__ZTV7S7251C27S7251C9__7S7251C6[4]),  4,5},
  {&(_tg__ZTV7S7251C3__7S7251C27S7251C9__7S7251C6[5]),  5,8},
  {&(_tg__ZTV7S7251C77S7251C9__A1__7S7251C6[3]),  3,6},
  {&(_tg__ZTV7S7251C3__7S7251C9__7S7251C6[5]),  5,8},
  {&(_tg__ZTV7S7251C7__7S7251C9__7S7251C6[3]),  3,6},
  {&(_tg__ZTV7S7251C2__A1__7S7251C6[4]),  4,5},
  {&(_tg__ZTV7S7251C3__7S7251C2__A1__7S7251C6[5]),  5,8},
  {&(_ZTV7S7251C6[35]),  35,46},
  {&(_ZTV7S7251C6[43]),  43,46},
  {&(_ZTV7S7251C6[16]),  16,46},
  {&(_ZTV7S7251C6[21]),  21,46},
  {&(_ZTV7S7251C6[28]),  28,46},
  {&(_tg__ZTV7S7251C7__7S7251C6[3]),  3,6},
};
extern VTBL_ENTRY _ZTI7S7251C6[];
extern  VTBL_ENTRY _ZTV7S7251C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C6[];
Class_Descriptor cd_S7251C6 = {  "S7251C6", // class name
  bases_S7251C6, 15,
  &(vtc_S7251C6[0]), // expected_vtbl_contents
  &(vtt_S7251C6[0]), // expected_vtt_contents
  ABISELECT(3152,2284), // object size
  NSPAIRA(_ZTI7S7251C6),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7251C6),46, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7251C6),15, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7251C5  {
  int s7251c5f0;
  short s7251c5f1;
  ::S7251C6 s7251c5f2;
  void *s7251c5f3;
  char s7251c5f4;
  ::S7251C7 s7251c5f5;
  ::S20644C2 s7251c5f6;
  __tsi64 s7251c5f7;
  void *s7251c5f8;
  virtual void  v7(); // _ZN7S7251C52v7Ev
  virtual void  v8(); // _ZN7S7251C52v8Ev
  ~S7251C5(); // tgen
  S7251C5(); // tgen
};
//SIG(-1 S7251C5) C1{ v1 v2 Fi Fs FC2{ VBC3{ BC4{ BC5{ m Fi} v4 v5 v6 FC5[3] FC5[2] Fp Fs FC5} VBC5 FD FL FC4 Fp Fs[3]} BC6{ BC4 vd v7 Fp[7] Fi[2] FL Fi} VBC4 BC7{ VBC4 VBC5 BC8{ VBC4 VBC5 v8 FC4 FD Fp[2] FC4} BC3 v9 Fp[2] Fl Fi FC4[5]} BC8 v3 Fi[2] FD FC8[10] Fi} Fp Fc FC3 FC9{ VBC5 BC10{ VBC11{ BC12{ BC5 v12 v13 v14 FC5[3] FC5[2] Fp Fs FC5} VBC5 FD FL FC12 Fp Fs[3]} BC13{ BC12 vd v15 Fp[7] Fi[2] FL Fi} VBC12 BC14{ VBC12 VBC5 BC15{ VBC12 VBC5 v16 FC12 FD Fp[2] FC12} BC11 v17 Fp[2] Fl Fi FC12[5]} BC15 v18 Fi[2] FD FC15[10] Fi} BC11 VBC16{ BC17{ VBC5 VBC12 VBC11 Fp[2] Fi FC11[8] FD[9]} BC5 VBC14 BC13 vd v19 Fi Fp Fi} BC17 vd v10 v11 Fi[2] Fp Fc:3 Fi[3]} FL Fp}


void  S7251C5 ::v7(){vfunc_called(this, "_ZN7S7251C52v7Ev");}
void  S7251C5 ::v8(){vfunc_called(this, "_ZN7S7251C52v8Ev");}
S7251C5 ::~S7251C5(){ note_dtor("S7251C5", this);} // tgen
S7251C5 ::S7251C5(){ note_ctor("S7251C5", this);} // tgen

static void Test_S7251C5()
{
  extern Class_Descriptor cd_S7251C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(630,1875)];
    init_test(&cd_S7251C5, buf);
    S7251C5 *dp, &lv = *(dp=new (buf) S7251C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(10064,7496), "sizeof(S7251C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7251C5)");
    check_field_offset(lv, s7251c5f0, ABISELECT(8,4), "S7251C5.s7251c5f0");
    check_field_offset(lv, s7251c5f1, ABISELECT(12,8), "S7251C5.s7251c5f1");
    check_field_offset(lv, s7251c5f2, ABISELECT(16,12), "S7251C5.s7251c5f2");
    check_field_offset(lv, s7251c5f3, ABISELECT(3168,2296), "S7251C5.s7251c5f3");
    check_field_offset(lv, s7251c5f4, ABISELECT(3176,2300), "S7251C5.s7251c5f4");
    check_field_offset(lv, s7251c5f5, ABISELECT(3184,2304), "S7251C5.s7251c5f5");
    check_field_offset(lv, s7251c5f6, ABISELECT(3328,2420), "S7251C5.s7251c5f6");
    check_field_offset(lv, s7251c5f7, ABISELECT(10048,7484), "S7251C5.s7251c5f7");
    check_field_offset(lv, s7251c5f8, ABISELECT(10056,7492), "S7251C5.s7251c5f8");
    test_class_info(&lv, &cd_S7251C5);
    dp->~S7251C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7251C5(Test_S7251C5, "S7251C5", ABISELECT(10064,7496));

#else // __cplusplus

extern void _ZN7S7251C5C1Ev();
extern void _ZN7S7251C5D1Ev();
Name_Map name_map_S7251C5[] = {
  NSPAIR(_ZN7S7251C5C1Ev),
  NSPAIR(_ZN7S7251C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7251C5[];
extern void _ZN7S7251C52v7Ev();
extern void _ZN7S7251C52v8Ev();
static  VTBL_ENTRY vtc_S7251C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C5[0]),
  (VTBL_ENTRY)&_ZN7S7251C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7251C52v8Ev,
};
extern VTBL_ENTRY _ZTI7S7251C5[];
extern  VTBL_ENTRY _ZTV7S7251C5[];
Class_Descriptor cd_S7251C5 = {  "S7251C5", // class name
  0,0,//no base classes
  &(vtc_S7251C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(10064,7496), // object size
  NSPAIRA(_ZTI7S7251C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7251C5),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  S7251C12  : virtual S3216C8_nt , virtual S7251C3 , virtual S7251C7 {
  void *s7251c12f0[2];
  int s7251c12f1;
  ::S7251C7 s7251c12f2[8];
  long double s7251c12f3[9];
  ~S7251C12(); // tgen
  S7251C12(); // tgen
};
//SIG(-1 S7251C12) C1{ VBC2{ m Fi} VBC3{ BC2 v1 v2 v3 FC2[3] FC2[2] Fp Fs FC2} VBC4{ BC3 VBC2 FD FL FC3 Fp Fs[3]} Fp[2] Fi FC4[8] FD[9]}


S7251C12 ::~S7251C12(){ note_dtor("S7251C12", this);} // tgen
S7251C12 ::S7251C12(){ note_ctor("S7251C12", this);} // tgen

static void Test_S7251C12()
{
  extern Class_Descriptor cd_S7251C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(97,303)];
    init_test(&cd_S7251C12, buf);
    S7251C12 *dp, &lv = *(dp=new (buf) S7251C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1536,1208), "sizeof(S7251C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7251C12)");
    /*is_ambiguous_... S7251C12::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(1328,1052), "S7251C12");
    /*is_ambiguous_... S7251C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C7*), ABISELECT(1328,1052), "S7251C12");
    /*is_ambiguous_... S7251C12::S7251C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*), ABISELECT(1344,1060), "S7251C12");
    /*is_ambiguous_... S7251C12::S7251C3 */ AMB_check_base_class_offset(lv, (S7251C3*), ABISELECT(1336,1056), "S7251C12");
    check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C7*), ABISELECT(1400,1100), "S7251C12");
    check_base_class_offset(lv, (S7251C3*)(S7251C7*), ABISELECT(1392,1096), "S7251C12");
    check_base_class_offset(lv, (S7251C7*), ABISELECT(1392,1096), "S7251C12");
    check_field_offset(lv, s7251c12f0, ABISELECT(8,4), "S7251C12.s7251c12f0");
    check_field_offset(lv, s7251c12f1, ABISELECT(24,12), "S7251C12.s7251c12f1");
    check_field_offset(lv, s7251c12f2, ABISELECT(32,16), "S7251C12.s7251c12f2");
    check_field_offset(lv, s7251c12f3, ABISELECT(1184,944), "S7251C12.s7251c12f3");
    test_class_info(&lv, &cd_S7251C12);
    dp->~S7251C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7251C12(Test_S7251C12, "S7251C12", ABISELECT(1536,1208));

#else // __cplusplus

extern void _ZN8S7251C12C1Ev();
extern void _ZN8S7251C12D1Ev();
Name_Map name_map_S7251C12[] = {
  NSPAIR(_ZN8S7251C12C1Ev),
  NSPAIR(_ZN8S7251C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C7;
extern VTBL_ENTRY _ZTI7S7251C7[];
extern  VTBL_ENTRY _ZTV7S7251C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C7[];
static Base_Class bases_S7251C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(1328,1052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1344,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7251C3,    ABISELECT(1336,1056), //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1400,1100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7251C3,    ABISELECT(1392,1096), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7251C7,    ABISELECT(1392,1096), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //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 _ZTI8S7251C12[];
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY vtc_S7251C12[] = {
  ABISELECT(1392,1096),
  ABISELECT(1336,1056),
  ABISELECT(1328,1052),
  0,
  (VTBL_ENTRY)&(_ZTI8S7251C12[0]),
  0,
  0,
  0,
  ABISELECT(-1336,-1056),
  (VTBL_ENTRY)&(_ZTI8S7251C12[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  0,
  0,
  0,
  ABISELECT(-64,-44),
  ABISELECT(-1392,-1096),
  (VTBL_ENTRY)&(_ZTI8S7251C12[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern VTBL_ENTRY _ZTV8S7251C12[];
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__8S7251C12[] = {
  ABISELECT(-64,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C7[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
static  VTT_ENTRY vtt_S7251C12[] = {
  {&(_ZTV8S7251C12[5]),  5,22},
  {&(_ZTV8S7251C12[10]),  10,22},
  {&(_ZTV8S7251C12[19]),  19,22},
  {&(_tg__ZTV7S7251C7__8S7251C12[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S7251C12[];
extern  VTBL_ENTRY _ZTV8S7251C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7251C12[];
Class_Descriptor cd_S7251C12 = {  "S7251C12", // class name
  bases_S7251C12, 6,
  &(vtc_S7251C12[0]), // expected_vtbl_contents
  &(vtt_S7251C12[0]), // expected_vtt_contents
  ABISELECT(1536,1208), // object size
  NSPAIRA(_ZTI8S7251C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7251C12),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7251C12),4, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7251C11  : S7251C12 , S3216C8_nt , virtual S7251C9 , S7251C8 {
  int s7251c11f0;
  void *s7251c11f1;
  int s7251c11f2;
  virtual  ~S7251C11(); // _ZN8S7251C11D2Ev
  virtual void  v11(); // _ZN8S7251C113v11Ev
  S7251C11(); // tgen
};
//SIG(-1 S7251C11) C1{ BC2{ VBC3{ m Fi} VBC4{ BC3 v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC5{ BC4 VBC3 FD FL FC4 Fp Fs[3]} Fp[2] Fi FC5[8] FD[9]} BC3 VBC6{ VBC4 VBC3 BC7{ VBC4 VBC3 v5 FC4 FD Fp[2] FC4} BC5 v6 Fp[2] Fl Fi FC4[5]} BC8{ BC4 vd v7 Fp[7] Fi[2] FL Fi} vd v1 Fi Fp Fi}


 S7251C11 ::~S7251C11(){ note_dtor("S7251C11", this);}
void  S7251C11 ::v11(){vfunc_called(this, "_ZN8S7251C113v11Ev");}
S7251C11 ::S7251C11(){ note_ctor("S7251C11", this);} // tgen

static void Test_S7251C11()
{
  extern Class_Descriptor cd_S7251C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(141,437)];
    init_test(&cd_S7251C11, buf);
    S7251C11 *dp, &lv = *(dp=new (buf) S7251C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2240,1744), "sizeof(S7251C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7251C11)");
    /*is_ambiguous_... S7251C12::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C12*), ABISELECT(1476,1156), "S7251C11");
    /*is_ambiguous_... S7251C11::S7251C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C7*), ABISELECT(1476,1156), "S7251C11");
    /*is_ambiguous_... S7251C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C9*), ABISELECT(1476,1156), "S7251C11");
    /*is_ambiguous_... S7251C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C2*)(S7251C9*), ABISELECT(1476,1156), "S7251C11");
    /*is_ambiguous_... S7251C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C7*)(S7251C9*), ABISELECT(1476,1156), "S7251C11");
    /*is_ambiguous_... S7251C11::S7251C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*), ABISELECT(1488,1164), "S7251C11");
    /*is_ambiguous_... S7251C12::S7251C3 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C12*), ABISELECT(1480,1160), "S7251C11");
    /*is_ambiguous_... S7251C9::S7251C3 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C9*), ABISELECT(1480,1160), "S7251C11");
    check_base_class_offset(lv, (S7251C3*)(S7251C2*)(S7251C9*), ABISELECT(1480,1160), "S7251C11");
    /*is_ambiguous_... S7251C11::S7251C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C7*), ABISELECT(1544,1204), "S7251C11");
    /*is_ambiguous_... S7251C11::S7251C7 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C7*), ABISELECT(1536,1200), "S7251C11");
    check_base_class_offset(lv, (S7251C7*)(S7251C12*), ABISELECT(1536,1200), "S7251C11");
    check_base_class_offset(lv, (S7251C12*), 0, "S7251C11");
    /*is_ambiguous_... S7251C11::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(1328,1052), "S7251C11");
    check_base_class_offset(lv, (S7251C2*)(S7251C9*), ABISELECT(1680,1312), "S7251C11");
    check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C7*)(S7251C9*), ABISELECT(1832,1420), "S7251C11");
    check_base_class_offset(lv, (S7251C3*)(S7251C7*)(S7251C9*), ABISELECT(1824,1416), "S7251C11");
    check_base_class_offset(lv, (S7251C7*)(S7251C9*), ABISELECT(1824,1416), "S7251C11");
    check_base_class_offset(lv, (S7251C9*), ABISELECT(1680,1312), "S7251C11");
    check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C8*), ABISELECT(1344,1060), "S7251C11");
    check_base_class_offset(lv, (S7251C3*)(S7251C8*), ABISELECT(1336,1056), "S7251C11");
    check_base_class_offset(lv, (S7251C8*), ABISELECT(1336,1056), "S7251C11");
    check_field_offset(lv, s7251c11f0, ABISELECT(1460,1144), "S7251C11.s7251c11f0");
    check_field_offset(lv, s7251c11f1, ABISELECT(1464,1148), "S7251C11.s7251c11f1");
    check_field_offset(lv, s7251c11f2, ABISELECT(1472,1152), "S7251C11.s7251c11f2");
    test_class_info(&lv, &cd_S7251C11);
    dp->~S7251C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7251C11(Test_S7251C11, "S7251C11", ABISELECT(2240,1744));

#else // __cplusplus

extern void _ZN8S7251C11C1Ev();
extern void _ZN8S7251C11D2Ev();
Name_Map name_map_S7251C11[] = {
  NSPAIR(_ZN8S7251C11C1Ev),
  NSPAIR(_ZN8S7251C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C7;
extern VTBL_ENTRY _ZTI7S7251C7[];
extern  VTBL_ENTRY _ZTV7S7251C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C7[];
extern Class_Descriptor cd_S7251C12;
extern VTBL_ENTRY _ZTI8S7251C12[];
extern  VTBL_ENTRY _ZTV8S7251C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7251C12[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C2;
extern VTBL_ENTRY _ZTI7S7251C2[];
extern  VTBL_ENTRY _ZTV7S7251C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C7;
extern VTBL_ENTRY _ZTI7S7251C7[];
extern  VTBL_ENTRY _ZTV7S7251C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C7[];
extern Class_Descriptor cd_S7251C9;
extern VTBL_ENTRY _ZTI7S7251C9[];
extern  VTBL_ENTRY _ZTV7S7251C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C8;
extern VTBL_ENTRY _ZTI7S7251C8[];
extern  VTBL_ENTRY _ZTV7S7251C8[];
static Base_Class bases_S7251C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(1476,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
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1488,1164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7251C3,    ABISELECT(1480,1160), //bcp->offset
    17, //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
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1544,1204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7251C3,    ABISELECT(1536,1200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7251C7,    ABISELECT(1536,1200), //bcp->offset
    25, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7251C12,    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_S3216C8_nt,    ABISELECT(1328,1052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7251C2,    ABISELECT(1680,1312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1832,1420), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7251C3,    ABISELECT(1824,1416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7251C7,    ABISELECT(1824,1416), //bcp->offset
    45, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7251C9,    ABISELECT(1680,1312), //bcp->offset
    34, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1344,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7251C3,    ABISELECT(1336,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
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7251C8,    ABISELECT(1336,1056), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7251C11[];
extern void _ZN8S7251C11D1Ev();
extern void _ZN8S7251C11D0Ev();
extern void _ZN8S7251C113v11Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void ABISELECT(_ZThn1336_N8S7251C11D1Ev,_ZThn1056_N8S7251C11D1Ev)();
extern void ABISELECT(_ZThn1336_N8S7251C11D0Ev,_ZThn1056_N8S7251C11D0Ev)();
extern void _ZN7S7251C82v9Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY vtc_S7251C11[] = {
  ABISELECT(1680,1312),
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  0,
  (VTBL_ENTRY)&(_ZTI8S7251C11[0]),
  (VTBL_ENTRY)&_ZN8S7251C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7251C11D0Ev,
  (VTBL_ENTRY)&_ZN8S7251C113v11Ev,
  ABISELECT(-1336,-1056),
  (VTBL_ENTRY)&(_ZTI8S7251C11[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1336_N8S7251C11D1Ev,_ZThn1056_N8S7251C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1336_N8S7251C11D0Ev,_ZThn1056_N8S7251C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7251C82v9Ev,
  0,
  0,
  0,
  ABISELECT(-1480,-1160),
  (VTBL_ENTRY)&(_ZTI8S7251C11[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(-1536,-1200),
  (VTBL_ENTRY)&(_ZTI8S7251C11[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  ABISELECT(-1680,-1312),
  (VTBL_ENTRY)&(_ZTI8S7251C11[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
  ABISELECT(-348,-260),
  ABISELECT(-1824,-1416),
  (VTBL_ENTRY)&(_ZTI8S7251C11[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern VTBL_ENTRY _ZTV8S7251C11[];
static  VTBL_ENTRY _tg__ZTV8S7251C12__8S7251C11[] = {
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  0,
  (VTBL_ENTRY)&(_ZTI8S7251C12[0]),
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__8S7251C12__8S7251C11[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1160),
  (VTBL_ENTRY)&(_ZTI8S7251C12[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__8S7251C12__8S7251C11[] = {
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(-1536,-1200),
  (VTBL_ENTRY)&(_ZTI8S7251C12[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__8S7251C11[] = {
  ABISELECT(-60,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C7[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C9__8S7251C11[] = {
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
};
extern void _ZN7S7251C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C27S7251C9__8S7251C11[] = {
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C27S7251C9__8S7251C11[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C77S7251C9__A1__8S7251C11[] = {
  ABISELECT(-348,-260),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C7[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C9__8S7251C11[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__7S7251C9__8S7251C11[] = {
  ABISELECT(-348,-260),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
static  VTT_ENTRY vtt_S7251C11[] = {
  {&(_ZTV8S7251C11[6]),  6,51},
  {&(_tg__ZTV8S7251C12__8S7251C11[5]),  5,5},
  {&(_tg__ZTV7S7251C3__8S7251C12__8S7251C11[5]),  5,8},
  {&(_tg__ZTV7S7251C7__8S7251C12__8S7251C11[6]),  6,9},
  {&(_ZTV8S7251C11[22]),  22,51},
  {&(_ZTV8S7251C11[31]),  31,51},
  {&(_ZTV8S7251C11[43]),  43,51},
  {&(_ZTV8S7251C11[48]),  48,51},
  {&(_tg__ZTV7S7251C7__8S7251C11[3]),  3,6},
  {&(_tg__ZTV7S7251C9__8S7251C11[4]),  4,6},
  {&(_tg__ZTV7S7251C27S7251C9__8S7251C11[4]),  4,5},
  {&(_tg__ZTV7S7251C3__7S7251C27S7251C9__8S7251C11[5]),  5,8},
  {&(_tg__ZTV7S7251C77S7251C9__A1__8S7251C11[3]),  3,6},
  {&(_tg__ZTV7S7251C3__7S7251C9__8S7251C11[5]),  5,8},
  {&(_tg__ZTV7S7251C7__7S7251C9__8S7251C11[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S7251C11[];
extern  VTBL_ENTRY _ZTV8S7251C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7251C11[];
Class_Descriptor cd_S7251C11 = {  "S7251C11", // class name
  bases_S7251C11, 16,
  &(vtc_S7251C11[0]), // expected_vtbl_contents
  &(vtt_S7251C11[0]), // expected_vtt_contents
  ABISELECT(2240,1744), // object size
  NSPAIRA(_ZTI8S7251C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7251C11),51, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7251C11),15, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7251C15  : virtual S3216C8_nt , S7251C9 , S7251C2 , S7251C7 {
  int s7251c15f0;
  ::S20643C15_nt s7251c15f1;
  void *s7251c15f2[2];
  virtual void  v12(); // _ZN8S7251C153v12Ev
  ~S7251C15(); // tgen
  S7251C15(); // tgen
};
//SIG(-1 S7251C15) C1{ VBC2{ m Fi} BC3{ VBC4{ BC2 v2 v3 v4 FC2[3] FC2[2] Fp Fs FC2} VBC2 BC5{ VBC4 VBC2 v5 FC4 FD Fp[2] FC4} BC6{ BC4 VBC2 FD FL FC4 Fp Fs[3]} v6 Fp[2] Fl Fi FC4[5]} BC5 BC6 v1 Fi FC7{} Fp[2]}


void  S7251C15 ::v12(){vfunc_called(this, "_ZN8S7251C153v12Ev");}
S7251C15 ::~S7251C15(){ note_dtor("S7251C15", this);} // tgen
S7251C15 ::S7251C15(){ note_ctor("S7251C15", this);} // tgen

static void Test_S7251C15()
{
  extern Class_Descriptor cd_S7251C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(59,178)];
    init_test(&cd_S7251C15, buf);
    S7251C15 *dp, &lv = *(dp=new (buf) S7251C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(928,708), "sizeof(S7251C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7251C15)");
    /*is_ambiguous_... S7251C15::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(864,664), "S7251C15");
    /*is_ambiguous_... S7251C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C9*), ABISELECT(864,664), "S7251C15");
    /*is_ambiguous_... S7251C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C2*)(S7251C9*), ABISELECT(864,664), "S7251C15");
    /*is_ambiguous_... S7251C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C7*)(S7251C9*), ABISELECT(864,664), "S7251C15");
    /*is_ambiguous_... S7251C15::S7251C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C2*), ABISELECT(864,664), "S7251C15");
    /*is_ambiguous_... S7251C15::S7251C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C7*), ABISELECT(864,664), "S7251C15");
    /*is_ambiguous_... S7251C15::S7251C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*), ABISELECT(880,672), "S7251C15");
    /*is_ambiguous_... S7251C9::S7251C3 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C9*), ABISELECT(872,668), "S7251C15");
    check_base_class_offset(lv, (S7251C3*)(S7251C2*)(S7251C9*), ABISELECT(872,668), "S7251C15");
    /*is_ambiguous_... S7251C15::S7251C2 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C2*), ABISELECT(872,668), "S7251C15");
    check_base_class_offset(lv, (S7251C2*)(S7251C9*), 0, "S7251C15");
    check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C7*)(S7251C9*), ABISELECT(152,108), "S7251C15");
    check_base_class_offset(lv, (S7251C3*)(S7251C7*)(S7251C9*), ABISELECT(144,104), "S7251C15");
    check_base_class_offset(lv, (S7251C7*)(S7251C9*), ABISELECT(144,104), "S7251C15");
    check_base_class_offset(lv, (S7251C9*), 0, "S7251C15");
    /*is_ambiguous_... S7251C15::S7251C2 */ AMB_check_base_class_offset(lv, (S7251C2*), ABISELECT(560,432), "S7251C15");
    /*is_ambiguous_... S7251C15::S7251C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C7*), ABISELECT(712,540), "S7251C15");
    /*is_ambiguous_... S7251C15::S7251C7 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C7*), ABISELECT(704,536), "S7251C15");
    /*is_ambiguous_... S7251C15::S7251C7 */ AMB_check_base_class_offset(lv, (S7251C7*), ABISELECT(704,536), "S7251C15");
    check_field_offset(lv, s7251c15f0, ABISELECT(840,648), "S7251C15.s7251c15f0");
    check_field_offset(lv, s7251c15f1, ABISELECT(844,652), "S7251C15.s7251c15f1");
    check_field_offset(lv, s7251c15f2, ABISELECT(848,656), "S7251C15.s7251c15f2");
    test_class_info(&lv, &cd_S7251C15);
    dp->~S7251C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7251C15(Test_S7251C15, "S7251C15", ABISELECT(928,708));

#else // __cplusplus

extern void _ZN8S7251C15C1Ev();
extern void _ZN8S7251C15D1Ev();
Name_Map name_map_S7251C15[] = {
  NSPAIR(_ZN8S7251C15C1Ev),
  NSPAIR(_ZN8S7251C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C2;
extern VTBL_ENTRY _ZTI7S7251C2[];
extern  VTBL_ENTRY _ZTV7S7251C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C7;
extern VTBL_ENTRY _ZTI7S7251C7[];
extern  VTBL_ENTRY _ZTV7S7251C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C7[];
extern Class_Descriptor cd_S7251C9;
extern VTBL_ENTRY _ZTI7S7251C9[];
extern  VTBL_ENTRY _ZTV7S7251C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C9[];
extern Class_Descriptor cd_S7251C2;
extern VTBL_ENTRY _ZTI7S7251C2[];
extern  VTBL_ENTRY _ZTV7S7251C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C7;
extern VTBL_ENTRY _ZTI7S7251C7[];
extern  VTBL_ENTRY _ZTV7S7251C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C7[];
static Base_Class bases_S7251C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(864,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
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(880,672), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7251C3,    ABISELECT(872,668), //bcp->offset
    24, //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
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7251C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(152,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7251C3,    ABISELECT(144,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7251C7,    ABISELECT(144,104), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7251C9,    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_S7251C2,    ABISELECT(560,432), //bcp->offset
    13, //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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(712,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
    10, //immediately_derived
  0, 0},
  {&cd_S7251C3,    ABISELECT(704,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
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7251C7,    ABISELECT(704,536), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7251C15[];
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
extern void _ZN8S7251C153v12Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY vtc_S7251C15[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI8S7251C15[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
  (VTBL_ENTRY)&_ZN8S7251C153v12Ev,
  ABISELECT(720,560),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S7251C15[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  ABISELECT(304,232),
  ABISELECT(312,236),
  ABISELECT(-560,-432),
  (VTBL_ENTRY)&(_ZTI8S7251C15[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  ABISELECT(160,128),
  ABISELECT(-704,-536),
  (VTBL_ENTRY)&(_ZTI8S7251C15[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI8S7251C15[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern VTBL_ENTRY _ZTV8S7251C15[];
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C9__8S7251C15[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
};
extern void _ZN7S7251C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C27S7251C9__8S7251C15[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C27S7251C9__8S7251C15[] = {
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C77S7251C9__8S7251C15[] = {
  ABISELECT(720,560),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C7[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C9__8S7251C15[] = {
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__7S7251C9__8S7251C15[] = {
  ABISELECT(720,560),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C2__A1__8S7251C15[] = {
  ABISELECT(304,232),
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C2__A1__8S7251C15[] = {
  0,
  0,
  0,
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__A1__8S7251C15[] = {
  ABISELECT(160,128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C7[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
static  VTT_ENTRY vtt_S7251C15[] = {
  {&(_ZTV8S7251C15[4]),  4,32},
  {&(_tg__ZTV7S7251C9__8S7251C15[4]),  4,6},
  {&(_tg__ZTV7S7251C27S7251C9__8S7251C15[4]),  4,5},
  {&(_tg__ZTV7S7251C3__7S7251C27S7251C9__8S7251C15[5]),  5,8},
  {&(_tg__ZTV7S7251C77S7251C9__8S7251C15[3]),  3,6},
  {&(_tg__ZTV7S7251C3__7S7251C9__8S7251C15[5]),  5,8},
  {&(_tg__ZTV7S7251C7__7S7251C9__8S7251C15[3]),  3,6},
  {&(_tg__ZTV7S7251C2__A1__8S7251C15[4]),  4,5},
  {&(_tg__ZTV7S7251C3__7S7251C2__A1__8S7251C15[5]),  5,8},
  {&(_tg__ZTV7S7251C7__A1__8S7251C15[3]),  3,6},
  {&(_ZTV8S7251C15[29]),  29,32},
  {&(_ZTV8S7251C15[10]),  10,32},
  {&(_ZTV8S7251C15[17]),  17,32},
  {&(_ZTV8S7251C15[21]),  21,32},
};
extern VTBL_ENTRY _ZTI8S7251C15[];
extern  VTBL_ENTRY _ZTV8S7251C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7251C15[];
Class_Descriptor cd_S7251C15 = {  "S7251C15", // class name
  bases_S7251C15, 12,
  &(vtc_S7251C15[0]), // expected_vtbl_contents
  &(vtt_S7251C15[0]), // expected_vtt_contents
  ABISELECT(928,708), // object size
  NSPAIRA(_ZTI8S7251C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7251C15),32, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7251C15),14, //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  S7251C14  : S7251C7 , virtual S7251C11 , S7251C9 , S7251C15 {
  int s7251c14f0;
  char s7251c14f1[2];
  int s7251c14f2;
  __tsi64 s7251c14f3;
  ::S20643C15_nt s7251c14f4;
  void *s7251c14f5[8];
  short s7251c14f6[5];
  __tsi64 s7251c14f7;
  ::S20644C18 s7251c14f8;
  virtual  ~S7251C14(); // _ZN8S7251C14D2Ev
  S7251C14(); // tgen
};
//SIG(-1 S7251C14) C1{ BC2{ BC3{ BC4{ m Fi} v1 v2 v3 FC4[3] FC4[2] Fp Fs FC4} VBC4 FD FL FC3 Fp Fs[3]} VBC5{ BC6{ VBC4 VBC3 VBC2 Fp[2] Fi FC2[8] FD[9]} BC4 VBC7{ VBC3 VBC4 BC8{ VBC3 VBC4 v4 FC3 FD Fp[2] FC3} BC2 v5 Fp[2] Fl Fi FC3[5]} BC9{ BC3 vd v6 Fp[7] Fi[2] FL Fi} vd v7 Fi Fp Fi} BC7 BC10{ VBC4 BC7 BC8 BC2 v8 Fi FC11{} Fp[2]} vd Fi Fc[2] Fi FL FC11 Fp[8] Fs[5] FL FC12{ vd m Fc[2] Fi FL Fp[7] FU13{ m FL:3 Fi Fi Fi FD[8] Fp Fc[5] FD Fc[4] Fi Fp Fc[4] Fp}[4] FC14{ VBC4 VBC15{ BC4 v9 v10 v11 FC4[3] FC4[2] Fp Fs FC4} VBC16{ BC15 VBC4 FD FL FC15 Fp Fs[3]} Fp[2] Fi FC16[8] FD[9]}}}


 S7251C14 ::~S7251C14(){ note_dtor("S7251C14", this);}
S7251C14 ::S7251C14(){ note_ctor("S7251C14", this);} // tgen

static void Test_S7251C14()
{
  extern Class_Descriptor cd_S7251C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(381,1168)];
    init_test(&cd_S7251C14, buf);
    S7251C14 *dp, &lv = *(dp=new (buf) S7251C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(6080,4668), "sizeof(S7251C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7251C14)");
    /*is_ambiguous_... S7251C14::S7251C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C7*), ABISELECT(8,4), "S7251C14");
    /*is_ambiguous_... S7251C14::S7251C7 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C7*), 0, "S7251C14");
    /*is_ambiguous_... S7251C14::S7251C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C7*), ABISELECT(3824,2924), "S7251C14");
    /*is_ambiguous_... S7251C12::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C12*)(S7251C11*), ABISELECT(3824,2924), "S7251C14");
    /*is_ambiguous_... S7251C14::S7251C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C7*), ABISELECT(3824,2924), "S7251C14");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C9*), ABISELECT(3824,2924), "S7251C14");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C2*)(S7251C9*), ABISELECT(3824,2924), "S7251C14");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C7*)(S7251C9*), ABISELECT(3824,2924), "S7251C14");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C9*), ABISELECT(3824,2924), "S7251C14");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C2*)(S7251C9*), ABISELECT(3824,2924), "S7251C14");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C7*)(S7251C9*), ABISELECT(3824,2924), "S7251C14");
    /*is_ambiguous_... S7251C15::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C15*), ABISELECT(3824,2924), "S7251C14");
    /*is_ambiguous_... S7251C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C9*)(S7251C15*), ABISELECT(3824,2924), "S7251C14");
    /*is_ambiguous_... S7251C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C2*)(S7251C9*)(S7251C15*), ABISELECT(3824,2924), "S7251C14");
    /*is_ambiguous_... S7251C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C7*)(S7251C9*)(S7251C15*), ABISELECT(3824,2924), "S7251C14");
    /*is_ambiguous_... S7251C15::S7251C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C2*)(S7251C15*), ABISELECT(3824,2924), "S7251C14");
    /*is_ambiguous_... S7251C15::S7251C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C7*)(S7251C15*), ABISELECT(3824,2924), "S7251C14");
    /*is_ambiguous_... S7251C14::S7251C7 */ AMB_check_base_class_offset(lv, (S7251C7*), 0, "S7251C14");
    /*is_ambiguous_... S7251C14::S7251C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*), ABISELECT(5328,4088), "S7251C14");
    /*is_ambiguous_... S7251C12::S7251C3 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C12*)(S7251C11*), ABISELECT(5320,4084), "S7251C14");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C9*), ABISELECT(5320,4084), "S7251C14");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C2*)(S7251C9*), ABISELECT(5320,4084), "S7251C14");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C9*), ABISELECT(5320,4084), "S7251C14");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C2*)(S7251C9*), ABISELECT(5320,4084), "S7251C14");
    /*is_ambiguous_... S7251C9::S7251C3 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C9*)(S7251C15*), ABISELECT(5320,4084), "S7251C14");
    check_base_class_offset(lv, (S7251C3*)(S7251C2*)(S7251C9*)(S7251C15*), ABISELECT(5320,4084), "S7251C14");
    /*is_ambiguous_... S7251C15::S7251C2 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C2*)(S7251C15*), ABISELECT(5320,4084), "S7251C14");
    /*is_ambiguous_... S7251C14::S7251C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C7*), ABISELECT(5384,4128), "S7251C14");
    /*is_ambiguous_... S7251C14::S7251C7 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C7*), ABISELECT(5376,4124), "S7251C14");
    check_base_class_offset(lv, (S7251C7*)(S7251C12*)(S7251C11*), ABISELECT(5376,4124), "S7251C14");
    check_base_class_offset(lv, (S7251C12*)(S7251C11*), ABISELECT(3840,2928), "S7251C14");
    /*is_ambiguous_... S7251C11::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C11*), ABISELECT(5168,3980), "S7251C14");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C2*)(S7251C9*), ABISELECT(5520,4236), "S7251C14");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C7*)(S7251C9*), ABISELECT(5672,4344), "S7251C14");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C7*)(S7251C9*), ABISELECT(5664,4340), "S7251C14");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C7*)(S7251C9*), ABISELECT(5664,4340), "S7251C14");
    check_base_class_offset(lv, (S7251C9*)(S7251C11*), ABISELECT(5520,4236), "S7251C14");
    check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C8*)(S7251C11*), ABISELECT(5184,3988), "S7251C14");
    check_base_class_offset(lv, (S7251C3*)(S7251C8*)(S7251C11*), ABISELECT(5176,3984), "S7251C14");
    check_base_class_offset(lv, (S7251C8*)(S7251C11*), ABISELECT(5176,3984), "S7251C14");
    check_base_class_offset(lv, (S7251C11*), ABISELECT(3840,2928), "S7251C14");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C2*)(S7251C9*), ABISELECT(144,112), "S7251C14");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C7*)(S7251C9*), ABISELECT(296,220), "S7251C14");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C7*)(S7251C9*), ABISELECT(288,216), "S7251C14");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C7*)(S7251C9*), ABISELECT(288,216), "S7251C14");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C9*), ABISELECT(144,112), "S7251C14");
    check_base_class_offset(lv, (S7251C2*)(S7251C9*)(S7251C15*), ABISELECT(704,544), "S7251C14");
    check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C7*)(S7251C9*)(S7251C15*), ABISELECT(856,652), "S7251C14");
    check_base_class_offset(lv, (S7251C3*)(S7251C7*)(S7251C9*)(S7251C15*), ABISELECT(848,648), "S7251C14");
    check_base_class_offset(lv, (S7251C7*)(S7251C9*)(S7251C15*), ABISELECT(848,648), "S7251C14");
    check_base_class_offset(lv, (S7251C9*)(S7251C15*), ABISELECT(704,544), "S7251C14");
    /*is_ambiguous_... S7251C15::S7251C2 */ AMB_check_base_class_offset(lv, (S7251C2*)(S7251C15*), ABISELECT(1264,976), "S7251C14");
    /*is_ambiguous_... S7251C15::S7251C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C7*)(S7251C15*), ABISELECT(1416,1084), "S7251C14");
    /*is_ambiguous_... S7251C15::S7251C7 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C7*)(S7251C15*), ABISELECT(1408,1080), "S7251C14");
    /*is_ambiguous_... S7251C15::S7251C7 */ AMB_check_base_class_offset(lv, (S7251C7*)(S7251C15*), ABISELECT(1408,1080), "S7251C14");
    check_base_class_offset(lv, (S7251C15*), ABISELECT(704,544), "S7251C14");
    check_field_offset(lv, s7251c14f0, ABISELECT(1568,1208), "S7251C14.s7251c14f0");
    check_field_offset(lv, s7251c14f1, ABISELECT(1572,1212), "S7251C14.s7251c14f1");
    check_field_offset(lv, s7251c14f2, ABISELECT(1576,1216), "S7251C14.s7251c14f2");
    check_field_offset(lv, s7251c14f3, ABISELECT(1584,1220), "S7251C14.s7251c14f3");
    check_field_offset(lv, s7251c14f4, ABISELECT(1592,1228), "S7251C14.s7251c14f4");
    check_field_offset(lv, s7251c14f5, ABISELECT(1600,1232), "S7251C14.s7251c14f5");
    check_field_offset(lv, s7251c14f6, ABISELECT(1664,1264), "S7251C14.s7251c14f6");
    check_field_offset(lv, s7251c14f7, ABISELECT(1680,1276), "S7251C14.s7251c14f7");
    check_field_offset(lv, s7251c14f8, ABISELECT(1696,1284), "S7251C14.s7251c14f8");
    test_class_info(&lv, &cd_S7251C14);
    dp->~S7251C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7251C14(Test_S7251C14, "S7251C14", ABISELECT(6080,4668));

#else // __cplusplus

extern void _ZN8S7251C14C1Ev();
extern void _ZN8S7251C14D2Ev();
Name_Map name_map_S7251C14[] = {
  NSPAIR(_ZN8S7251C14C1Ev),
  NSPAIR(_ZN8S7251C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C7;
extern VTBL_ENTRY _ZTI7S7251C7[];
extern  VTBL_ENTRY _ZTV7S7251C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C7[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C7;
extern VTBL_ENTRY _ZTI7S7251C7[];
extern  VTBL_ENTRY _ZTV7S7251C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C7[];
extern Class_Descriptor cd_S7251C12;
extern VTBL_ENTRY _ZTI8S7251C12[];
extern  VTBL_ENTRY _ZTV8S7251C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7251C12[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C2;
extern VTBL_ENTRY _ZTI7S7251C2[];
extern  VTBL_ENTRY _ZTV7S7251C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C7;
extern VTBL_ENTRY _ZTI7S7251C7[];
extern  VTBL_ENTRY _ZTV7S7251C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C7[];
extern Class_Descriptor cd_S7251C9;
extern VTBL_ENTRY _ZTI7S7251C9[];
extern  VTBL_ENTRY _ZTV7S7251C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C8;
extern VTBL_ENTRY _ZTI7S7251C8[];
extern  VTBL_ENTRY _ZTV7S7251C8[];
extern Class_Descriptor cd_S7251C11;
extern VTBL_ENTRY _ZTI8S7251C11[];
extern  VTBL_ENTRY _ZTV8S7251C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7251C11[];
extern Class_Descriptor cd_S7251C2;
extern VTBL_ENTRY _ZTI7S7251C2[];
extern  VTBL_ENTRY _ZTV7S7251C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C7;
extern VTBL_ENTRY _ZTI7S7251C7[];
extern  VTBL_ENTRY _ZTV7S7251C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C7[];
extern Class_Descriptor cd_S7251C9;
extern VTBL_ENTRY _ZTI7S7251C9[];
extern  VTBL_ENTRY _ZTV7S7251C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C9[];
extern Class_Descriptor cd_S7251C2;
extern VTBL_ENTRY _ZTI7S7251C2[];
extern  VTBL_ENTRY _ZTV7S7251C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C7;
extern VTBL_ENTRY _ZTI7S7251C7[];
extern  VTBL_ENTRY _ZTV7S7251C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C7[];
extern Class_Descriptor cd_S7251C9;
extern VTBL_ENTRY _ZTI7S7251C9[];
extern  VTBL_ENTRY _ZTV7S7251C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C9[];
extern Class_Descriptor cd_S7251C2;
extern VTBL_ENTRY _ZTI7S7251C2[];
extern  VTBL_ENTRY _ZTV7S7251C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C7;
extern VTBL_ENTRY _ZTI7S7251C7[];
extern  VTBL_ENTRY _ZTV7S7251C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C7[];
extern Class_Descriptor cd_S7251C15;
extern VTBL_ENTRY _ZTI8S7251C15[];
extern  VTBL_ENTRY _ZTV8S7251C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7251C15[];
static Base_Class bases_S7251C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S7251C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3216C8_nt,    ABISELECT(3824,2924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7251C7,    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_S3216C8_nt,    ABISELECT(5328,4088), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7251C3,    ABISELECT(5320,4084), //bcp->offset
    71, //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
    9, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(5384,4128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7251C3,    ABISELECT(5376,4124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7251C7,    ABISELECT(5376,4124), //bcp->offset
    79, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7251C12,    ABISELECT(3840,2928), //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
    8, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(5168,3980), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7251C2,    ABISELECT(5520,4236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(5672,4344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7251C3,    ABISELECT(5664,4340), //bcp->offset
    -1, //bcp->virtual_function_table_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_S7251C7,    ABISELECT(5664,4340), //bcp->offset
    99, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7251C9,    ABISELECT(5520,4236), //bcp->offset
    88, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(5184,3988), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7251C3,    ABISELECT(5176,3984), //bcp->offset
    -1, //bcp->virtual_function_table_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
    18, //immediately_derived
  0, 0},
  {&cd_S7251C8,    ABISELECT(5176,3984), //bcp->offset
    63, //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
    10, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7251C11,    ABISELECT(3840,2928), //bcp->offset
    48, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7251C2,    ABISELECT(144,112), //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
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    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
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7251C3,    ABISELECT(288,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
    15, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7251C7,    ABISELECT(288,216), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7251C9,    ABISELECT(144,112), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7251C2,    ABISELECT(704,544), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(856,652), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7251C3,    ABISELECT(848,648), //bcp->offset
    -1, //bcp->virtual_function_table_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_S7251C7,    ABISELECT(848,648), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7251C9,    ABISELECT(704,544), //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
    21, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7251C2,    ABISELECT(1264,976), //bcp->offset
    37, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1416,1084), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7251C3,    ABISELECT(1408,1080), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7251C7,    ABISELECT(1408,1080), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7251C15,    ABISELECT(704,544), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7251C14[];
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void _ZN8S7251C14D1Ev();
extern void _ZN8S7251C14D0Ev();
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
extern void _ZN8S7251C153v12Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void ABISELECT(_ZTv0_n56_N8S7251C14D1Ev,_ZTv0_n28_N8S7251C14D1Ev)();
extern void ABISELECT(_ZThn3840_N8S7251C14D1Ev,_ZThn2928_N8S7251C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7251C14D0Ev,_ZTv0_n28_N8S7251C14D0Ev)();
extern void ABISELECT(_ZThn3840_N8S7251C14D0Ev,_ZThn2928_N8S7251C14D0Ev)() __attribute__((weak));
extern void _ZN8S7251C113v11Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void ABISELECT(_ZTvn1336_n56_N8S7251C14D1Ev,_ZTvn1056_n28_N8S7251C14D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N8S7251C14D0Ev,_ZTvn1056_n28_N8S7251C14D0Ev)();
extern void _ZN7S7251C82v9Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY vtc_S7251C14[] = {
  ABISELECT(5520,4236),
  ABISELECT(5376,4124),
  ABISELECT(5320,4084),
  ABISELECT(3840,2928),
  ABISELECT(3824,2924),
  0,
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  (VTBL_ENTRY)&_ZN8S7251C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7251C14D0Ev,
  ABISELECT(3680,2812),
  ABISELECT(5176,3972),
  ABISELECT(-144,-112),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
  ABISELECT(3536,2708),
  ABISELECT(-288,-216),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  ABISELECT(3120,2380),
  ABISELECT(4616,3540),
  ABISELECT(-704,-544),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
  (VTBL_ENTRY)&_ZN8S7251C153v12Ev,
  ABISELECT(2976,2276),
  ABISELECT(-848,-648),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  ABISELECT(2560,1948),
  ABISELECT(4056,3108),
  ABISELECT(-1264,-976),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  ABISELECT(2416,1844),
  ABISELECT(-1408,-1080),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-3840,-2928),
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-16,-4),
  ABISELECT(-3840,-2928),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7251C14D1Ev,_ZTv0_n28_N8S7251C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7251C14D0Ev,_ZTv0_n28_N8S7251C14D0Ev),
  (VTBL_ENTRY)&_ZN8S7251C113v11Ev,
  ABISELECT(-5176,-3984),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S7251C14D1Ev,_ZTvn1056_n28_N8S7251C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S7251C14D0Ev,_ZTvn1056_n28_N8S7251C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7251C82v9Ev,
  0,
  0,
  0,
  ABISELECT(-5320,-4084),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  0,
  0,
  0,
  ABISELECT(-1552,-1200),
  ABISELECT(-5376,-4124),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1696,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-5520,-4236),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
  ABISELECT(-1840,-1416),
  ABISELECT(-5664,-4340),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern VTBL_ENTRY _ZTV8S7251C14[];
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__A__8S7251C14[] = {
  ABISELECT(3824,2924),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C7[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C9__A__8S7251C14[] = {
  ABISELECT(3680,2812),
  ABISELECT(5176,3972),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
};
extern void _ZN7S7251C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C27S7251C9__A1__8S7251C14[] = {
  ABISELECT(3680,2812),
  ABISELECT(5176,3972),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C27S7251C9__A1__8S7251C14[] = {
  0,
  0,
  0,
  ABISELECT(-5176,-3972),
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C77S7251C9__A3__8S7251C14[] = {
  ABISELECT(3536,2708),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C7[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C9__A__8S7251C14[] = {
  0,
  0,
  0,
  ABISELECT(-5176,-3972),
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__7S7251C9__A__8S7251C14[] = {
  ABISELECT(3536,2708),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
extern void _ZN8S7251C153v12Ev();
static  VTBL_ENTRY _tg__ZTV8S7251C15__8S7251C14[] = {
  ABISELECT(3120,2380),
  ABISELECT(4616,3540),
  0,
  (VTBL_ENTRY)&(_ZTI8S7251C15[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
  (VTBL_ENTRY)&_ZN8S7251C153v12Ev,
};
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C98S7251C15__A2__8S7251C14[] = {
  ABISELECT(3120,2380),
  ABISELECT(4616,3540),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
};
extern void _ZN7S7251C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C27S7251C98S7251C15__A2__8S7251C14[] = {
  ABISELECT(3120,2380),
  ABISELECT(4616,3540),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C27S7251C98S7251C15__A2__8S7251C14[] = {
  0,
  0,
  0,
  ABISELECT(-4616,-3540),
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C77S7251C98S7251C15__A4__8S7251C14[] = {
  ABISELECT(2976,2276),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C7[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C98S7251C15__A2__8S7251C14[] = {
  0,
  0,
  0,
  ABISELECT(-4616,-3540),
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__7S7251C98S7251C15__A2__8S7251C14[] = {
  ABISELECT(2976,2276),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C28S7251C15__A3__8S7251C14[] = {
  ABISELECT(2560,1948),
  ABISELECT(4056,3108),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C28S7251C15__A3__8S7251C14[] = {
  0,
  0,
  0,
  ABISELECT(-4056,-3108),
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C78S7251C15__A5__8S7251C14[] = {
  ABISELECT(2416,1844),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C7[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__8S7251C15__8S7251C14[] = {
  0,
  0,
  0,
  ABISELECT(-4616,-3540),
  (VTBL_ENTRY)&(_ZTI8S7251C15[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C77S7251C9__8S7251C15__8S7251C14[] = {
  ABISELECT(2976,2276),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S7251C15[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C2__A1__8S7251C15__8S7251C14[] = {
  ABISELECT(2560,1948),
  ABISELECT(4056,3108),
  ABISELECT(-560,-432),
  (VTBL_ENTRY)&(_ZTI8S7251C15[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__A1__8S7251C15__8S7251C14[] = {
  ABISELECT(2416,1844),
  ABISELECT(-704,-536),
  (VTBL_ENTRY)&(_ZTI8S7251C15[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN8S7251C11D1Ev();
extern void _ZN8S7251C11D0Ev();
extern void _ZN8S7251C113v11Ev();
static  VTBL_ENTRY _tg__ZTV8S7251C11__8S7251C14[] = {
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7251C11[0]),
  (VTBL_ENTRY)&_ZN8S7251C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7251C11D0Ev,
  (VTBL_ENTRY)&_ZN8S7251C113v11Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7251C128S7251C11__8S7251C14[] = {
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7251C12[0]),
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__8S7251C128S7251C11__8S7251C14[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1156),
  (VTBL_ENTRY)&(_ZTI8S7251C12[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__8S7251C128S7251C11__8S7251C14[] = {
  0,
  0,
  0,
  ABISELECT(-1552,-1200),
  ABISELECT(-1536,-1196),
  (VTBL_ENTRY)&(_ZTI8S7251C12[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__8S7251C11__8S7251C14[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1156),
  (VTBL_ENTRY)&(_ZTI8S7251C11[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__8S7251C11__8S7251C14[] = {
  0,
  0,
  0,
  ABISELECT(-1552,-1200),
  ABISELECT(-1536,-1196),
  (VTBL_ENTRY)&(_ZTI8S7251C11[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C9__8S7251C11__8S7251C14[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1696,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-1680,-1308),
  (VTBL_ENTRY)&(_ZTI8S7251C11[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C77S7251C9__A1__8S7251C11__8S7251C14[] = {
  ABISELECT(-1840,-1416),
  ABISELECT(-1824,-1412),
  (VTBL_ENTRY)&(_ZTI8S7251C11[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__A1__8S7251C14[] = {
  ABISELECT(-1552,-1200),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C7[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C9__8S7251C14[] = {
  ABISELECT(-1696,-1312),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
};
extern void _ZN7S7251C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C27S7251C9__8S7251C14[] = {
  ABISELECT(-1696,-1312),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C27S7251C9__8S7251C14[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C77S7251C9__A2__8S7251C14[] = {
  ABISELECT(-1840,-1416),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C7[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C9__8S7251C14[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__7S7251C9__8S7251C14[] = {
  ABISELECT(-1840,-1416),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
static  VTT_ENTRY vtt_S7251C14[] = {
  {&(_ZTV8S7251C14[7]),  7,105},
  {&(_tg__ZTV7S7251C7__A__8S7251C14[3]),  3,6},
  {&(_tg__ZTV7S7251C9__A__8S7251C14[4]),  4,6},
  {&(_tg__ZTV7S7251C27S7251C9__A1__8S7251C14[4]),  4,5},
  {&(_tg__ZTV7S7251C3__7S7251C27S7251C9__A1__8S7251C14[5]),  5,8},
  {&(_tg__ZTV7S7251C77S7251C9__A3__8S7251C14[3]),  3,6},
  {&(_tg__ZTV7S7251C3__7S7251C9__A__8S7251C14[5]),  5,8},
  {&(_tg__ZTV7S7251C7__7S7251C9__A__8S7251C14[3]),  3,6},
  {&(_tg__ZTV8S7251C15__8S7251C14[4]),  4,7},
  {&(_tg__ZTV7S7251C98S7251C15__A2__8S7251C14[4]),  4,6},
  {&(_tg__ZTV7S7251C27S7251C98S7251C15__A2__8S7251C14[4]),  4,5},
  {&(_tg__ZTV7S7251C3__7S7251C27S7251C98S7251C15__A2__8S7251C14[5]),  5,8},
  {&(_tg__ZTV7S7251C77S7251C98S7251C15__A4__8S7251C14[3]),  3,6},
  {&(_tg__ZTV7S7251C3__7S7251C98S7251C15__A2__8S7251C14[5]),  5,8},
  {&(_tg__ZTV7S7251C7__7S7251C98S7251C15__A2__8S7251C14[3]),  3,6},
  {&(_tg__ZTV7S7251C28S7251C15__A3__8S7251C14[4]),  4,5},
  {&(_tg__ZTV7S7251C3__7S7251C28S7251C15__A3__8S7251C14[5]),  5,8},
  {&(_tg__ZTV7S7251C78S7251C15__A5__8S7251C14[3]),  3,6},
  {&(_tg__ZTV7S7251C3__8S7251C15__8S7251C14[5]),  5,8},
  {&(_tg__ZTV7S7251C77S7251C9__8S7251C15__8S7251C14[3]),  3,6},
  {&(_tg__ZTV7S7251C2__A1__8S7251C15__8S7251C14[4]),  4,5},
  {&(_tg__ZTV7S7251C7__A1__8S7251C15__8S7251C14[3]),  3,6},
  {&(_ZTV8S7251C14[60]),  60,105},
  {&(_ZTV8S7251C14[76]),  76,105},
  {&(_ZTV8S7251C14[85]),  85,105},
  {&(_ZTV8S7251C14[97]),  97,105},
  {&(_ZTV8S7251C14[102]),  102,105},
  {&(_ZTV8S7251C14[65]),  65,105},
  {&(_ZTV8S7251C14[16]),  16,105},
  {&(_ZTV8S7251C14[21]),  21,105},
  {&(_ZTV8S7251C14[28]),  28,105},
  {&(_ZTV8S7251C14[34]),  34,105},
  {&(_ZTV8S7251C14[41]),  41,105},
  {&(_ZTV8S7251C14[45]),  45,105},
  {&(_tg__ZTV8S7251C11__8S7251C14[6]),  6,9},
  {&(_tg__ZTV8S7251C128S7251C11__8S7251C14[5]),  5,5},
  {&(_tg__ZTV7S7251C3__8S7251C128S7251C11__8S7251C14[5]),  5,8},
  {&(_tg__ZTV7S7251C7__8S7251C128S7251C11__8S7251C14[6]),  6,9},
  {&(_tg__ZTV7S7251C3__8S7251C11__8S7251C14[5]),  5,8},
  {&(_tg__ZTV7S7251C7__8S7251C11__8S7251C14[6]),  6,9},
  {&(_tg__ZTV7S7251C9__8S7251C11__8S7251C14[9]),  9,11},
  {&(_tg__ZTV7S7251C77S7251C9__A1__8S7251C11__8S7251C14[3]),  3,6},
  {&(_tg__ZTV7S7251C7__A1__8S7251C14[3]),  3,6},
  {&(_tg__ZTV7S7251C9__8S7251C14[4]),  4,6},
  {&(_tg__ZTV7S7251C27S7251C9__8S7251C14[4]),  4,5},
  {&(_tg__ZTV7S7251C3__7S7251C27S7251C9__8S7251C14[5]),  5,8},
  {&(_tg__ZTV7S7251C77S7251C9__A2__8S7251C14[3]),  3,6},
  {&(_tg__ZTV7S7251C3__7S7251C9__8S7251C14[5]),  5,8},
  {&(_tg__ZTV7S7251C7__7S7251C9__8S7251C14[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S7251C14[];
extern  VTBL_ENTRY _ZTV8S7251C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7251C14[];
static VTBL_ENTRY alt_thunk_names9[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7251C14D0Ev,_ZTv0_n28_N8S7251C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3840_N8S7251C14D0Ev,_ZThn2928_N8S7251C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7251C14D1Ev,_ZTv0_n28_N8S7251C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3840_N8S7251C14D1Ev,_ZThn2928_N8S7251C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7251C14 = {  "S7251C14", // class name
  bases_S7251C14, 35,
  &(vtc_S7251C14[0]), // expected_vtbl_contents
  &(vtt_S7251C14[0]), // expected_vtt_contents
  ABISELECT(6080,4668), // object size
  NSPAIRA(_ZTI8S7251C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7251C14),105, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7251C14),49, //virtual table table var
  25, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names9,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7251C13  : virtual S7251C8 , virtual S7251C2 , S3216C8_nt , S7251C14 {
  void *s7251c13f0;
  int s7251c13f1;
  int s7251c13f2;
  ::S7251C5 s7251c13f3[8];
  int s7251c13f4;
  __tsi64 s7251c13f5;
  char s7251c13f6;
  int s7251c13f7:32;
  int s7251c13f8;
  int s7251c13f9;
  int s7251c13f10;
  virtual void  v13(); // _ZN8S7251C133v13Ev
  virtual void  v14(); // _ZN8S7251C133v14Ev
  ~S7251C13(); // tgen
  S7251C13(); // tgen
};
//SIG(-1 S7251C13) C1{ VBC2{ BC3{ BC4{ m Fi} v3 v4 v5 FC4[3] FC4[2] Fp Fs FC4} vd v6 Fp[7] Fi[2] FL Fi} VBC5{ VBC3 VBC4 v7 FC3 FD Fp[2] FC3} BC4 BC6{ BC7{ BC3 VBC4 FD FL FC3 Fp Fs[3]} VBC8{ BC9{ VBC4 VBC3 VBC7 Fp[2] Fi FC7[8] FD[9]} BC4 VBC10{ VBC3 VBC4 BC5 BC7 v8 Fp[2] Fl Fi FC3[5]} BC2 vd v9 Fi Fp Fi} BC10 BC11{ VBC4 BC10 BC5 BC7 v10 Fi FC12{} Fp[2]} vd Fi Fc[2] Fi FL FC12 Fp[8] Fs[5] FL FC13{ vd m Fc[2] Fi FL Fp[7] FU14{ m FL:3 Fi Fi Fi FD[8] Fp Fc[5] FD Fc[4] Fi Fp Fc[4] Fp}[4] FC15{ VBC4 VBC16{ BC4 v11 v12 v13 FC4[3] FC4[2] Fp Fs FC4} VBC17{ BC16 VBC4 FD FL FC16 Fp Fs[3]} Fp[2] Fi FC17[8] FD[9]}}} v1 v2 Fp Fi Fi FC18{ v14 v15 Fi Fs FC19{ VBC7 BC2 VBC3 BC10 BC5 v16 Fi[2] FD FC5[10] Fi} Fp Fc FC7 FC20{ VBC4 BC21{ VBC17 BC22{ BC16 vd v19 Fp[7] Fi[2] FL Fi} VBC16 BC23{ VBC16 VBC4 BC24{ VBC16 VBC4 v20 FC16 FD Fp[2] FC16} BC17 v21 Fp[2] Fl Fi FC16[5]} BC24 v22 Fi[2] FD FC24[10] Fi} BC17 VBC25{ BC15 BC4 VBC23 BC22 vd v23 Fi Fp Fi} BC15 vd v17 v18 Fi[2] Fp Fc:3 Fi[3]} FL Fp}[8] Fi FL Fc Fi:32 Fi Fi Fi}


void  S7251C13 ::v13(){vfunc_called(this, "_ZN8S7251C133v13Ev");}
void  S7251C13 ::v14(){vfunc_called(this, "_ZN8S7251C133v14Ev");}
S7251C13 ::~S7251C13(){ note_dtor("S7251C13", this);} // tgen
S7251C13 ::S7251C13(){ note_ctor("S7251C13", this);} // tgen

static void Test_S7251C13()
{
  extern Class_Descriptor cd_S7251C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5435,16220)];
    init_test(&cd_S7251C13, buf);
    S7251C13 *dp, &lv = *(dp=new (buf) S7251C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(86944,64876), "sizeof(S7251C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7251C13)");
    /*is_ambiguous_... S7251C13::S7251C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C8*), ABISELECT(84416,62944), "S7251C13");
    /*is_ambiguous_... S7251C13::S7251C8 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C8*), ABISELECT(84408,62940), "S7251C13");
    /*is_ambiguous_... S7251C13::S7251C8 */ AMB_check_base_class_offset(lv, (S7251C8*), ABISELECT(84408,62940), "S7251C13");
    /*is_ambiguous_... S7251C13::S7251C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*), ABISELECT(84696,63136), "S7251C13");
    /*is_ambiguous_... S7251C13::S7251C2 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C2*), ABISELECT(84688,63132), "S7251C13");
    /*is_ambiguous_... S7251C12::S7251C3 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C12*)(S7251C11*), ABISELECT(84688,63132), "S7251C13");
    /*is_ambiguous_... S7251C13::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C9*), ABISELECT(84688,63132), "S7251C13");
    /*is_ambiguous_... S7251C13::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C2*)(S7251C9*), ABISELECT(84688,63132), "S7251C13");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C9*)(S7251C14*), ABISELECT(84688,63132), "S7251C13");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C2*)(S7251C9*)(S7251C14*), ABISELECT(84688,63132), "S7251C13");
    /*is_ambiguous_... S7251C9::S7251C3 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C9*)(S7251C15*)(S7251C14*), ABISELECT(84688,63132), "S7251C13");
    check_base_class_offset(lv, (S7251C3*)(S7251C2*)(S7251C9*)(S7251C15*)(S7251C14*), ABISELECT(84688,63132), "S7251C13");
    /*is_ambiguous_... S7251C15::S7251C2 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C2*)(S7251C15*)(S7251C14*), ABISELECT(84688,63132), "S7251C13");
    /*is_ambiguous_... S7251C13::S7251C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C2*), ABISELECT(84736,63172), "S7251C13");
    /*is_ambiguous_... S7251C14::S7251C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C7*)(S7251C14*), ABISELECT(84736,63172), "S7251C13");
    /*is_ambiguous_... S7251C12::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C12*)(S7251C11*), ABISELECT(84736,63172), "S7251C13");
    /*is_ambiguous_... S7251C13::S7251C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C7*), ABISELECT(84736,63172), "S7251C13");
    /*is_ambiguous_... S7251C13::S7251C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C9*), ABISELECT(84736,63172), "S7251C13");
    /*is_ambiguous_... S7251C13::S7251C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C2*)(S7251C9*), ABISELECT(84736,63172), "S7251C13");
    /*is_ambiguous_... S7251C13::S7251C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C7*)(S7251C9*), ABISELECT(84736,63172), "S7251C13");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C9*)(S7251C14*), ABISELECT(84736,63172), "S7251C13");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C2*)(S7251C9*)(S7251C14*), ABISELECT(84736,63172), "S7251C13");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C7*)(S7251C9*)(S7251C14*), ABISELECT(84736,63172), "S7251C13");
    /*is_ambiguous_... S7251C15::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C15*)(S7251C14*), ABISELECT(84736,63172), "S7251C13");
    /*is_ambiguous_... S7251C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C9*)(S7251C15*)(S7251C14*), ABISELECT(84736,63172), "S7251C13");
    /*is_ambiguous_... S7251C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C2*)(S7251C9*)(S7251C15*)(S7251C14*), ABISELECT(84736,63172), "S7251C13");
    /*is_ambiguous_... S7251C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C7*)(S7251C9*)(S7251C15*)(S7251C14*), ABISELECT(84736,63172), "S7251C13");
    /*is_ambiguous_... S7251C15::S7251C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C2*)(S7251C15*)(S7251C14*), ABISELECT(84736,63172), "S7251C13");
    /*is_ambiguous_... S7251C15::S7251C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C7*)(S7251C15*)(S7251C14*), ABISELECT(84736,63172), "S7251C13");
    /*is_ambiguous_... S7251C13::S7251C2 */ AMB_check_base_class_offset(lv, (S7251C2*), ABISELECT(84544,63028), "S7251C13");
    /*is_ambiguous_... S7251C13::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(3824,2924), "S7251C13");
    /*is_ambiguous_... S7251C14::S7251C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C7*)(S7251C14*), ABISELECT(8,4), "S7251C13");
    /*is_ambiguous_... S7251C14::S7251C7 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C7*)(S7251C14*), 0, "S7251C13");
    /*is_ambiguous_... S7251C14::S7251C7 */ AMB_check_base_class_offset(lv, (S7251C7*)(S7251C14*), 0, "S7251C13");
    /*is_ambiguous_... S7251C13::S7251C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C7*), ABISELECT(86248,64336), "S7251C13");
    /*is_ambiguous_... S7251C13::S7251C7 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C7*), ABISELECT(86240,64332), "S7251C13");
    check_base_class_offset(lv, (S7251C7*)(S7251C12*)(S7251C11*), ABISELECT(86240,64332), "S7251C13");
    check_base_class_offset(lv, (S7251C12*)(S7251C11*), ABISELECT(84752,63176), "S7251C13");
    /*is_ambiguous_... S7251C11::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C11*), ABISELECT(86080,64228), "S7251C13");
    /*is_ambiguous_... S7251C13::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C2*)(S7251C9*), ABISELECT(86384,64444), "S7251C13");
    /*is_ambiguous_... S7251C13::S7251C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C7*)(S7251C9*), ABISELECT(86536,64552), "S7251C13");
    /*is_ambiguous_... S7251C13::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C7*)(S7251C9*), ABISELECT(86528,64548), "S7251C13");
    /*is_ambiguous_... S7251C13::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C7*)(S7251C9*), ABISELECT(86528,64548), "S7251C13");
    check_base_class_offset(lv, (S7251C9*)(S7251C11*), ABISELECT(86384,64444), "S7251C13");
    check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C8*)(S7251C11*), ABISELECT(86096,64236), "S7251C13");
    check_base_class_offset(lv, (S7251C3*)(S7251C8*)(S7251C11*), ABISELECT(86088,64232), "S7251C13");
    check_base_class_offset(lv, (S7251C8*)(S7251C11*), ABISELECT(86088,64232), "S7251C13");
    check_base_class_offset(lv, (S7251C11*)(S7251C14*), ABISELECT(84752,63176), "S7251C13");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C2*)(S7251C9*)(S7251C14*), ABISELECT(144,112), "S7251C13");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C7*)(S7251C9*)(S7251C14*), ABISELECT(296,220), "S7251C13");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C7*)(S7251C9*)(S7251C14*), ABISELECT(288,216), "S7251C13");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C7*)(S7251C9*)(S7251C14*), ABISELECT(288,216), "S7251C13");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C9*)(S7251C14*), ABISELECT(144,112), "S7251C13");
    check_base_class_offset(lv, (S7251C2*)(S7251C9*)(S7251C15*)(S7251C14*), ABISELECT(704,544), "S7251C13");
    check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C7*)(S7251C9*)(S7251C15*)(S7251C14*), ABISELECT(856,652), "S7251C13");
    check_base_class_offset(lv, (S7251C3*)(S7251C7*)(S7251C9*)(S7251C15*)(S7251C14*), ABISELECT(848,648), "S7251C13");
    check_base_class_offset(lv, (S7251C7*)(S7251C9*)(S7251C15*)(S7251C14*), ABISELECT(848,648), "S7251C13");
    check_base_class_offset(lv, (S7251C9*)(S7251C15*)(S7251C14*), ABISELECT(704,544), "S7251C13");
    /*is_ambiguous_... S7251C15::S7251C2 */ AMB_check_base_class_offset(lv, (S7251C2*)(S7251C15*)(S7251C14*), ABISELECT(1264,976), "S7251C13");
    /*is_ambiguous_... S7251C15::S7251C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C7*)(S7251C15*)(S7251C14*), ABISELECT(1416,1084), "S7251C13");
    /*is_ambiguous_... S7251C15::S7251C7 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C7*)(S7251C15*)(S7251C14*), ABISELECT(1408,1080), "S7251C13");
    /*is_ambiguous_... S7251C15::S7251C7 */ AMB_check_base_class_offset(lv, (S7251C7*)(S7251C15*)(S7251C14*), ABISELECT(1408,1080), "S7251C13");
    check_base_class_offset(lv, (S7251C15*)(S7251C14*), ABISELECT(704,544), "S7251C13");
    check_base_class_offset(lv, (S7251C14*), 0, "S7251C13");
    check_field_offset(lv, s7251c13f0, ABISELECT(3832,2928), "S7251C13.s7251c13f0");
    check_field_offset(lv, s7251c13f1, ABISELECT(3840,2932), "S7251C13.s7251c13f1");
    check_field_offset(lv, s7251c13f2, ABISELECT(3844,2936), "S7251C13.s7251c13f2");
    check_field_offset(lv, s7251c13f3, ABISELECT(3856,2940), "S7251C13.s7251c13f3");
    check_field_offset(lv, s7251c13f4, ABISELECT(84368,62908), "S7251C13.s7251c13f4");
    check_field_offset(lv, s7251c13f5, ABISELECT(84376,62912), "S7251C13.s7251c13f5");
    check_field_offset(lv, s7251c13f6, ABISELECT(84384,62920), "S7251C13.s7251c13f6");
    set_bf_and_test(lv, s7251c13f7, ABISELECT(84388,62924), 0, 32, 1, "S7251C13");
    set_bf_and_test(lv, s7251c13f7, ABISELECT(84388,62924), 0, 32, hide_sll(1LL<<31), "S7251C13");
    check_field_offset(lv, s7251c13f8, ABISELECT(84392,62928), "S7251C13.s7251c13f8");
    check_field_offset(lv, s7251c13f9, ABISELECT(84396,62932), "S7251C13.s7251c13f9");
    check_field_offset(lv, s7251c13f10, ABISELECT(84400,62936), "S7251C13.s7251c13f10");
    test_class_info(&lv, &cd_S7251C13);
    dp->~S7251C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7251C13(Test_S7251C13, "S7251C13", ABISELECT(86944,64876));

#else // __cplusplus

extern void _ZN8S7251C13C1Ev();
extern void _ZN8S7251C13D1Ev();
Name_Map name_map_S7251C13[] = {
  NSPAIR(_ZN8S7251C13C1Ev),
  NSPAIR(_ZN8S7251C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C8;
extern VTBL_ENTRY _ZTI7S7251C8[];
extern  VTBL_ENTRY _ZTV7S7251C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C2;
extern VTBL_ENTRY _ZTI7S7251C2[];
extern  VTBL_ENTRY _ZTV7S7251C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C7;
extern VTBL_ENTRY _ZTI7S7251C7[];
extern  VTBL_ENTRY _ZTV7S7251C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C7[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C7;
extern VTBL_ENTRY _ZTI7S7251C7[];
extern  VTBL_ENTRY _ZTV7S7251C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C7[];
extern Class_Descriptor cd_S7251C12;
extern VTBL_ENTRY _ZTI8S7251C12[];
extern  VTBL_ENTRY _ZTV8S7251C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7251C12[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C2;
extern VTBL_ENTRY _ZTI7S7251C2[];
extern  VTBL_ENTRY _ZTV7S7251C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C7;
extern VTBL_ENTRY _ZTI7S7251C7[];
extern  VTBL_ENTRY _ZTV7S7251C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C7[];
extern Class_Descriptor cd_S7251C9;
extern VTBL_ENTRY _ZTI7S7251C9[];
extern  VTBL_ENTRY _ZTV7S7251C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C8;
extern VTBL_ENTRY _ZTI7S7251C8[];
extern  VTBL_ENTRY _ZTV7S7251C8[];
extern Class_Descriptor cd_S7251C11;
extern VTBL_ENTRY _ZTI8S7251C11[];
extern  VTBL_ENTRY _ZTV8S7251C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7251C11[];
extern Class_Descriptor cd_S7251C2;
extern VTBL_ENTRY _ZTI7S7251C2[];
extern  VTBL_ENTRY _ZTV7S7251C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C7;
extern VTBL_ENTRY _ZTI7S7251C7[];
extern  VTBL_ENTRY _ZTV7S7251C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C7[];
extern Class_Descriptor cd_S7251C9;
extern VTBL_ENTRY _ZTI7S7251C9[];
extern  VTBL_ENTRY _ZTV7S7251C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C9[];
extern Class_Descriptor cd_S7251C2;
extern VTBL_ENTRY _ZTI7S7251C2[];
extern  VTBL_ENTRY _ZTV7S7251C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C7;
extern VTBL_ENTRY _ZTI7S7251C7[];
extern  VTBL_ENTRY _ZTV7S7251C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C7[];
extern Class_Descriptor cd_S7251C9;
extern VTBL_ENTRY _ZTI7S7251C9[];
extern  VTBL_ENTRY _ZTV7S7251C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C9[];
extern Class_Descriptor cd_S7251C2;
extern VTBL_ENTRY _ZTI7S7251C2[];
extern  VTBL_ENTRY _ZTV7S7251C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C7;
extern VTBL_ENTRY _ZTI7S7251C7[];
extern  VTBL_ENTRY _ZTV7S7251C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C7[];
extern Class_Descriptor cd_S7251C15;
extern VTBL_ENTRY _ZTI8S7251C15[];
extern  VTBL_ENTRY _ZTV8S7251C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7251C15[];
extern Class_Descriptor cd_S7251C14;
extern VTBL_ENTRY _ZTI8S7251C14[];
extern  VTBL_ENTRY _ZTV8S7251C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7251C14[];
static Base_Class bases_S7251C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(84416,62944), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7251C3,    ABISELECT(84408,62940), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7251C8,    ABISELECT(84408,62940), //bcp->offset
    52, //bcp->virtual_function_table_offset
    7, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(84696,63136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7251C3,    ABISELECT(84688,63132), //bcp->offset
    71, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(84736,63172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7251C2,    ABISELECT(84544,63028), //bcp->offset
    65, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(3824,2924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7251C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    10, //immediately_derived
  0, 0},
  {&cd_S7251C7,    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
    16, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(86248,64336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7251C3,    ABISELECT(86240,64332), //bcp->offset
    -1, //bcp->virtual_function_table_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_S7251C7,    ABISELECT(86240,64332), //bcp->offset
    102, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S7251C12,    ABISELECT(84752,63176), //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
    11, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(86080,64228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7251C2,    ABISELECT(86384,64444), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(86536,64552), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7251C3,    ABISELECT(86528,64548), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7251C7,    ABISELECT(86528,64548), //bcp->offset
    122, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7251C9,    ABISELECT(86384,64444), //bcp->offset
    111, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(86096,64236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7251C3,    ABISELECT(86088,64232), //bcp->offset
    -1, //bcp->virtual_function_table_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
    23, //immediately_derived
  0, 0},
  {&cd_S7251C8,    ABISELECT(86088,64232), //bcp->offset
    94, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7251C11,    ABISELECT(84752,63176), //bcp->offset
    79, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S7251C2,    ABISELECT(144,112), //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
    17, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    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
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7251C3,    ABISELECT(288,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
    18, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7251C7,    ABISELECT(288,216), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7251C9,    ABISELECT(144,112), //bcp->offset
    16, //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
    20, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7251C2,    ABISELECT(704,544), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(856,652), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7251C3,    ABISELECT(848,648), //bcp->offset
    -1, //bcp->virtual_function_table_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
    33, //immediately_derived
  0, 0},
  {&cd_S7251C7,    ABISELECT(848,648), //bcp->offset
    35, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7251C9,    ABISELECT(704,544), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7251C2,    ABISELECT(1264,976), //bcp->offset
    41, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1416,1084), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7251C3,    ABISELECT(1408,1080), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S7251C7,    ABISELECT(1408,1080), //bcp->offset
    46, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7251C15,    ABISELECT(704,544), //bcp->offset
    28, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7251C14,    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
    29, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7251C13[];
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void _ZN8S7251C13D1Ev();
extern void _ZN8S7251C13D0Ev();
extern void _ZN8S7251C133v13Ev();
extern void _ZN8S7251C133v14Ev();
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
extern void _ZN8S7251C153v12Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void ABISELECT(_ZTv0_n48_N8S7251C13D1Ev,_ZTv0_n24_N8S7251C13D1Ev)();
extern void ABISELECT(_ZThn84408_N8S7251C13D1Ev,_ZThn62940_N8S7251C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7251C13D0Ev,_ZTv0_n24_N8S7251C13D0Ev)();
extern void ABISELECT(_ZThn84408_N8S7251C13D0Ev,_ZThn62940_N8S7251C13D0Ev)() __attribute__((weak));
extern void _ZN7S7251C82v9Ev();
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void ABISELECT(_ZTv0_n56_N8S7251C13D1Ev,_ZTv0_n28_N8S7251C13D1Ev)();
extern void ABISELECT(_ZThn84752_N8S7251C13D1Ev,_ZThn63176_N8S7251C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7251C13D0Ev,_ZTv0_n28_N8S7251C13D0Ev)();
extern void ABISELECT(_ZThn84752_N8S7251C13D0Ev,_ZThn63176_N8S7251C13D0Ev)() __attribute__((weak));
extern void _ZN8S7251C113v11Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void ABISELECT(_ZTvn1336_n56_N8S7251C13D1Ev,_ZTvn1056_n28_N8S7251C13D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N8S7251C13D0Ev,_ZTvn1056_n28_N8S7251C13D0Ev)();
extern void _ZN7S7251C82v9Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY vtc_S7251C13[] = {
  ABISELECT(84544,63028),
  ABISELECT(84408,62940),
  ABISELECT(86384,64444),
  ABISELECT(86240,64332),
  ABISELECT(84688,63132),
  ABISELECT(84752,63176),
  ABISELECT(84736,63172),
  0,
  (VTBL_ENTRY)&(_ZTI8S7251C13[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  (VTBL_ENTRY)&_ZN8S7251C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7251C13D0Ev,
  (VTBL_ENTRY)&_ZN8S7251C133v13Ev,
  (VTBL_ENTRY)&_ZN8S7251C133v14Ev,
  ABISELECT(84592,63060),
  ABISELECT(84544,63020),
  ABISELECT(-144,-112),
  (VTBL_ENTRY)&(_ZTI8S7251C13[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
  ABISELECT(84448,62956),
  ABISELECT(-288,-216),
  (VTBL_ENTRY)&(_ZTI8S7251C13[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  ABISELECT(84032,62628),
  ABISELECT(83984,62588),
  ABISELECT(-704,-544),
  (VTBL_ENTRY)&(_ZTI8S7251C13[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
  (VTBL_ENTRY)&_ZN8S7251C153v12Ev,
  ABISELECT(83888,62524),
  ABISELECT(-848,-648),
  (VTBL_ENTRY)&(_ZTI8S7251C13[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  ABISELECT(83472,62196),
  ABISELECT(83424,62156),
  ABISELECT(-1264,-976),
  (VTBL_ENTRY)&(_ZTI8S7251C13[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  ABISELECT(83328,62092),
  ABISELECT(-1408,-1080),
  (VTBL_ENTRY)&(_ZTI8S7251C13[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  0,
  ABISELECT(-84408,-62940),
  0,
  0,
  0,
  ABISELECT(-84408,-62940),
  (VTBL_ENTRY)&(_ZTI8S7251C13[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7251C13D1Ev,_ZTv0_n24_N8S7251C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7251C13D0Ev,_ZTv0_n24_N8S7251C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7251C82v9Ev,
  0,
  ABISELECT(192,144),
  ABISELECT(144,104),
  ABISELECT(-84544,-63028),
  (VTBL_ENTRY)&(_ZTI8S7251C13[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  0,
  0,
  0,
  ABISELECT(-84688,-63132),
  (VTBL_ENTRY)&(_ZTI8S7251C13[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-84752,-63176),
  ABISELECT(1632,1268),
  ABISELECT(1488,1156),
  ABISELECT(-64,-44),
  ABISELECT(-16,-4),
  ABISELECT(-84752,-63176),
  (VTBL_ENTRY)&(_ZTI8S7251C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7251C13D1Ev,_ZTv0_n28_N8S7251C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7251C13D0Ev,_ZTv0_n28_N8S7251C13D0Ev),
  (VTBL_ENTRY)&_ZN8S7251C113v11Ev,
  ABISELECT(-86088,-64232),
  (VTBL_ENTRY)&(_ZTI8S7251C13[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S7251C13D1Ev,_ZTvn1056_n28_N8S7251C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S7251C13D0Ev,_ZTvn1056_n28_N8S7251C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7251C82v9Ev,
  0,
  0,
  0,
  ABISELECT(-1504,-1160),
  ABISELECT(-86240,-64332),
  (VTBL_ENTRY)&(_ZTI8S7251C13[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1648,-1272),
  ABISELECT(-1696,-1312),
  ABISELECT(-86384,-64444),
  (VTBL_ENTRY)&(_ZTI8S7251C13[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
  ABISELECT(-1792,-1376),
  ABISELECT(-86528,-64548),
  (VTBL_ENTRY)&(_ZTI8S7251C13[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern VTBL_ENTRY _ZTV8S7251C13[];
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void _ZN8S7251C14D1Ev();
extern void _ZN8S7251C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7251C14__8S7251C13[] = {
  ABISELECT(86384,64444),
  ABISELECT(86240,64332),
  ABISELECT(84688,63132),
  ABISELECT(84752,63176),
  ABISELECT(84736,63172),
  0,
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  (VTBL_ENTRY)&_ZN8S7251C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7251C14D0Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C78S7251C14__8S7251C13[] = {
  ABISELECT(84736,63172),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C7[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C98S7251C14__A1__8S7251C13[] = {
  ABISELECT(84592,63060),
  ABISELECT(84544,63020),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
};
extern void _ZN7S7251C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C27S7251C98S7251C14__A2__8S7251C13[] = {
  ABISELECT(84592,63060),
  ABISELECT(84544,63020),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C27S7251C98S7251C14__A2__8S7251C13[] = {
  0,
  0,
  0,
  ABISELECT(-84544,-63020),
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C77S7251C98S7251C14__A3__8S7251C13[] = {
  ABISELECT(84448,62956),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C7[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C98S7251C14__A1__8S7251C13[] = {
  0,
  0,
  0,
  ABISELECT(-84544,-63020),
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__7S7251C98S7251C14__A1__8S7251C13[] = {
  ABISELECT(84448,62956),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
extern void _ZN8S7251C153v12Ev();
static  VTBL_ENTRY _tg__ZTV8S7251C158S7251C14__8S7251C13[] = {
  ABISELECT(84032,62628),
  ABISELECT(83984,62588),
  0,
  (VTBL_ENTRY)&(_ZTI8S7251C15[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
  (VTBL_ENTRY)&_ZN8S7251C153v12Ev,
};
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C98S7251C158S7251C14__A2__8S7251C13[] = {
  ABISELECT(84032,62628),
  ABISELECT(83984,62588),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
};
extern void _ZN7S7251C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C27S7251C98S7251C158S7251C14__A3__8S7251C13[] = {
  ABISELECT(84032,62628),
  ABISELECT(83984,62588),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C27S7251C98S7251C158S7251C14__A3__8S7251C13[] = {
  0,
  0,
  0,
  ABISELECT(-83984,-62588),
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C77S7251C98S7251C158S7251C14__A4__8S7251C13[] = {
  ABISELECT(83888,62524),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C7[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C98S7251C158S7251C14__A2__8S7251C13[] = {
  0,
  0,
  0,
  ABISELECT(-83984,-62588),
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__7S7251C98S7251C158S7251C14__A2__8S7251C13[] = {
  ABISELECT(83888,62524),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C28S7251C158S7251C14__A4__8S7251C13[] = {
  ABISELECT(83472,62196),
  ABISELECT(83424,62156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C28S7251C158S7251C14__A4__8S7251C13[] = {
  0,
  0,
  0,
  ABISELECT(-83424,-62156),
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C78S7251C158S7251C14__A5__8S7251C13[] = {
  ABISELECT(83328,62092),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C7[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__8S7251C158S7251C14__8S7251C13[] = {
  0,
  0,
  0,
  ABISELECT(-83984,-62588),
  (VTBL_ENTRY)&(_ZTI8S7251C15[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C77S7251C9__8S7251C158S7251C14__8S7251C13[] = {
  ABISELECT(83888,62524),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S7251C15[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C2__A1__8S7251C158S7251C14__8S7251C13[] = {
  ABISELECT(83472,62196),
  ABISELECT(83424,62156),
  ABISELECT(-560,-432),
  (VTBL_ENTRY)&(_ZTI8S7251C15[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__A1__8S7251C158S7251C14__8S7251C13[] = {
  ABISELECT(83328,62092),
  ABISELECT(-704,-536),
  (VTBL_ENTRY)&(_ZTI8S7251C15[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S7251C14D1Ev,_ZTv0_n28_N8S7251C14D1Ev)();
extern void ABISELECT(_ZThn84752_N8S7251C14D1Ev,_ZThn63176_N8S7251C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7251C14D0Ev,_ZTv0_n28_N8S7251C14D0Ev)();
extern void ABISELECT(_ZThn84752_N8S7251C14D0Ev,_ZThn63176_N8S7251C14D0Ev)() __attribute__((weak));
extern void _ZN8S7251C113v11Ev();
static  VTBL_ENTRY _tg__ZTV8S7251C11__8S7251C14__8S7251C13[] = {
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-84752,-63176),
  ABISELECT(1632,1268),
  ABISELECT(1488,1156),
  ABISELECT(-64,-44),
  ABISELECT(-16,-4),
  ABISELECT(-84752,-63176),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7251C14D1Ev,_ZTv0_n28_N8S7251C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7251C14D0Ev,_ZTv0_n28_N8S7251C14D0Ev),
  (VTBL_ENTRY)&_ZN8S7251C113v11Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__A1__8S7251C14__8S7251C13[] = {
  0,
  0,
  0,
  ABISELECT(-84688,-63132),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__A1__8S7251C14__8S7251C13[] = {
  0,
  0,
  0,
  ABISELECT(-1504,-1160),
  ABISELECT(-86240,-64332),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C9__8S7251C14__8S7251C13[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1648,-1272),
  ABISELECT(-1696,-1312),
  ABISELECT(-86384,-64444),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C77S7251C9__A2__8S7251C14__8S7251C13[] = {
  ABISELECT(-1792,-1376),
  ABISELECT(-86528,-64548),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void ABISELECT(_ZTvn1336_n56_N8S7251C14D1Ev,_ZTvn1056_n28_N8S7251C14D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N8S7251C14D0Ev,_ZTvn1056_n28_N8S7251C14D0Ev)();
extern void _ZN7S7251C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C88S7251C11__8S7251C14__8S7251C13[] = {
  ABISELECT(-86088,-64232),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S7251C14D1Ev,_ZTvn1056_n28_N8S7251C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S7251C14D0Ev,_ZTvn1056_n28_N8S7251C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7251C82v9Ev,
};
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C9__A__8S7251C14__8S7251C13[] = {
  ABISELECT(84592,63060),
  ABISELECT(84544,63020),
  ABISELECT(-144,-112),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C77S7251C9__A3__8S7251C14__8S7251C13[] = {
  ABISELECT(84448,62956),
  ABISELECT(-288,-216),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
extern void _ZN8S7251C153v12Ev();
static  VTBL_ENTRY _tg__ZTV8S7251C15__8S7251C14__8S7251C13[] = {
  ABISELECT(84032,62628),
  ABISELECT(83984,62588),
  ABISELECT(-704,-544),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
  (VTBL_ENTRY)&_ZN8S7251C153v12Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C77S7251C98S7251C15__A4__8S7251C14__8S7251C13[] = {
  ABISELECT(83888,62524),
  ABISELECT(-848,-648),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C28S7251C15__A3__8S7251C14__8S7251C13[] = {
  ABISELECT(83472,62196),
  ABISELECT(83424,62156),
  ABISELECT(-1264,-976),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C78S7251C15__A5__8S7251C14__8S7251C13[] = {
  ABISELECT(83328,62092),
  ABISELECT(-1408,-1080),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C2__8S7251C13[] = {
  ABISELECT(192,144),
  ABISELECT(144,104),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C2__8S7251C13[] = {
  0,
  0,
  0,
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN8S7251C11D1Ev();
extern void _ZN8S7251C11D0Ev();
extern void _ZN8S7251C113v11Ev();
static  VTBL_ENTRY _tg__ZTV8S7251C11__8S7251C13[] = {
  ABISELECT(1632,1268),
  ABISELECT(1488,1156),
  ABISELECT(-64,-44),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7251C11[0]),
  (VTBL_ENTRY)&_ZN8S7251C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7251C11D0Ev,
  (VTBL_ENTRY)&_ZN8S7251C113v11Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7251C128S7251C11__8S7251C13[] = {
  ABISELECT(1488,1156),
  ABISELECT(-64,-44),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7251C12[0]),
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__8S7251C128S7251C11__8S7251C13[] = {
  0,
  0,
  0,
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S7251C12[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__8S7251C128S7251C11__8S7251C13[] = {
  0,
  0,
  0,
  ABISELECT(-1504,-1160),
  ABISELECT(-1488,-1156),
  (VTBL_ENTRY)&(_ZTI8S7251C12[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__8S7251C11__8S7251C13[] = {
  0,
  0,
  0,
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S7251C11[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__8S7251C11__8S7251C13[] = {
  0,
  0,
  0,
  ABISELECT(-1504,-1160),
  ABISELECT(-1488,-1156),
  (VTBL_ENTRY)&(_ZTI8S7251C11[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C9__8S7251C11__8S7251C13[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1648,-1272),
  ABISELECT(-1696,-1312),
  ABISELECT(-1632,-1268),
  (VTBL_ENTRY)&(_ZTI8S7251C11[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C77S7251C9__A1__8S7251C11__8S7251C13[] = {
  ABISELECT(-1792,-1376),
  ABISELECT(-1776,-1372),
  (VTBL_ENTRY)&(_ZTI8S7251C11[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__A1__8S7251C13[] = {
  ABISELECT(-1504,-1160),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C7[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C9__8S7251C13[] = {
  ABISELECT(-1648,-1272),
  ABISELECT(-1696,-1312),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
};
extern void _ZN7S7251C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C27S7251C9__A1__8S7251C13[] = {
  ABISELECT(-1648,-1272),
  ABISELECT(-1696,-1312),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C27S7251C9__A1__8S7251C13[] = {
  0,
  0,
  0,
  ABISELECT(1696,1312),
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C77S7251C9__A2__8S7251C13[] = {
  ABISELECT(-1792,-1376),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C7[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C9__8S7251C13[] = {
  0,
  0,
  0,
  ABISELECT(1696,1312),
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__7S7251C9__8S7251C13[] = {
  ABISELECT(-1792,-1376),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
static  VTT_ENTRY vtt_S7251C13[] = {
  {&(_ZTV8S7251C13[9]),  9,128},
  {&(_tg__ZTV8S7251C14__8S7251C13[7]),  7,12},
  {&(_tg__ZTV7S7251C78S7251C14__8S7251C13[3]),  3,6},
  {&(_tg__ZTV7S7251C98S7251C14__A1__8S7251C13[4]),  4,6},
  {&(_tg__ZTV7S7251C27S7251C98S7251C14__A2__8S7251C13[4]),  4,5},
  {&(_tg__ZTV7S7251C3__7S7251C27S7251C98S7251C14__A2__8S7251C13[5]),  5,8},
  {&(_tg__ZTV7S7251C77S7251C98S7251C14__A3__8S7251C13[3]),  3,6},
  {&(_tg__ZTV7S7251C3__7S7251C98S7251C14__A1__8S7251C13[5]),  5,8},
  {&(_tg__ZTV7S7251C7__7S7251C98S7251C14__A1__8S7251C13[3]),  3,6},
  {&(_tg__ZTV8S7251C158S7251C14__8S7251C13[4]),  4,7},
  {&(_tg__ZTV7S7251C98S7251C158S7251C14__A2__8S7251C13[4]),  4,6},
  {&(_tg__ZTV7S7251C27S7251C98S7251C158S7251C14__A3__8S7251C13[4]),  4,5},
  {&(_tg__ZTV7S7251C3__7S7251C27S7251C98S7251C158S7251C14__A3__8S7251C13[5]),  5,8},
  {&(_tg__ZTV7S7251C77S7251C98S7251C158S7251C14__A4__8S7251C13[3]),  3,6},
  {&(_tg__ZTV7S7251C3__7S7251C98S7251C158S7251C14__A2__8S7251C13[5]),  5,8},
  {&(_tg__ZTV7S7251C7__7S7251C98S7251C158S7251C14__A2__8S7251C13[3]),  3,6},
  {&(_tg__ZTV7S7251C28S7251C158S7251C14__A4__8S7251C13[4]),  4,5},
  {&(_tg__ZTV7S7251C3__7S7251C28S7251C158S7251C14__A4__8S7251C13[5]),  5,8},
  {&(_tg__ZTV7S7251C78S7251C158S7251C14__A5__8S7251C13[3]),  3,6},
  {&(_tg__ZTV7S7251C3__8S7251C158S7251C14__8S7251C13[5]),  5,8},
  {&(_tg__ZTV7S7251C77S7251C9__8S7251C158S7251C14__8S7251C13[3]),  3,6},
  {&(_tg__ZTV7S7251C2__A1__8S7251C158S7251C14__8S7251C13[4]),  4,5},
  {&(_tg__ZTV7S7251C7__A1__8S7251C158S7251C14__8S7251C13[3]),  3,6},
  {&(_tg__ZTV8S7251C11__8S7251C14__8S7251C13[12]),  12,15},
  {&(_tg__ZTV7S7251C3__A1__8S7251C14__8S7251C13[5]),  5,8},
  {&(_tg__ZTV7S7251C7__A1__8S7251C14__8S7251C13[6]),  6,9},
  {&(_tg__ZTV7S7251C9__8S7251C14__8S7251C13[9]),  9,11},
  {&(_tg__ZTV7S7251C77S7251C9__A2__8S7251C14__8S7251C13[3]),  3,6},
  {&(_tg__ZTV7S7251C88S7251C11__8S7251C14__8S7251C13[2]),  2,8},
  {&(_tg__ZTV7S7251C9__A__8S7251C14__8S7251C13[4]),  4,6},
  {&(_tg__ZTV7S7251C77S7251C9__A3__8S7251C14__8S7251C13[3]),  3,6},
  {&(_tg__ZTV8S7251C15__8S7251C14__8S7251C13[4]),  4,7},
  {&(_tg__ZTV7S7251C77S7251C98S7251C15__A4__8S7251C14__8S7251C13[3]),  3,6},
  {&(_tg__ZTV7S7251C28S7251C15__A3__8S7251C14__8S7251C13[4]),  4,5},
  {&(_tg__ZTV7S7251C78S7251C15__A5__8S7251C14__8S7251C13[3]),  3,6},
  {&(_ZTV8S7251C13[59]),  59,128},
  {&(_ZTV8S7251C13[70]),  70,128},
  {&(_ZTV8S7251C13[76]),  76,128},
  {&(_ZTV8S7251C13[91]),  91,128},
  {&(_ZTV8S7251C13[108]),  108,128},
  {&(_ZTV8S7251C13[120]),  120,128},
  {&(_ZTV8S7251C13[125]),  125,128},
  {&(_ZTV8S7251C13[96]),  96,128},
  {&(_ZTV8S7251C13[20]),  20,128},
  {&(_ZTV8S7251C13[25]),  25,128},
  {&(_ZTV8S7251C13[32]),  32,128},
  {&(_ZTV8S7251C13[38]),  38,128},
  {&(_ZTV8S7251C13[45]),  45,128},
  {&(_ZTV8S7251C13[49]),  49,128},
  {&(_tg__ZTV7S7251C2__8S7251C13[4]),  4,5},
  {&(_tg__ZTV7S7251C3__7S7251C2__8S7251C13[5]),  5,8},
  {&(_tg__ZTV8S7251C11__8S7251C13[6]),  6,9},
  {&(_tg__ZTV8S7251C128S7251C11__8S7251C13[5]),  5,5},
  {&(_tg__ZTV7S7251C3__8S7251C128S7251C11__8S7251C13[5]),  5,8},
  {&(_tg__ZTV7S7251C7__8S7251C128S7251C11__8S7251C13[6]),  6,9},
  {&(_tg__ZTV7S7251C3__8S7251C11__8S7251C13[5]),  5,8},
  {&(_tg__ZTV7S7251C7__8S7251C11__8S7251C13[6]),  6,9},
  {&(_tg__ZTV7S7251C9__8S7251C11__8S7251C13[9]),  9,11},
  {&(_tg__ZTV7S7251C77S7251C9__A1__8S7251C11__8S7251C13[3]),  3,6},
  {&(_tg__ZTV7S7251C7__A1__8S7251C13[3]),  3,6},
  {&(_tg__ZTV7S7251C9__8S7251C13[4]),  4,6},
  {&(_tg__ZTV7S7251C27S7251C9__A1__8S7251C13[4]),  4,5},
  {&(_tg__ZTV7S7251C3__7S7251C27S7251C9__A1__8S7251C13[5]),  5,8},
  {&(_tg__ZTV7S7251C77S7251C9__A2__8S7251C13[3]),  3,6},
  {&(_tg__ZTV7S7251C3__7S7251C9__8S7251C13[5]),  5,8},
  {&(_tg__ZTV7S7251C7__7S7251C9__8S7251C13[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S7251C13[];
extern  VTBL_ENTRY _ZTV8S7251C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7251C13[];
static VTBL_ENTRY alt_thunk_names10[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7251C14D0Ev,_ZTv0_n28_N8S7251C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn84752_N8S7251C14D0Ev,_ZThn63176_N8S7251C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7251C14D1Ev,_ZTv0_n28_N8S7251C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn84752_N8S7251C14D1Ev,_ZThn63176_N8S7251C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7251C13D0Ev,_ZTv0_n28_N8S7251C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn84752_N8S7251C13D0Ev,_ZThn63176_N8S7251C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7251C13D1Ev,_ZTv0_n28_N8S7251C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn84752_N8S7251C13D1Ev,_ZThn63176_N8S7251C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7251C13D0Ev,_ZTv0_n24_N8S7251C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn84408_N8S7251C13D0Ev,_ZThn62940_N8S7251C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7251C13D1Ev,_ZTv0_n24_N8S7251C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn84408_N8S7251C13D1Ev,_ZThn62940_N8S7251C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7251C13 = {  "S7251C13", // class name
  bases_S7251C13, 41,
  &(vtc_S7251C13[0]), // expected_vtbl_contents
  &(vtt_S7251C13[0]), // expected_vtt_contents
  ABISELECT(86944,64876), // object size
  NSPAIRA(_ZTI8S7251C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7251C13),128, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7251C13),66, //virtual table table var
  29, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names10,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7251C1  : S7251C2 , S7251C5 , S7251C13 {
  int s7251c1f0;
  void *s7251c1f1[3];
  int s7251c1f2;
  int s7251c1f3;
  __tsi64 s7251c1f4;
  int s7251c1f5;
  virtual  ~S7251C1(); // _ZN7S7251C1D2Ev
  virtual void  v1(); // _ZN7S7251C12v1Ev
  virtual void  v2(); // _ZN7S7251C12v2Ev
  S7251C1(); // tgen
};
//SIG(1 S7251C1) C1{ BC2{ VBC3{ BC4{ m Fi} v3 v4 v5 FC4[3] FC4[2] Fp Fs FC4} VBC4 v6 FC3 FD Fp[2] FC3} BC5{ v7 v8 Fi Fs FC6{ VBC7{ BC3 VBC4 FD FL FC3 Fp Fs[3]} BC8{ BC3 vd v9 Fp[7] Fi[2] FL Fi} VBC3 BC9{ VBC3 VBC4 BC2 BC7 v10 Fp[2] Fl Fi FC3[5]} BC2 v15 Fi[2] FD FC2[10] Fi} Fp Fc FC7 FC10{ VBC4 BC11{ VBC12{ BC13{ BC4 v18 v19 v20 FC4[3] FC4[2] Fp Fs FC4} VBC4 FD FL FC13 Fp Fs[3]} BC14{ BC13 vd v21 Fp[7] Fi[2] FL Fi} VBC13 BC15{ VBC13 VBC4 BC16{ VBC13 VBC4 v22 FC13 FD Fp[2] FC13} BC12 v23 Fp[2] Fl Fi FC13[5]} BC16 v24 Fi[2] FD FC16[10] Fi} BC12 VBC17{ BC18{ VBC4 VBC13 VBC12 Fp[2] Fi FC12[8] FD[9]} BC4 VBC15 BC14 vd v25 Fi Fp Fi} BC18 vd v16 v17 Fi[2] Fp Fc:3 Fi[3]} FL Fp} BC19{ VBC8 VBC2 BC4 BC20{ BC7 VBC21{ BC22{ VBC4 VBC3 VBC7 Fp[2] Fi FC7[8] FD[9]} BC4 VBC9 BC8 vd v11 Fi Fp Fi} BC9 BC23{ VBC4 BC9 BC2 BC7 v12 Fi FC24{} Fp[2]} vd Fi Fc[2] Fi FL FC24 Fp[8] Fs[5] FL FC25{ vd m Fc[2] Fi FL Fp[7] FU26{ m FL:3 Fi Fi Fi FD[8] Fp Fc[5] FD Fc[4] Fi Fp Fc[4] Fp}[4] FC18}} v13 v14 Fp Fi Fi FC5[8] Fi FL Fc Fi:32 Fi Fi Fi} vd v1 v2 Fi Fp[3] Fi Fi FL Fi}


 S7251C1 ::~S7251C1(){ note_dtor("S7251C1", this);}
void  S7251C1 ::v1(){vfunc_called(this, "_ZN7S7251C12v1Ev");}
void  S7251C1 ::v2(){vfunc_called(this, "_ZN7S7251C12v2Ev");}
S7251C1 ::S7251C1(){ note_ctor("S7251C1", this);} // tgen

static void Test_S7251C1()
{
  extern Class_Descriptor cd_S7251C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6075,18129)];
    init_test(&cd_S7251C1, buf);
    S7251C1 *dp, &lv = *(dp=new (buf) S7251C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(97184,72512), "sizeof(S7251C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7251C1)");
    /*is_ambiguous_... S7251C1::S7251C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*), ABISELECT(94672,70580), "S7251C1");
    /*is_ambiguous_... S7251C1::S7251C2 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C2*), ABISELECT(94664,70576), "S7251C1");
    /*is_ambiguous_... S7251C1::S7251C2 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C2*), ABISELECT(94664,70576), "S7251C1");
    /*is_ambiguous_... S7251C12::S7251C3 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C12*)(S7251C11*), ABISELECT(94664,70576), "S7251C1");
    /*is_ambiguous_... S7251C1::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C9*), ABISELECT(94664,70576), "S7251C1");
    /*is_ambiguous_... S7251C1::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C2*)(S7251C9*), ABISELECT(94664,70576), "S7251C1");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C9*)(S7251C14*)(S7251C13*), ABISELECT(94664,70576), "S7251C1");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C2*)(S7251C9*)(S7251C14*)(S7251C13*), ABISELECT(94664,70576), "S7251C1");
    /*is_ambiguous_... S7251C9::S7251C3 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C9*)(S7251C15*)(S7251C14*)(S7251C13*), ABISELECT(94664,70576), "S7251C1");
    check_base_class_offset(lv, (S7251C3*)(S7251C2*)(S7251C9*)(S7251C15*)(S7251C14*)(S7251C13*), ABISELECT(94664,70576), "S7251C1");
    /*is_ambiguous_... S7251C15::S7251C2 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C2*)(S7251C15*)(S7251C14*)(S7251C13*), ABISELECT(94664,70576), "S7251C1");
    /*is_ambiguous_... S7251C1::S7251C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C2*), ABISELECT(94712,70616), "S7251C1");
    /*is_ambiguous_... S7251C1::S7251C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C2*), ABISELECT(94712,70616), "S7251C1");
    /*is_ambiguous_... S7251C14::S7251C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C7*)(S7251C14*)(S7251C13*), ABISELECT(94712,70616), "S7251C1");
    /*is_ambiguous_... S7251C12::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C12*)(S7251C11*), ABISELECT(94712,70616), "S7251C1");
    /*is_ambiguous_... S7251C1::S7251C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C7*), ABISELECT(94712,70616), "S7251C1");
    /*is_ambiguous_... S7251C1::S7251C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C9*), ABISELECT(94712,70616), "S7251C1");
    /*is_ambiguous_... S7251C1::S7251C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C2*)(S7251C9*), ABISELECT(94712,70616), "S7251C1");
    /*is_ambiguous_... S7251C1::S7251C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C7*)(S7251C9*), ABISELECT(94712,70616), "S7251C1");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C9*)(S7251C14*)(S7251C13*), ABISELECT(94712,70616), "S7251C1");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C2*)(S7251C9*)(S7251C14*)(S7251C13*), ABISELECT(94712,70616), "S7251C1");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C7*)(S7251C9*)(S7251C14*)(S7251C13*), ABISELECT(94712,70616), "S7251C1");
    /*is_ambiguous_... S7251C15::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C15*)(S7251C14*)(S7251C13*), ABISELECT(94712,70616), "S7251C1");
    /*is_ambiguous_... S7251C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C9*)(S7251C15*)(S7251C14*)(S7251C13*), ABISELECT(94712,70616), "S7251C1");
    /*is_ambiguous_... S7251C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C2*)(S7251C9*)(S7251C15*)(S7251C14*)(S7251C13*), ABISELECT(94712,70616), "S7251C1");
    /*is_ambiguous_... S7251C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C7*)(S7251C9*)(S7251C15*)(S7251C14*)(S7251C13*), ABISELECT(94712,70616), "S7251C1");
    /*is_ambiguous_... S7251C15::S7251C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C2*)(S7251C15*)(S7251C14*)(S7251C13*), ABISELECT(94712,70616), "S7251C1");
    /*is_ambiguous_... S7251C15::S7251C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C7*)(S7251C15*)(S7251C14*)(S7251C13*), ABISELECT(94712,70616), "S7251C1");
    /*is_ambiguous_... S7251C1::S7251C2 */ AMB_check_base_class_offset(lv, (S7251C2*), 0, "S7251C1");
    check_base_class_offset(lv, (S7251C5*), ABISELECT(144,104), "S7251C1");
    /*is_ambiguous_... S7251C1::S7251C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C8*), ABISELECT(94728,70624), "S7251C1");
    /*is_ambiguous_... S7251C1::S7251C8 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C8*), ABISELECT(94720,70620), "S7251C1");
    /*is_ambiguous_... S7251C13::S7251C8 */ AMB_check_base_class_offset(lv, (S7251C8*)(S7251C13*), ABISELECT(94720,70620), "S7251C1");
    /*is_ambiguous_... S7251C13::S7251C2 */ AMB_check_base_class_offset(lv, (S7251C2*)(S7251C13*), ABISELECT(94848,70708), "S7251C1");
    /*is_ambiguous_... S7251C13::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C13*), ABISELECT(14032,10524), "S7251C1");
    /*is_ambiguous_... S7251C14::S7251C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C7*)(S7251C14*)(S7251C13*), ABISELECT(10216,7604), "S7251C1");
    /*is_ambiguous_... S7251C14::S7251C7 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C7*)(S7251C14*)(S7251C13*), ABISELECT(10208,7600), "S7251C1");
    /*is_ambiguous_... S7251C14::S7251C7 */ AMB_check_base_class_offset(lv, (S7251C7*)(S7251C14*)(S7251C13*), ABISELECT(10208,7600), "S7251C1");
    /*is_ambiguous_... S7251C1::S7251C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C7*), ABISELECT(96488,71972), "S7251C1");
    /*is_ambiguous_... S7251C1::S7251C7 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C7*), ABISELECT(96480,71968), "S7251C1");
    check_base_class_offset(lv, (S7251C7*)(S7251C12*)(S7251C11*), ABISELECT(96480,71968), "S7251C1");
    check_base_class_offset(lv, (S7251C12*)(S7251C11*), ABISELECT(94992,70812), "S7251C1");
    /*is_ambiguous_... S7251C11::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C11*), ABISELECT(96320,71864), "S7251C1");
    /*is_ambiguous_... S7251C1::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C2*)(S7251C9*), ABISELECT(96624,72080), "S7251C1");
    /*is_ambiguous_... S7251C1::S7251C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C7*)(S7251C9*), ABISELECT(96776,72188), "S7251C1");
    /*is_ambiguous_... S7251C1::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C7*)(S7251C9*), ABISELECT(96768,72184), "S7251C1");
    /*is_ambiguous_... S7251C1::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C7*)(S7251C9*), ABISELECT(96768,72184), "S7251C1");
    check_base_class_offset(lv, (S7251C9*)(S7251C11*), ABISELECT(96624,72080), "S7251C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C8*)(S7251C11*), ABISELECT(96336,71872), "S7251C1");
    check_base_class_offset(lv, (S7251C3*)(S7251C8*)(S7251C11*), ABISELECT(96328,71868), "S7251C1");
    check_base_class_offset(lv, (S7251C8*)(S7251C11*), ABISELECT(96328,71868), "S7251C1");
    check_base_class_offset(lv, (S7251C11*)(S7251C14*)(S7251C13*), ABISELECT(94992,70812), "S7251C1");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C2*)(S7251C9*)(S7251C14*)(S7251C13*), ABISELECT(10352,7712), "S7251C1");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C7*)(S7251C9*)(S7251C14*)(S7251C13*), ABISELECT(10504,7820), "S7251C1");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C7*)(S7251C9*)(S7251C14*)(S7251C13*), ABISELECT(10496,7816), "S7251C1");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C7*)(S7251C9*)(S7251C14*)(S7251C13*), ABISELECT(10496,7816), "S7251C1");
    /*is_ambiguous_... S7251C14::S7251C9 */ AMB_check_base_class_offset(lv, (S7251C9*)(S7251C14*)(S7251C13*), ABISELECT(10352,7712), "S7251C1");
    check_base_class_offset(lv, (S7251C2*)(S7251C9*)(S7251C15*)(S7251C14*)(S7251C13*), ABISELECT(10912,8144), "S7251C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C7*)(S7251C9*)(S7251C15*)(S7251C14*)(S7251C13*), ABISELECT(11064,8252), "S7251C1");
    check_base_class_offset(lv, (S7251C3*)(S7251C7*)(S7251C9*)(S7251C15*)(S7251C14*)(S7251C13*), ABISELECT(11056,8248), "S7251C1");
    check_base_class_offset(lv, (S7251C7*)(S7251C9*)(S7251C15*)(S7251C14*)(S7251C13*), ABISELECT(11056,8248), "S7251C1");
    check_base_class_offset(lv, (S7251C9*)(S7251C15*)(S7251C14*)(S7251C13*), ABISELECT(10912,8144), "S7251C1");
    /*is_ambiguous_... S7251C15::S7251C2 */ AMB_check_base_class_offset(lv, (S7251C2*)(S7251C15*)(S7251C14*)(S7251C13*), ABISELECT(11472,8576), "S7251C1");
    /*is_ambiguous_... S7251C15::S7251C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7251C3*)(S7251C7*)(S7251C15*)(S7251C14*)(S7251C13*), ABISELECT(11624,8684), "S7251C1");
    /*is_ambiguous_... S7251C15::S7251C7 */ AMB_check_base_class_offset(lv, (S7251C3*)(S7251C7*)(S7251C15*)(S7251C14*)(S7251C13*), ABISELECT(11616,8680), "S7251C1");
    /*is_ambiguous_... S7251C15::S7251C7 */ AMB_check_base_class_offset(lv, (S7251C7*)(S7251C15*)(S7251C14*)(S7251C13*), ABISELECT(11616,8680), "S7251C1");
    check_base_class_offset(lv, (S7251C15*)(S7251C14*)(S7251C13*), ABISELECT(10912,8144), "S7251C1");
    check_base_class_offset(lv, (S7251C14*)(S7251C13*), ABISELECT(10208,7600), "S7251C1");
    check_base_class_offset(lv, (S7251C13*), ABISELECT(10208,7600), "S7251C1");
    check_field_offset(lv, s7251c1f0, ABISELECT(94612,70540), "S7251C1.s7251c1f0");
    check_field_offset(lv, s7251c1f1, ABISELECT(94616,70544), "S7251C1.s7251c1f1");
    check_field_offset(lv, s7251c1f2, ABISELECT(94640,70556), "S7251C1.s7251c1f2");
    check_field_offset(lv, s7251c1f3, ABISELECT(94644,70560), "S7251C1.s7251c1f3");
    check_field_offset(lv, s7251c1f4, ABISELECT(94648,70564), "S7251C1.s7251c1f4");
    check_field_offset(lv, s7251c1f5, ABISELECT(94656,70572), "S7251C1.s7251c1f5");
    test_class_info(&lv, &cd_S7251C1);
    dp->~S7251C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7251C1(Test_S7251C1, "S7251C1", ABISELECT(97184,72512));

#else // __cplusplus

extern void _ZN7S7251C1C1Ev();
extern void _ZN7S7251C1D2Ev();
Name_Map name_map_S7251C1[] = {
  NSPAIR(_ZN7S7251C1C1Ev),
  NSPAIR(_ZN7S7251C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C2;
extern VTBL_ENTRY _ZTI7S7251C2[];
extern  VTBL_ENTRY _ZTV7S7251C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C2[];
extern Class_Descriptor cd_S7251C5;
extern VTBL_ENTRY _ZTI7S7251C5[];
extern  VTBL_ENTRY _ZTV7S7251C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C8;
extern VTBL_ENTRY _ZTI7S7251C8[];
extern  VTBL_ENTRY _ZTV7S7251C8[];
extern Class_Descriptor cd_S7251C2;
extern VTBL_ENTRY _ZTI7S7251C2[];
extern  VTBL_ENTRY _ZTV7S7251C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C7;
extern VTBL_ENTRY _ZTI7S7251C7[];
extern  VTBL_ENTRY _ZTV7S7251C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C7[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C7;
extern VTBL_ENTRY _ZTI7S7251C7[];
extern  VTBL_ENTRY _ZTV7S7251C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C7[];
extern Class_Descriptor cd_S7251C12;
extern VTBL_ENTRY _ZTI8S7251C12[];
extern  VTBL_ENTRY _ZTV8S7251C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7251C12[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C2;
extern VTBL_ENTRY _ZTI7S7251C2[];
extern  VTBL_ENTRY _ZTV7S7251C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C7;
extern VTBL_ENTRY _ZTI7S7251C7[];
extern  VTBL_ENTRY _ZTV7S7251C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C7[];
extern Class_Descriptor cd_S7251C9;
extern VTBL_ENTRY _ZTI7S7251C9[];
extern  VTBL_ENTRY _ZTV7S7251C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C8;
extern VTBL_ENTRY _ZTI7S7251C8[];
extern  VTBL_ENTRY _ZTV7S7251C8[];
extern Class_Descriptor cd_S7251C11;
extern VTBL_ENTRY _ZTI8S7251C11[];
extern  VTBL_ENTRY _ZTV8S7251C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7251C11[];
extern Class_Descriptor cd_S7251C2;
extern VTBL_ENTRY _ZTI7S7251C2[];
extern  VTBL_ENTRY _ZTV7S7251C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C7;
extern VTBL_ENTRY _ZTI7S7251C7[];
extern  VTBL_ENTRY _ZTV7S7251C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C7[];
extern Class_Descriptor cd_S7251C9;
extern VTBL_ENTRY _ZTI7S7251C9[];
extern  VTBL_ENTRY _ZTV7S7251C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C9[];
extern Class_Descriptor cd_S7251C2;
extern VTBL_ENTRY _ZTI7S7251C2[];
extern  VTBL_ENTRY _ZTV7S7251C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C7;
extern VTBL_ENTRY _ZTI7S7251C7[];
extern  VTBL_ENTRY _ZTV7S7251C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C7[];
extern Class_Descriptor cd_S7251C9;
extern VTBL_ENTRY _ZTI7S7251C9[];
extern  VTBL_ENTRY _ZTV7S7251C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C9[];
extern Class_Descriptor cd_S7251C2;
extern VTBL_ENTRY _ZTI7S7251C2[];
extern  VTBL_ENTRY _ZTV7S7251C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7251C3;
extern VTBL_ENTRY _ZTI7S7251C3[];
extern  VTBL_ENTRY _ZTV7S7251C3[];
extern Class_Descriptor cd_S7251C7;
extern VTBL_ENTRY _ZTI7S7251C7[];
extern  VTBL_ENTRY _ZTV7S7251C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C7[];
extern Class_Descriptor cd_S7251C15;
extern VTBL_ENTRY _ZTI8S7251C15[];
extern  VTBL_ENTRY _ZTV8S7251C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7251C15[];
extern Class_Descriptor cd_S7251C14;
extern VTBL_ENTRY _ZTI8S7251C14[];
extern  VTBL_ENTRY _ZTV8S7251C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7251C14[];
extern Class_Descriptor cd_S7251C13;
extern VTBL_ENTRY _ZTI8S7251C13[];
extern  VTBL_ENTRY _ZTV8S7251C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7251C13[];
static Base_Class bases_S7251C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(94672,70580), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7251C3,    ABISELECT(94664,70576), //bcp->offset
    70, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(94712,70616), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7251C2,    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_S7251C5,    ABISELECT(144,104), //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
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(94728,70624), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7251C3,    ABISELECT(94720,70620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7251C8,    ABISELECT(94720,70620), //bcp->offset
    78, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    43, //immediately_derived
  0, 1},
  {&cd_S7251C2,    ABISELECT(94848,70708), //bcp->offset
    91, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    43, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(14032,10524), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(10216,7604), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7251C3,    ABISELECT(10208,7600), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7251C7,    ABISELECT(10208,7600), //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
    18, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(96488,71972), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7251C3,    ABISELECT(96480,71968), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7251C7,    ABISELECT(96480,71968), //bcp->offset
    120, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7251C12,    ABISELECT(94992,70812), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(96320,71864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7251C2,    ABISELECT(96624,72080), //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
    7, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(96776,72188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7251C3,    ABISELECT(96768,72184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7251C7,    ABISELECT(96768,72184), //bcp->offset
    140, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7251C9,    ABISELECT(96624,72080), //bcp->offset
    129, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(96336,71872), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7251C3,    ABISELECT(96328,71868), //bcp->offset
    -1, //bcp->virtual_function_table_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
    25, //immediately_derived
  0, 0},
  {&cd_S7251C8,    ABISELECT(96328,71868), //bcp->offset
    112, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7251C11,    ABISELECT(94992,70812), //bcp->offset
    97, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7251C2,    ABISELECT(10352,7712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(10504,7820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7251C3,    ABISELECT(10496,7816), //bcp->offset
    -1, //bcp->virtual_function_table_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_S7251C7,    ABISELECT(10496,7816), //bcp->offset
    40, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7251C9,    ABISELECT(10352,7712), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7251C2,    ABISELECT(10912,8144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(11064,8252), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7251C3,    ABISELECT(11056,8248), //bcp->offset
    -1, //bcp->virtual_function_table_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
    35, //immediately_derived
  0, 0},
  {&cd_S7251C7,    ABISELECT(11056,8248), //bcp->offset
    53, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7251C9,    ABISELECT(10912,8144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7251C2,    ABISELECT(11472,8576), //bcp->offset
    59, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(11624,8684), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7251C3,    ABISELECT(11616,8680), //bcp->offset
    -1, //bcp->virtual_function_table_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
    40, //immediately_derived
  0, 0},
  {&cd_S7251C7,    ABISELECT(11616,8680), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7251C15,    ABISELECT(10912,8144), //bcp->offset
    46, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7251C14,    ABISELECT(10208,7600), //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
    31, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7251C13,    ABISELECT(10208,7600), //bcp->offset
    18, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7251C1[];
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C1D1Ev();
extern void _ZN7S7251C1D0Ev();
extern void _ZN7S7251C12v1Ev();
extern void _ZN7S7251C12v2Ev();
extern void _ZN7S7251C52v7Ev();
extern void _ZN7S7251C52v8Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void ABISELECT(_ZThn10208_N7S7251C1D1Ev,_ZThn7600_N7S7251C1D1Ev)();
extern void ABISELECT(_ZThn10208_N7S7251C1D0Ev,_ZThn7600_N7S7251C1D0Ev)();
extern void _ZN8S7251C133v13Ev();
extern void _ZN8S7251C133v14Ev();
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
extern void _ZN8S7251C153v12Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void ABISELECT(_ZTv0_n48_N7S7251C1D1Ev,_ZTv0_n24_N7S7251C1D1Ev)();
extern void ABISELECT(_ZThn94720_N7S7251C1D1Ev,_ZThn70620_N7S7251C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7251C1D0Ev,_ZTv0_n24_N7S7251C1D0Ev)();
extern void ABISELECT(_ZThn94720_N7S7251C1D0Ev,_ZThn70620_N7S7251C1D0Ev)() __attribute__((weak));
extern void _ZN7S7251C82v9Ev();
extern void _ZN7S7251C22v6Ev();
extern void ABISELECT(_ZTv0_n56_N7S7251C1D1Ev,_ZTv0_n28_N7S7251C1D1Ev)();
extern void ABISELECT(_ZThn94992_N7S7251C1D1Ev,_ZThn70812_N7S7251C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7251C1D0Ev,_ZTv0_n28_N7S7251C1D0Ev)();
extern void ABISELECT(_ZThn94992_N7S7251C1D0Ev,_ZThn70812_N7S7251C1D0Ev)() __attribute__((weak));
extern void _ZN8S7251C113v11Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void ABISELECT(_ZTvn1336_n56_N7S7251C1D1Ev,_ZTvn1056_n28_N7S7251C1D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N7S7251C1D0Ev,_ZTvn1056_n28_N7S7251C1D0Ev)();
extern void _ZN7S7251C82v9Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY vtc_S7251C1[] = {
  ABISELECT(96624,72080),
  ABISELECT(96480,71968),
  ABISELECT(94992,70812),
  ABISELECT(94848,70708),
  ABISELECT(94720,70620),
  ABISELECT(94712,70616),
  ABISELECT(94664,70576),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C1[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7251C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7251C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7251C12v2Ev,
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7251C1[0]),
  (VTBL_ENTRY)&_ZN7S7251C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7251C52v8Ev,
  ABISELECT(84640,63108),
  ABISELECT(84512,63020),
  ABISELECT(86416,64480),
  ABISELECT(86272,64368),
  ABISELECT(84456,62976),
  ABISELECT(84784,63212),
  ABISELECT(84504,63016),
  ABISELECT(-10208,-7600),
  (VTBL_ENTRY)&(_ZTI7S7251C1[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn10208_N7S7251C1D1Ev,_ZThn7600_N7S7251C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn10208_N7S7251C1D0Ev,_ZThn7600_N7S7251C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7251C133v13Ev,
  (VTBL_ENTRY)&_ZN8S7251C133v14Ev,
  ABISELECT(84360,62904),
  ABISELECT(84312,62864),
  ABISELECT(-10352,-7712),
  (VTBL_ENTRY)&(_ZTI7S7251C1[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
  ABISELECT(84216,62800),
  ABISELECT(-10496,-7816),
  (VTBL_ENTRY)&(_ZTI7S7251C1[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  ABISELECT(83800,62472),
  ABISELECT(83752,62432),
  ABISELECT(-10912,-8144),
  (VTBL_ENTRY)&(_ZTI7S7251C1[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
  (VTBL_ENTRY)&_ZN8S7251C153v12Ev,
  ABISELECT(83656,62368),
  ABISELECT(-11056,-8248),
  (VTBL_ENTRY)&(_ZTI7S7251C1[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  ABISELECT(83240,62040),
  ABISELECT(83192,62000),
  ABISELECT(-11472,-8576),
  (VTBL_ENTRY)&(_ZTI7S7251C1[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  ABISELECT(83096,61936),
  ABISELECT(-11616,-8680),
  (VTBL_ENTRY)&(_ZTI7S7251C1[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  0,
  0,
  0,
  ABISELECT(-94664,-70576),
  (VTBL_ENTRY)&(_ZTI7S7251C1[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  0,
  ABISELECT(-94720,-70620),
  0,
  0,
  0,
  ABISELECT(-94720,-70620),
  (VTBL_ENTRY)&(_ZTI7S7251C1[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7251C1D1Ev,_ZTv0_n24_N7S7251C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7251C1D0Ev,_ZTv0_n24_N7S7251C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7251C82v9Ev,
  0,
  ABISELECT(-136,-92),
  ABISELECT(-184,-132),
  ABISELECT(-94848,-70708),
  (VTBL_ENTRY)&(_ZTI7S7251C1[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-94992,-70812),
  ABISELECT(1632,1268),
  ABISELECT(1488,1156),
  ABISELECT(-328,-236),
  ABISELECT(-280,-196),
  ABISELECT(-94992,-70812),
  (VTBL_ENTRY)&(_ZTI7S7251C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7251C1D1Ev,_ZTv0_n28_N7S7251C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7251C1D0Ev,_ZTv0_n28_N7S7251C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7251C113v11Ev,
  ABISELECT(-96328,-71868),
  (VTBL_ENTRY)&(_ZTI7S7251C1[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N7S7251C1D1Ev,_ZTvn1056_n28_N7S7251C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N7S7251C1D0Ev,_ZTvn1056_n28_N7S7251C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7251C82v9Ev,
  0,
  0,
  0,
  ABISELECT(-1768,-1352),
  ABISELECT(-96480,-71968),
  (VTBL_ENTRY)&(_ZTI7S7251C1[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1912,-1464),
  ABISELECT(-1960,-1504),
  ABISELECT(-96624,-72080),
  (VTBL_ENTRY)&(_ZTI7S7251C1[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
  ABISELECT(-2056,-1568),
  ABISELECT(-96768,-72184),
  (VTBL_ENTRY)&(_ZTI7S7251C1[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern VTBL_ENTRY _ZTV7S7251C1[];
extern void _ZN7S7251C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C2__A__7S7251C1[] = {
  ABISELECT(94712,70616),
  ABISELECT(94664,70576),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C2__A__7S7251C1[] = {
  0,
  0,
  0,
  ABISELECT(-94664,-70576),
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void _ZN8S7251C13D1Ev();
extern void _ZN8S7251C13D0Ev();
extern void _ZN8S7251C133v13Ev();
extern void _ZN8S7251C133v14Ev();
static  VTBL_ENTRY _tg__ZTV8S7251C13__7S7251C1[] = {
  ABISELECT(84640,63108),
  ABISELECT(84512,63020),
  ABISELECT(86416,64480),
  ABISELECT(86272,64368),
  ABISELECT(84456,62976),
  ABISELECT(84784,63212),
  ABISELECT(84504,63016),
  0,
  (VTBL_ENTRY)&(_ZTI8S7251C13[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  (VTBL_ENTRY)&_ZN8S7251C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7251C13D0Ev,
  (VTBL_ENTRY)&_ZN8S7251C133v13Ev,
  (VTBL_ENTRY)&_ZN8S7251C133v14Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void _ZN8S7251C14D1Ev();
extern void _ZN8S7251C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7251C148S7251C13__7S7251C1[] = {
  ABISELECT(86416,64480),
  ABISELECT(86272,64368),
  ABISELECT(84456,62976),
  ABISELECT(84784,63212),
  ABISELECT(84504,63016),
  0,
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  (VTBL_ENTRY)&_ZN8S7251C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7251C14D0Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C78S7251C148S7251C13__7S7251C1[] = {
  ABISELECT(84504,63016),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C7[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C98S7251C148S7251C13__A1__7S7251C1[] = {
  ABISELECT(84360,62904),
  ABISELECT(84312,62864),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
};
extern void _ZN7S7251C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C27S7251C98S7251C148S7251C13__A3__7S7251C1[] = {
  ABISELECT(84360,62904),
  ABISELECT(84312,62864),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C27S7251C98S7251C148S7251C13__A3__7S7251C1[] = {
  0,
  0,
  0,
  ABISELECT(-84312,-62864),
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C77S7251C98S7251C148S7251C13__A3__7S7251C1[] = {
  ABISELECT(84216,62800),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C7[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C98S7251C148S7251C13__A1__7S7251C1[] = {
  0,
  0,
  0,
  ABISELECT(-84312,-62864),
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__7S7251C98S7251C148S7251C13__A1__7S7251C1[] = {
  ABISELECT(84216,62800),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
extern void _ZN8S7251C153v12Ev();
static  VTBL_ENTRY _tg__ZTV8S7251C158S7251C148S7251C13__7S7251C1[] = {
  ABISELECT(83800,62472),
  ABISELECT(83752,62432),
  0,
  (VTBL_ENTRY)&(_ZTI8S7251C15[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
  (VTBL_ENTRY)&_ZN8S7251C153v12Ev,
};
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C98S7251C158S7251C148S7251C13__A2__7S7251C1[] = {
  ABISELECT(83800,62472),
  ABISELECT(83752,62432),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
};
extern void _ZN7S7251C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C27S7251C98S7251C158S7251C148S7251C13__A4__7S7251C1[] = {
  ABISELECT(83800,62472),
  ABISELECT(83752,62432),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C27S7251C98S7251C158S7251C148S7251C13__A4__7S7251C1[] = {
  0,
  0,
  0,
  ABISELECT(-83752,-62432),
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C77S7251C98S7251C158S7251C148S7251C13__A4__7S7251C1[] = {
  ABISELECT(83656,62368),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C7[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C98S7251C158S7251C148S7251C13__A2__7S7251C1[] = {
  0,
  0,
  0,
  ABISELECT(-83752,-62432),
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__7S7251C98S7251C158S7251C148S7251C13__A2__7S7251C1[] = {
  ABISELECT(83656,62368),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C28S7251C158S7251C148S7251C13__A5__7S7251C1[] = {
  ABISELECT(83240,62040),
  ABISELECT(83192,62000),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C28S7251C158S7251C148S7251C13__A5__7S7251C1[] = {
  0,
  0,
  0,
  ABISELECT(-83192,-62000),
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C78S7251C158S7251C148S7251C13__A5__7S7251C1[] = {
  ABISELECT(83096,61936),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C7[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__8S7251C158S7251C148S7251C13__7S7251C1[] = {
  0,
  0,
  0,
  ABISELECT(-83752,-62432),
  (VTBL_ENTRY)&(_ZTI8S7251C15[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C77S7251C9__8S7251C158S7251C148S7251C13__7S7251C1[] = {
  ABISELECT(83656,62368),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S7251C15[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C2__A1__8S7251C158S7251C148S7251C13__7S7251C1[] = {
  ABISELECT(83240,62040),
  ABISELECT(83192,62000),
  ABISELECT(-560,-432),
  (VTBL_ENTRY)&(_ZTI8S7251C15[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__A1__8S7251C158S7251C148S7251C13__7S7251C1[] = {
  ABISELECT(83096,61936),
  ABISELECT(-704,-536),
  (VTBL_ENTRY)&(_ZTI8S7251C15[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S7251C14D1Ev,_ZTv0_n28_N8S7251C14D1Ev)();
extern void ABISELECT(_ZThn84784_N8S7251C14D1Ev,_ZThn63212_N8S7251C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7251C14D0Ev,_ZTv0_n28_N8S7251C14D0Ev)();
extern void ABISELECT(_ZThn84784_N8S7251C14D0Ev,_ZThn63212_N8S7251C14D0Ev)() __attribute__((weak));
extern void _ZN8S7251C113v11Ev();
static  VTBL_ENTRY _tg__ZTV8S7251C11__8S7251C148S7251C13__7S7251C1[] = {
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-84784,-63212),
  ABISELECT(1632,1268),
  ABISELECT(1488,1156),
  ABISELECT(-328,-236),
  ABISELECT(-280,-196),
  ABISELECT(-84784,-63212),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7251C14D1Ev,_ZTv0_n28_N8S7251C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7251C14D0Ev,_ZTv0_n28_N8S7251C14D0Ev),
  (VTBL_ENTRY)&_ZN8S7251C113v11Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__A1__8S7251C148S7251C13__7S7251C1[] = {
  0,
  0,
  0,
  ABISELECT(-84456,-62976),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__A1__8S7251C148S7251C13__7S7251C1[] = {
  0,
  0,
  0,
  ABISELECT(-1768,-1352),
  ABISELECT(-86272,-64368),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C9__8S7251C148S7251C13__7S7251C1[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1912,-1464),
  ABISELECT(-1960,-1504),
  ABISELECT(-86416,-64480),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C77S7251C9__A2__8S7251C148S7251C13__7S7251C1[] = {
  ABISELECT(-2056,-1568),
  ABISELECT(-86560,-64584),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void ABISELECT(_ZTvn1336_n56_N8S7251C14D1Ev,_ZTvn1056_n28_N8S7251C14D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N8S7251C14D0Ev,_ZTvn1056_n28_N8S7251C14D0Ev)();
extern void _ZN7S7251C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C88S7251C11__8S7251C148S7251C13__7S7251C1[] = {
  ABISELECT(-86120,-64268),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S7251C14D1Ev,_ZTvn1056_n28_N8S7251C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S7251C14D0Ev,_ZTvn1056_n28_N8S7251C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7251C82v9Ev,
};
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C9__A__8S7251C148S7251C13__7S7251C1[] = {
  ABISELECT(84360,62904),
  ABISELECT(84312,62864),
  ABISELECT(-144,-112),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C77S7251C9__A3__8S7251C148S7251C13__7S7251C1[] = {
  ABISELECT(84216,62800),
  ABISELECT(-288,-216),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
extern void _ZN8S7251C153v12Ev();
static  VTBL_ENTRY _tg__ZTV8S7251C15__8S7251C148S7251C13__7S7251C1[] = {
  ABISELECT(83800,62472),
  ABISELECT(83752,62432),
  ABISELECT(-704,-544),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
  (VTBL_ENTRY)&_ZN8S7251C153v12Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C77S7251C98S7251C15__A4__8S7251C148S7251C13__7S7251C1[] = {
  ABISELECT(83656,62368),
  ABISELECT(-848,-648),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C28S7251C15__A3__8S7251C148S7251C13__7S7251C1[] = {
  ABISELECT(83240,62040),
  ABISELECT(83192,62000),
  ABISELECT(-1264,-976),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C78S7251C15__A5__8S7251C148S7251C13__7S7251C1[] = {
  ABISELECT(83096,61936),
  ABISELECT(-1408,-1080),
  (VTBL_ENTRY)&(_ZTI8S7251C14[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void ABISELECT(_ZTv0_n48_N8S7251C13D1Ev,_ZTv0_n24_N8S7251C13D1Ev)();
extern void ABISELECT(_ZThn84512_N8S7251C13D1Ev,_ZThn63020_N8S7251C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7251C13D0Ev,_ZTv0_n24_N8S7251C13D0Ev)();
extern void ABISELECT(_ZThn84512_N8S7251C13D0Ev,_ZThn63020_N8S7251C13D0Ev)() __attribute__((weak));
extern void _ZN7S7251C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C8__8S7251C13__7S7251C1[] = {
  0,
  ABISELECT(-84512,-63020),
  0,
  0,
  0,
  ABISELECT(-84512,-63020),
  (VTBL_ENTRY)&(_ZTI8S7251C13[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7251C13D1Ev,_ZTv0_n24_N8S7251C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7251C13D0Ev,_ZTv0_n24_N8S7251C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7251C82v9Ev,
};
extern void _ZN7S7251C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C2__8S7251C13__7S7251C1[] = {
  0,
  ABISELECT(-136,-92),
  ABISELECT(-184,-132),
  ABISELECT(-84640,-63108),
  (VTBL_ENTRY)&(_ZTI8S7251C13[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__A1__8S7251C13__7S7251C1[] = {
  0,
  0,
  0,
  ABISELECT(-84456,-62976),
  (VTBL_ENTRY)&(_ZTI8S7251C13[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S7251C13D1Ev,_ZTv0_n28_N8S7251C13D1Ev)();
extern void ABISELECT(_ZThn84784_N8S7251C13D1Ev,_ZThn63212_N8S7251C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7251C13D0Ev,_ZTv0_n28_N8S7251C13D0Ev)();
extern void ABISELECT(_ZThn84784_N8S7251C13D0Ev,_ZThn63212_N8S7251C13D0Ev)() __attribute__((weak));
extern void _ZN8S7251C113v11Ev();
static  VTBL_ENTRY _tg__ZTV8S7251C11__8S7251C13__7S7251C1[] = {
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-84784,-63212),
  ABISELECT(1632,1268),
  ABISELECT(1488,1156),
  ABISELECT(-328,-236),
  ABISELECT(-280,-196),
  ABISELECT(-84784,-63212),
  (VTBL_ENTRY)&(_ZTI8S7251C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7251C13D1Ev,_ZTv0_n28_N8S7251C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7251C13D0Ev,_ZTv0_n28_N8S7251C13D0Ev),
  (VTBL_ENTRY)&_ZN8S7251C113v11Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__A1__8S7251C13__7S7251C1[] = {
  0,
  0,
  0,
  ABISELECT(-1768,-1352),
  ABISELECT(-86272,-64368),
  (VTBL_ENTRY)&(_ZTI8S7251C13[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C9__8S7251C13__7S7251C1[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1912,-1464),
  ABISELECT(-1960,-1504),
  ABISELECT(-86416,-64480),
  (VTBL_ENTRY)&(_ZTI8S7251C13[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C77S7251C9__A2__8S7251C13__7S7251C1[] = {
  ABISELECT(-2056,-1568),
  ABISELECT(-86560,-64584),
  (VTBL_ENTRY)&(_ZTI8S7251C13[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
extern void ABISELECT(_ZTvn1336_n56_N8S7251C13D1Ev,_ZTvn1056_n28_N8S7251C13D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N8S7251C13D0Ev,_ZTvn1056_n28_N8S7251C13D0Ev)();
extern void _ZN7S7251C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C88S7251C11__A1__8S7251C13__7S7251C1[] = {
  ABISELECT(-86120,-64268),
  (VTBL_ENTRY)&(_ZTI8S7251C13[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S7251C13D1Ev,_ZTvn1056_n28_N8S7251C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S7251C13D0Ev,_ZTvn1056_n28_N8S7251C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7251C82v9Ev,
};
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C98S7251C14__A1__8S7251C13__7S7251C1[] = {
  ABISELECT(84360,62904),
  ABISELECT(84312,62864),
  ABISELECT(-144,-112),
  (VTBL_ENTRY)&(_ZTI8S7251C13[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C77S7251C98S7251C14__A3__8S7251C13__7S7251C1[] = {
  ABISELECT(84216,62800),
  ABISELECT(-288,-216),
  (VTBL_ENTRY)&(_ZTI8S7251C13[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
extern void _ZN8S7251C153v12Ev();
static  VTBL_ENTRY _tg__ZTV8S7251C158S7251C14__8S7251C13__7S7251C1[] = {
  ABISELECT(83800,62472),
  ABISELECT(83752,62432),
  ABISELECT(-704,-544),
  (VTBL_ENTRY)&(_ZTI8S7251C13[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
  (VTBL_ENTRY)&_ZN8S7251C153v12Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C77S7251C98S7251C158S7251C14__A4__8S7251C13__7S7251C1[] = {
  ABISELECT(83656,62368),
  ABISELECT(-848,-648),
  (VTBL_ENTRY)&(_ZTI8S7251C13[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C28S7251C158S7251C14__A4__8S7251C13__7S7251C1[] = {
  ABISELECT(83240,62040),
  ABISELECT(83192,62000),
  ABISELECT(-1264,-976),
  (VTBL_ENTRY)&(_ZTI8S7251C13[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C78S7251C158S7251C14__A5__8S7251C13__7S7251C1[] = {
  ABISELECT(83096,61936),
  ABISELECT(-1408,-1080),
  (VTBL_ENTRY)&(_ZTI8S7251C13[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C2__A1__7S7251C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-184,-132),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C2__A1__7S7251C1[] = {
  0,
  0,
  0,
  ABISELECT(184,132),
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN8S7251C11D1Ev();
extern void _ZN8S7251C11D0Ev();
extern void _ZN8S7251C113v11Ev();
static  VTBL_ENTRY _tg__ZTV8S7251C11__7S7251C1[] = {
  ABISELECT(1632,1268),
  ABISELECT(1488,1156),
  ABISELECT(-328,-236),
  ABISELECT(-280,-196),
  0,
  (VTBL_ENTRY)&(_ZTI8S7251C11[0]),
  (VTBL_ENTRY)&_ZN8S7251C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7251C11D0Ev,
  (VTBL_ENTRY)&_ZN8S7251C113v11Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7251C128S7251C11__7S7251C1[] = {
  ABISELECT(1488,1156),
  ABISELECT(-328,-236),
  ABISELECT(-280,-196),
  0,
  (VTBL_ENTRY)&(_ZTI8S7251C12[0]),
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__8S7251C128S7251C11__7S7251C1[] = {
  0,
  0,
  0,
  ABISELECT(328,236),
  (VTBL_ENTRY)&(_ZTI8S7251C12[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__8S7251C128S7251C11__7S7251C1[] = {
  0,
  0,
  0,
  ABISELECT(-1768,-1352),
  ABISELECT(-1488,-1156),
  (VTBL_ENTRY)&(_ZTI8S7251C12[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__8S7251C11__7S7251C1[] = {
  0,
  0,
  0,
  ABISELECT(328,236),
  (VTBL_ENTRY)&(_ZTI8S7251C11[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__8S7251C11__7S7251C1[] = {
  0,
  0,
  0,
  ABISELECT(-1768,-1352),
  ABISELECT(-1488,-1156),
  (VTBL_ENTRY)&(_ZTI8S7251C11[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C9__8S7251C11__7S7251C1[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1912,-1464),
  ABISELECT(-1960,-1504),
  ABISELECT(-1632,-1268),
  (VTBL_ENTRY)&(_ZTI8S7251C11[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C77S7251C9__A1__8S7251C11__7S7251C1[] = {
  ABISELECT(-2056,-1568),
  ABISELECT(-1776,-1372),
  (VTBL_ENTRY)&(_ZTI8S7251C11[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__A1__7S7251C1[] = {
  ABISELECT(-1768,-1352),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C7[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C22v6Ev();
extern void _ZN7S7251C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C9__7S7251C1[] = {
  ABISELECT(-1912,-1464),
  ABISELECT(-1960,-1504),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7251C93v10Ev,
};
extern void _ZN7S7251C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C27S7251C9__A2__7S7251C1[] = {
  ABISELECT(-1912,-1464),
  ABISELECT(-1960,-1504),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C22v6Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C27S7251C9__A2__7S7251C1[] = {
  0,
  0,
  0,
  ABISELECT(1960,1504),
  (VTBL_ENTRY)&(_ZTI7S7251C2[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C77S7251C9__A2__7S7251C1[] = {
  ABISELECT(-2056,-1568),
  0,
  (VTBL_ENTRY)&(_ZTI7S7251C7[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C3__7S7251C9__7S7251C1[] = {
  0,
  0,
  0,
  ABISELECT(1960,1504),
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
extern void _ZN7S7251C32v3Ev();
extern void _ZN7S7251C32v4Ev();
extern void _ZN7S7251C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7251C7__7S7251C9__7S7251C1[] = {
  ABISELECT(-2056,-1568),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7251C9[0]),
  (VTBL_ENTRY)&_ZN7S7251C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7251C32v5Ev,
};
static  VTT_ENTRY vtt_S7251C1[] = {
  {&(_ZTV7S7251C1[9]),  9,146},
  {&(_tg__ZTV7S7251C2__A__7S7251C1[4]),  4,5},
  {&(_tg__ZTV7S7251C3__7S7251C2__A__7S7251C1[5]),  5,8},
  {&(_tg__ZTV8S7251C13__7S7251C1[9]),  9,16},
  {&(_tg__ZTV8S7251C148S7251C13__7S7251C1[7]),  7,12},
  {&(_tg__ZTV7S7251C78S7251C148S7251C13__7S7251C1[3]),  3,6},
  {&(_tg__ZTV7S7251C98S7251C148S7251C13__A1__7S7251C1[4]),  4,6},
  {&(_tg__ZTV7S7251C27S7251C98S7251C148S7251C13__A3__7S7251C1[4]),  4,5},
  {&(_tg__ZTV7S7251C3__7S7251C27S7251C98S7251C148S7251C13__A3__7S7251C1[5]),  5,8},
  {&(_tg__ZTV7S7251C77S7251C98S7251C148S7251C13__A3__7S7251C1[3]),  3,6},
  {&(_tg__ZTV7S7251C3__7S7251C98S7251C148S7251C13__A1__7S7251C1[5]),  5,8},
  {&(_tg__ZTV7S7251C7__7S7251C98S7251C148S7251C13__A1__7S7251C1[3]),  3,6},
  {&(_tg__ZTV8S7251C158S7251C148S7251C13__7S7251C1[4]),  4,7},
  {&(_tg__ZTV7S7251C98S7251C158S7251C148S7251C13__A2__7S7251C1[4]),  4,6},
  {&(_tg__ZTV7S7251C27S7251C98S7251C158S7251C148S7251C13__A4__7S7251C1[4]),  4,5},
  {&(_tg__ZTV7S7251C3__7S7251C27S7251C98S7251C158S7251C148S7251C13__A4__7S7251C1[5]),  5,8},
  {&(_tg__ZTV7S7251C77S7251C98S7251C158S7251C148S7251C13__A4__7S7251C1[3]),  3,6},
  {&(_tg__ZTV7S7251C3__7S7251C98S7251C158S7251C148S7251C13__A2__7S7251C1[5]),  5,8},
  {&(_tg__ZTV7S7251C7__7S7251C98S7251C158S7251C148S7251C13__A2__7S7251C1[3]),  3,6},
  {&(_tg__ZTV7S7251C28S7251C158S7251C148S7251C13__A5__7S7251C1[4]),  4,5},
  {&(_tg__ZTV7S7251C3__7S7251C28S7251C158S7251C148S7251C13__A5__7S7251C1[5]),  5,8},
  {&(_tg__ZTV7S7251C78S7251C158S7251C148S7251C13__A5__7S7251C1[3]),  3,6},
  {&(_tg__ZTV7S7251C3__8S7251C158S7251C148S7251C13__7S7251C1[5]),  5,8},
  {&(_tg__ZTV7S7251C77S7251C9__8S7251C158S7251C148S7251C13__7S7251C1[3]),  3,6},
  {&(_tg__ZTV7S7251C2__A1__8S7251C158S7251C148S7251C13__7S7251C1[4]),  4,5},
  {&(_tg__ZTV7S7251C7__A1__8S7251C158S7251C148S7251C13__7S7251C1[3]),  3,6},
  {&(_tg__ZTV8S7251C11__8S7251C148S7251C13__7S7251C1[12]),  12,15},
  {&(_tg__ZTV7S7251C3__A1__8S7251C148S7251C13__7S7251C1[5]),  5,8},
  {&(_tg__ZTV7S7251C7__A1__8S7251C148S7251C13__7S7251C1[6]),  6,9},
  {&(_tg__ZTV7S7251C9__8S7251C148S7251C13__7S7251C1[9]),  9,11},
  {&(_tg__ZTV7S7251C77S7251C9__A2__8S7251C148S7251C13__7S7251C1[3]),  3,6},
  {&(_tg__ZTV7S7251C88S7251C11__8S7251C148S7251C13__7S7251C1[2]),  2,8},
  {&(_tg__ZTV7S7251C9__A__8S7251C148S7251C13__7S7251C1[4]),  4,6},
  {&(_tg__ZTV7S7251C77S7251C9__A3__8S7251C148S7251C13__7S7251C1[3]),  3,6},
  {&(_tg__ZTV8S7251C15__8S7251C148S7251C13__7S7251C1[4]),  4,7},
  {&(_tg__ZTV7S7251C77S7251C98S7251C15__A4__8S7251C148S7251C13__7S7251C1[3]),  3,6},
  {&(_tg__ZTV7S7251C28S7251C15__A3__8S7251C148S7251C13__7S7251C1[4]),  4,5},
  {&(_tg__ZTV7S7251C78S7251C15__A5__8S7251C148S7251C13__7S7251C1[3]),  3,6},
  {&(_tg__ZTV7S7251C8__8S7251C13__7S7251C1[7]),  7,13},
  {&(_tg__ZTV7S7251C2__8S7251C13__7S7251C1[5]),  5,6},
  {&(_tg__ZTV7S7251C3__A1__8S7251C13__7S7251C1[5]),  5,8},
  {&(_tg__ZTV8S7251C11__8S7251C13__7S7251C1[12]),  12,15},
  {&(_tg__ZTV7S7251C7__A1__8S7251C13__7S7251C1[6]),  6,9},
  {&(_tg__ZTV7S7251C9__8S7251C13__7S7251C1[9]),  9,11},
  {&(_tg__ZTV7S7251C77S7251C9__A2__8S7251C13__7S7251C1[3]),  3,6},
  {&(_tg__ZTV7S7251C88S7251C11__A1__8S7251C13__7S7251C1[2]),  2,8},
  {&(_tg__ZTV7S7251C98S7251C14__A1__8S7251C13__7S7251C1[4]),  4,6},
  {&(_tg__ZTV7S7251C77S7251C98S7251C14__A3__8S7251C13__7S7251C1[3]),  3,6},
  {&(_tg__ZTV8S7251C158S7251C14__8S7251C13__7S7251C1[4]),  4,7},
  {&(_tg__ZTV7S7251C77S7251C98S7251C158S7251C14__A4__8S7251C13__7S7251C1[3]),  3,6},
  {&(_tg__ZTV7S7251C28S7251C158S7251C14__A4__8S7251C13__7S7251C1[4]),  4,5},
  {&(_tg__ZTV7S7251C78S7251C158S7251C14__A5__8S7251C13__7S7251C1[3]),  3,6},
  {&(_ZTV7S7251C1[75]),  75,146},
  {&(_ZTV7S7251C1[27]),  27,146},
  {&(_ZTV7S7251C1[85]),  85,146},
  {&(_ZTV7S7251C1[96]),  96,146},
  {&(_ZTV7S7251C1[109]),  109,146},
  {&(_ZTV7S7251C1[126]),  126,146},
  {&(_ZTV7S7251C1[138]),  138,146},
  {&(_ZTV7S7251C1[143]),  143,146},
  {&(_ZTV7S7251C1[114]),  114,146},
  {&(_ZTV7S7251C1[38]),  38,146},
  {&(_ZTV7S7251C1[43]),  43,146},
  {&(_ZTV7S7251C1[50]),  50,146},
  {&(_ZTV7S7251C1[56]),  56,146},
  {&(_ZTV7S7251C1[63]),  63,146},
  {&(_ZTV7S7251C1[67]),  67,146},
  {&(_tg__ZTV7S7251C2__A1__7S7251C1[4]),  4,5},
  {&(_tg__ZTV7S7251C3__7S7251C2__A1__7S7251C1[5]),  5,8},
  {&(_tg__ZTV8S7251C11__7S7251C1[6]),  6,9},
  {&(_tg__ZTV8S7251C128S7251C11__7S7251C1[5]),  5,5},
  {&(_tg__ZTV7S7251C3__8S7251C128S7251C11__7S7251C1[5]),  5,8},
  {&(_tg__ZTV7S7251C7__8S7251C128S7251C11__7S7251C1[6]),  6,9},
  {&(_tg__ZTV7S7251C3__8S7251C11__7S7251C1[5]),  5,8},
  {&(_tg__ZTV7S7251C7__8S7251C11__7S7251C1[6]),  6,9},
  {&(_tg__ZTV7S7251C9__8S7251C11__7S7251C1[9]),  9,11},
  {&(_tg__ZTV7S7251C77S7251C9__A1__8S7251C11__7S7251C1[3]),  3,6},
  {&(_tg__ZTV7S7251C7__A1__7S7251C1[3]),  3,6},
  {&(_tg__ZTV7S7251C9__7S7251C1[4]),  4,6},
  {&(_tg__ZTV7S7251C27S7251C9__A2__7S7251C1[4]),  4,5},
  {&(_tg__ZTV7S7251C3__7S7251C27S7251C9__A2__7S7251C1[5]),  5,8},
  {&(_tg__ZTV7S7251C77S7251C9__A2__7S7251C1[3]),  3,6},
  {&(_tg__ZTV7S7251C3__7S7251C9__7S7251C1[5]),  5,8},
  {&(_tg__ZTV7S7251C7__7S7251C9__7S7251C1[3]),  3,6},
};
extern VTBL_ENTRY _ZTI7S7251C1[];
extern  VTBL_ENTRY _ZTV7S7251C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7251C1[];
static VTBL_ENTRY alt_thunk_names11[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7251C13D0Ev,_ZTv0_n28_N8S7251C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn84784_N8S7251C13D0Ev,_ZThn63212_N8S7251C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7251C13D1Ev,_ZTv0_n28_N8S7251C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn84784_N8S7251C13D1Ev,_ZThn63212_N8S7251C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7251C13D0Ev,_ZTv0_n24_N8S7251C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn84512_N8S7251C13D0Ev,_ZThn63020_N8S7251C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7251C13D1Ev,_ZTv0_n24_N8S7251C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn84512_N8S7251C13D1Ev,_ZThn63020_N8S7251C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7251C14D0Ev,_ZTv0_n28_N8S7251C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn84784_N8S7251C14D0Ev,_ZThn63212_N8S7251C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7251C14D1Ev,_ZTv0_n28_N8S7251C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn84784_N8S7251C14D1Ev,_ZThn63212_N8S7251C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7251C1D0Ev,_ZTv0_n28_N7S7251C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn94992_N7S7251C1D0Ev,_ZThn70812_N7S7251C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7251C1D1Ev,_ZTv0_n28_N7S7251C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn94992_N7S7251C1D1Ev,_ZThn70812_N7S7251C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7251C1D0Ev,_ZTv0_n24_N7S7251C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn94720_N7S7251C1D0Ev,_ZThn70620_N7S7251C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7251C1D1Ev,_ZTv0_n24_N7S7251C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn94720_N7S7251C1D1Ev,_ZThn70620_N7S7251C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7251C1 = {  "S7251C1", // class name
  bases_S7251C1, 44,
  &(vtc_S7251C1[0]), // expected_vtbl_contents
  &(vtt_S7251C1[0]), // expected_vtt_contents
  ABISELECT(97184,72512), // object size
  NSPAIRA(_ZTI7S7251C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7251C1),146, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7251C1),84, //virtual table table var
  32, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names11,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7250C3  : S3216C8_nt {
  ::S3216C8_nt s7250c3f0[3];
  ::S3216C8_nt s7250c3f1[2];
  void *s7250c3f2;
  short s7250c3f3;
  ::S3216C8_nt s7250c3f4;
  virtual void  v3(); // _ZN7S7250C32v3Ev
  virtual void  v4(); // _ZN7S7250C32v4Ev
  virtual void  v5(); // _ZN7S7250C32v5Ev
  ~S7250C3(); // tgen
  S7250C3(); // tgen
};
//SIG(-1 S7250C3) C1{ BC2{ m Fi} v1 v2 v3 FC2[3] FC2[2] Fp Fs FC2}


void  S7250C3 ::v3(){vfunc_called(this, "_ZN7S7250C32v3Ev");}
void  S7250C3 ::v4(){vfunc_called(this, "_ZN7S7250C32v4Ev");}
void  S7250C3 ::v5(){vfunc_called(this, "_ZN7S7250C32v5Ev");}
S7250C3 ::~S7250C3(){ note_dtor("S7250C3", this);} // tgen
S7250C3 ::S7250C3(){ note_ctor("S7250C3", this);} // tgen

static void Test_S7250C3()
{
  extern Class_Descriptor cd_S7250C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,11)];
    init_test(&cd_S7250C3, buf);
    S7250C3 *dp, &lv = *(dp=new (buf) S7250C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S7250C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7250C3)");
    check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(8,4), "S7250C3");
    check_field_offset(lv, s7250c3f0, ABISELECT(12,8), "S7250C3.s7250c3f0");
    check_field_offset(lv, s7250c3f1, ABISELECT(24,20), "S7250C3.s7250c3f1");
    check_field_offset(lv, s7250c3f2, ABISELECT(32,28), "S7250C3.s7250c3f2");
    check_field_offset(lv, s7250c3f3, ABISELECT(40,32), "S7250C3.s7250c3f3");
    check_field_offset(lv, s7250c3f4, ABISELECT(44,36), "S7250C3.s7250c3f4");
    test_class_info(&lv, &cd_S7250C3);
    dp->~S7250C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7250C3(Test_S7250C3, "S7250C3", ABISELECT(48,40));

#else // __cplusplus

extern void _ZN7S7250C3C1Ev();
extern void _ZN7S7250C3D1Ev();
Name_Map name_map_S7250C3[] = {
  NSPAIR(_ZN7S7250C3C1Ev),
  NSPAIR(_ZN7S7250C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S7250C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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 _ZTI7S7250C3[];
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY vtc_S7250C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C3[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
Class_Descriptor cd_S7250C3 = {  "S7250C3", // class name
  bases_S7250C3, 1,
  &(vtc_S7250C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,40), // object size
  NSPAIRA(_ZTI7S7250C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7250C3),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  S7250C2  : virtual S7250C3 , virtual S3216C8_nt {
  ::S7250C3 s7250c2f0;
  long double s7250c2f1;
  void *s7250c2f2[2];
  ::S7250C3 s7250c2f3;
  virtual void  v6(); // _ZN7S7250C22v6Ev
  ~S7250C2(); // tgen
  S7250C2(); // tgen
};
//SIG(-1 S7250C2) C1{ VBC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC3 v1 FC2 FD Fp[2] FC2}


void  S7250C2 ::v6(){vfunc_called(this, "_ZN7S7250C22v6Ev");}
S7250C2 ::~S7250C2(){ note_dtor("S7250C2", this);} // tgen
S7250C2 ::S7250C2(){ note_ctor("S7250C2", this);} // tgen

static void Test_S7250C2()
{
  extern Class_Descriptor cd_S7250C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,38)];
    init_test(&cd_S7250C2, buf);
    S7250C2 *dp, &lv = *(dp=new (buf) S7250C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,148), "sizeof(S7250C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7250C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*), ABISELECT(152,108), "S7250C2");
    check_base_class_offset(lv, (S7250C3*), ABISELECT(144,104), "S7250C2");
    /*is_ambiguous_... S7250C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(192,144), "S7250C2");
    check_field_offset(lv, s7250c2f0, ABISELECT(8,4), "S7250C2.s7250c2f0");
    check_field_offset(lv, s7250c2f1, ABISELECT(64,44), "S7250C2.s7250c2f1");
    check_field_offset(lv, s7250c2f2, ABISELECT(80,56), "S7250C2.s7250c2f2");
    check_field_offset(lv, s7250c2f3, ABISELECT(96,64), "S7250C2.s7250c2f3");
    test_class_info(&lv, &cd_S7250C2);
    dp->~S7250C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7250C2(Test_S7250C2, "S7250C2", ABISELECT(208,148));

#else // __cplusplus

extern void _ZN7S7250C2C1Ev();
extern void _ZN7S7250C2D1Ev();
Name_Map name_map_S7250C2[] = {
  NSPAIR(_ZN7S7250C2C1Ev),
  NSPAIR(_ZN7S7250C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S7250C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(152,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
    1, //immediately_derived
  0, 0},
  {&cd_S7250C3,    ABISELECT(144,104), //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(192,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7250C2[];
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY vtc_S7250C2[] = {
  ABISELECT(192,144),
  ABISELECT(144,104),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  0,
  0,
  0,
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern VTBL_ENTRY _ZTV7S7250C2[];
static  VTT_ENTRY vtt_S7250C2[] = {
  {&(_ZTV7S7250C2[4]),  4,13},
  {&(_ZTV7S7250C2[10]),  10,13},
};
extern VTBL_ENTRY _ZTI7S7250C2[];
extern  VTBL_ENTRY _ZTV7S7250C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C2[];
Class_Descriptor cd_S7250C2 = {  "S7250C2", // class name
  bases_S7250C2, 3,
  &(vtc_S7250C2[0]), // expected_vtbl_contents
  &(vtt_S7250C2[0]), // expected_vtt_contents
  ABISELECT(208,148), // object size
  NSPAIRA(_ZTI7S7250C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7250C2),13, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7250C2),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  S7250C7  : S7250C3 , virtual S3216C8_nt {
  long double s7250c7f0;
  __tsi64 s7250c7f1;
  ::S7250C3 s7250c7f2;
  void *s7250c7f3;
  short s7250c7f4[3];
  ~S7250C7(); // tgen
  S7250C7(); // tgen
};
//SIG(-1 S7250C7) C1{ BC2{ BC3{ m Fi} v1 v2 v3 FC3[3] FC3[2] Fp Fs FC3} VBC3 FD FL FC2 Fp Fs[3]}


S7250C7 ::~S7250C7(){ note_dtor("S7250C7", this);} // tgen
S7250C7 ::S7250C7(){ note_ctor("S7250C7", this);} // tgen

static void Test_S7250C7()
{
  extern Class_Descriptor cd_S7250C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,30)];
    init_test(&cd_S7250C7, buf);
    S7250C7 *dp, &lv = *(dp=new (buf) S7250C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,116), "sizeof(S7250C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7250C7)");
    check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*), ABISELECT(8,4), "S7250C7");
    check_base_class_offset(lv, (S7250C3*), 0, "S7250C7");
    /*is_ambiguous_... S7250C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(136,112), "S7250C7");
    check_field_offset(lv, s7250c7f0, ABISELECT(48,40), "S7250C7.s7250c7f0");
    check_field_offset(lv, s7250c7f1, ABISELECT(64,52), "S7250C7.s7250c7f1");
    check_field_offset(lv, s7250c7f2, ABISELECT(72,60), "S7250C7.s7250c7f2");
    check_field_offset(lv, s7250c7f3, ABISELECT(120,100), "S7250C7.s7250c7f3");
    check_field_offset(lv, s7250c7f4, ABISELECT(128,104), "S7250C7.s7250c7f4");
    test_class_info(&lv, &cd_S7250C7);
    dp->~S7250C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7250C7(Test_S7250C7, "S7250C7", ABISELECT(144,116));

#else // __cplusplus

extern void _ZN7S7250C7C1Ev();
extern void _ZN7S7250C7D1Ev();
Name_Map name_map_S7250C7[] = {
  NSPAIR(_ZN7S7250C7C1Ev),
  NSPAIR(_ZN7S7250C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S7250C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S7250C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7250C7[];
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY vtc_S7250C7[] = {
  ABISELECT(136,112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C7[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern VTBL_ENTRY _ZTV7S7250C7[];
static  VTT_ENTRY vtt_S7250C7[] = {
  {&(_ZTV7S7250C7[3]),  3,6},
};
extern VTBL_ENTRY _ZTI7S7250C7[];
extern  VTBL_ENTRY _ZTV7S7250C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C7[];
Class_Descriptor cd_S7250C7 = {  "S7250C7", // class name
  bases_S7250C7, 3,
  &(vtc_S7250C7[0]), // expected_vtbl_contents
  &(vtt_S7250C7[0]), // expected_vtt_contents
  ABISELECT(144,116), // object size
  NSPAIRA(_ZTI7S7250C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7250C7),6, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7250C7),1, //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  S7250C8  : S7250C3 {
  void *s7250c8f0[7];
  int s7250c8f1[2];
  __tsi64 s7250c8f2;
  int s7250c8f3;
  virtual  ~S7250C8(); // _ZN7S7250C8D1Ev
  virtual void  v9(); // _ZN7S7250C82v9Ev
  S7250C8(); // tgen
};
//SIG(-1 S7250C8) C1{ BC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} vd v1 Fp[7] Fi[2] FL Fi}


 S7250C8 ::~S7250C8(){ note_dtor("S7250C8", this);}
void  S7250C8 ::v9(){vfunc_called(this, "_ZN7S7250C82v9Ev");}
S7250C8 ::S7250C8(){ note_ctor("S7250C8", this);} // tgen

static void Test_S7250C8()
{
  extern Class_Descriptor cd_S7250C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,23)];
    init_test(&cd_S7250C8, buf);
    S7250C8 *dp, &lv = *(dp=new (buf) S7250C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,88), "sizeof(S7250C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7250C8)");
    check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*), ABISELECT(8,4), "S7250C8");
    check_base_class_offset(lv, (S7250C3*), 0, "S7250C8");
    check_field_offset(lv, s7250c8f0, ABISELECT(48,40), "S7250C8.s7250c8f0");
    check_field_offset(lv, s7250c8f1, ABISELECT(104,68), "S7250C8.s7250c8f1");
    check_field_offset(lv, s7250c8f2, ABISELECT(112,76), "S7250C8.s7250c8f2");
    check_field_offset(lv, s7250c8f3, ABISELECT(120,84), "S7250C8.s7250c8f3");
    test_class_info(&lv, &cd_S7250C8);
    dp->~S7250C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7250C8(Test_S7250C8, "S7250C8", ABISELECT(128,88));

#else // __cplusplus

extern void _ZN7S7250C8C1Ev();
extern void _ZN7S7250C8D1Ev();
Name_Map name_map_S7250C8[] = {
  NSPAIR(_ZN7S7250C8C1Ev),
  NSPAIR(_ZN7S7250C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
static Base_Class bases_S7250C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S7250C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7250C8[];
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void _ZN7S7250C8D1Ev();
extern void _ZN7S7250C8D0Ev();
extern void _ZN7S7250C82v9Ev();
static  VTBL_ENTRY vtc_S7250C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C8[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7250C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7250C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7250C82v9Ev,
};
extern VTBL_ENTRY _ZTI7S7250C8[];
extern  VTBL_ENTRY _ZTV7S7250C8[];
Class_Descriptor cd_S7250C8 = {  "S7250C8", // class name
  bases_S7250C8, 2,
  &(vtc_S7250C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,88), // object size
  NSPAIRA(_ZTI7S7250C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7250C8),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  S7250C9  : virtual S7250C3 , virtual S3216C8_nt , S7250C2 , S7250C7 {
  void *s7250c9f0[2];
  long s7250c9f1;
  int s7250c9f2;
  ::S7250C3 s7250c9f3[5];
  virtual void  v10(); // _ZN7S7250C93v10Ev
  ~S7250C9(); // tgen
  S7250C9(); // tgen
};
//SIG(-1 S7250C9) C1{ VBC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC3 BC4{ VBC2 VBC3 v5 FC2 FD Fp[2] FC2} BC5{ BC2 VBC3 FD FL FC2 Fp Fs[3]} v1 Fp[2] Fl Fi FC2[5]}


void  S7250C9 ::v10(){vfunc_called(this, "_ZN7S7250C93v10Ev");}
S7250C9 ::~S7250C9(){ note_dtor("S7250C9", this);} // tgen
S7250C9 ::S7250C9(){ note_ctor("S7250C9", this);} // tgen

static void Test_S7250C9()
{
  extern Class_Descriptor cd_S7250C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(39,120)];
    init_test(&cd_S7250C9, buf);
    S7250C9 *dp, &lv = *(dp=new (buf) S7250C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(608,476), "sizeof(S7250C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7250C9)");
    /*is_ambiguous_... S7250C9::S7250C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*), ABISELECT(560,436), "S7250C9");
    /*is_ambiguous_... S7250C9::S7250C3 */ AMB_check_base_class_offset(lv, (S7250C3*), ABISELECT(552,432), "S7250C9");
    check_base_class_offset(lv, (S7250C3*)(S7250C2*), ABISELECT(552,432), "S7250C9");
    /*is_ambiguous_... S7250C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(600,472), "S7250C9");
    /*is_ambiguous_... S7250C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C2*), ABISELECT(600,472), "S7250C9");
    /*is_ambiguous_... S7250C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C7*), ABISELECT(600,472), "S7250C9");
    check_base_class_offset(lv, (S7250C2*), 0, "S7250C9");
    check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C7*), ABISELECT(152,108), "S7250C9");
    check_base_class_offset(lv, (S7250C3*)(S7250C7*), ABISELECT(144,104), "S7250C9");
    check_base_class_offset(lv, (S7250C7*), ABISELECT(144,104), "S7250C9");
    check_field_offset(lv, s7250c9f0, ABISELECT(280,216), "S7250C9.s7250c9f0");
    check_field_offset(lv, s7250c9f1, ABISELECT(296,224), "S7250C9.s7250c9f1");
    check_field_offset(lv, s7250c9f2, ABISELECT(304,228), "S7250C9.s7250c9f2");
    check_field_offset(lv, s7250c9f3, ABISELECT(312,232), "S7250C9.s7250c9f3");
    test_class_info(&lv, &cd_S7250C9);
    dp->~S7250C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7250C9(Test_S7250C9, "S7250C9", ABISELECT(608,476));

#else // __cplusplus

extern void _ZN7S7250C9C1Ev();
extern void _ZN7S7250C9D1Ev();
Name_Map name_map_S7250C9[] = {
  NSPAIR(_ZN7S7250C9C1Ev),
  NSPAIR(_ZN7S7250C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C2;
extern VTBL_ENTRY _ZTI7S7250C2[];
extern  VTBL_ENTRY _ZTV7S7250C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C7;
extern VTBL_ENTRY _ZTI7S7250C7[];
extern  VTBL_ENTRY _ZTV7S7250C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C7[];
static Base_Class bases_S7250C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(560,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
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7250C3,    ABISELECT(552,432), //bcp->offset
    12, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(600,472), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7250C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(152,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7250C3,    ABISELECT(144,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7250C7,    ABISELECT(144,104), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7250C9[];
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY vtc_S7250C9[] = {
  ABISELECT(600,472),
  ABISELECT(552,432),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
  ABISELECT(456,368),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  0,
  0,
  0,
  ABISELECT(-552,-432),
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern VTBL_ENTRY _ZTV7S7250C9[];
extern void _ZN7S7250C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C2__7S7250C9[] = {
  ABISELECT(600,472),
  ABISELECT(552,432),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C2__7S7250C9[] = {
  0,
  0,
  0,
  ABISELECT(-552,-432),
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__7S7250C9[] = {
  ABISELECT(456,368),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C7[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
static  VTT_ENTRY vtt_S7250C9[] = {
  {&(_ZTV7S7250C9[4]),  4,20},
  {&(_tg__ZTV7S7250C2__7S7250C9[4]),  4,5},
  {&(_tg__ZTV7S7250C3__7S7250C2__7S7250C9[5]),  5,8},
  {&(_tg__ZTV7S7250C7__7S7250C9[3]),  3,6},
  {&(_ZTV7S7250C9[17]),  17,20},
  {&(_ZTV7S7250C9[9]),  9,20},
};
extern VTBL_ENTRY _ZTI7S7250C9[];
extern  VTBL_ENTRY _ZTV7S7250C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C9[];
Class_Descriptor cd_S7250C9 = {  "S7250C9", // class name
  bases_S7250C9, 7,
  &(vtc_S7250C9[0]), // expected_vtbl_contents
  &(vtt_S7250C9[0]), // expected_vtt_contents
  ABISELECT(608,476), // object size
  NSPAIRA(_ZTI7S7250C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7250C9),20, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7250C9),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  S7250C6  : virtual S7250C7 , S7250C8 , virtual S7250C3 , S7250C9 , S7250C2 {
  int s7250c6f0[2];
  long double s7250c6f1;
  ::S7250C2 s7250c6f2[10];
  int s7250c6f3;
  virtual void  v15(); // _ZN7S7250C63v15Ev
  ~S7250C6(); // tgen
  S7250C6(); // tgen
};
//SIG(-1 S7250C6) C1{ VBC2{ BC3{ BC4{ m Fi} v2 v3 v4 FC4[3] FC4[2] Fp Fs FC4} VBC4 FD FL FC3 Fp Fs[3]} BC5{ BC3 vd v5 Fp[7] Fi[2] FL Fi} VBC3 BC6{ VBC3 VBC4 BC7{ VBC3 VBC4 v6 FC3 FD Fp[2] FC3} BC2 v7 Fp[2] Fl Fi FC3[5]} BC7 v1 Fi[2] FD FC7[10] Fi}


void  S7250C6 ::v15(){vfunc_called(this, "_ZN7S7250C63v15Ev");}
S7250C6 ::~S7250C6(){ note_dtor("S7250C6", this);} // tgen
S7250C6 ::S7250C6(){ note_ctor("S7250C6", this);} // tgen

static void Test_S7250C6()
{
  extern Class_Descriptor cd_S7250C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(198,572)];
    init_test(&cd_S7250C6, buf);
    S7250C6 *dp, &lv = *(dp=new (buf) S7250C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3152,2284), "sizeof(S7250C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7250C6)");
    /*is_ambiguous_... S7250C6::S7250C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C7*), ABISELECT(2968,2132), "S7250C6");
    /*is_ambiguous_... S7250C6::S7250C7 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C7*), ABISELECT(2960,2128), "S7250C6");
    /*is_ambiguous_... S7250C6::S7250C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C7*), ABISELECT(3096,2240), "S7250C6");
    /*is_ambiguous_... S7250C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C9*), ABISELECT(3096,2240), "S7250C6");
    /*is_ambiguous_... S7250C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C2*)(S7250C9*), ABISELECT(3096,2240), "S7250C6");
    /*is_ambiguous_... S7250C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C7*)(S7250C9*), ABISELECT(3096,2240), "S7250C6");
    /*is_ambiguous_... S7250C6::S7250C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C2*), ABISELECT(3096,2240), "S7250C6");
    /*is_ambiguous_... S7250C6::S7250C7 */ AMB_check_base_class_offset(lv, (S7250C7*), ABISELECT(2960,2128), "S7250C6");
    check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C8*), ABISELECT(8,4), "S7250C6");
    check_base_class_offset(lv, (S7250C3*)(S7250C8*), 0, "S7250C6");
    check_base_class_offset(lv, (S7250C8*), 0, "S7250C6");
    /*is_ambiguous_... S7250C6::S7250C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*), ABISELECT(3112,2248), "S7250C6");
    /*is_ambiguous_... S7250C6::S7250C3 */ AMB_check_base_class_offset(lv, (S7250C3*), ABISELECT(3104,2244), "S7250C6");
    /*is_ambiguous_... S7250C9::S7250C3 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C9*), ABISELECT(3104,2244), "S7250C6");
    check_base_class_offset(lv, (S7250C3*)(S7250C2*)(S7250C9*), ABISELECT(3104,2244), "S7250C6");
    /*is_ambiguous_... S7250C6::S7250C2 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C2*), ABISELECT(3104,2244), "S7250C6");
    check_base_class_offset(lv, (S7250C2*)(S7250C9*), ABISELECT(128,88), "S7250C6");
    check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C7*)(S7250C9*), ABISELECT(280,196), "S7250C6");
    check_base_class_offset(lv, (S7250C3*)(S7250C7*)(S7250C9*), ABISELECT(272,192), "S7250C6");
    check_base_class_offset(lv, (S7250C7*)(S7250C9*), ABISELECT(272,192), "S7250C6");
    check_base_class_offset(lv, (S7250C9*), ABISELECT(128,88), "S7250C6");
    /*is_ambiguous_... S7250C6::S7250C2 */ AMB_check_base_class_offset(lv, (S7250C2*), ABISELECT(688,520), "S7250C6");
    check_field_offset(lv, s7250c6f0, ABISELECT(832,624), "S7250C6.s7250c6f0");
    check_field_offset(lv, s7250c6f1, ABISELECT(848,632), "S7250C6.s7250c6f1");
    check_field_offset(lv, s7250c6f2, ABISELECT(864,644), "S7250C6.s7250c6f2");
    check_field_offset(lv, s7250c6f3, ABISELECT(2944,2124), "S7250C6.s7250c6f3");
    test_class_info(&lv, &cd_S7250C6);
    dp->~S7250C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7250C6(Test_S7250C6, "S7250C6", ABISELECT(3152,2284));

#else // __cplusplus

extern void _ZN7S7250C6C1Ev();
extern void _ZN7S7250C6D1Ev();
Name_Map name_map_S7250C6[] = {
  NSPAIR(_ZN7S7250C6C1Ev),
  NSPAIR(_ZN7S7250C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C7;
extern VTBL_ENTRY _ZTI7S7250C7[];
extern  VTBL_ENTRY _ZTV7S7250C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C7[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C8;
extern VTBL_ENTRY _ZTI7S7250C8[];
extern  VTBL_ENTRY _ZTV7S7250C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C2;
extern VTBL_ENTRY _ZTI7S7250C2[];
extern  VTBL_ENTRY _ZTV7S7250C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C7;
extern VTBL_ENTRY _ZTI7S7250C7[];
extern  VTBL_ENTRY _ZTV7S7250C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C7[];
extern Class_Descriptor cd_S7250C9;
extern VTBL_ENTRY _ZTI7S7250C9[];
extern  VTBL_ENTRY _ZTV7S7250C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C9[];
extern Class_Descriptor cd_S7250C2;
extern VTBL_ENTRY _ZTI7S7250C2[];
extern  VTBL_ENTRY _ZTV7S7250C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C2[];
static Base_Class bases_S7250C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(2968,2132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7250C3,    ABISELECT(2960,2128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3216C8_nt,    ABISELECT(3096,2240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7250C7,    ABISELECT(2960,2128), //bcp->offset
    29, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7250C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7250C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3216C8_nt,    ABISELECT(3112,2248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7250C3,    ABISELECT(3104,2244), //bcp->offset
    38, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7250C2,    ABISELECT(128,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    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
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7250C3,    ABISELECT(272,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
    12, //immediately_derived
  0, 0},
  {&cd_S7250C7,    ABISELECT(272,192), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7250C9,    ABISELECT(128,88), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7250C2,    ABISELECT(688,520), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7250C6[];
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void _ZN7S7250C6D1Ev();
extern void _ZN7S7250C6D0Ev();
extern void _ZN7S7250C82v9Ev();
extern void _ZN7S7250C63v15Ev();
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY vtc_S7250C6[] = {
  ABISELECT(3104,2244),
  ABISELECT(3096,2240),
  ABISELECT(2960,2128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C6[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7250C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7250C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7250C82v9Ev,
  (VTBL_ENTRY)&_ZN7S7250C63v15Ev,
  ABISELECT(2968,2152),
  ABISELECT(2976,2156),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI7S7250C6[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
  ABISELECT(2824,2048),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI7S7250C6[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  ABISELECT(2408,1720),
  ABISELECT(2416,1724),
  ABISELECT(-688,-520),
  (VTBL_ENTRY)&(_ZTI7S7250C6[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  0,
  0,
  0,
  ABISELECT(136,112),
  ABISELECT(-2960,-2128),
  (VTBL_ENTRY)&(_ZTI7S7250C6[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  0,
  0,
  0,
  ABISELECT(-3104,-2244),
  (VTBL_ENTRY)&(_ZTI7S7250C6[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern VTBL_ENTRY _ZTV7S7250C6[];
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C9__7S7250C6[] = {
  ABISELECT(2968,2152),
  ABISELECT(2976,2156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
};
extern void _ZN7S7250C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C27S7250C9__7S7250C6[] = {
  ABISELECT(2968,2152),
  ABISELECT(2976,2156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C27S7250C9__7S7250C6[] = {
  0,
  0,
  0,
  ABISELECT(-2976,-2156),
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C77S7250C9__A1__7S7250C6[] = {
  ABISELECT(2824,2048),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C7[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C9__7S7250C6[] = {
  0,
  0,
  0,
  ABISELECT(-2976,-2156),
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__7S7250C9__7S7250C6[] = {
  ABISELECT(2824,2048),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C2__A1__7S7250C6[] = {
  ABISELECT(2408,1720),
  ABISELECT(2416,1724),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C2__A1__7S7250C6[] = {
  0,
  0,
  0,
  ABISELECT(-2416,-1724),
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__7S7250C6[] = {
  ABISELECT(136,112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C7[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
static  VTT_ENTRY vtt_S7250C6[] = {
  {&(_ZTV7S7250C6[5]),  5,46},
  {&(_tg__ZTV7S7250C9__7S7250C6[4]),  4,6},
  {&(_tg__ZTV7S7250C27S7250C9__7S7250C6[4]),  4,5},
  {&(_tg__ZTV7S7250C3__7S7250C27S7250C9__7S7250C6[5]),  5,8},
  {&(_tg__ZTV7S7250C77S7250C9__A1__7S7250C6[3]),  3,6},
  {&(_tg__ZTV7S7250C3__7S7250C9__7S7250C6[5]),  5,8},
  {&(_tg__ZTV7S7250C7__7S7250C9__7S7250C6[3]),  3,6},
  {&(_tg__ZTV7S7250C2__A1__7S7250C6[4]),  4,5},
  {&(_tg__ZTV7S7250C3__7S7250C2__A1__7S7250C6[5]),  5,8},
  {&(_ZTV7S7250C6[35]),  35,46},
  {&(_ZTV7S7250C6[43]),  43,46},
  {&(_ZTV7S7250C6[16]),  16,46},
  {&(_ZTV7S7250C6[21]),  21,46},
  {&(_ZTV7S7250C6[28]),  28,46},
  {&(_tg__ZTV7S7250C7__7S7250C6[3]),  3,6},
};
extern VTBL_ENTRY _ZTI7S7250C6[];
extern  VTBL_ENTRY _ZTV7S7250C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C6[];
Class_Descriptor cd_S7250C6 = {  "S7250C6", // class name
  bases_S7250C6, 15,
  &(vtc_S7250C6[0]), // expected_vtbl_contents
  &(vtt_S7250C6[0]), // expected_vtt_contents
  ABISELECT(3152,2284), // object size
  NSPAIRA(_ZTI7S7250C6),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7250C6),46, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7250C6),15, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7250C5  {
  int s7250c5f0;
  short s7250c5f1;
  ::S7250C6 s7250c5f2;
  void *s7250c5f3;
  char s7250c5f4;
  ::S7250C7 s7250c5f5;
  ::S20644C2 s7250c5f6;
  __tsi64 s7250c5f7;
  void *s7250c5f8;
  virtual void  v7(); // _ZN7S7250C52v7Ev
  virtual void  v8(); // _ZN7S7250C52v8Ev
  ~S7250C5(); // tgen
  S7250C5(); // tgen
};
//SIG(-1 S7250C5) C1{ v1 v2 Fi Fs FC2{ VBC3{ BC4{ BC5{ m Fi} v4 v5 v6 FC5[3] FC5[2] Fp Fs FC5} VBC5 FD FL FC4 Fp Fs[3]} BC6{ BC4 vd v7 Fp[7] Fi[2] FL Fi} VBC4 BC7{ VBC4 VBC5 BC8{ VBC4 VBC5 v8 FC4 FD Fp[2] FC4} BC3 v9 Fp[2] Fl Fi FC4[5]} BC8 v3 Fi[2] FD FC8[10] Fi} Fp Fc FC3 FC9{ VBC5 BC10{ VBC11{ BC12{ BC5 v12 v13 v14 FC5[3] FC5[2] Fp Fs FC5} VBC5 FD FL FC12 Fp Fs[3]} BC13{ BC12 vd v15 Fp[7] Fi[2] FL Fi} VBC12 BC14{ VBC12 VBC5 BC15{ VBC12 VBC5 v16 FC12 FD Fp[2] FC12} BC11 v17 Fp[2] Fl Fi FC12[5]} BC15 v18 Fi[2] FD FC15[10] Fi} BC11 VBC16{ BC17{ VBC5 VBC12 VBC11 Fp[2] Fi FC11[8] FD[9]} BC5 VBC14 BC13 vd v19 Fi Fp Fi} BC17 vd v10 v11 Fi[2] Fp Fc:3 Fi[3]} FL Fp}


void  S7250C5 ::v7(){vfunc_called(this, "_ZN7S7250C52v7Ev");}
void  S7250C5 ::v8(){vfunc_called(this, "_ZN7S7250C52v8Ev");}
S7250C5 ::~S7250C5(){ note_dtor("S7250C5", this);} // tgen
S7250C5 ::S7250C5(){ note_ctor("S7250C5", this);} // tgen

static void Test_S7250C5()
{
  extern Class_Descriptor cd_S7250C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(630,1875)];
    init_test(&cd_S7250C5, buf);
    S7250C5 *dp, &lv = *(dp=new (buf) S7250C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(10064,7496), "sizeof(S7250C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7250C5)");
    check_field_offset(lv, s7250c5f0, ABISELECT(8,4), "S7250C5.s7250c5f0");
    check_field_offset(lv, s7250c5f1, ABISELECT(12,8), "S7250C5.s7250c5f1");
    check_field_offset(lv, s7250c5f2, ABISELECT(16,12), "S7250C5.s7250c5f2");
    check_field_offset(lv, s7250c5f3, ABISELECT(3168,2296), "S7250C5.s7250c5f3");
    check_field_offset(lv, s7250c5f4, ABISELECT(3176,2300), "S7250C5.s7250c5f4");
    check_field_offset(lv, s7250c5f5, ABISELECT(3184,2304), "S7250C5.s7250c5f5");
    check_field_offset(lv, s7250c5f6, ABISELECT(3328,2420), "S7250C5.s7250c5f6");
    check_field_offset(lv, s7250c5f7, ABISELECT(10048,7484), "S7250C5.s7250c5f7");
    check_field_offset(lv, s7250c5f8, ABISELECT(10056,7492), "S7250C5.s7250c5f8");
    test_class_info(&lv, &cd_S7250C5);
    dp->~S7250C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7250C5(Test_S7250C5, "S7250C5", ABISELECT(10064,7496));

#else // __cplusplus

extern void _ZN7S7250C5C1Ev();
extern void _ZN7S7250C5D1Ev();
Name_Map name_map_S7250C5[] = {
  NSPAIR(_ZN7S7250C5C1Ev),
  NSPAIR(_ZN7S7250C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7250C5[];
extern void _ZN7S7250C52v7Ev();
extern void _ZN7S7250C52v8Ev();
static  VTBL_ENTRY vtc_S7250C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C5[0]),
  (VTBL_ENTRY)&_ZN7S7250C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7250C52v8Ev,
};
extern VTBL_ENTRY _ZTI7S7250C5[];
extern  VTBL_ENTRY _ZTV7S7250C5[];
Class_Descriptor cd_S7250C5 = {  "S7250C5", // class name
  0,0,//no base classes
  &(vtc_S7250C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(10064,7496), // object size
  NSPAIRA(_ZTI7S7250C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7250C5),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  S7250C12  : virtual S3216C8_nt , virtual S7250C3 , virtual S7250C7 {
  void *s7250c12f0[2];
  int s7250c12f1;
  ::S7250C7 s7250c12f2[8];
  long double s7250c12f3[9];
  ~S7250C12(); // tgen
  S7250C12(); // tgen
};
//SIG(-1 S7250C12) C1{ VBC2{ m Fi} VBC3{ BC2 v1 v2 v3 FC2[3] FC2[2] Fp Fs FC2} VBC4{ BC3 VBC2 FD FL FC3 Fp Fs[3]} Fp[2] Fi FC4[8] FD[9]}


S7250C12 ::~S7250C12(){ note_dtor("S7250C12", this);} // tgen
S7250C12 ::S7250C12(){ note_ctor("S7250C12", this);} // tgen

static void Test_S7250C12()
{
  extern Class_Descriptor cd_S7250C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(97,303)];
    init_test(&cd_S7250C12, buf);
    S7250C12 *dp, &lv = *(dp=new (buf) S7250C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1536,1208), "sizeof(S7250C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7250C12)");
    /*is_ambiguous_... S7250C12::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(1328,1052), "S7250C12");
    /*is_ambiguous_... S7250C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C7*), ABISELECT(1328,1052), "S7250C12");
    /*is_ambiguous_... S7250C12::S7250C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*), ABISELECT(1344,1060), "S7250C12");
    /*is_ambiguous_... S7250C12::S7250C3 */ AMB_check_base_class_offset(lv, (S7250C3*), ABISELECT(1336,1056), "S7250C12");
    check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C7*), ABISELECT(1400,1100), "S7250C12");
    check_base_class_offset(lv, (S7250C3*)(S7250C7*), ABISELECT(1392,1096), "S7250C12");
    check_base_class_offset(lv, (S7250C7*), ABISELECT(1392,1096), "S7250C12");
    check_field_offset(lv, s7250c12f0, ABISELECT(8,4), "S7250C12.s7250c12f0");
    check_field_offset(lv, s7250c12f1, ABISELECT(24,12), "S7250C12.s7250c12f1");
    check_field_offset(lv, s7250c12f2, ABISELECT(32,16), "S7250C12.s7250c12f2");
    check_field_offset(lv, s7250c12f3, ABISELECT(1184,944), "S7250C12.s7250c12f3");
    test_class_info(&lv, &cd_S7250C12);
    dp->~S7250C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7250C12(Test_S7250C12, "S7250C12", ABISELECT(1536,1208));

#else // __cplusplus

extern void _ZN8S7250C12C1Ev();
extern void _ZN8S7250C12D1Ev();
Name_Map name_map_S7250C12[] = {
  NSPAIR(_ZN8S7250C12C1Ev),
  NSPAIR(_ZN8S7250C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C7;
extern VTBL_ENTRY _ZTI7S7250C7[];
extern  VTBL_ENTRY _ZTV7S7250C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C7[];
static Base_Class bases_S7250C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(1328,1052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1344,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7250C3,    ABISELECT(1336,1056), //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1400,1100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7250C3,    ABISELECT(1392,1096), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7250C7,    ABISELECT(1392,1096), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //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 _ZTI8S7250C12[];
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY vtc_S7250C12[] = {
  ABISELECT(1392,1096),
  ABISELECT(1336,1056),
  ABISELECT(1328,1052),
  0,
  (VTBL_ENTRY)&(_ZTI8S7250C12[0]),
  0,
  0,
  0,
  ABISELECT(-1336,-1056),
  (VTBL_ENTRY)&(_ZTI8S7250C12[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  0,
  0,
  0,
  ABISELECT(-64,-44),
  ABISELECT(-1392,-1096),
  (VTBL_ENTRY)&(_ZTI8S7250C12[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern VTBL_ENTRY _ZTV8S7250C12[];
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__8S7250C12[] = {
  ABISELECT(-64,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C7[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
static  VTT_ENTRY vtt_S7250C12[] = {
  {&(_ZTV8S7250C12[5]),  5,22},
  {&(_ZTV8S7250C12[10]),  10,22},
  {&(_ZTV8S7250C12[19]),  19,22},
  {&(_tg__ZTV7S7250C7__8S7250C12[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S7250C12[];
extern  VTBL_ENTRY _ZTV8S7250C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7250C12[];
Class_Descriptor cd_S7250C12 = {  "S7250C12", // class name
  bases_S7250C12, 6,
  &(vtc_S7250C12[0]), // expected_vtbl_contents
  &(vtt_S7250C12[0]), // expected_vtt_contents
  ABISELECT(1536,1208), // object size
  NSPAIRA(_ZTI8S7250C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7250C12),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7250C12),4, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7250C11  : S7250C12 , S3216C8_nt , virtual S7250C9 , S7250C8 {
  int s7250c11f0;
  void *s7250c11f1;
  int s7250c11f2;
  virtual  ~S7250C11(); // _ZN8S7250C11D2Ev
  virtual void  v11(); // _ZN8S7250C113v11Ev
  S7250C11(); // tgen
};
//SIG(-1 S7250C11) C1{ BC2{ VBC3{ m Fi} VBC4{ BC3 v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC5{ BC4 VBC3 FD FL FC4 Fp Fs[3]} Fp[2] Fi FC5[8] FD[9]} BC3 VBC6{ VBC4 VBC3 BC7{ VBC4 VBC3 v5 FC4 FD Fp[2] FC4} BC5 v6 Fp[2] Fl Fi FC4[5]} BC8{ BC4 vd v7 Fp[7] Fi[2] FL Fi} vd v1 Fi Fp Fi}


 S7250C11 ::~S7250C11(){ note_dtor("S7250C11", this);}
void  S7250C11 ::v11(){vfunc_called(this, "_ZN8S7250C113v11Ev");}
S7250C11 ::S7250C11(){ note_ctor("S7250C11", this);} // tgen

static void Test_S7250C11()
{
  extern Class_Descriptor cd_S7250C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(141,437)];
    init_test(&cd_S7250C11, buf);
    S7250C11 *dp, &lv = *(dp=new (buf) S7250C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2240,1744), "sizeof(S7250C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7250C11)");
    /*is_ambiguous_... S7250C12::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C12*), ABISELECT(1476,1156), "S7250C11");
    /*is_ambiguous_... S7250C11::S7250C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C7*), ABISELECT(1476,1156), "S7250C11");
    /*is_ambiguous_... S7250C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C9*), ABISELECT(1476,1156), "S7250C11");
    /*is_ambiguous_... S7250C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C2*)(S7250C9*), ABISELECT(1476,1156), "S7250C11");
    /*is_ambiguous_... S7250C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C7*)(S7250C9*), ABISELECT(1476,1156), "S7250C11");
    /*is_ambiguous_... S7250C11::S7250C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*), ABISELECT(1488,1164), "S7250C11");
    /*is_ambiguous_... S7250C12::S7250C3 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C12*), ABISELECT(1480,1160), "S7250C11");
    /*is_ambiguous_... S7250C9::S7250C3 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C9*), ABISELECT(1480,1160), "S7250C11");
    check_base_class_offset(lv, (S7250C3*)(S7250C2*)(S7250C9*), ABISELECT(1480,1160), "S7250C11");
    /*is_ambiguous_... S7250C11::S7250C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C7*), ABISELECT(1544,1204), "S7250C11");
    /*is_ambiguous_... S7250C11::S7250C7 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C7*), ABISELECT(1536,1200), "S7250C11");
    check_base_class_offset(lv, (S7250C7*)(S7250C12*), ABISELECT(1536,1200), "S7250C11");
    check_base_class_offset(lv, (S7250C12*), 0, "S7250C11");
    /*is_ambiguous_... S7250C11::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(1328,1052), "S7250C11");
    check_base_class_offset(lv, (S7250C2*)(S7250C9*), ABISELECT(1680,1312), "S7250C11");
    check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C7*)(S7250C9*), ABISELECT(1832,1420), "S7250C11");
    check_base_class_offset(lv, (S7250C3*)(S7250C7*)(S7250C9*), ABISELECT(1824,1416), "S7250C11");
    check_base_class_offset(lv, (S7250C7*)(S7250C9*), ABISELECT(1824,1416), "S7250C11");
    check_base_class_offset(lv, (S7250C9*), ABISELECT(1680,1312), "S7250C11");
    check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C8*), ABISELECT(1344,1060), "S7250C11");
    check_base_class_offset(lv, (S7250C3*)(S7250C8*), ABISELECT(1336,1056), "S7250C11");
    check_base_class_offset(lv, (S7250C8*), ABISELECT(1336,1056), "S7250C11");
    check_field_offset(lv, s7250c11f0, ABISELECT(1460,1144), "S7250C11.s7250c11f0");
    check_field_offset(lv, s7250c11f1, ABISELECT(1464,1148), "S7250C11.s7250c11f1");
    check_field_offset(lv, s7250c11f2, ABISELECT(1472,1152), "S7250C11.s7250c11f2");
    test_class_info(&lv, &cd_S7250C11);
    dp->~S7250C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7250C11(Test_S7250C11, "S7250C11", ABISELECT(2240,1744));

#else // __cplusplus

extern void _ZN8S7250C11C1Ev();
extern void _ZN8S7250C11D2Ev();
Name_Map name_map_S7250C11[] = {
  NSPAIR(_ZN8S7250C11C1Ev),
  NSPAIR(_ZN8S7250C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C7;
extern VTBL_ENTRY _ZTI7S7250C7[];
extern  VTBL_ENTRY _ZTV7S7250C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C7[];
extern Class_Descriptor cd_S7250C12;
extern VTBL_ENTRY _ZTI8S7250C12[];
extern  VTBL_ENTRY _ZTV8S7250C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7250C12[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C2;
extern VTBL_ENTRY _ZTI7S7250C2[];
extern  VTBL_ENTRY _ZTV7S7250C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C7;
extern VTBL_ENTRY _ZTI7S7250C7[];
extern  VTBL_ENTRY _ZTV7S7250C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C7[];
extern Class_Descriptor cd_S7250C9;
extern VTBL_ENTRY _ZTI7S7250C9[];
extern  VTBL_ENTRY _ZTV7S7250C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C8;
extern VTBL_ENTRY _ZTI7S7250C8[];
extern  VTBL_ENTRY _ZTV7S7250C8[];
static Base_Class bases_S7250C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(1476,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
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1488,1164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7250C3,    ABISELECT(1480,1160), //bcp->offset
    17, //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
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1544,1204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7250C3,    ABISELECT(1536,1200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7250C7,    ABISELECT(1536,1200), //bcp->offset
    25, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7250C12,    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_S3216C8_nt,    ABISELECT(1328,1052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7250C2,    ABISELECT(1680,1312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1832,1420), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7250C3,    ABISELECT(1824,1416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7250C7,    ABISELECT(1824,1416), //bcp->offset
    45, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7250C9,    ABISELECT(1680,1312), //bcp->offset
    34, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1344,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7250C3,    ABISELECT(1336,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
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7250C8,    ABISELECT(1336,1056), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7250C11[];
extern void _ZN8S7250C11D1Ev();
extern void _ZN8S7250C11D0Ev();
extern void _ZN8S7250C113v11Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void ABISELECT(_ZThn1336_N8S7250C11D1Ev,_ZThn1056_N8S7250C11D1Ev)();
extern void ABISELECT(_ZThn1336_N8S7250C11D0Ev,_ZThn1056_N8S7250C11D0Ev)();
extern void _ZN7S7250C82v9Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY vtc_S7250C11[] = {
  ABISELECT(1680,1312),
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  0,
  (VTBL_ENTRY)&(_ZTI8S7250C11[0]),
  (VTBL_ENTRY)&_ZN8S7250C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7250C11D0Ev,
  (VTBL_ENTRY)&_ZN8S7250C113v11Ev,
  ABISELECT(-1336,-1056),
  (VTBL_ENTRY)&(_ZTI8S7250C11[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1336_N8S7250C11D1Ev,_ZThn1056_N8S7250C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1336_N8S7250C11D0Ev,_ZThn1056_N8S7250C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7250C82v9Ev,
  0,
  0,
  0,
  ABISELECT(-1480,-1160),
  (VTBL_ENTRY)&(_ZTI8S7250C11[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(-1536,-1200),
  (VTBL_ENTRY)&(_ZTI8S7250C11[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  ABISELECT(-1680,-1312),
  (VTBL_ENTRY)&(_ZTI8S7250C11[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
  ABISELECT(-348,-260),
  ABISELECT(-1824,-1416),
  (VTBL_ENTRY)&(_ZTI8S7250C11[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern VTBL_ENTRY _ZTV8S7250C11[];
static  VTBL_ENTRY _tg__ZTV8S7250C12__8S7250C11[] = {
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  0,
  (VTBL_ENTRY)&(_ZTI8S7250C12[0]),
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__8S7250C12__8S7250C11[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1160),
  (VTBL_ENTRY)&(_ZTI8S7250C12[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__8S7250C12__8S7250C11[] = {
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(-1536,-1200),
  (VTBL_ENTRY)&(_ZTI8S7250C12[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__8S7250C11[] = {
  ABISELECT(-60,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C7[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C9__8S7250C11[] = {
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
};
extern void _ZN7S7250C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C27S7250C9__8S7250C11[] = {
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C27S7250C9__8S7250C11[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C77S7250C9__A1__8S7250C11[] = {
  ABISELECT(-348,-260),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C7[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C9__8S7250C11[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__7S7250C9__8S7250C11[] = {
  ABISELECT(-348,-260),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
static  VTT_ENTRY vtt_S7250C11[] = {
  {&(_ZTV8S7250C11[6]),  6,51},
  {&(_tg__ZTV8S7250C12__8S7250C11[5]),  5,5},
  {&(_tg__ZTV7S7250C3__8S7250C12__8S7250C11[5]),  5,8},
  {&(_tg__ZTV7S7250C7__8S7250C12__8S7250C11[6]),  6,9},
  {&(_ZTV8S7250C11[22]),  22,51},
  {&(_ZTV8S7250C11[31]),  31,51},
  {&(_ZTV8S7250C11[43]),  43,51},
  {&(_ZTV8S7250C11[48]),  48,51},
  {&(_tg__ZTV7S7250C7__8S7250C11[3]),  3,6},
  {&(_tg__ZTV7S7250C9__8S7250C11[4]),  4,6},
  {&(_tg__ZTV7S7250C27S7250C9__8S7250C11[4]),  4,5},
  {&(_tg__ZTV7S7250C3__7S7250C27S7250C9__8S7250C11[5]),  5,8},
  {&(_tg__ZTV7S7250C77S7250C9__A1__8S7250C11[3]),  3,6},
  {&(_tg__ZTV7S7250C3__7S7250C9__8S7250C11[5]),  5,8},
  {&(_tg__ZTV7S7250C7__7S7250C9__8S7250C11[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S7250C11[];
extern  VTBL_ENTRY _ZTV8S7250C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7250C11[];
Class_Descriptor cd_S7250C11 = {  "S7250C11", // class name
  bases_S7250C11, 16,
  &(vtc_S7250C11[0]), // expected_vtbl_contents
  &(vtt_S7250C11[0]), // expected_vtt_contents
  ABISELECT(2240,1744), // object size
  NSPAIRA(_ZTI8S7250C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7250C11),51, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7250C11),15, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7250C15  : virtual S3216C8_nt , S7250C9 , S7250C2 , S7250C7 {
  int s7250c15f0;
  ::S20643C15_nt s7250c15f1;
  void *s7250c15f2[2];
  virtual void  v12(); // _ZN8S7250C153v12Ev
  ~S7250C15(); // tgen
  S7250C15(); // tgen
};
//SIG(-1 S7250C15) C1{ VBC2{ m Fi} BC3{ VBC4{ BC2 v2 v3 v4 FC2[3] FC2[2] Fp Fs FC2} VBC2 BC5{ VBC4 VBC2 v5 FC4 FD Fp[2] FC4} BC6{ BC4 VBC2 FD FL FC4 Fp Fs[3]} v6 Fp[2] Fl Fi FC4[5]} BC5 BC6 v1 Fi FC7{} Fp[2]}


void  S7250C15 ::v12(){vfunc_called(this, "_ZN8S7250C153v12Ev");}
S7250C15 ::~S7250C15(){ note_dtor("S7250C15", this);} // tgen
S7250C15 ::S7250C15(){ note_ctor("S7250C15", this);} // tgen

static void Test_S7250C15()
{
  extern Class_Descriptor cd_S7250C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(59,178)];
    init_test(&cd_S7250C15, buf);
    S7250C15 *dp, &lv = *(dp=new (buf) S7250C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(928,708), "sizeof(S7250C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7250C15)");
    /*is_ambiguous_... S7250C15::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(864,664), "S7250C15");
    /*is_ambiguous_... S7250C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C9*), ABISELECT(864,664), "S7250C15");
    /*is_ambiguous_... S7250C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C2*)(S7250C9*), ABISELECT(864,664), "S7250C15");
    /*is_ambiguous_... S7250C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C7*)(S7250C9*), ABISELECT(864,664), "S7250C15");
    /*is_ambiguous_... S7250C15::S7250C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C2*), ABISELECT(864,664), "S7250C15");
    /*is_ambiguous_... S7250C15::S7250C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C7*), ABISELECT(864,664), "S7250C15");
    /*is_ambiguous_... S7250C15::S7250C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*), ABISELECT(880,672), "S7250C15");
    /*is_ambiguous_... S7250C9::S7250C3 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C9*), ABISELECT(872,668), "S7250C15");
    check_base_class_offset(lv, (S7250C3*)(S7250C2*)(S7250C9*), ABISELECT(872,668), "S7250C15");
    /*is_ambiguous_... S7250C15::S7250C2 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C2*), ABISELECT(872,668), "S7250C15");
    check_base_class_offset(lv, (S7250C2*)(S7250C9*), 0, "S7250C15");
    check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C7*)(S7250C9*), ABISELECT(152,108), "S7250C15");
    check_base_class_offset(lv, (S7250C3*)(S7250C7*)(S7250C9*), ABISELECT(144,104), "S7250C15");
    check_base_class_offset(lv, (S7250C7*)(S7250C9*), ABISELECT(144,104), "S7250C15");
    check_base_class_offset(lv, (S7250C9*), 0, "S7250C15");
    /*is_ambiguous_... S7250C15::S7250C2 */ AMB_check_base_class_offset(lv, (S7250C2*), ABISELECT(560,432), "S7250C15");
    /*is_ambiguous_... S7250C15::S7250C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C7*), ABISELECT(712,540), "S7250C15");
    /*is_ambiguous_... S7250C15::S7250C7 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C7*), ABISELECT(704,536), "S7250C15");
    /*is_ambiguous_... S7250C15::S7250C7 */ AMB_check_base_class_offset(lv, (S7250C7*), ABISELECT(704,536), "S7250C15");
    check_field_offset(lv, s7250c15f0, ABISELECT(840,648), "S7250C15.s7250c15f0");
    check_field_offset(lv, s7250c15f1, ABISELECT(844,652), "S7250C15.s7250c15f1");
    check_field_offset(lv, s7250c15f2, ABISELECT(848,656), "S7250C15.s7250c15f2");
    test_class_info(&lv, &cd_S7250C15);
    dp->~S7250C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7250C15(Test_S7250C15, "S7250C15", ABISELECT(928,708));

#else // __cplusplus

extern void _ZN8S7250C15C1Ev();
extern void _ZN8S7250C15D1Ev();
Name_Map name_map_S7250C15[] = {
  NSPAIR(_ZN8S7250C15C1Ev),
  NSPAIR(_ZN8S7250C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C2;
extern VTBL_ENTRY _ZTI7S7250C2[];
extern  VTBL_ENTRY _ZTV7S7250C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C7;
extern VTBL_ENTRY _ZTI7S7250C7[];
extern  VTBL_ENTRY _ZTV7S7250C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C7[];
extern Class_Descriptor cd_S7250C9;
extern VTBL_ENTRY _ZTI7S7250C9[];
extern  VTBL_ENTRY _ZTV7S7250C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C9[];
extern Class_Descriptor cd_S7250C2;
extern VTBL_ENTRY _ZTI7S7250C2[];
extern  VTBL_ENTRY _ZTV7S7250C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C7;
extern VTBL_ENTRY _ZTI7S7250C7[];
extern  VTBL_ENTRY _ZTV7S7250C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C7[];
static Base_Class bases_S7250C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(864,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
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(880,672), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7250C3,    ABISELECT(872,668), //bcp->offset
    24, //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
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7250C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(152,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7250C3,    ABISELECT(144,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7250C7,    ABISELECT(144,104), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7250C9,    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_S7250C2,    ABISELECT(560,432), //bcp->offset
    13, //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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(712,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
    10, //immediately_derived
  0, 0},
  {&cd_S7250C3,    ABISELECT(704,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
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7250C7,    ABISELECT(704,536), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7250C15[];
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
extern void _ZN8S7250C153v12Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY vtc_S7250C15[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI8S7250C15[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
  (VTBL_ENTRY)&_ZN8S7250C153v12Ev,
  ABISELECT(720,560),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S7250C15[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  ABISELECT(304,232),
  ABISELECT(312,236),
  ABISELECT(-560,-432),
  (VTBL_ENTRY)&(_ZTI8S7250C15[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  ABISELECT(160,128),
  ABISELECT(-704,-536),
  (VTBL_ENTRY)&(_ZTI8S7250C15[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI8S7250C15[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern VTBL_ENTRY _ZTV8S7250C15[];
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C9__8S7250C15[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
};
extern void _ZN7S7250C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C27S7250C9__8S7250C15[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C27S7250C9__8S7250C15[] = {
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C77S7250C9__8S7250C15[] = {
  ABISELECT(720,560),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C7[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C9__8S7250C15[] = {
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__7S7250C9__8S7250C15[] = {
  ABISELECT(720,560),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C2__A1__8S7250C15[] = {
  ABISELECT(304,232),
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C2__A1__8S7250C15[] = {
  0,
  0,
  0,
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__A1__8S7250C15[] = {
  ABISELECT(160,128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C7[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
static  VTT_ENTRY vtt_S7250C15[] = {
  {&(_ZTV8S7250C15[4]),  4,32},
  {&(_tg__ZTV7S7250C9__8S7250C15[4]),  4,6},
  {&(_tg__ZTV7S7250C27S7250C9__8S7250C15[4]),  4,5},
  {&(_tg__ZTV7S7250C3__7S7250C27S7250C9__8S7250C15[5]),  5,8},
  {&(_tg__ZTV7S7250C77S7250C9__8S7250C15[3]),  3,6},
  {&(_tg__ZTV7S7250C3__7S7250C9__8S7250C15[5]),  5,8},
  {&(_tg__ZTV7S7250C7__7S7250C9__8S7250C15[3]),  3,6},
  {&(_tg__ZTV7S7250C2__A1__8S7250C15[4]),  4,5},
  {&(_tg__ZTV7S7250C3__7S7250C2__A1__8S7250C15[5]),  5,8},
  {&(_tg__ZTV7S7250C7__A1__8S7250C15[3]),  3,6},
  {&(_ZTV8S7250C15[29]),  29,32},
  {&(_ZTV8S7250C15[10]),  10,32},
  {&(_ZTV8S7250C15[17]),  17,32},
  {&(_ZTV8S7250C15[21]),  21,32},
};
extern VTBL_ENTRY _ZTI8S7250C15[];
extern  VTBL_ENTRY _ZTV8S7250C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7250C15[];
Class_Descriptor cd_S7250C15 = {  "S7250C15", // class name
  bases_S7250C15, 12,
  &(vtc_S7250C15[0]), // expected_vtbl_contents
  &(vtt_S7250C15[0]), // expected_vtt_contents
  ABISELECT(928,708), // object size
  NSPAIRA(_ZTI8S7250C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7250C15),32, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7250C15),14, //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  S7250C14  : S7250C7 , virtual S7250C11 , S7250C9 , S7250C15 {
  int s7250c14f0;
  char s7250c14f1[2];
  int s7250c14f2;
  __tsi64 s7250c14f3;
  ::S20643C15_nt s7250c14f4;
  void *s7250c14f5[8];
  short s7250c14f6[5];
  __tsi64 s7250c14f7;
  ::S20643C18 s7250c14f8;
  virtual  ~S7250C14(); // _ZN8S7250C14D2Ev
  S7250C14(); // tgen
};
//SIG(-1 S7250C14) C1{ BC2{ BC3{ BC4{ m Fi} v1 v2 v3 FC4[3] FC4[2] Fp Fs FC4} VBC4 FD FL FC3 Fp Fs[3]} VBC5{ BC6{ VBC4 VBC3 VBC2 Fp[2] Fi FC2[8] FD[9]} BC4 VBC7{ VBC3 VBC4 BC8{ VBC3 VBC4 v4 FC3 FD Fp[2] FC3} BC2 v5 Fp[2] Fl Fi FC3[5]} BC9{ BC3 vd v6 Fp[7] Fi[2] FL Fi} vd v7 Fi Fp Fi} BC7 BC10{ VBC4 BC7 BC8 BC2 v8 Fi FC11{} Fp[2]} vd Fi Fc[2] Fi FL FC11 Fp[8] Fs[5] FL FC12{ vd m Fc[2] Fi FL Fp[7] FU13{ m Fi:3 Fi Fi Fi FD[8] Fp Fc[5] FD Fc[4] Fi Fp Fc[4] Fp}[4] FC14{ VBC4 VBC15{ BC4 v9 v10 v11 FC4[3] FC4[2] Fp Fs FC4} VBC16{ BC15 VBC4 FD FL FC15 Fp Fs[3]} Fp[2] Fi FC16[8] FD[9]}}}


 S7250C14 ::~S7250C14(){ note_dtor("S7250C14", this);}
S7250C14 ::S7250C14(){ note_ctor("S7250C14", this);} // tgen

static void Test_S7250C14()
{
  extern Class_Descriptor cd_S7250C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(381,1168)];
    init_test(&cd_S7250C14, buf);
    S7250C14 *dp, &lv = *(dp=new (buf) S7250C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(6080,4668), "sizeof(S7250C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7250C14)");
    /*is_ambiguous_... S7250C14::S7250C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C7*), ABISELECT(8,4), "S7250C14");
    /*is_ambiguous_... S7250C14::S7250C7 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C7*), 0, "S7250C14");
    /*is_ambiguous_... S7250C14::S7250C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C7*), ABISELECT(3824,2924), "S7250C14");
    /*is_ambiguous_... S7250C12::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C12*)(S7250C11*), ABISELECT(3824,2924), "S7250C14");
    /*is_ambiguous_... S7250C14::S7250C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C7*), ABISELECT(3824,2924), "S7250C14");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C9*), ABISELECT(3824,2924), "S7250C14");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C2*)(S7250C9*), ABISELECT(3824,2924), "S7250C14");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C7*)(S7250C9*), ABISELECT(3824,2924), "S7250C14");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C9*), ABISELECT(3824,2924), "S7250C14");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C2*)(S7250C9*), ABISELECT(3824,2924), "S7250C14");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C7*)(S7250C9*), ABISELECT(3824,2924), "S7250C14");
    /*is_ambiguous_... S7250C15::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C15*), ABISELECT(3824,2924), "S7250C14");
    /*is_ambiguous_... S7250C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C9*)(S7250C15*), ABISELECT(3824,2924), "S7250C14");
    /*is_ambiguous_... S7250C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C2*)(S7250C9*)(S7250C15*), ABISELECT(3824,2924), "S7250C14");
    /*is_ambiguous_... S7250C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C7*)(S7250C9*)(S7250C15*), ABISELECT(3824,2924), "S7250C14");
    /*is_ambiguous_... S7250C15::S7250C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C2*)(S7250C15*), ABISELECT(3824,2924), "S7250C14");
    /*is_ambiguous_... S7250C15::S7250C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C7*)(S7250C15*), ABISELECT(3824,2924), "S7250C14");
    /*is_ambiguous_... S7250C14::S7250C7 */ AMB_check_base_class_offset(lv, (S7250C7*), 0, "S7250C14");
    /*is_ambiguous_... S7250C14::S7250C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*), ABISELECT(5328,4088), "S7250C14");
    /*is_ambiguous_... S7250C12::S7250C3 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C12*)(S7250C11*), ABISELECT(5320,4084), "S7250C14");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C9*), ABISELECT(5320,4084), "S7250C14");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C2*)(S7250C9*), ABISELECT(5320,4084), "S7250C14");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C9*), ABISELECT(5320,4084), "S7250C14");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C2*)(S7250C9*), ABISELECT(5320,4084), "S7250C14");
    /*is_ambiguous_... S7250C9::S7250C3 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C9*)(S7250C15*), ABISELECT(5320,4084), "S7250C14");
    check_base_class_offset(lv, (S7250C3*)(S7250C2*)(S7250C9*)(S7250C15*), ABISELECT(5320,4084), "S7250C14");
    /*is_ambiguous_... S7250C15::S7250C2 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C2*)(S7250C15*), ABISELECT(5320,4084), "S7250C14");
    /*is_ambiguous_... S7250C14::S7250C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C7*), ABISELECT(5384,4128), "S7250C14");
    /*is_ambiguous_... S7250C14::S7250C7 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C7*), ABISELECT(5376,4124), "S7250C14");
    check_base_class_offset(lv, (S7250C7*)(S7250C12*)(S7250C11*), ABISELECT(5376,4124), "S7250C14");
    check_base_class_offset(lv, (S7250C12*)(S7250C11*), ABISELECT(3840,2928), "S7250C14");
    /*is_ambiguous_... S7250C11::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C11*), ABISELECT(5168,3980), "S7250C14");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C2*)(S7250C9*), ABISELECT(5520,4236), "S7250C14");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C7*)(S7250C9*), ABISELECT(5672,4344), "S7250C14");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C7*)(S7250C9*), ABISELECT(5664,4340), "S7250C14");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C7*)(S7250C9*), ABISELECT(5664,4340), "S7250C14");
    check_base_class_offset(lv, (S7250C9*)(S7250C11*), ABISELECT(5520,4236), "S7250C14");
    check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C8*)(S7250C11*), ABISELECT(5184,3988), "S7250C14");
    check_base_class_offset(lv, (S7250C3*)(S7250C8*)(S7250C11*), ABISELECT(5176,3984), "S7250C14");
    check_base_class_offset(lv, (S7250C8*)(S7250C11*), ABISELECT(5176,3984), "S7250C14");
    check_base_class_offset(lv, (S7250C11*), ABISELECT(3840,2928), "S7250C14");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C2*)(S7250C9*), ABISELECT(144,112), "S7250C14");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C7*)(S7250C9*), ABISELECT(296,220), "S7250C14");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C7*)(S7250C9*), ABISELECT(288,216), "S7250C14");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C7*)(S7250C9*), ABISELECT(288,216), "S7250C14");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C9*), ABISELECT(144,112), "S7250C14");
    check_base_class_offset(lv, (S7250C2*)(S7250C9*)(S7250C15*), ABISELECT(704,544), "S7250C14");
    check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C7*)(S7250C9*)(S7250C15*), ABISELECT(856,652), "S7250C14");
    check_base_class_offset(lv, (S7250C3*)(S7250C7*)(S7250C9*)(S7250C15*), ABISELECT(848,648), "S7250C14");
    check_base_class_offset(lv, (S7250C7*)(S7250C9*)(S7250C15*), ABISELECT(848,648), "S7250C14");
    check_base_class_offset(lv, (S7250C9*)(S7250C15*), ABISELECT(704,544), "S7250C14");
    /*is_ambiguous_... S7250C15::S7250C2 */ AMB_check_base_class_offset(lv, (S7250C2*)(S7250C15*), ABISELECT(1264,976), "S7250C14");
    /*is_ambiguous_... S7250C15::S7250C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C7*)(S7250C15*), ABISELECT(1416,1084), "S7250C14");
    /*is_ambiguous_... S7250C15::S7250C7 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C7*)(S7250C15*), ABISELECT(1408,1080), "S7250C14");
    /*is_ambiguous_... S7250C15::S7250C7 */ AMB_check_base_class_offset(lv, (S7250C7*)(S7250C15*), ABISELECT(1408,1080), "S7250C14");
    check_base_class_offset(lv, (S7250C15*), ABISELECT(704,544), "S7250C14");
    check_field_offset(lv, s7250c14f0, ABISELECT(1568,1208), "S7250C14.s7250c14f0");
    check_field_offset(lv, s7250c14f1, ABISELECT(1572,1212), "S7250C14.s7250c14f1");
    check_field_offset(lv, s7250c14f2, ABISELECT(1576,1216), "S7250C14.s7250c14f2");
    check_field_offset(lv, s7250c14f3, ABISELECT(1584,1220), "S7250C14.s7250c14f3");
    check_field_offset(lv, s7250c14f4, ABISELECT(1592,1228), "S7250C14.s7250c14f4");
    check_field_offset(lv, s7250c14f5, ABISELECT(1600,1232), "S7250C14.s7250c14f5");
    check_field_offset(lv, s7250c14f6, ABISELECT(1664,1264), "S7250C14.s7250c14f6");
    check_field_offset(lv, s7250c14f7, ABISELECT(1680,1276), "S7250C14.s7250c14f7");
    check_field_offset(lv, s7250c14f8, ABISELECT(1696,1284), "S7250C14.s7250c14f8");
    test_class_info(&lv, &cd_S7250C14);
    dp->~S7250C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7250C14(Test_S7250C14, "S7250C14", ABISELECT(6080,4668));

#else // __cplusplus

extern void _ZN8S7250C14C1Ev();
extern void _ZN8S7250C14D2Ev();
Name_Map name_map_S7250C14[] = {
  NSPAIR(_ZN8S7250C14C1Ev),
  NSPAIR(_ZN8S7250C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C7;
extern VTBL_ENTRY _ZTI7S7250C7[];
extern  VTBL_ENTRY _ZTV7S7250C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C7[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C7;
extern VTBL_ENTRY _ZTI7S7250C7[];
extern  VTBL_ENTRY _ZTV7S7250C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C7[];
extern Class_Descriptor cd_S7250C12;
extern VTBL_ENTRY _ZTI8S7250C12[];
extern  VTBL_ENTRY _ZTV8S7250C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7250C12[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C2;
extern VTBL_ENTRY _ZTI7S7250C2[];
extern  VTBL_ENTRY _ZTV7S7250C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C7;
extern VTBL_ENTRY _ZTI7S7250C7[];
extern  VTBL_ENTRY _ZTV7S7250C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C7[];
extern Class_Descriptor cd_S7250C9;
extern VTBL_ENTRY _ZTI7S7250C9[];
extern  VTBL_ENTRY _ZTV7S7250C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C8;
extern VTBL_ENTRY _ZTI7S7250C8[];
extern  VTBL_ENTRY _ZTV7S7250C8[];
extern Class_Descriptor cd_S7250C11;
extern VTBL_ENTRY _ZTI8S7250C11[];
extern  VTBL_ENTRY _ZTV8S7250C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7250C11[];
extern Class_Descriptor cd_S7250C2;
extern VTBL_ENTRY _ZTI7S7250C2[];
extern  VTBL_ENTRY _ZTV7S7250C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C7;
extern VTBL_ENTRY _ZTI7S7250C7[];
extern  VTBL_ENTRY _ZTV7S7250C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C7[];
extern Class_Descriptor cd_S7250C9;
extern VTBL_ENTRY _ZTI7S7250C9[];
extern  VTBL_ENTRY _ZTV7S7250C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C9[];
extern Class_Descriptor cd_S7250C2;
extern VTBL_ENTRY _ZTI7S7250C2[];
extern  VTBL_ENTRY _ZTV7S7250C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C7;
extern VTBL_ENTRY _ZTI7S7250C7[];
extern  VTBL_ENTRY _ZTV7S7250C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C7[];
extern Class_Descriptor cd_S7250C9;
extern VTBL_ENTRY _ZTI7S7250C9[];
extern  VTBL_ENTRY _ZTV7S7250C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C9[];
extern Class_Descriptor cd_S7250C2;
extern VTBL_ENTRY _ZTI7S7250C2[];
extern  VTBL_ENTRY _ZTV7S7250C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C7;
extern VTBL_ENTRY _ZTI7S7250C7[];
extern  VTBL_ENTRY _ZTV7S7250C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C7[];
extern Class_Descriptor cd_S7250C15;
extern VTBL_ENTRY _ZTI8S7250C15[];
extern  VTBL_ENTRY _ZTV8S7250C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7250C15[];
static Base_Class bases_S7250C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S7250C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3216C8_nt,    ABISELECT(3824,2924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7250C7,    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_S3216C8_nt,    ABISELECT(5328,4088), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7250C3,    ABISELECT(5320,4084), //bcp->offset
    71, //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
    9, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(5384,4128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7250C3,    ABISELECT(5376,4124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7250C7,    ABISELECT(5376,4124), //bcp->offset
    79, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7250C12,    ABISELECT(3840,2928), //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
    8, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(5168,3980), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7250C2,    ABISELECT(5520,4236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(5672,4344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7250C3,    ABISELECT(5664,4340), //bcp->offset
    -1, //bcp->virtual_function_table_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_S7250C7,    ABISELECT(5664,4340), //bcp->offset
    99, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7250C9,    ABISELECT(5520,4236), //bcp->offset
    88, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(5184,3988), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7250C3,    ABISELECT(5176,3984), //bcp->offset
    -1, //bcp->virtual_function_table_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
    18, //immediately_derived
  0, 0},
  {&cd_S7250C8,    ABISELECT(5176,3984), //bcp->offset
    63, //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
    10, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7250C11,    ABISELECT(3840,2928), //bcp->offset
    48, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7250C2,    ABISELECT(144,112), //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
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    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
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7250C3,    ABISELECT(288,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
    15, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7250C7,    ABISELECT(288,216), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7250C9,    ABISELECT(144,112), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7250C2,    ABISELECT(704,544), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(856,652), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7250C3,    ABISELECT(848,648), //bcp->offset
    -1, //bcp->virtual_function_table_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_S7250C7,    ABISELECT(848,648), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7250C9,    ABISELECT(704,544), //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
    21, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7250C2,    ABISELECT(1264,976), //bcp->offset
    37, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1416,1084), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7250C3,    ABISELECT(1408,1080), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7250C7,    ABISELECT(1408,1080), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7250C15,    ABISELECT(704,544), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7250C14[];
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void _ZN8S7250C14D1Ev();
extern void _ZN8S7250C14D0Ev();
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
extern void _ZN8S7250C153v12Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void ABISELECT(_ZTv0_n56_N8S7250C14D1Ev,_ZTv0_n28_N8S7250C14D1Ev)();
extern void ABISELECT(_ZThn3840_N8S7250C14D1Ev,_ZThn2928_N8S7250C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7250C14D0Ev,_ZTv0_n28_N8S7250C14D0Ev)();
extern void ABISELECT(_ZThn3840_N8S7250C14D0Ev,_ZThn2928_N8S7250C14D0Ev)() __attribute__((weak));
extern void _ZN8S7250C113v11Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void ABISELECT(_ZTvn1336_n56_N8S7250C14D1Ev,_ZTvn1056_n28_N8S7250C14D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N8S7250C14D0Ev,_ZTvn1056_n28_N8S7250C14D0Ev)();
extern void _ZN7S7250C82v9Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY vtc_S7250C14[] = {
  ABISELECT(5520,4236),
  ABISELECT(5376,4124),
  ABISELECT(5320,4084),
  ABISELECT(3840,2928),
  ABISELECT(3824,2924),
  0,
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  (VTBL_ENTRY)&_ZN8S7250C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7250C14D0Ev,
  ABISELECT(3680,2812),
  ABISELECT(5176,3972),
  ABISELECT(-144,-112),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
  ABISELECT(3536,2708),
  ABISELECT(-288,-216),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  ABISELECT(3120,2380),
  ABISELECT(4616,3540),
  ABISELECT(-704,-544),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
  (VTBL_ENTRY)&_ZN8S7250C153v12Ev,
  ABISELECT(2976,2276),
  ABISELECT(-848,-648),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  ABISELECT(2560,1948),
  ABISELECT(4056,3108),
  ABISELECT(-1264,-976),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  ABISELECT(2416,1844),
  ABISELECT(-1408,-1080),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-3840,-2928),
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-16,-4),
  ABISELECT(-3840,-2928),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7250C14D1Ev,_ZTv0_n28_N8S7250C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7250C14D0Ev,_ZTv0_n28_N8S7250C14D0Ev),
  (VTBL_ENTRY)&_ZN8S7250C113v11Ev,
  ABISELECT(-5176,-3984),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S7250C14D1Ev,_ZTvn1056_n28_N8S7250C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S7250C14D0Ev,_ZTvn1056_n28_N8S7250C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7250C82v9Ev,
  0,
  0,
  0,
  ABISELECT(-5320,-4084),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  0,
  0,
  0,
  ABISELECT(-1552,-1200),
  ABISELECT(-5376,-4124),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1696,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-5520,-4236),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
  ABISELECT(-1840,-1416),
  ABISELECT(-5664,-4340),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern VTBL_ENTRY _ZTV8S7250C14[];
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__A__8S7250C14[] = {
  ABISELECT(3824,2924),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C7[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C9__A__8S7250C14[] = {
  ABISELECT(3680,2812),
  ABISELECT(5176,3972),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
};
extern void _ZN7S7250C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C27S7250C9__A1__8S7250C14[] = {
  ABISELECT(3680,2812),
  ABISELECT(5176,3972),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C27S7250C9__A1__8S7250C14[] = {
  0,
  0,
  0,
  ABISELECT(-5176,-3972),
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C77S7250C9__A3__8S7250C14[] = {
  ABISELECT(3536,2708),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C7[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C9__A__8S7250C14[] = {
  0,
  0,
  0,
  ABISELECT(-5176,-3972),
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__7S7250C9__A__8S7250C14[] = {
  ABISELECT(3536,2708),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
extern void _ZN8S7250C153v12Ev();
static  VTBL_ENTRY _tg__ZTV8S7250C15__8S7250C14[] = {
  ABISELECT(3120,2380),
  ABISELECT(4616,3540),
  0,
  (VTBL_ENTRY)&(_ZTI8S7250C15[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
  (VTBL_ENTRY)&_ZN8S7250C153v12Ev,
};
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C98S7250C15__A2__8S7250C14[] = {
  ABISELECT(3120,2380),
  ABISELECT(4616,3540),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
};
extern void _ZN7S7250C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C27S7250C98S7250C15__A2__8S7250C14[] = {
  ABISELECT(3120,2380),
  ABISELECT(4616,3540),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C27S7250C98S7250C15__A2__8S7250C14[] = {
  0,
  0,
  0,
  ABISELECT(-4616,-3540),
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C77S7250C98S7250C15__A4__8S7250C14[] = {
  ABISELECT(2976,2276),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C7[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C98S7250C15__A2__8S7250C14[] = {
  0,
  0,
  0,
  ABISELECT(-4616,-3540),
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__7S7250C98S7250C15__A2__8S7250C14[] = {
  ABISELECT(2976,2276),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C28S7250C15__A3__8S7250C14[] = {
  ABISELECT(2560,1948),
  ABISELECT(4056,3108),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C28S7250C15__A3__8S7250C14[] = {
  0,
  0,
  0,
  ABISELECT(-4056,-3108),
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C78S7250C15__A5__8S7250C14[] = {
  ABISELECT(2416,1844),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C7[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__8S7250C15__8S7250C14[] = {
  0,
  0,
  0,
  ABISELECT(-4616,-3540),
  (VTBL_ENTRY)&(_ZTI8S7250C15[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C77S7250C9__8S7250C15__8S7250C14[] = {
  ABISELECT(2976,2276),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S7250C15[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C2__A1__8S7250C15__8S7250C14[] = {
  ABISELECT(2560,1948),
  ABISELECT(4056,3108),
  ABISELECT(-560,-432),
  (VTBL_ENTRY)&(_ZTI8S7250C15[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__A1__8S7250C15__8S7250C14[] = {
  ABISELECT(2416,1844),
  ABISELECT(-704,-536),
  (VTBL_ENTRY)&(_ZTI8S7250C15[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN8S7250C11D1Ev();
extern void _ZN8S7250C11D0Ev();
extern void _ZN8S7250C113v11Ev();
static  VTBL_ENTRY _tg__ZTV8S7250C11__8S7250C14[] = {
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7250C11[0]),
  (VTBL_ENTRY)&_ZN8S7250C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7250C11D0Ev,
  (VTBL_ENTRY)&_ZN8S7250C113v11Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7250C128S7250C11__8S7250C14[] = {
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7250C12[0]),
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__8S7250C128S7250C11__8S7250C14[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1156),
  (VTBL_ENTRY)&(_ZTI8S7250C12[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__8S7250C128S7250C11__8S7250C14[] = {
  0,
  0,
  0,
  ABISELECT(-1552,-1200),
  ABISELECT(-1536,-1196),
  (VTBL_ENTRY)&(_ZTI8S7250C12[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__8S7250C11__8S7250C14[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1156),
  (VTBL_ENTRY)&(_ZTI8S7250C11[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__8S7250C11__8S7250C14[] = {
  0,
  0,
  0,
  ABISELECT(-1552,-1200),
  ABISELECT(-1536,-1196),
  (VTBL_ENTRY)&(_ZTI8S7250C11[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C9__8S7250C11__8S7250C14[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1696,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-1680,-1308),
  (VTBL_ENTRY)&(_ZTI8S7250C11[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C77S7250C9__A1__8S7250C11__8S7250C14[] = {
  ABISELECT(-1840,-1416),
  ABISELECT(-1824,-1412),
  (VTBL_ENTRY)&(_ZTI8S7250C11[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__A1__8S7250C14[] = {
  ABISELECT(-1552,-1200),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C7[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C9__8S7250C14[] = {
  ABISELECT(-1696,-1312),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
};
extern void _ZN7S7250C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C27S7250C9__8S7250C14[] = {
  ABISELECT(-1696,-1312),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C27S7250C9__8S7250C14[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C77S7250C9__A2__8S7250C14[] = {
  ABISELECT(-1840,-1416),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C7[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C9__8S7250C14[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__7S7250C9__8S7250C14[] = {
  ABISELECT(-1840,-1416),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
static  VTT_ENTRY vtt_S7250C14[] = {
  {&(_ZTV8S7250C14[7]),  7,105},
  {&(_tg__ZTV7S7250C7__A__8S7250C14[3]),  3,6},
  {&(_tg__ZTV7S7250C9__A__8S7250C14[4]),  4,6},
  {&(_tg__ZTV7S7250C27S7250C9__A1__8S7250C14[4]),  4,5},
  {&(_tg__ZTV7S7250C3__7S7250C27S7250C9__A1__8S7250C14[5]),  5,8},
  {&(_tg__ZTV7S7250C77S7250C9__A3__8S7250C14[3]),  3,6},
  {&(_tg__ZTV7S7250C3__7S7250C9__A__8S7250C14[5]),  5,8},
  {&(_tg__ZTV7S7250C7__7S7250C9__A__8S7250C14[3]),  3,6},
  {&(_tg__ZTV8S7250C15__8S7250C14[4]),  4,7},
  {&(_tg__ZTV7S7250C98S7250C15__A2__8S7250C14[4]),  4,6},
  {&(_tg__ZTV7S7250C27S7250C98S7250C15__A2__8S7250C14[4]),  4,5},
  {&(_tg__ZTV7S7250C3__7S7250C27S7250C98S7250C15__A2__8S7250C14[5]),  5,8},
  {&(_tg__ZTV7S7250C77S7250C98S7250C15__A4__8S7250C14[3]),  3,6},
  {&(_tg__ZTV7S7250C3__7S7250C98S7250C15__A2__8S7250C14[5]),  5,8},
  {&(_tg__ZTV7S7250C7__7S7250C98S7250C15__A2__8S7250C14[3]),  3,6},
  {&(_tg__ZTV7S7250C28S7250C15__A3__8S7250C14[4]),  4,5},
  {&(_tg__ZTV7S7250C3__7S7250C28S7250C15__A3__8S7250C14[5]),  5,8},
  {&(_tg__ZTV7S7250C78S7250C15__A5__8S7250C14[3]),  3,6},
  {&(_tg__ZTV7S7250C3__8S7250C15__8S7250C14[5]),  5,8},
  {&(_tg__ZTV7S7250C77S7250C9__8S7250C15__8S7250C14[3]),  3,6},
  {&(_tg__ZTV7S7250C2__A1__8S7250C15__8S7250C14[4]),  4,5},
  {&(_tg__ZTV7S7250C7__A1__8S7250C15__8S7250C14[3]),  3,6},
  {&(_ZTV8S7250C14[60]),  60,105},
  {&(_ZTV8S7250C14[76]),  76,105},
  {&(_ZTV8S7250C14[85]),  85,105},
  {&(_ZTV8S7250C14[97]),  97,105},
  {&(_ZTV8S7250C14[102]),  102,105},
  {&(_ZTV8S7250C14[65]),  65,105},
  {&(_ZTV8S7250C14[16]),  16,105},
  {&(_ZTV8S7250C14[21]),  21,105},
  {&(_ZTV8S7250C14[28]),  28,105},
  {&(_ZTV8S7250C14[34]),  34,105},
  {&(_ZTV8S7250C14[41]),  41,105},
  {&(_ZTV8S7250C14[45]),  45,105},
  {&(_tg__ZTV8S7250C11__8S7250C14[6]),  6,9},
  {&(_tg__ZTV8S7250C128S7250C11__8S7250C14[5]),  5,5},
  {&(_tg__ZTV7S7250C3__8S7250C128S7250C11__8S7250C14[5]),  5,8},
  {&(_tg__ZTV7S7250C7__8S7250C128S7250C11__8S7250C14[6]),  6,9},
  {&(_tg__ZTV7S7250C3__8S7250C11__8S7250C14[5]),  5,8},
  {&(_tg__ZTV7S7250C7__8S7250C11__8S7250C14[6]),  6,9},
  {&(_tg__ZTV7S7250C9__8S7250C11__8S7250C14[9]),  9,11},
  {&(_tg__ZTV7S7250C77S7250C9__A1__8S7250C11__8S7250C14[3]),  3,6},
  {&(_tg__ZTV7S7250C7__A1__8S7250C14[3]),  3,6},
  {&(_tg__ZTV7S7250C9__8S7250C14[4]),  4,6},
  {&(_tg__ZTV7S7250C27S7250C9__8S7250C14[4]),  4,5},
  {&(_tg__ZTV7S7250C3__7S7250C27S7250C9__8S7250C14[5]),  5,8},
  {&(_tg__ZTV7S7250C77S7250C9__A2__8S7250C14[3]),  3,6},
  {&(_tg__ZTV7S7250C3__7S7250C9__8S7250C14[5]),  5,8},
  {&(_tg__ZTV7S7250C7__7S7250C9__8S7250C14[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S7250C14[];
extern  VTBL_ENTRY _ZTV8S7250C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7250C14[];
static VTBL_ENTRY alt_thunk_names12[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7250C14D0Ev,_ZTv0_n28_N8S7250C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3840_N8S7250C14D0Ev,_ZThn2928_N8S7250C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7250C14D1Ev,_ZTv0_n28_N8S7250C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3840_N8S7250C14D1Ev,_ZThn2928_N8S7250C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7250C14 = {  "S7250C14", // class name
  bases_S7250C14, 35,
  &(vtc_S7250C14[0]), // expected_vtbl_contents
  &(vtt_S7250C14[0]), // expected_vtt_contents
  ABISELECT(6080,4668), // object size
  NSPAIRA(_ZTI8S7250C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7250C14),105, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7250C14),49, //virtual table table var
  25, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names12,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7250C13  : virtual S7250C8 , virtual S7250C2 , S3216C8_nt , S7250C14 {
  void *s7250c13f0;
  int s7250c13f1;
  int s7250c13f2;
  ::S7250C5 s7250c13f3[8];
  int s7250c13f4;
  __tsi64 s7250c13f5;
  char s7250c13f6;
  int s7250c13f7:32;
  int s7250c13f8;
  int s7250c13f9;
  int s7250c13f10;
  virtual void  v13(); // _ZN8S7250C133v13Ev
  virtual void  v14(); // _ZN8S7250C133v14Ev
  ~S7250C13(); // tgen
  S7250C13(); // tgen
};
//SIG(-1 S7250C13) C1{ VBC2{ BC3{ BC4{ m Fi} v3 v4 v5 FC4[3] FC4[2] Fp Fs FC4} vd v6 Fp[7] Fi[2] FL Fi} VBC5{ VBC3 VBC4 v7 FC3 FD Fp[2] FC3} BC4 BC6{ BC7{ BC3 VBC4 FD FL FC3 Fp Fs[3]} VBC8{ BC9{ VBC4 VBC3 VBC7 Fp[2] Fi FC7[8] FD[9]} BC4 VBC10{ VBC3 VBC4 BC5 BC7 v8 Fp[2] Fl Fi FC3[5]} BC2 vd v9 Fi Fp Fi} BC10 BC11{ VBC4 BC10 BC5 BC7 v10 Fi FC12{} Fp[2]} vd Fi Fc[2] Fi FL FC12 Fp[8] Fs[5] FL FC13{ vd m Fc[2] Fi FL Fp[7] FU14{ m Fi:3 Fi Fi Fi FD[8] Fp Fc[5] FD Fc[4] Fi Fp Fc[4] Fp}[4] FC15{ VBC4 VBC16{ BC4 v11 v12 v13 FC4[3] FC4[2] Fp Fs FC4} VBC17{ BC16 VBC4 FD FL FC16 Fp Fs[3]} Fp[2] Fi FC17[8] FD[9]}}} v1 v2 Fp Fi Fi FC18{ v14 v15 Fi Fs FC19{ VBC7 BC2 VBC3 BC10 BC5 v16 Fi[2] FD FC5[10] Fi} Fp Fc FC7 FC20{ VBC4 BC21{ VBC22{ BC23{ BC4 v19 v20 v21 FC4[3] FC4[2] Fp Fs FC4} VBC4 FD FL FC23 Fp Fs[3]} BC24{ BC23 vd v22 Fp[7] Fi[2] FL Fi} VBC23 BC25{ VBC23 VBC4 BC26{ VBC23 VBC4 v23 FC23 FD Fp[2] FC23} BC22 v24 Fp[2] Fl Fi FC23[5]} BC26 v25 Fi[2] FD FC26[10] Fi} BC22 VBC27{ BC28{ VBC4 VBC23 VBC22 Fp[2] Fi FC22[8] FD[9]} BC4 VBC25 BC24 vd v26 Fi Fp Fi} BC28 vd v17 v18 Fi[2] Fp Fc:3 Fi[3]} FL Fp}[8] Fi FL Fc Fi:32 Fi Fi Fi}


void  S7250C13 ::v13(){vfunc_called(this, "_ZN8S7250C133v13Ev");}
void  S7250C13 ::v14(){vfunc_called(this, "_ZN8S7250C133v14Ev");}
S7250C13 ::~S7250C13(){ note_dtor("S7250C13", this);} // tgen
S7250C13 ::S7250C13(){ note_ctor("S7250C13", this);} // tgen

static void Test_S7250C13()
{
  extern Class_Descriptor cd_S7250C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5435,16220)];
    init_test(&cd_S7250C13, buf);
    S7250C13 *dp, &lv = *(dp=new (buf) S7250C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(86944,64876), "sizeof(S7250C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7250C13)");
    /*is_ambiguous_... S7250C13::S7250C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C8*), ABISELECT(84416,62944), "S7250C13");
    /*is_ambiguous_... S7250C13::S7250C8 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C8*), ABISELECT(84408,62940), "S7250C13");
    /*is_ambiguous_... S7250C13::S7250C8 */ AMB_check_base_class_offset(lv, (S7250C8*), ABISELECT(84408,62940), "S7250C13");
    /*is_ambiguous_... S7250C13::S7250C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*), ABISELECT(84696,63136), "S7250C13");
    /*is_ambiguous_... S7250C13::S7250C2 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C2*), ABISELECT(84688,63132), "S7250C13");
    /*is_ambiguous_... S7250C12::S7250C3 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C12*)(S7250C11*), ABISELECT(84688,63132), "S7250C13");
    /*is_ambiguous_... S7250C13::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C9*), ABISELECT(84688,63132), "S7250C13");
    /*is_ambiguous_... S7250C13::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C2*)(S7250C9*), ABISELECT(84688,63132), "S7250C13");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C9*)(S7250C14*), ABISELECT(84688,63132), "S7250C13");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C2*)(S7250C9*)(S7250C14*), ABISELECT(84688,63132), "S7250C13");
    /*is_ambiguous_... S7250C9::S7250C3 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C9*)(S7250C15*)(S7250C14*), ABISELECT(84688,63132), "S7250C13");
    check_base_class_offset(lv, (S7250C3*)(S7250C2*)(S7250C9*)(S7250C15*)(S7250C14*), ABISELECT(84688,63132), "S7250C13");
    /*is_ambiguous_... S7250C15::S7250C2 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C2*)(S7250C15*)(S7250C14*), ABISELECT(84688,63132), "S7250C13");
    /*is_ambiguous_... S7250C13::S7250C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C2*), ABISELECT(84736,63172), "S7250C13");
    /*is_ambiguous_... S7250C14::S7250C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C7*)(S7250C14*), ABISELECT(84736,63172), "S7250C13");
    /*is_ambiguous_... S7250C12::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C12*)(S7250C11*), ABISELECT(84736,63172), "S7250C13");
    /*is_ambiguous_... S7250C13::S7250C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C7*), ABISELECT(84736,63172), "S7250C13");
    /*is_ambiguous_... S7250C13::S7250C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C9*), ABISELECT(84736,63172), "S7250C13");
    /*is_ambiguous_... S7250C13::S7250C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C2*)(S7250C9*), ABISELECT(84736,63172), "S7250C13");
    /*is_ambiguous_... S7250C13::S7250C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C7*)(S7250C9*), ABISELECT(84736,63172), "S7250C13");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C9*)(S7250C14*), ABISELECT(84736,63172), "S7250C13");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C2*)(S7250C9*)(S7250C14*), ABISELECT(84736,63172), "S7250C13");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C7*)(S7250C9*)(S7250C14*), ABISELECT(84736,63172), "S7250C13");
    /*is_ambiguous_... S7250C15::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C15*)(S7250C14*), ABISELECT(84736,63172), "S7250C13");
    /*is_ambiguous_... S7250C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C9*)(S7250C15*)(S7250C14*), ABISELECT(84736,63172), "S7250C13");
    /*is_ambiguous_... S7250C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C2*)(S7250C9*)(S7250C15*)(S7250C14*), ABISELECT(84736,63172), "S7250C13");
    /*is_ambiguous_... S7250C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C7*)(S7250C9*)(S7250C15*)(S7250C14*), ABISELECT(84736,63172), "S7250C13");
    /*is_ambiguous_... S7250C15::S7250C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C2*)(S7250C15*)(S7250C14*), ABISELECT(84736,63172), "S7250C13");
    /*is_ambiguous_... S7250C15::S7250C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C7*)(S7250C15*)(S7250C14*), ABISELECT(84736,63172), "S7250C13");
    /*is_ambiguous_... S7250C13::S7250C2 */ AMB_check_base_class_offset(lv, (S7250C2*), ABISELECT(84544,63028), "S7250C13");
    /*is_ambiguous_... S7250C13::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(3824,2924), "S7250C13");
    /*is_ambiguous_... S7250C14::S7250C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C7*)(S7250C14*), ABISELECT(8,4), "S7250C13");
    /*is_ambiguous_... S7250C14::S7250C7 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C7*)(S7250C14*), 0, "S7250C13");
    /*is_ambiguous_... S7250C14::S7250C7 */ AMB_check_base_class_offset(lv, (S7250C7*)(S7250C14*), 0, "S7250C13");
    /*is_ambiguous_... S7250C13::S7250C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C7*), ABISELECT(86248,64336), "S7250C13");
    /*is_ambiguous_... S7250C13::S7250C7 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C7*), ABISELECT(86240,64332), "S7250C13");
    check_base_class_offset(lv, (S7250C7*)(S7250C12*)(S7250C11*), ABISELECT(86240,64332), "S7250C13");
    check_base_class_offset(lv, (S7250C12*)(S7250C11*), ABISELECT(84752,63176), "S7250C13");
    /*is_ambiguous_... S7250C11::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C11*), ABISELECT(86080,64228), "S7250C13");
    /*is_ambiguous_... S7250C13::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C2*)(S7250C9*), ABISELECT(86384,64444), "S7250C13");
    /*is_ambiguous_... S7250C13::S7250C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C7*)(S7250C9*), ABISELECT(86536,64552), "S7250C13");
    /*is_ambiguous_... S7250C13::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C7*)(S7250C9*), ABISELECT(86528,64548), "S7250C13");
    /*is_ambiguous_... S7250C13::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C7*)(S7250C9*), ABISELECT(86528,64548), "S7250C13");
    check_base_class_offset(lv, (S7250C9*)(S7250C11*), ABISELECT(86384,64444), "S7250C13");
    check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C8*)(S7250C11*), ABISELECT(86096,64236), "S7250C13");
    check_base_class_offset(lv, (S7250C3*)(S7250C8*)(S7250C11*), ABISELECT(86088,64232), "S7250C13");
    check_base_class_offset(lv, (S7250C8*)(S7250C11*), ABISELECT(86088,64232), "S7250C13");
    check_base_class_offset(lv, (S7250C11*)(S7250C14*), ABISELECT(84752,63176), "S7250C13");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C2*)(S7250C9*)(S7250C14*), ABISELECT(144,112), "S7250C13");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C7*)(S7250C9*)(S7250C14*), ABISELECT(296,220), "S7250C13");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C7*)(S7250C9*)(S7250C14*), ABISELECT(288,216), "S7250C13");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C7*)(S7250C9*)(S7250C14*), ABISELECT(288,216), "S7250C13");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C9*)(S7250C14*), ABISELECT(144,112), "S7250C13");
    check_base_class_offset(lv, (S7250C2*)(S7250C9*)(S7250C15*)(S7250C14*), ABISELECT(704,544), "S7250C13");
    check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C7*)(S7250C9*)(S7250C15*)(S7250C14*), ABISELECT(856,652), "S7250C13");
    check_base_class_offset(lv, (S7250C3*)(S7250C7*)(S7250C9*)(S7250C15*)(S7250C14*), ABISELECT(848,648), "S7250C13");
    check_base_class_offset(lv, (S7250C7*)(S7250C9*)(S7250C15*)(S7250C14*), ABISELECT(848,648), "S7250C13");
    check_base_class_offset(lv, (S7250C9*)(S7250C15*)(S7250C14*), ABISELECT(704,544), "S7250C13");
    /*is_ambiguous_... S7250C15::S7250C2 */ AMB_check_base_class_offset(lv, (S7250C2*)(S7250C15*)(S7250C14*), ABISELECT(1264,976), "S7250C13");
    /*is_ambiguous_... S7250C15::S7250C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C7*)(S7250C15*)(S7250C14*), ABISELECT(1416,1084), "S7250C13");
    /*is_ambiguous_... S7250C15::S7250C7 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C7*)(S7250C15*)(S7250C14*), ABISELECT(1408,1080), "S7250C13");
    /*is_ambiguous_... S7250C15::S7250C7 */ AMB_check_base_class_offset(lv, (S7250C7*)(S7250C15*)(S7250C14*), ABISELECT(1408,1080), "S7250C13");
    check_base_class_offset(lv, (S7250C15*)(S7250C14*), ABISELECT(704,544), "S7250C13");
    check_base_class_offset(lv, (S7250C14*), 0, "S7250C13");
    check_field_offset(lv, s7250c13f0, ABISELECT(3832,2928), "S7250C13.s7250c13f0");
    check_field_offset(lv, s7250c13f1, ABISELECT(3840,2932), "S7250C13.s7250c13f1");
    check_field_offset(lv, s7250c13f2, ABISELECT(3844,2936), "S7250C13.s7250c13f2");
    check_field_offset(lv, s7250c13f3, ABISELECT(3856,2940), "S7250C13.s7250c13f3");
    check_field_offset(lv, s7250c13f4, ABISELECT(84368,62908), "S7250C13.s7250c13f4");
    check_field_offset(lv, s7250c13f5, ABISELECT(84376,62912), "S7250C13.s7250c13f5");
    check_field_offset(lv, s7250c13f6, ABISELECT(84384,62920), "S7250C13.s7250c13f6");
    set_bf_and_test(lv, s7250c13f7, ABISELECT(84388,62924), 0, 32, 1, "S7250C13");
    set_bf_and_test(lv, s7250c13f7, ABISELECT(84388,62924), 0, 32, hide_sll(1LL<<31), "S7250C13");
    check_field_offset(lv, s7250c13f8, ABISELECT(84392,62928), "S7250C13.s7250c13f8");
    check_field_offset(lv, s7250c13f9, ABISELECT(84396,62932), "S7250C13.s7250c13f9");
    check_field_offset(lv, s7250c13f10, ABISELECT(84400,62936), "S7250C13.s7250c13f10");
    test_class_info(&lv, &cd_S7250C13);
    dp->~S7250C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7250C13(Test_S7250C13, "S7250C13", ABISELECT(86944,64876));

#else // __cplusplus

extern void _ZN8S7250C13C1Ev();
extern void _ZN8S7250C13D1Ev();
Name_Map name_map_S7250C13[] = {
  NSPAIR(_ZN8S7250C13C1Ev),
  NSPAIR(_ZN8S7250C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C8;
extern VTBL_ENTRY _ZTI7S7250C8[];
extern  VTBL_ENTRY _ZTV7S7250C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C2;
extern VTBL_ENTRY _ZTI7S7250C2[];
extern  VTBL_ENTRY _ZTV7S7250C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C7;
extern VTBL_ENTRY _ZTI7S7250C7[];
extern  VTBL_ENTRY _ZTV7S7250C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C7[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C7;
extern VTBL_ENTRY _ZTI7S7250C7[];
extern  VTBL_ENTRY _ZTV7S7250C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C7[];
extern Class_Descriptor cd_S7250C12;
extern VTBL_ENTRY _ZTI8S7250C12[];
extern  VTBL_ENTRY _ZTV8S7250C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7250C12[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C2;
extern VTBL_ENTRY _ZTI7S7250C2[];
extern  VTBL_ENTRY _ZTV7S7250C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C7;
extern VTBL_ENTRY _ZTI7S7250C7[];
extern  VTBL_ENTRY _ZTV7S7250C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C7[];
extern Class_Descriptor cd_S7250C9;
extern VTBL_ENTRY _ZTI7S7250C9[];
extern  VTBL_ENTRY _ZTV7S7250C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C8;
extern VTBL_ENTRY _ZTI7S7250C8[];
extern  VTBL_ENTRY _ZTV7S7250C8[];
extern Class_Descriptor cd_S7250C11;
extern VTBL_ENTRY _ZTI8S7250C11[];
extern  VTBL_ENTRY _ZTV8S7250C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7250C11[];
extern Class_Descriptor cd_S7250C2;
extern VTBL_ENTRY _ZTI7S7250C2[];
extern  VTBL_ENTRY _ZTV7S7250C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C7;
extern VTBL_ENTRY _ZTI7S7250C7[];
extern  VTBL_ENTRY _ZTV7S7250C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C7[];
extern Class_Descriptor cd_S7250C9;
extern VTBL_ENTRY _ZTI7S7250C9[];
extern  VTBL_ENTRY _ZTV7S7250C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C9[];
extern Class_Descriptor cd_S7250C2;
extern VTBL_ENTRY _ZTI7S7250C2[];
extern  VTBL_ENTRY _ZTV7S7250C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C7;
extern VTBL_ENTRY _ZTI7S7250C7[];
extern  VTBL_ENTRY _ZTV7S7250C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C7[];
extern Class_Descriptor cd_S7250C9;
extern VTBL_ENTRY _ZTI7S7250C9[];
extern  VTBL_ENTRY _ZTV7S7250C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C9[];
extern Class_Descriptor cd_S7250C2;
extern VTBL_ENTRY _ZTI7S7250C2[];
extern  VTBL_ENTRY _ZTV7S7250C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C7;
extern VTBL_ENTRY _ZTI7S7250C7[];
extern  VTBL_ENTRY _ZTV7S7250C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C7[];
extern Class_Descriptor cd_S7250C15;
extern VTBL_ENTRY _ZTI8S7250C15[];
extern  VTBL_ENTRY _ZTV8S7250C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7250C15[];
extern Class_Descriptor cd_S7250C14;
extern VTBL_ENTRY _ZTI8S7250C14[];
extern  VTBL_ENTRY _ZTV8S7250C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7250C14[];
static Base_Class bases_S7250C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(84416,62944), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7250C3,    ABISELECT(84408,62940), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7250C8,    ABISELECT(84408,62940), //bcp->offset
    52, //bcp->virtual_function_table_offset
    7, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(84696,63136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7250C3,    ABISELECT(84688,63132), //bcp->offset
    71, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(84736,63172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7250C2,    ABISELECT(84544,63028), //bcp->offset
    65, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(3824,2924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7250C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    10, //immediately_derived
  0, 0},
  {&cd_S7250C7,    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
    16, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(86248,64336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7250C3,    ABISELECT(86240,64332), //bcp->offset
    -1, //bcp->virtual_function_table_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_S7250C7,    ABISELECT(86240,64332), //bcp->offset
    102, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S7250C12,    ABISELECT(84752,63176), //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
    11, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(86080,64228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7250C2,    ABISELECT(86384,64444), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(86536,64552), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7250C3,    ABISELECT(86528,64548), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7250C7,    ABISELECT(86528,64548), //bcp->offset
    122, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7250C9,    ABISELECT(86384,64444), //bcp->offset
    111, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(86096,64236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7250C3,    ABISELECT(86088,64232), //bcp->offset
    -1, //bcp->virtual_function_table_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
    23, //immediately_derived
  0, 0},
  {&cd_S7250C8,    ABISELECT(86088,64232), //bcp->offset
    94, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7250C11,    ABISELECT(84752,63176), //bcp->offset
    79, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S7250C2,    ABISELECT(144,112), //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
    17, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    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
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7250C3,    ABISELECT(288,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
    18, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7250C7,    ABISELECT(288,216), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7250C9,    ABISELECT(144,112), //bcp->offset
    16, //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
    20, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7250C2,    ABISELECT(704,544), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(856,652), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7250C3,    ABISELECT(848,648), //bcp->offset
    -1, //bcp->virtual_function_table_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
    33, //immediately_derived
  0, 0},
  {&cd_S7250C7,    ABISELECT(848,648), //bcp->offset
    35, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7250C9,    ABISELECT(704,544), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7250C2,    ABISELECT(1264,976), //bcp->offset
    41, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1416,1084), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7250C3,    ABISELECT(1408,1080), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S7250C7,    ABISELECT(1408,1080), //bcp->offset
    46, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7250C15,    ABISELECT(704,544), //bcp->offset
    28, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7250C14,    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
    29, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7250C13[];
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void _ZN8S7250C13D1Ev();
extern void _ZN8S7250C13D0Ev();
extern void _ZN8S7250C133v13Ev();
extern void _ZN8S7250C133v14Ev();
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
extern void _ZN8S7250C153v12Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void ABISELECT(_ZTv0_n48_N8S7250C13D1Ev,_ZTv0_n24_N8S7250C13D1Ev)();
extern void ABISELECT(_ZThn84408_N8S7250C13D1Ev,_ZThn62940_N8S7250C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7250C13D0Ev,_ZTv0_n24_N8S7250C13D0Ev)();
extern void ABISELECT(_ZThn84408_N8S7250C13D0Ev,_ZThn62940_N8S7250C13D0Ev)() __attribute__((weak));
extern void _ZN7S7250C82v9Ev();
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void ABISELECT(_ZTv0_n56_N8S7250C13D1Ev,_ZTv0_n28_N8S7250C13D1Ev)();
extern void ABISELECT(_ZThn84752_N8S7250C13D1Ev,_ZThn63176_N8S7250C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7250C13D0Ev,_ZTv0_n28_N8S7250C13D0Ev)();
extern void ABISELECT(_ZThn84752_N8S7250C13D0Ev,_ZThn63176_N8S7250C13D0Ev)() __attribute__((weak));
extern void _ZN8S7250C113v11Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void ABISELECT(_ZTvn1336_n56_N8S7250C13D1Ev,_ZTvn1056_n28_N8S7250C13D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N8S7250C13D0Ev,_ZTvn1056_n28_N8S7250C13D0Ev)();
extern void _ZN7S7250C82v9Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY vtc_S7250C13[] = {
  ABISELECT(84544,63028),
  ABISELECT(84408,62940),
  ABISELECT(86384,64444),
  ABISELECT(86240,64332),
  ABISELECT(84688,63132),
  ABISELECT(84752,63176),
  ABISELECT(84736,63172),
  0,
  (VTBL_ENTRY)&(_ZTI8S7250C13[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  (VTBL_ENTRY)&_ZN8S7250C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7250C13D0Ev,
  (VTBL_ENTRY)&_ZN8S7250C133v13Ev,
  (VTBL_ENTRY)&_ZN8S7250C133v14Ev,
  ABISELECT(84592,63060),
  ABISELECT(84544,63020),
  ABISELECT(-144,-112),
  (VTBL_ENTRY)&(_ZTI8S7250C13[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
  ABISELECT(84448,62956),
  ABISELECT(-288,-216),
  (VTBL_ENTRY)&(_ZTI8S7250C13[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  ABISELECT(84032,62628),
  ABISELECT(83984,62588),
  ABISELECT(-704,-544),
  (VTBL_ENTRY)&(_ZTI8S7250C13[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
  (VTBL_ENTRY)&_ZN8S7250C153v12Ev,
  ABISELECT(83888,62524),
  ABISELECT(-848,-648),
  (VTBL_ENTRY)&(_ZTI8S7250C13[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  ABISELECT(83472,62196),
  ABISELECT(83424,62156),
  ABISELECT(-1264,-976),
  (VTBL_ENTRY)&(_ZTI8S7250C13[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  ABISELECT(83328,62092),
  ABISELECT(-1408,-1080),
  (VTBL_ENTRY)&(_ZTI8S7250C13[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  0,
  ABISELECT(-84408,-62940),
  0,
  0,
  0,
  ABISELECT(-84408,-62940),
  (VTBL_ENTRY)&(_ZTI8S7250C13[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7250C13D1Ev,_ZTv0_n24_N8S7250C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7250C13D0Ev,_ZTv0_n24_N8S7250C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7250C82v9Ev,
  0,
  ABISELECT(192,144),
  ABISELECT(144,104),
  ABISELECT(-84544,-63028),
  (VTBL_ENTRY)&(_ZTI8S7250C13[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  0,
  0,
  0,
  ABISELECT(-84688,-63132),
  (VTBL_ENTRY)&(_ZTI8S7250C13[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-84752,-63176),
  ABISELECT(1632,1268),
  ABISELECT(1488,1156),
  ABISELECT(-64,-44),
  ABISELECT(-16,-4),
  ABISELECT(-84752,-63176),
  (VTBL_ENTRY)&(_ZTI8S7250C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7250C13D1Ev,_ZTv0_n28_N8S7250C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7250C13D0Ev,_ZTv0_n28_N8S7250C13D0Ev),
  (VTBL_ENTRY)&_ZN8S7250C113v11Ev,
  ABISELECT(-86088,-64232),
  (VTBL_ENTRY)&(_ZTI8S7250C13[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S7250C13D1Ev,_ZTvn1056_n28_N8S7250C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S7250C13D0Ev,_ZTvn1056_n28_N8S7250C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7250C82v9Ev,
  0,
  0,
  0,
  ABISELECT(-1504,-1160),
  ABISELECT(-86240,-64332),
  (VTBL_ENTRY)&(_ZTI8S7250C13[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1648,-1272),
  ABISELECT(-1696,-1312),
  ABISELECT(-86384,-64444),
  (VTBL_ENTRY)&(_ZTI8S7250C13[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
  ABISELECT(-1792,-1376),
  ABISELECT(-86528,-64548),
  (VTBL_ENTRY)&(_ZTI8S7250C13[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern VTBL_ENTRY _ZTV8S7250C13[];
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void _ZN8S7250C14D1Ev();
extern void _ZN8S7250C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7250C14__8S7250C13[] = {
  ABISELECT(86384,64444),
  ABISELECT(86240,64332),
  ABISELECT(84688,63132),
  ABISELECT(84752,63176),
  ABISELECT(84736,63172),
  0,
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  (VTBL_ENTRY)&_ZN8S7250C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7250C14D0Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C78S7250C14__8S7250C13[] = {
  ABISELECT(84736,63172),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C7[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C98S7250C14__A1__8S7250C13[] = {
  ABISELECT(84592,63060),
  ABISELECT(84544,63020),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
};
extern void _ZN7S7250C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C27S7250C98S7250C14__A2__8S7250C13[] = {
  ABISELECT(84592,63060),
  ABISELECT(84544,63020),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C27S7250C98S7250C14__A2__8S7250C13[] = {
  0,
  0,
  0,
  ABISELECT(-84544,-63020),
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C77S7250C98S7250C14__A3__8S7250C13[] = {
  ABISELECT(84448,62956),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C7[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C98S7250C14__A1__8S7250C13[] = {
  0,
  0,
  0,
  ABISELECT(-84544,-63020),
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__7S7250C98S7250C14__A1__8S7250C13[] = {
  ABISELECT(84448,62956),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
extern void _ZN8S7250C153v12Ev();
static  VTBL_ENTRY _tg__ZTV8S7250C158S7250C14__8S7250C13[] = {
  ABISELECT(84032,62628),
  ABISELECT(83984,62588),
  0,
  (VTBL_ENTRY)&(_ZTI8S7250C15[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
  (VTBL_ENTRY)&_ZN8S7250C153v12Ev,
};
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C98S7250C158S7250C14__A2__8S7250C13[] = {
  ABISELECT(84032,62628),
  ABISELECT(83984,62588),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
};
extern void _ZN7S7250C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C27S7250C98S7250C158S7250C14__A3__8S7250C13[] = {
  ABISELECT(84032,62628),
  ABISELECT(83984,62588),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C27S7250C98S7250C158S7250C14__A3__8S7250C13[] = {
  0,
  0,
  0,
  ABISELECT(-83984,-62588),
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C77S7250C98S7250C158S7250C14__A4__8S7250C13[] = {
  ABISELECT(83888,62524),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C7[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C98S7250C158S7250C14__A2__8S7250C13[] = {
  0,
  0,
  0,
  ABISELECT(-83984,-62588),
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__7S7250C98S7250C158S7250C14__A2__8S7250C13[] = {
  ABISELECT(83888,62524),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C28S7250C158S7250C14__A4__8S7250C13[] = {
  ABISELECT(83472,62196),
  ABISELECT(83424,62156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C28S7250C158S7250C14__A4__8S7250C13[] = {
  0,
  0,
  0,
  ABISELECT(-83424,-62156),
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C78S7250C158S7250C14__A5__8S7250C13[] = {
  ABISELECT(83328,62092),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C7[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__8S7250C158S7250C14__8S7250C13[] = {
  0,
  0,
  0,
  ABISELECT(-83984,-62588),
  (VTBL_ENTRY)&(_ZTI8S7250C15[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C77S7250C9__8S7250C158S7250C14__8S7250C13[] = {
  ABISELECT(83888,62524),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S7250C15[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C2__A1__8S7250C158S7250C14__8S7250C13[] = {
  ABISELECT(83472,62196),
  ABISELECT(83424,62156),
  ABISELECT(-560,-432),
  (VTBL_ENTRY)&(_ZTI8S7250C15[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__A1__8S7250C158S7250C14__8S7250C13[] = {
  ABISELECT(83328,62092),
  ABISELECT(-704,-536),
  (VTBL_ENTRY)&(_ZTI8S7250C15[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S7250C14D1Ev,_ZTv0_n28_N8S7250C14D1Ev)();
extern void ABISELECT(_ZThn84752_N8S7250C14D1Ev,_ZThn63176_N8S7250C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7250C14D0Ev,_ZTv0_n28_N8S7250C14D0Ev)();
extern void ABISELECT(_ZThn84752_N8S7250C14D0Ev,_ZThn63176_N8S7250C14D0Ev)() __attribute__((weak));
extern void _ZN8S7250C113v11Ev();
static  VTBL_ENTRY _tg__ZTV8S7250C11__8S7250C14__8S7250C13[] = {
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-84752,-63176),
  ABISELECT(1632,1268),
  ABISELECT(1488,1156),
  ABISELECT(-64,-44),
  ABISELECT(-16,-4),
  ABISELECT(-84752,-63176),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7250C14D1Ev,_ZTv0_n28_N8S7250C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7250C14D0Ev,_ZTv0_n28_N8S7250C14D0Ev),
  (VTBL_ENTRY)&_ZN8S7250C113v11Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__A1__8S7250C14__8S7250C13[] = {
  0,
  0,
  0,
  ABISELECT(-84688,-63132),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__A1__8S7250C14__8S7250C13[] = {
  0,
  0,
  0,
  ABISELECT(-1504,-1160),
  ABISELECT(-86240,-64332),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C9__8S7250C14__8S7250C13[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1648,-1272),
  ABISELECT(-1696,-1312),
  ABISELECT(-86384,-64444),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C77S7250C9__A2__8S7250C14__8S7250C13[] = {
  ABISELECT(-1792,-1376),
  ABISELECT(-86528,-64548),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void ABISELECT(_ZTvn1336_n56_N8S7250C14D1Ev,_ZTvn1056_n28_N8S7250C14D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N8S7250C14D0Ev,_ZTvn1056_n28_N8S7250C14D0Ev)();
extern void _ZN7S7250C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C88S7250C11__8S7250C14__8S7250C13[] = {
  ABISELECT(-86088,-64232),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S7250C14D1Ev,_ZTvn1056_n28_N8S7250C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S7250C14D0Ev,_ZTvn1056_n28_N8S7250C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7250C82v9Ev,
};
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C9__A__8S7250C14__8S7250C13[] = {
  ABISELECT(84592,63060),
  ABISELECT(84544,63020),
  ABISELECT(-144,-112),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C77S7250C9__A3__8S7250C14__8S7250C13[] = {
  ABISELECT(84448,62956),
  ABISELECT(-288,-216),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
extern void _ZN8S7250C153v12Ev();
static  VTBL_ENTRY _tg__ZTV8S7250C15__8S7250C14__8S7250C13[] = {
  ABISELECT(84032,62628),
  ABISELECT(83984,62588),
  ABISELECT(-704,-544),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
  (VTBL_ENTRY)&_ZN8S7250C153v12Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C77S7250C98S7250C15__A4__8S7250C14__8S7250C13[] = {
  ABISELECT(83888,62524),
  ABISELECT(-848,-648),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C28S7250C15__A3__8S7250C14__8S7250C13[] = {
  ABISELECT(83472,62196),
  ABISELECT(83424,62156),
  ABISELECT(-1264,-976),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C78S7250C15__A5__8S7250C14__8S7250C13[] = {
  ABISELECT(83328,62092),
  ABISELECT(-1408,-1080),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C2__8S7250C13[] = {
  ABISELECT(192,144),
  ABISELECT(144,104),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C2__8S7250C13[] = {
  0,
  0,
  0,
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN8S7250C11D1Ev();
extern void _ZN8S7250C11D0Ev();
extern void _ZN8S7250C113v11Ev();
static  VTBL_ENTRY _tg__ZTV8S7250C11__8S7250C13[] = {
  ABISELECT(1632,1268),
  ABISELECT(1488,1156),
  ABISELECT(-64,-44),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7250C11[0]),
  (VTBL_ENTRY)&_ZN8S7250C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7250C11D0Ev,
  (VTBL_ENTRY)&_ZN8S7250C113v11Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7250C128S7250C11__8S7250C13[] = {
  ABISELECT(1488,1156),
  ABISELECT(-64,-44),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7250C12[0]),
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__8S7250C128S7250C11__8S7250C13[] = {
  0,
  0,
  0,
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S7250C12[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__8S7250C128S7250C11__8S7250C13[] = {
  0,
  0,
  0,
  ABISELECT(-1504,-1160),
  ABISELECT(-1488,-1156),
  (VTBL_ENTRY)&(_ZTI8S7250C12[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__8S7250C11__8S7250C13[] = {
  0,
  0,
  0,
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S7250C11[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__8S7250C11__8S7250C13[] = {
  0,
  0,
  0,
  ABISELECT(-1504,-1160),
  ABISELECT(-1488,-1156),
  (VTBL_ENTRY)&(_ZTI8S7250C11[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C9__8S7250C11__8S7250C13[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1648,-1272),
  ABISELECT(-1696,-1312),
  ABISELECT(-1632,-1268),
  (VTBL_ENTRY)&(_ZTI8S7250C11[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C77S7250C9__A1__8S7250C11__8S7250C13[] = {
  ABISELECT(-1792,-1376),
  ABISELECT(-1776,-1372),
  (VTBL_ENTRY)&(_ZTI8S7250C11[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__A1__8S7250C13[] = {
  ABISELECT(-1504,-1160),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C7[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C9__8S7250C13[] = {
  ABISELECT(-1648,-1272),
  ABISELECT(-1696,-1312),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
};
extern void _ZN7S7250C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C27S7250C9__A1__8S7250C13[] = {
  ABISELECT(-1648,-1272),
  ABISELECT(-1696,-1312),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C27S7250C9__A1__8S7250C13[] = {
  0,
  0,
  0,
  ABISELECT(1696,1312),
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C77S7250C9__A2__8S7250C13[] = {
  ABISELECT(-1792,-1376),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C7[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C9__8S7250C13[] = {
  0,
  0,
  0,
  ABISELECT(1696,1312),
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__7S7250C9__8S7250C13[] = {
  ABISELECT(-1792,-1376),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
static  VTT_ENTRY vtt_S7250C13[] = {
  {&(_ZTV8S7250C13[9]),  9,128},
  {&(_tg__ZTV8S7250C14__8S7250C13[7]),  7,12},
  {&(_tg__ZTV7S7250C78S7250C14__8S7250C13[3]),  3,6},
  {&(_tg__ZTV7S7250C98S7250C14__A1__8S7250C13[4]),  4,6},
  {&(_tg__ZTV7S7250C27S7250C98S7250C14__A2__8S7250C13[4]),  4,5},
  {&(_tg__ZTV7S7250C3__7S7250C27S7250C98S7250C14__A2__8S7250C13[5]),  5,8},
  {&(_tg__ZTV7S7250C77S7250C98S7250C14__A3__8S7250C13[3]),  3,6},
  {&(_tg__ZTV7S7250C3__7S7250C98S7250C14__A1__8S7250C13[5]),  5,8},
  {&(_tg__ZTV7S7250C7__7S7250C98S7250C14__A1__8S7250C13[3]),  3,6},
  {&(_tg__ZTV8S7250C158S7250C14__8S7250C13[4]),  4,7},
  {&(_tg__ZTV7S7250C98S7250C158S7250C14__A2__8S7250C13[4]),  4,6},
  {&(_tg__ZTV7S7250C27S7250C98S7250C158S7250C14__A3__8S7250C13[4]),  4,5},
  {&(_tg__ZTV7S7250C3__7S7250C27S7250C98S7250C158S7250C14__A3__8S7250C13[5]),  5,8},
  {&(_tg__ZTV7S7250C77S7250C98S7250C158S7250C14__A4__8S7250C13[3]),  3,6},
  {&(_tg__ZTV7S7250C3__7S7250C98S7250C158S7250C14__A2__8S7250C13[5]),  5,8},
  {&(_tg__ZTV7S7250C7__7S7250C98S7250C158S7250C14__A2__8S7250C13[3]),  3,6},
  {&(_tg__ZTV7S7250C28S7250C158S7250C14__A4__8S7250C13[4]),  4,5},
  {&(_tg__ZTV7S7250C3__7S7250C28S7250C158S7250C14__A4__8S7250C13[5]),  5,8},
  {&(_tg__ZTV7S7250C78S7250C158S7250C14__A5__8S7250C13[3]),  3,6},
  {&(_tg__ZTV7S7250C3__8S7250C158S7250C14__8S7250C13[5]),  5,8},
  {&(_tg__ZTV7S7250C77S7250C9__8S7250C158S7250C14__8S7250C13[3]),  3,6},
  {&(_tg__ZTV7S7250C2__A1__8S7250C158S7250C14__8S7250C13[4]),  4,5},
  {&(_tg__ZTV7S7250C7__A1__8S7250C158S7250C14__8S7250C13[3]),  3,6},
  {&(_tg__ZTV8S7250C11__8S7250C14__8S7250C13[12]),  12,15},
  {&(_tg__ZTV7S7250C3__A1__8S7250C14__8S7250C13[5]),  5,8},
  {&(_tg__ZTV7S7250C7__A1__8S7250C14__8S7250C13[6]),  6,9},
  {&(_tg__ZTV7S7250C9__8S7250C14__8S7250C13[9]),  9,11},
  {&(_tg__ZTV7S7250C77S7250C9__A2__8S7250C14__8S7250C13[3]),  3,6},
  {&(_tg__ZTV7S7250C88S7250C11__8S7250C14__8S7250C13[2]),  2,8},
  {&(_tg__ZTV7S7250C9__A__8S7250C14__8S7250C13[4]),  4,6},
  {&(_tg__ZTV7S7250C77S7250C9__A3__8S7250C14__8S7250C13[3]),  3,6},
  {&(_tg__ZTV8S7250C15__8S7250C14__8S7250C13[4]),  4,7},
  {&(_tg__ZTV7S7250C77S7250C98S7250C15__A4__8S7250C14__8S7250C13[3]),  3,6},
  {&(_tg__ZTV7S7250C28S7250C15__A3__8S7250C14__8S7250C13[4]),  4,5},
  {&(_tg__ZTV7S7250C78S7250C15__A5__8S7250C14__8S7250C13[3]),  3,6},
  {&(_ZTV8S7250C13[59]),  59,128},
  {&(_ZTV8S7250C13[70]),  70,128},
  {&(_ZTV8S7250C13[76]),  76,128},
  {&(_ZTV8S7250C13[91]),  91,128},
  {&(_ZTV8S7250C13[108]),  108,128},
  {&(_ZTV8S7250C13[120]),  120,128},
  {&(_ZTV8S7250C13[125]),  125,128},
  {&(_ZTV8S7250C13[96]),  96,128},
  {&(_ZTV8S7250C13[20]),  20,128},
  {&(_ZTV8S7250C13[25]),  25,128},
  {&(_ZTV8S7250C13[32]),  32,128},
  {&(_ZTV8S7250C13[38]),  38,128},
  {&(_ZTV8S7250C13[45]),  45,128},
  {&(_ZTV8S7250C13[49]),  49,128},
  {&(_tg__ZTV7S7250C2__8S7250C13[4]),  4,5},
  {&(_tg__ZTV7S7250C3__7S7250C2__8S7250C13[5]),  5,8},
  {&(_tg__ZTV8S7250C11__8S7250C13[6]),  6,9},
  {&(_tg__ZTV8S7250C128S7250C11__8S7250C13[5]),  5,5},
  {&(_tg__ZTV7S7250C3__8S7250C128S7250C11__8S7250C13[5]),  5,8},
  {&(_tg__ZTV7S7250C7__8S7250C128S7250C11__8S7250C13[6]),  6,9},
  {&(_tg__ZTV7S7250C3__8S7250C11__8S7250C13[5]),  5,8},
  {&(_tg__ZTV7S7250C7__8S7250C11__8S7250C13[6]),  6,9},
  {&(_tg__ZTV7S7250C9__8S7250C11__8S7250C13[9]),  9,11},
  {&(_tg__ZTV7S7250C77S7250C9__A1__8S7250C11__8S7250C13[3]),  3,6},
  {&(_tg__ZTV7S7250C7__A1__8S7250C13[3]),  3,6},
  {&(_tg__ZTV7S7250C9__8S7250C13[4]),  4,6},
  {&(_tg__ZTV7S7250C27S7250C9__A1__8S7250C13[4]),  4,5},
  {&(_tg__ZTV7S7250C3__7S7250C27S7250C9__A1__8S7250C13[5]),  5,8},
  {&(_tg__ZTV7S7250C77S7250C9__A2__8S7250C13[3]),  3,6},
  {&(_tg__ZTV7S7250C3__7S7250C9__8S7250C13[5]),  5,8},
  {&(_tg__ZTV7S7250C7__7S7250C9__8S7250C13[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S7250C13[];
extern  VTBL_ENTRY _ZTV8S7250C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7250C13[];
static VTBL_ENTRY alt_thunk_names13[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7250C14D0Ev,_ZTv0_n28_N8S7250C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn84752_N8S7250C14D0Ev,_ZThn63176_N8S7250C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7250C14D1Ev,_ZTv0_n28_N8S7250C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn84752_N8S7250C14D1Ev,_ZThn63176_N8S7250C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7250C13D0Ev,_ZTv0_n28_N8S7250C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn84752_N8S7250C13D0Ev,_ZThn63176_N8S7250C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7250C13D1Ev,_ZTv0_n28_N8S7250C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn84752_N8S7250C13D1Ev,_ZThn63176_N8S7250C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7250C13D0Ev,_ZTv0_n24_N8S7250C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn84408_N8S7250C13D0Ev,_ZThn62940_N8S7250C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7250C13D1Ev,_ZTv0_n24_N8S7250C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn84408_N8S7250C13D1Ev,_ZThn62940_N8S7250C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7250C13 = {  "S7250C13", // class name
  bases_S7250C13, 41,
  &(vtc_S7250C13[0]), // expected_vtbl_contents
  &(vtt_S7250C13[0]), // expected_vtt_contents
  ABISELECT(86944,64876), // object size
  NSPAIRA(_ZTI8S7250C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7250C13),128, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7250C13),66, //virtual table table var
  29, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names13,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7250C1  : S7250C2 , S7250C5 , S7250C13 {
  int s7250c1f0;
  void *s7250c1f1[3];
  int s7250c1f2;
  int s7250c1f3;
  __tsi64 s7250c1f4;
  int s7250c1f5;
  virtual  ~S7250C1(); // _ZN7S7250C1D2Ev
  virtual void  v1(); // _ZN7S7250C12v1Ev
  virtual void  v2(); // _ZN7S7250C12v2Ev
  S7250C1(); // tgen
};
//SIG(1 S7250C1) C1{ BC2{ VBC3{ BC4{ m Fi} v3 v4 v5 FC4[3] FC4[2] Fp Fs FC4} VBC4 v6 FC3 FD Fp[2] FC3} BC5{ v7 v8 Fi Fs FC6{ VBC7{ BC3 VBC4 FD FL FC3 Fp Fs[3]} BC8{ BC3 vd v9 Fp[7] Fi[2] FL Fi} VBC3 BC9{ VBC3 VBC4 BC2 BC7 v10 Fp[2] Fl Fi FC3[5]} BC2 v15 Fi[2] FD FC2[10] Fi} Fp Fc FC7 FC10{ VBC4 BC11{ VBC12{ BC13{ BC4 v18 v19 v20 FC4[3] FC4[2] Fp Fs FC4} VBC4 FD FL FC13 Fp Fs[3]} BC14{ BC13 vd v21 Fp[7] Fi[2] FL Fi} VBC13 BC15{ VBC13 VBC4 BC16{ VBC13 VBC4 v22 FC13 FD Fp[2] FC13} BC12 v23 Fp[2] Fl Fi FC13[5]} BC16 v24 Fi[2] FD FC16[10] Fi} BC12 VBC17{ BC18{ VBC4 VBC13 VBC12 Fp[2] Fi FC12[8] FD[9]} BC4 VBC15 BC14 vd v25 Fi Fp Fi} BC18 vd v16 v17 Fi[2] Fp Fc:3 Fi[3]} FL Fp} BC19{ VBC8 VBC2 BC4 BC20{ BC7 VBC21{ BC22{ VBC4 VBC3 VBC7 Fp[2] Fi FC7[8] FD[9]} BC4 VBC9 BC8 vd v11 Fi Fp Fi} BC9 BC23{ VBC4 BC9 BC2 BC7 v12 Fi FC24{} Fp[2]} vd Fi Fc[2] Fi FL FC24 Fp[8] Fs[5] FL FC25{ vd m Fc[2] Fi FL Fp[7] FU26{ m Fi:3 Fi Fi Fi FD[8] Fp Fc[5] FD Fc[4] Fi Fp Fc[4] Fp}[4] FC27{ VBC4 VBC28{ BC4 v26 v27 v28 FC4[3] FC4[2] Fp Fs FC4} VBC29{ BC28 VBC4 FD FL FC28 Fp Fs[3]} Fp[2] Fi FC29[8] FD[9]}}} v13 v14 Fp Fi Fi FC5[8] Fi FL Fc Fi:32 Fi Fi Fi} vd v1 v2 Fi Fp[3] Fi Fi FL Fi}


 S7250C1 ::~S7250C1(){ note_dtor("S7250C1", this);}
void  S7250C1 ::v1(){vfunc_called(this, "_ZN7S7250C12v1Ev");}
void  S7250C1 ::v2(){vfunc_called(this, "_ZN7S7250C12v2Ev");}
S7250C1 ::S7250C1(){ note_ctor("S7250C1", this);} // tgen

static void Test_S7250C1()
{
  extern Class_Descriptor cd_S7250C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6075,18129)];
    init_test(&cd_S7250C1, buf);
    S7250C1 *dp, &lv = *(dp=new (buf) S7250C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(97184,72512), "sizeof(S7250C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7250C1)");
    /*is_ambiguous_... S7250C1::S7250C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*), ABISELECT(94672,70580), "S7250C1");
    /*is_ambiguous_... S7250C1::S7250C2 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C2*), ABISELECT(94664,70576), "S7250C1");
    /*is_ambiguous_... S7250C1::S7250C2 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C2*), ABISELECT(94664,70576), "S7250C1");
    /*is_ambiguous_... S7250C12::S7250C3 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C12*)(S7250C11*), ABISELECT(94664,70576), "S7250C1");
    /*is_ambiguous_... S7250C1::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C9*), ABISELECT(94664,70576), "S7250C1");
    /*is_ambiguous_... S7250C1::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C2*)(S7250C9*), ABISELECT(94664,70576), "S7250C1");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C9*)(S7250C14*)(S7250C13*), ABISELECT(94664,70576), "S7250C1");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C2*)(S7250C9*)(S7250C14*)(S7250C13*), ABISELECT(94664,70576), "S7250C1");
    /*is_ambiguous_... S7250C9::S7250C3 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C9*)(S7250C15*)(S7250C14*)(S7250C13*), ABISELECT(94664,70576), "S7250C1");
    check_base_class_offset(lv, (S7250C3*)(S7250C2*)(S7250C9*)(S7250C15*)(S7250C14*)(S7250C13*), ABISELECT(94664,70576), "S7250C1");
    /*is_ambiguous_... S7250C15::S7250C2 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C2*)(S7250C15*)(S7250C14*)(S7250C13*), ABISELECT(94664,70576), "S7250C1");
    /*is_ambiguous_... S7250C1::S7250C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C2*), ABISELECT(94712,70616), "S7250C1");
    /*is_ambiguous_... S7250C1::S7250C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C2*), ABISELECT(94712,70616), "S7250C1");
    /*is_ambiguous_... S7250C14::S7250C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C7*)(S7250C14*)(S7250C13*), ABISELECT(94712,70616), "S7250C1");
    /*is_ambiguous_... S7250C12::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C12*)(S7250C11*), ABISELECT(94712,70616), "S7250C1");
    /*is_ambiguous_... S7250C1::S7250C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C7*), ABISELECT(94712,70616), "S7250C1");
    /*is_ambiguous_... S7250C1::S7250C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C9*), ABISELECT(94712,70616), "S7250C1");
    /*is_ambiguous_... S7250C1::S7250C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C2*)(S7250C9*), ABISELECT(94712,70616), "S7250C1");
    /*is_ambiguous_... S7250C1::S7250C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C7*)(S7250C9*), ABISELECT(94712,70616), "S7250C1");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C9*)(S7250C14*)(S7250C13*), ABISELECT(94712,70616), "S7250C1");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C2*)(S7250C9*)(S7250C14*)(S7250C13*), ABISELECT(94712,70616), "S7250C1");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C7*)(S7250C9*)(S7250C14*)(S7250C13*), ABISELECT(94712,70616), "S7250C1");
    /*is_ambiguous_... S7250C15::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C15*)(S7250C14*)(S7250C13*), ABISELECT(94712,70616), "S7250C1");
    /*is_ambiguous_... S7250C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C9*)(S7250C15*)(S7250C14*)(S7250C13*), ABISELECT(94712,70616), "S7250C1");
    /*is_ambiguous_... S7250C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C2*)(S7250C9*)(S7250C15*)(S7250C14*)(S7250C13*), ABISELECT(94712,70616), "S7250C1");
    /*is_ambiguous_... S7250C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C7*)(S7250C9*)(S7250C15*)(S7250C14*)(S7250C13*), ABISELECT(94712,70616), "S7250C1");
    /*is_ambiguous_... S7250C15::S7250C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C2*)(S7250C15*)(S7250C14*)(S7250C13*), ABISELECT(94712,70616), "S7250C1");
    /*is_ambiguous_... S7250C15::S7250C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C7*)(S7250C15*)(S7250C14*)(S7250C13*), ABISELECT(94712,70616), "S7250C1");
    /*is_ambiguous_... S7250C1::S7250C2 */ AMB_check_base_class_offset(lv, (S7250C2*), 0, "S7250C1");
    check_base_class_offset(lv, (S7250C5*), ABISELECT(144,104), "S7250C1");
    /*is_ambiguous_... S7250C1::S7250C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C8*), ABISELECT(94728,70624), "S7250C1");
    /*is_ambiguous_... S7250C1::S7250C8 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C8*), ABISELECT(94720,70620), "S7250C1");
    /*is_ambiguous_... S7250C13::S7250C8 */ AMB_check_base_class_offset(lv, (S7250C8*)(S7250C13*), ABISELECT(94720,70620), "S7250C1");
    /*is_ambiguous_... S7250C13::S7250C2 */ AMB_check_base_class_offset(lv, (S7250C2*)(S7250C13*), ABISELECT(94848,70708), "S7250C1");
    /*is_ambiguous_... S7250C13::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C13*), ABISELECT(14032,10524), "S7250C1");
    /*is_ambiguous_... S7250C14::S7250C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C7*)(S7250C14*)(S7250C13*), ABISELECT(10216,7604), "S7250C1");
    /*is_ambiguous_... S7250C14::S7250C7 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C7*)(S7250C14*)(S7250C13*), ABISELECT(10208,7600), "S7250C1");
    /*is_ambiguous_... S7250C14::S7250C7 */ AMB_check_base_class_offset(lv, (S7250C7*)(S7250C14*)(S7250C13*), ABISELECT(10208,7600), "S7250C1");
    /*is_ambiguous_... S7250C1::S7250C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C7*), ABISELECT(96488,71972), "S7250C1");
    /*is_ambiguous_... S7250C1::S7250C7 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C7*), ABISELECT(96480,71968), "S7250C1");
    check_base_class_offset(lv, (S7250C7*)(S7250C12*)(S7250C11*), ABISELECT(96480,71968), "S7250C1");
    check_base_class_offset(lv, (S7250C12*)(S7250C11*), ABISELECT(94992,70812), "S7250C1");
    /*is_ambiguous_... S7250C11::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C11*), ABISELECT(96320,71864), "S7250C1");
    /*is_ambiguous_... S7250C1::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C2*)(S7250C9*), ABISELECT(96624,72080), "S7250C1");
    /*is_ambiguous_... S7250C1::S7250C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C7*)(S7250C9*), ABISELECT(96776,72188), "S7250C1");
    /*is_ambiguous_... S7250C1::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C7*)(S7250C9*), ABISELECT(96768,72184), "S7250C1");
    /*is_ambiguous_... S7250C1::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C7*)(S7250C9*), ABISELECT(96768,72184), "S7250C1");
    check_base_class_offset(lv, (S7250C9*)(S7250C11*), ABISELECT(96624,72080), "S7250C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C8*)(S7250C11*), ABISELECT(96336,71872), "S7250C1");
    check_base_class_offset(lv, (S7250C3*)(S7250C8*)(S7250C11*), ABISELECT(96328,71868), "S7250C1");
    check_base_class_offset(lv, (S7250C8*)(S7250C11*), ABISELECT(96328,71868), "S7250C1");
    check_base_class_offset(lv, (S7250C11*)(S7250C14*)(S7250C13*), ABISELECT(94992,70812), "S7250C1");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C2*)(S7250C9*)(S7250C14*)(S7250C13*), ABISELECT(10352,7712), "S7250C1");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C7*)(S7250C9*)(S7250C14*)(S7250C13*), ABISELECT(10504,7820), "S7250C1");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C7*)(S7250C9*)(S7250C14*)(S7250C13*), ABISELECT(10496,7816), "S7250C1");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C7*)(S7250C9*)(S7250C14*)(S7250C13*), ABISELECT(10496,7816), "S7250C1");
    /*is_ambiguous_... S7250C14::S7250C9 */ AMB_check_base_class_offset(lv, (S7250C9*)(S7250C14*)(S7250C13*), ABISELECT(10352,7712), "S7250C1");
    check_base_class_offset(lv, (S7250C2*)(S7250C9*)(S7250C15*)(S7250C14*)(S7250C13*), ABISELECT(10912,8144), "S7250C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C7*)(S7250C9*)(S7250C15*)(S7250C14*)(S7250C13*), ABISELECT(11064,8252), "S7250C1");
    check_base_class_offset(lv, (S7250C3*)(S7250C7*)(S7250C9*)(S7250C15*)(S7250C14*)(S7250C13*), ABISELECT(11056,8248), "S7250C1");
    check_base_class_offset(lv, (S7250C7*)(S7250C9*)(S7250C15*)(S7250C14*)(S7250C13*), ABISELECT(11056,8248), "S7250C1");
    check_base_class_offset(lv, (S7250C9*)(S7250C15*)(S7250C14*)(S7250C13*), ABISELECT(10912,8144), "S7250C1");
    /*is_ambiguous_... S7250C15::S7250C2 */ AMB_check_base_class_offset(lv, (S7250C2*)(S7250C15*)(S7250C14*)(S7250C13*), ABISELECT(11472,8576), "S7250C1");
    /*is_ambiguous_... S7250C15::S7250C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7250C3*)(S7250C7*)(S7250C15*)(S7250C14*)(S7250C13*), ABISELECT(11624,8684), "S7250C1");
    /*is_ambiguous_... S7250C15::S7250C7 */ AMB_check_base_class_offset(lv, (S7250C3*)(S7250C7*)(S7250C15*)(S7250C14*)(S7250C13*), ABISELECT(11616,8680), "S7250C1");
    /*is_ambiguous_... S7250C15::S7250C7 */ AMB_check_base_class_offset(lv, (S7250C7*)(S7250C15*)(S7250C14*)(S7250C13*), ABISELECT(11616,8680), "S7250C1");
    check_base_class_offset(lv, (S7250C15*)(S7250C14*)(S7250C13*), ABISELECT(10912,8144), "S7250C1");
    check_base_class_offset(lv, (S7250C14*)(S7250C13*), ABISELECT(10208,7600), "S7250C1");
    check_base_class_offset(lv, (S7250C13*), ABISELECT(10208,7600), "S7250C1");
    check_field_offset(lv, s7250c1f0, ABISELECT(94612,70540), "S7250C1.s7250c1f0");
    check_field_offset(lv, s7250c1f1, ABISELECT(94616,70544), "S7250C1.s7250c1f1");
    check_field_offset(lv, s7250c1f2, ABISELECT(94640,70556), "S7250C1.s7250c1f2");
    check_field_offset(lv, s7250c1f3, ABISELECT(94644,70560), "S7250C1.s7250c1f3");
    check_field_offset(lv, s7250c1f4, ABISELECT(94648,70564), "S7250C1.s7250c1f4");
    check_field_offset(lv, s7250c1f5, ABISELECT(94656,70572), "S7250C1.s7250c1f5");
    test_class_info(&lv, &cd_S7250C1);
    dp->~S7250C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7250C1(Test_S7250C1, "S7250C1", ABISELECT(97184,72512));

#else // __cplusplus

extern void _ZN7S7250C1C1Ev();
extern void _ZN7S7250C1D2Ev();
Name_Map name_map_S7250C1[] = {
  NSPAIR(_ZN7S7250C1C1Ev),
  NSPAIR(_ZN7S7250C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C2;
extern VTBL_ENTRY _ZTI7S7250C2[];
extern  VTBL_ENTRY _ZTV7S7250C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C2[];
extern Class_Descriptor cd_S7250C5;
extern VTBL_ENTRY _ZTI7S7250C5[];
extern  VTBL_ENTRY _ZTV7S7250C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C8;
extern VTBL_ENTRY _ZTI7S7250C8[];
extern  VTBL_ENTRY _ZTV7S7250C8[];
extern Class_Descriptor cd_S7250C2;
extern VTBL_ENTRY _ZTI7S7250C2[];
extern  VTBL_ENTRY _ZTV7S7250C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C7;
extern VTBL_ENTRY _ZTI7S7250C7[];
extern  VTBL_ENTRY _ZTV7S7250C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C7[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C7;
extern VTBL_ENTRY _ZTI7S7250C7[];
extern  VTBL_ENTRY _ZTV7S7250C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C7[];
extern Class_Descriptor cd_S7250C12;
extern VTBL_ENTRY _ZTI8S7250C12[];
extern  VTBL_ENTRY _ZTV8S7250C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7250C12[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C2;
extern VTBL_ENTRY _ZTI7S7250C2[];
extern  VTBL_ENTRY _ZTV7S7250C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C7;
extern VTBL_ENTRY _ZTI7S7250C7[];
extern  VTBL_ENTRY _ZTV7S7250C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C7[];
extern Class_Descriptor cd_S7250C9;
extern VTBL_ENTRY _ZTI7S7250C9[];
extern  VTBL_ENTRY _ZTV7S7250C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C8;
extern VTBL_ENTRY _ZTI7S7250C8[];
extern  VTBL_ENTRY _ZTV7S7250C8[];
extern Class_Descriptor cd_S7250C11;
extern VTBL_ENTRY _ZTI8S7250C11[];
extern  VTBL_ENTRY _ZTV8S7250C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7250C11[];
extern Class_Descriptor cd_S7250C2;
extern VTBL_ENTRY _ZTI7S7250C2[];
extern  VTBL_ENTRY _ZTV7S7250C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C7;
extern VTBL_ENTRY _ZTI7S7250C7[];
extern  VTBL_ENTRY _ZTV7S7250C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C7[];
extern Class_Descriptor cd_S7250C9;
extern VTBL_ENTRY _ZTI7S7250C9[];
extern  VTBL_ENTRY _ZTV7S7250C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C9[];
extern Class_Descriptor cd_S7250C2;
extern VTBL_ENTRY _ZTI7S7250C2[];
extern  VTBL_ENTRY _ZTV7S7250C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C7;
extern VTBL_ENTRY _ZTI7S7250C7[];
extern  VTBL_ENTRY _ZTV7S7250C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C7[];
extern Class_Descriptor cd_S7250C9;
extern VTBL_ENTRY _ZTI7S7250C9[];
extern  VTBL_ENTRY _ZTV7S7250C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C9[];
extern Class_Descriptor cd_S7250C2;
extern VTBL_ENTRY _ZTI7S7250C2[];
extern  VTBL_ENTRY _ZTV7S7250C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7250C3;
extern VTBL_ENTRY _ZTI7S7250C3[];
extern  VTBL_ENTRY _ZTV7S7250C3[];
extern Class_Descriptor cd_S7250C7;
extern VTBL_ENTRY _ZTI7S7250C7[];
extern  VTBL_ENTRY _ZTV7S7250C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C7[];
extern Class_Descriptor cd_S7250C15;
extern VTBL_ENTRY _ZTI8S7250C15[];
extern  VTBL_ENTRY _ZTV8S7250C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7250C15[];
extern Class_Descriptor cd_S7250C14;
extern VTBL_ENTRY _ZTI8S7250C14[];
extern  VTBL_ENTRY _ZTV8S7250C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7250C14[];
extern Class_Descriptor cd_S7250C13;
extern VTBL_ENTRY _ZTI8S7250C13[];
extern  VTBL_ENTRY _ZTV8S7250C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7250C13[];
static Base_Class bases_S7250C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(94672,70580), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7250C3,    ABISELECT(94664,70576), //bcp->offset
    70, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(94712,70616), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7250C2,    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_S7250C5,    ABISELECT(144,104), //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
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(94728,70624), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7250C3,    ABISELECT(94720,70620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7250C8,    ABISELECT(94720,70620), //bcp->offset
    78, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    43, //immediately_derived
  0, 1},
  {&cd_S7250C2,    ABISELECT(94848,70708), //bcp->offset
    91, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    43, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(14032,10524), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(10216,7604), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7250C3,    ABISELECT(10208,7600), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7250C7,    ABISELECT(10208,7600), //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
    18, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(96488,71972), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7250C3,    ABISELECT(96480,71968), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7250C7,    ABISELECT(96480,71968), //bcp->offset
    120, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7250C12,    ABISELECT(94992,70812), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(96320,71864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7250C2,    ABISELECT(96624,72080), //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
    7, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(96776,72188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7250C3,    ABISELECT(96768,72184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7250C7,    ABISELECT(96768,72184), //bcp->offset
    140, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7250C9,    ABISELECT(96624,72080), //bcp->offset
    129, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(96336,71872), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7250C3,    ABISELECT(96328,71868), //bcp->offset
    -1, //bcp->virtual_function_table_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
    25, //immediately_derived
  0, 0},
  {&cd_S7250C8,    ABISELECT(96328,71868), //bcp->offset
    112, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7250C11,    ABISELECT(94992,70812), //bcp->offset
    97, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7250C2,    ABISELECT(10352,7712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(10504,7820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7250C3,    ABISELECT(10496,7816), //bcp->offset
    -1, //bcp->virtual_function_table_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_S7250C7,    ABISELECT(10496,7816), //bcp->offset
    40, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7250C9,    ABISELECT(10352,7712), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7250C2,    ABISELECT(10912,8144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(11064,8252), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7250C3,    ABISELECT(11056,8248), //bcp->offset
    -1, //bcp->virtual_function_table_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
    35, //immediately_derived
  0, 0},
  {&cd_S7250C7,    ABISELECT(11056,8248), //bcp->offset
    53, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7250C9,    ABISELECT(10912,8144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7250C2,    ABISELECT(11472,8576), //bcp->offset
    59, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(11624,8684), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7250C3,    ABISELECT(11616,8680), //bcp->offset
    -1, //bcp->virtual_function_table_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
    40, //immediately_derived
  0, 0},
  {&cd_S7250C7,    ABISELECT(11616,8680), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7250C15,    ABISELECT(10912,8144), //bcp->offset
    46, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7250C14,    ABISELECT(10208,7600), //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
    31, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7250C13,    ABISELECT(10208,7600), //bcp->offset
    18, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7250C1[];
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C1D1Ev();
extern void _ZN7S7250C1D0Ev();
extern void _ZN7S7250C12v1Ev();
extern void _ZN7S7250C12v2Ev();
extern void _ZN7S7250C52v7Ev();
extern void _ZN7S7250C52v8Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void ABISELECT(_ZThn10208_N7S7250C1D1Ev,_ZThn7600_N7S7250C1D1Ev)();
extern void ABISELECT(_ZThn10208_N7S7250C1D0Ev,_ZThn7600_N7S7250C1D0Ev)();
extern void _ZN8S7250C133v13Ev();
extern void _ZN8S7250C133v14Ev();
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
extern void _ZN8S7250C153v12Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void ABISELECT(_ZTv0_n48_N7S7250C1D1Ev,_ZTv0_n24_N7S7250C1D1Ev)();
extern void ABISELECT(_ZThn94720_N7S7250C1D1Ev,_ZThn70620_N7S7250C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7250C1D0Ev,_ZTv0_n24_N7S7250C1D0Ev)();
extern void ABISELECT(_ZThn94720_N7S7250C1D0Ev,_ZThn70620_N7S7250C1D0Ev)() __attribute__((weak));
extern void _ZN7S7250C82v9Ev();
extern void _ZN7S7250C22v6Ev();
extern void ABISELECT(_ZTv0_n56_N7S7250C1D1Ev,_ZTv0_n28_N7S7250C1D1Ev)();
extern void ABISELECT(_ZThn94992_N7S7250C1D1Ev,_ZThn70812_N7S7250C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7250C1D0Ev,_ZTv0_n28_N7S7250C1D0Ev)();
extern void ABISELECT(_ZThn94992_N7S7250C1D0Ev,_ZThn70812_N7S7250C1D0Ev)() __attribute__((weak));
extern void _ZN8S7250C113v11Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void ABISELECT(_ZTvn1336_n56_N7S7250C1D1Ev,_ZTvn1056_n28_N7S7250C1D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N7S7250C1D0Ev,_ZTvn1056_n28_N7S7250C1D0Ev)();
extern void _ZN7S7250C82v9Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY vtc_S7250C1[] = {
  ABISELECT(96624,72080),
  ABISELECT(96480,71968),
  ABISELECT(94992,70812),
  ABISELECT(94848,70708),
  ABISELECT(94720,70620),
  ABISELECT(94712,70616),
  ABISELECT(94664,70576),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C1[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7250C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7250C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7250C12v2Ev,
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7250C1[0]),
  (VTBL_ENTRY)&_ZN7S7250C52v7Ev,
  (VTBL_ENTRY)&_ZN7S7250C52v8Ev,
  ABISELECT(84640,63108),
  ABISELECT(84512,63020),
  ABISELECT(86416,64480),
  ABISELECT(86272,64368),
  ABISELECT(84456,62976),
  ABISELECT(84784,63212),
  ABISELECT(84504,63016),
  ABISELECT(-10208,-7600),
  (VTBL_ENTRY)&(_ZTI7S7250C1[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn10208_N7S7250C1D1Ev,_ZThn7600_N7S7250C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn10208_N7S7250C1D0Ev,_ZThn7600_N7S7250C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7250C133v13Ev,
  (VTBL_ENTRY)&_ZN8S7250C133v14Ev,
  ABISELECT(84360,62904),
  ABISELECT(84312,62864),
  ABISELECT(-10352,-7712),
  (VTBL_ENTRY)&(_ZTI7S7250C1[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
  ABISELECT(84216,62800),
  ABISELECT(-10496,-7816),
  (VTBL_ENTRY)&(_ZTI7S7250C1[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  ABISELECT(83800,62472),
  ABISELECT(83752,62432),
  ABISELECT(-10912,-8144),
  (VTBL_ENTRY)&(_ZTI7S7250C1[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
  (VTBL_ENTRY)&_ZN8S7250C153v12Ev,
  ABISELECT(83656,62368),
  ABISELECT(-11056,-8248),
  (VTBL_ENTRY)&(_ZTI7S7250C1[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  ABISELECT(83240,62040),
  ABISELECT(83192,62000),
  ABISELECT(-11472,-8576),
  (VTBL_ENTRY)&(_ZTI7S7250C1[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  ABISELECT(83096,61936),
  ABISELECT(-11616,-8680),
  (VTBL_ENTRY)&(_ZTI7S7250C1[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  0,
  0,
  0,
  ABISELECT(-94664,-70576),
  (VTBL_ENTRY)&(_ZTI7S7250C1[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  0,
  ABISELECT(-94720,-70620),
  0,
  0,
  0,
  ABISELECT(-94720,-70620),
  (VTBL_ENTRY)&(_ZTI7S7250C1[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7250C1D1Ev,_ZTv0_n24_N7S7250C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7250C1D0Ev,_ZTv0_n24_N7S7250C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7250C82v9Ev,
  0,
  ABISELECT(-136,-92),
  ABISELECT(-184,-132),
  ABISELECT(-94848,-70708),
  (VTBL_ENTRY)&(_ZTI7S7250C1[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-94992,-70812),
  ABISELECT(1632,1268),
  ABISELECT(1488,1156),
  ABISELECT(-328,-236),
  ABISELECT(-280,-196),
  ABISELECT(-94992,-70812),
  (VTBL_ENTRY)&(_ZTI7S7250C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7250C1D1Ev,_ZTv0_n28_N7S7250C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7250C1D0Ev,_ZTv0_n28_N7S7250C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7250C113v11Ev,
  ABISELECT(-96328,-71868),
  (VTBL_ENTRY)&(_ZTI7S7250C1[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N7S7250C1D1Ev,_ZTvn1056_n28_N7S7250C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N7S7250C1D0Ev,_ZTvn1056_n28_N7S7250C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7250C82v9Ev,
  0,
  0,
  0,
  ABISELECT(-1768,-1352),
  ABISELECT(-96480,-71968),
  (VTBL_ENTRY)&(_ZTI7S7250C1[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1912,-1464),
  ABISELECT(-1960,-1504),
  ABISELECT(-96624,-72080),
  (VTBL_ENTRY)&(_ZTI7S7250C1[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
  ABISELECT(-2056,-1568),
  ABISELECT(-96768,-72184),
  (VTBL_ENTRY)&(_ZTI7S7250C1[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern VTBL_ENTRY _ZTV7S7250C1[];
extern void _ZN7S7250C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C2__A__7S7250C1[] = {
  ABISELECT(94712,70616),
  ABISELECT(94664,70576),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C2__A__7S7250C1[] = {
  0,
  0,
  0,
  ABISELECT(-94664,-70576),
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void _ZN8S7250C13D1Ev();
extern void _ZN8S7250C13D0Ev();
extern void _ZN8S7250C133v13Ev();
extern void _ZN8S7250C133v14Ev();
static  VTBL_ENTRY _tg__ZTV8S7250C13__7S7250C1[] = {
  ABISELECT(84640,63108),
  ABISELECT(84512,63020),
  ABISELECT(86416,64480),
  ABISELECT(86272,64368),
  ABISELECT(84456,62976),
  ABISELECT(84784,63212),
  ABISELECT(84504,63016),
  0,
  (VTBL_ENTRY)&(_ZTI8S7250C13[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  (VTBL_ENTRY)&_ZN8S7250C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7250C13D0Ev,
  (VTBL_ENTRY)&_ZN8S7250C133v13Ev,
  (VTBL_ENTRY)&_ZN8S7250C133v14Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void _ZN8S7250C14D1Ev();
extern void _ZN8S7250C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7250C148S7250C13__7S7250C1[] = {
  ABISELECT(86416,64480),
  ABISELECT(86272,64368),
  ABISELECT(84456,62976),
  ABISELECT(84784,63212),
  ABISELECT(84504,63016),
  0,
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  (VTBL_ENTRY)&_ZN8S7250C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7250C14D0Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C78S7250C148S7250C13__7S7250C1[] = {
  ABISELECT(84504,63016),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C7[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C98S7250C148S7250C13__A1__7S7250C1[] = {
  ABISELECT(84360,62904),
  ABISELECT(84312,62864),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
};
extern void _ZN7S7250C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C27S7250C98S7250C148S7250C13__A3__7S7250C1[] = {
  ABISELECT(84360,62904),
  ABISELECT(84312,62864),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C27S7250C98S7250C148S7250C13__A3__7S7250C1[] = {
  0,
  0,
  0,
  ABISELECT(-84312,-62864),
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C77S7250C98S7250C148S7250C13__A3__7S7250C1[] = {
  ABISELECT(84216,62800),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C7[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C98S7250C148S7250C13__A1__7S7250C1[] = {
  0,
  0,
  0,
  ABISELECT(-84312,-62864),
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__7S7250C98S7250C148S7250C13__A1__7S7250C1[] = {
  ABISELECT(84216,62800),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
extern void _ZN8S7250C153v12Ev();
static  VTBL_ENTRY _tg__ZTV8S7250C158S7250C148S7250C13__7S7250C1[] = {
  ABISELECT(83800,62472),
  ABISELECT(83752,62432),
  0,
  (VTBL_ENTRY)&(_ZTI8S7250C15[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
  (VTBL_ENTRY)&_ZN8S7250C153v12Ev,
};
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C98S7250C158S7250C148S7250C13__A2__7S7250C1[] = {
  ABISELECT(83800,62472),
  ABISELECT(83752,62432),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
};
extern void _ZN7S7250C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C27S7250C98S7250C158S7250C148S7250C13__A4__7S7250C1[] = {
  ABISELECT(83800,62472),
  ABISELECT(83752,62432),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C27S7250C98S7250C158S7250C148S7250C13__A4__7S7250C1[] = {
  0,
  0,
  0,
  ABISELECT(-83752,-62432),
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C77S7250C98S7250C158S7250C148S7250C13__A4__7S7250C1[] = {
  ABISELECT(83656,62368),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C7[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C98S7250C158S7250C148S7250C13__A2__7S7250C1[] = {
  0,
  0,
  0,
  ABISELECT(-83752,-62432),
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__7S7250C98S7250C158S7250C148S7250C13__A2__7S7250C1[] = {
  ABISELECT(83656,62368),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C28S7250C158S7250C148S7250C13__A5__7S7250C1[] = {
  ABISELECT(83240,62040),
  ABISELECT(83192,62000),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C28S7250C158S7250C148S7250C13__A5__7S7250C1[] = {
  0,
  0,
  0,
  ABISELECT(-83192,-62000),
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C78S7250C158S7250C148S7250C13__A5__7S7250C1[] = {
  ABISELECT(83096,61936),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C7[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__8S7250C158S7250C148S7250C13__7S7250C1[] = {
  0,
  0,
  0,
  ABISELECT(-83752,-62432),
  (VTBL_ENTRY)&(_ZTI8S7250C15[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C77S7250C9__8S7250C158S7250C148S7250C13__7S7250C1[] = {
  ABISELECT(83656,62368),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S7250C15[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C2__A1__8S7250C158S7250C148S7250C13__7S7250C1[] = {
  ABISELECT(83240,62040),
  ABISELECT(83192,62000),
  ABISELECT(-560,-432),
  (VTBL_ENTRY)&(_ZTI8S7250C15[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__A1__8S7250C158S7250C148S7250C13__7S7250C1[] = {
  ABISELECT(83096,61936),
  ABISELECT(-704,-536),
  (VTBL_ENTRY)&(_ZTI8S7250C15[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S7250C14D1Ev,_ZTv0_n28_N8S7250C14D1Ev)();
extern void ABISELECT(_ZThn84784_N8S7250C14D1Ev,_ZThn63212_N8S7250C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7250C14D0Ev,_ZTv0_n28_N8S7250C14D0Ev)();
extern void ABISELECT(_ZThn84784_N8S7250C14D0Ev,_ZThn63212_N8S7250C14D0Ev)() __attribute__((weak));
extern void _ZN8S7250C113v11Ev();
static  VTBL_ENTRY _tg__ZTV8S7250C11__8S7250C148S7250C13__7S7250C1[] = {
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-84784,-63212),
  ABISELECT(1632,1268),
  ABISELECT(1488,1156),
  ABISELECT(-328,-236),
  ABISELECT(-280,-196),
  ABISELECT(-84784,-63212),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7250C14D1Ev,_ZTv0_n28_N8S7250C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7250C14D0Ev,_ZTv0_n28_N8S7250C14D0Ev),
  (VTBL_ENTRY)&_ZN8S7250C113v11Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__A1__8S7250C148S7250C13__7S7250C1[] = {
  0,
  0,
  0,
  ABISELECT(-84456,-62976),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__A1__8S7250C148S7250C13__7S7250C1[] = {
  0,
  0,
  0,
  ABISELECT(-1768,-1352),
  ABISELECT(-86272,-64368),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C9__8S7250C148S7250C13__7S7250C1[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1912,-1464),
  ABISELECT(-1960,-1504),
  ABISELECT(-86416,-64480),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C77S7250C9__A2__8S7250C148S7250C13__7S7250C1[] = {
  ABISELECT(-2056,-1568),
  ABISELECT(-86560,-64584),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void ABISELECT(_ZTvn1336_n56_N8S7250C14D1Ev,_ZTvn1056_n28_N8S7250C14D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N8S7250C14D0Ev,_ZTvn1056_n28_N8S7250C14D0Ev)();
extern void _ZN7S7250C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C88S7250C11__8S7250C148S7250C13__7S7250C1[] = {
  ABISELECT(-86120,-64268),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S7250C14D1Ev,_ZTvn1056_n28_N8S7250C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S7250C14D0Ev,_ZTvn1056_n28_N8S7250C14D0Ev),
  (VTBL_ENTRY)&_ZN7S7250C82v9Ev,
};
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C9__A__8S7250C148S7250C13__7S7250C1[] = {
  ABISELECT(84360,62904),
  ABISELECT(84312,62864),
  ABISELECT(-144,-112),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C77S7250C9__A3__8S7250C148S7250C13__7S7250C1[] = {
  ABISELECT(84216,62800),
  ABISELECT(-288,-216),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
extern void _ZN8S7250C153v12Ev();
static  VTBL_ENTRY _tg__ZTV8S7250C15__8S7250C148S7250C13__7S7250C1[] = {
  ABISELECT(83800,62472),
  ABISELECT(83752,62432),
  ABISELECT(-704,-544),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
  (VTBL_ENTRY)&_ZN8S7250C153v12Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C77S7250C98S7250C15__A4__8S7250C148S7250C13__7S7250C1[] = {
  ABISELECT(83656,62368),
  ABISELECT(-848,-648),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C28S7250C15__A3__8S7250C148S7250C13__7S7250C1[] = {
  ABISELECT(83240,62040),
  ABISELECT(83192,62000),
  ABISELECT(-1264,-976),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C78S7250C15__A5__8S7250C148S7250C13__7S7250C1[] = {
  ABISELECT(83096,61936),
  ABISELECT(-1408,-1080),
  (VTBL_ENTRY)&(_ZTI8S7250C14[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void ABISELECT(_ZTv0_n48_N8S7250C13D1Ev,_ZTv0_n24_N8S7250C13D1Ev)();
extern void ABISELECT(_ZThn84512_N8S7250C13D1Ev,_ZThn63020_N8S7250C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7250C13D0Ev,_ZTv0_n24_N8S7250C13D0Ev)();
extern void ABISELECT(_ZThn84512_N8S7250C13D0Ev,_ZThn63020_N8S7250C13D0Ev)() __attribute__((weak));
extern void _ZN7S7250C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C8__8S7250C13__7S7250C1[] = {
  0,
  ABISELECT(-84512,-63020),
  0,
  0,
  0,
  ABISELECT(-84512,-63020),
  (VTBL_ENTRY)&(_ZTI8S7250C13[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7250C13D1Ev,_ZTv0_n24_N8S7250C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7250C13D0Ev,_ZTv0_n24_N8S7250C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7250C82v9Ev,
};
extern void _ZN7S7250C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C2__8S7250C13__7S7250C1[] = {
  0,
  ABISELECT(-136,-92),
  ABISELECT(-184,-132),
  ABISELECT(-84640,-63108),
  (VTBL_ENTRY)&(_ZTI8S7250C13[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__A1__8S7250C13__7S7250C1[] = {
  0,
  0,
  0,
  ABISELECT(-84456,-62976),
  (VTBL_ENTRY)&(_ZTI8S7250C13[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S7250C13D1Ev,_ZTv0_n28_N8S7250C13D1Ev)();
extern void ABISELECT(_ZThn84784_N8S7250C13D1Ev,_ZThn63212_N8S7250C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7250C13D0Ev,_ZTv0_n28_N8S7250C13D0Ev)();
extern void ABISELECT(_ZThn84784_N8S7250C13D0Ev,_ZThn63212_N8S7250C13D0Ev)() __attribute__((weak));
extern void _ZN8S7250C113v11Ev();
static  VTBL_ENTRY _tg__ZTV8S7250C11__8S7250C13__7S7250C1[] = {
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-84784,-63212),
  ABISELECT(1632,1268),
  ABISELECT(1488,1156),
  ABISELECT(-328,-236),
  ABISELECT(-280,-196),
  ABISELECT(-84784,-63212),
  (VTBL_ENTRY)&(_ZTI8S7250C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7250C13D1Ev,_ZTv0_n28_N8S7250C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7250C13D0Ev,_ZTv0_n28_N8S7250C13D0Ev),
  (VTBL_ENTRY)&_ZN8S7250C113v11Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__A1__8S7250C13__7S7250C1[] = {
  0,
  0,
  0,
  ABISELECT(-1768,-1352),
  ABISELECT(-86272,-64368),
  (VTBL_ENTRY)&(_ZTI8S7250C13[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C9__8S7250C13__7S7250C1[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1912,-1464),
  ABISELECT(-1960,-1504),
  ABISELECT(-86416,-64480),
  (VTBL_ENTRY)&(_ZTI8S7250C13[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C77S7250C9__A2__8S7250C13__7S7250C1[] = {
  ABISELECT(-2056,-1568),
  ABISELECT(-86560,-64584),
  (VTBL_ENTRY)&(_ZTI8S7250C13[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
extern void ABISELECT(_ZTvn1336_n56_N8S7250C13D1Ev,_ZTvn1056_n28_N8S7250C13D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N8S7250C13D0Ev,_ZTvn1056_n28_N8S7250C13D0Ev)();
extern void _ZN7S7250C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C88S7250C11__A1__8S7250C13__7S7250C1[] = {
  ABISELECT(-86120,-64268),
  (VTBL_ENTRY)&(_ZTI8S7250C13[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S7250C13D1Ev,_ZTvn1056_n28_N8S7250C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S7250C13D0Ev,_ZTvn1056_n28_N8S7250C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7250C82v9Ev,
};
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C98S7250C14__A1__8S7250C13__7S7250C1[] = {
  ABISELECT(84360,62904),
  ABISELECT(84312,62864),
  ABISELECT(-144,-112),
  (VTBL_ENTRY)&(_ZTI8S7250C13[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C77S7250C98S7250C14__A3__8S7250C13__7S7250C1[] = {
  ABISELECT(84216,62800),
  ABISELECT(-288,-216),
  (VTBL_ENTRY)&(_ZTI8S7250C13[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
extern void _ZN8S7250C153v12Ev();
static  VTBL_ENTRY _tg__ZTV8S7250C158S7250C14__8S7250C13__7S7250C1[] = {
  ABISELECT(83800,62472),
  ABISELECT(83752,62432),
  ABISELECT(-704,-544),
  (VTBL_ENTRY)&(_ZTI8S7250C13[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
  (VTBL_ENTRY)&_ZN8S7250C153v12Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C77S7250C98S7250C158S7250C14__A4__8S7250C13__7S7250C1[] = {
  ABISELECT(83656,62368),
  ABISELECT(-848,-648),
  (VTBL_ENTRY)&(_ZTI8S7250C13[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C28S7250C158S7250C14__A4__8S7250C13__7S7250C1[] = {
  ABISELECT(83240,62040),
  ABISELECT(83192,62000),
  ABISELECT(-1264,-976),
  (VTBL_ENTRY)&(_ZTI8S7250C13[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C78S7250C158S7250C14__A5__8S7250C13__7S7250C1[] = {
  ABISELECT(83096,61936),
  ABISELECT(-1408,-1080),
  (VTBL_ENTRY)&(_ZTI8S7250C13[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C2__A1__7S7250C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-184,-132),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C2__A1__7S7250C1[] = {
  0,
  0,
  0,
  ABISELECT(184,132),
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN8S7250C11D1Ev();
extern void _ZN8S7250C11D0Ev();
extern void _ZN8S7250C113v11Ev();
static  VTBL_ENTRY _tg__ZTV8S7250C11__7S7250C1[] = {
  ABISELECT(1632,1268),
  ABISELECT(1488,1156),
  ABISELECT(-328,-236),
  ABISELECT(-280,-196),
  0,
  (VTBL_ENTRY)&(_ZTI8S7250C11[0]),
  (VTBL_ENTRY)&_ZN8S7250C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7250C11D0Ev,
  (VTBL_ENTRY)&_ZN8S7250C113v11Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7250C128S7250C11__7S7250C1[] = {
  ABISELECT(1488,1156),
  ABISELECT(-328,-236),
  ABISELECT(-280,-196),
  0,
  (VTBL_ENTRY)&(_ZTI8S7250C12[0]),
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__8S7250C128S7250C11__7S7250C1[] = {
  0,
  0,
  0,
  ABISELECT(328,236),
  (VTBL_ENTRY)&(_ZTI8S7250C12[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__8S7250C128S7250C11__7S7250C1[] = {
  0,
  0,
  0,
  ABISELECT(-1768,-1352),
  ABISELECT(-1488,-1156),
  (VTBL_ENTRY)&(_ZTI8S7250C12[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__8S7250C11__7S7250C1[] = {
  0,
  0,
  0,
  ABISELECT(328,236),
  (VTBL_ENTRY)&(_ZTI8S7250C11[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__8S7250C11__7S7250C1[] = {
  0,
  0,
  0,
  ABISELECT(-1768,-1352),
  ABISELECT(-1488,-1156),
  (VTBL_ENTRY)&(_ZTI8S7250C11[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C9__8S7250C11__7S7250C1[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1912,-1464),
  ABISELECT(-1960,-1504),
  ABISELECT(-1632,-1268),
  (VTBL_ENTRY)&(_ZTI8S7250C11[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C77S7250C9__A1__8S7250C11__7S7250C1[] = {
  ABISELECT(-2056,-1568),
  ABISELECT(-1776,-1372),
  (VTBL_ENTRY)&(_ZTI8S7250C11[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__A1__7S7250C1[] = {
  ABISELECT(-1768,-1352),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C7[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C22v6Ev();
extern void _ZN7S7250C93v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C9__7S7250C1[] = {
  ABISELECT(-1912,-1464),
  ABISELECT(-1960,-1504),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7250C93v10Ev,
};
extern void _ZN7S7250C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C27S7250C9__A2__7S7250C1[] = {
  ABISELECT(-1912,-1464),
  ABISELECT(-1960,-1504),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C22v6Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C27S7250C9__A2__7S7250C1[] = {
  0,
  0,
  0,
  ABISELECT(1960,1504),
  (VTBL_ENTRY)&(_ZTI7S7250C2[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C77S7250C9__A2__7S7250C1[] = {
  ABISELECT(-2056,-1568),
  0,
  (VTBL_ENTRY)&(_ZTI7S7250C7[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C3__7S7250C9__7S7250C1[] = {
  0,
  0,
  0,
  ABISELECT(1960,1504),
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
extern void _ZN7S7250C32v3Ev();
extern void _ZN7S7250C32v4Ev();
extern void _ZN7S7250C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7250C7__7S7250C9__7S7250C1[] = {
  ABISELECT(-2056,-1568),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S7250C9[0]),
  (VTBL_ENTRY)&_ZN7S7250C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7250C32v5Ev,
};
static  VTT_ENTRY vtt_S7250C1[] = {
  {&(_ZTV7S7250C1[9]),  9,146},
  {&(_tg__ZTV7S7250C2__A__7S7250C1[4]),  4,5},
  {&(_tg__ZTV7S7250C3__7S7250C2__A__7S7250C1[5]),  5,8},
  {&(_tg__ZTV8S7250C13__7S7250C1[9]),  9,16},
  {&(_tg__ZTV8S7250C148S7250C13__7S7250C1[7]),  7,12},
  {&(_tg__ZTV7S7250C78S7250C148S7250C13__7S7250C1[3]),  3,6},
  {&(_tg__ZTV7S7250C98S7250C148S7250C13__A1__7S7250C1[4]),  4,6},
  {&(_tg__ZTV7S7250C27S7250C98S7250C148S7250C13__A3__7S7250C1[4]),  4,5},
  {&(_tg__ZTV7S7250C3__7S7250C27S7250C98S7250C148S7250C13__A3__7S7250C1[5]),  5,8},
  {&(_tg__ZTV7S7250C77S7250C98S7250C148S7250C13__A3__7S7250C1[3]),  3,6},
  {&(_tg__ZTV7S7250C3__7S7250C98S7250C148S7250C13__A1__7S7250C1[5]),  5,8},
  {&(_tg__ZTV7S7250C7__7S7250C98S7250C148S7250C13__A1__7S7250C1[3]),  3,6},
  {&(_tg__ZTV8S7250C158S7250C148S7250C13__7S7250C1[4]),  4,7},
  {&(_tg__ZTV7S7250C98S7250C158S7250C148S7250C13__A2__7S7250C1[4]),  4,6},
  {&(_tg__ZTV7S7250C27S7250C98S7250C158S7250C148S7250C13__A4__7S7250C1[4]),  4,5},
  {&(_tg__ZTV7S7250C3__7S7250C27S7250C98S7250C158S7250C148S7250C13__A4__7S7250C1[5]),  5,8},
  {&(_tg__ZTV7S7250C77S7250C98S7250C158S7250C148S7250C13__A4__7S7250C1[3]),  3,6},
  {&(_tg__ZTV7S7250C3__7S7250C98S7250C158S7250C148S7250C13__A2__7S7250C1[5]),  5,8},
  {&(_tg__ZTV7S7250C7__7S7250C98S7250C158S7250C148S7250C13__A2__7S7250C1[3]),  3,6},
  {&(_tg__ZTV7S7250C28S7250C158S7250C148S7250C13__A5__7S7250C1[4]),  4,5},
  {&(_tg__ZTV7S7250C3__7S7250C28S7250C158S7250C148S7250C13__A5__7S7250C1[5]),  5,8},
  {&(_tg__ZTV7S7250C78S7250C158S7250C148S7250C13__A5__7S7250C1[3]),  3,6},
  {&(_tg__ZTV7S7250C3__8S7250C158S7250C148S7250C13__7S7250C1[5]),  5,8},
  {&(_tg__ZTV7S7250C77S7250C9__8S7250C158S7250C148S7250C13__7S7250C1[3]),  3,6},
  {&(_tg__ZTV7S7250C2__A1__8S7250C158S7250C148S7250C13__7S7250C1[4]),  4,5},
  {&(_tg__ZTV7S7250C7__A1__8S7250C158S7250C148S7250C13__7S7250C1[3]),  3,6},
  {&(_tg__ZTV8S7250C11__8S7250C148S7250C13__7S7250C1[12]),  12,15},
  {&(_tg__ZTV7S7250C3__A1__8S7250C148S7250C13__7S7250C1[5]),  5,8},
  {&(_tg__ZTV7S7250C7__A1__8S7250C148S7250C13__7S7250C1[6]),  6,9},
  {&(_tg__ZTV7S7250C9__8S7250C148S7250C13__7S7250C1[9]),  9,11},
  {&(_tg__ZTV7S7250C77S7250C9__A2__8S7250C148S7250C13__7S7250C1[3]),  3,6},
  {&(_tg__ZTV7S7250C88S7250C11__8S7250C148S7250C13__7S7250C1[2]),  2,8},
  {&(_tg__ZTV7S7250C9__A__8S7250C148S7250C13__7S7250C1[4]),  4,6},
  {&(_tg__ZTV7S7250C77S7250C9__A3__8S7250C148S7250C13__7S7250C1[3]),  3,6},
  {&(_tg__ZTV8S7250C15__8S7250C148S7250C13__7S7250C1[4]),  4,7},
  {&(_tg__ZTV7S7250C77S7250C98S7250C15__A4__8S7250C148S7250C13__7S7250C1[3]),  3,6},
  {&(_tg__ZTV7S7250C28S7250C15__A3__8S7250C148S7250C13__7S7250C1[4]),  4,5},
  {&(_tg__ZTV7S7250C78S7250C15__A5__8S7250C148S7250C13__7S7250C1[3]),  3,6},
  {&(_tg__ZTV7S7250C8__8S7250C13__7S7250C1[7]),  7,13},
  {&(_tg__ZTV7S7250C2__8S7250C13__7S7250C1[5]),  5,6},
  {&(_tg__ZTV7S7250C3__A1__8S7250C13__7S7250C1[5]),  5,8},
  {&(_tg__ZTV8S7250C11__8S7250C13__7S7250C1[12]),  12,15},
  {&(_tg__ZTV7S7250C7__A1__8S7250C13__7S7250C1[6]),  6,9},
  {&(_tg__ZTV7S7250C9__8S7250C13__7S7250C1[9]),  9,11},
  {&(_tg__ZTV7S7250C77S7250C9__A2__8S7250C13__7S7250C1[3]),  3,6},
  {&(_tg__ZTV7S7250C88S7250C11__A1__8S7250C13__7S7250C1[2]),  2,8},
  {&(_tg__ZTV7S7250C98S7250C14__A1__8S7250C13__7S7250C1[4]),  4,6},
  {&(_tg__ZTV7S7250C77S7250C98S7250C14__A3__8S7250C13__7S7250C1[3]),  3,6},
  {&(_tg__ZTV8S7250C158S7250C14__8S7250C13__7S7250C1[4]),  4,7},
  {&(_tg__ZTV7S7250C77S7250C98S7250C158S7250C14__A4__8S7250C13__7S7250C1[3]),  3,6},
  {&(_tg__ZTV7S7250C28S7250C158S7250C14__A4__8S7250C13__7S7250C1[4]),  4,5},
  {&(_tg__ZTV7S7250C78S7250C158S7250C14__A5__8S7250C13__7S7250C1[3]),  3,6},
  {&(_ZTV7S7250C1[75]),  75,146},
  {&(_ZTV7S7250C1[27]),  27,146},
  {&(_ZTV7S7250C1[85]),  85,146},
  {&(_ZTV7S7250C1[96]),  96,146},
  {&(_ZTV7S7250C1[109]),  109,146},
  {&(_ZTV7S7250C1[126]),  126,146},
  {&(_ZTV7S7250C1[138]),  138,146},
  {&(_ZTV7S7250C1[143]),  143,146},
  {&(_ZTV7S7250C1[114]),  114,146},
  {&(_ZTV7S7250C1[38]),  38,146},
  {&(_ZTV7S7250C1[43]),  43,146},
  {&(_ZTV7S7250C1[50]),  50,146},
  {&(_ZTV7S7250C1[56]),  56,146},
  {&(_ZTV7S7250C1[63]),  63,146},
  {&(_ZTV7S7250C1[67]),  67,146},
  {&(_tg__ZTV7S7250C2__A1__7S7250C1[4]),  4,5},
  {&(_tg__ZTV7S7250C3__7S7250C2__A1__7S7250C1[5]),  5,8},
  {&(_tg__ZTV8S7250C11__7S7250C1[6]),  6,9},
  {&(_tg__ZTV8S7250C128S7250C11__7S7250C1[5]),  5,5},
  {&(_tg__ZTV7S7250C3__8S7250C128S7250C11__7S7250C1[5]),  5,8},
  {&(_tg__ZTV7S7250C7__8S7250C128S7250C11__7S7250C1[6]),  6,9},
  {&(_tg__ZTV7S7250C3__8S7250C11__7S7250C1[5]),  5,8},
  {&(_tg__ZTV7S7250C7__8S7250C11__7S7250C1[6]),  6,9},
  {&(_tg__ZTV7S7250C9__8S7250C11__7S7250C1[9]),  9,11},
  {&(_tg__ZTV7S7250C77S7250C9__A1__8S7250C11__7S7250C1[3]),  3,6},
  {&(_tg__ZTV7S7250C7__A1__7S7250C1[3]),  3,6},
  {&(_tg__ZTV7S7250C9__7S7250C1[4]),  4,6},
  {&(_tg__ZTV7S7250C27S7250C9__A2__7S7250C1[4]),  4,5},
  {&(_tg__ZTV7S7250C3__7S7250C27S7250C9__A2__7S7250C1[5]),  5,8},
  {&(_tg__ZTV7S7250C77S7250C9__A2__7S7250C1[3]),  3,6},
  {&(_tg__ZTV7S7250C3__7S7250C9__7S7250C1[5]),  5,8},
  {&(_tg__ZTV7S7250C7__7S7250C9__7S7250C1[3]),  3,6},
};
extern VTBL_ENTRY _ZTI7S7250C1[];
extern  VTBL_ENTRY _ZTV7S7250C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7250C1[];
static VTBL_ENTRY alt_thunk_names14[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7250C13D0Ev,_ZTv0_n28_N8S7250C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn84784_N8S7250C13D0Ev,_ZThn63212_N8S7250C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7250C13D1Ev,_ZTv0_n28_N8S7250C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn84784_N8S7250C13D1Ev,_ZThn63212_N8S7250C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7250C13D0Ev,_ZTv0_n24_N8S7250C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn84512_N8S7250C13D0Ev,_ZThn63020_N8S7250C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7250C13D1Ev,_ZTv0_n24_N8S7250C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn84512_N8S7250C13D1Ev,_ZThn63020_N8S7250C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7250C14D0Ev,_ZTv0_n28_N8S7250C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn84784_N8S7250C14D0Ev,_ZThn63212_N8S7250C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7250C14D1Ev,_ZTv0_n28_N8S7250C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn84784_N8S7250C14D1Ev,_ZThn63212_N8S7250C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7250C1D0Ev,_ZTv0_n28_N7S7250C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn94992_N7S7250C1D0Ev,_ZThn70812_N7S7250C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7250C1D1Ev,_ZTv0_n28_N7S7250C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn94992_N7S7250C1D1Ev,_ZThn70812_N7S7250C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7250C1D0Ev,_ZTv0_n24_N7S7250C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn94720_N7S7250C1D0Ev,_ZThn70620_N7S7250C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7250C1D1Ev,_ZTv0_n24_N7S7250C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn94720_N7S7250C1D1Ev,_ZThn70620_N7S7250C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7250C1 = {  "S7250C1", // class name
  bases_S7250C1, 44,
  &(vtc_S7250C1[0]), // expected_vtbl_contents
  &(vtt_S7250C1[0]), // expected_vtt_contents
  ABISELECT(97184,72512), // object size
  NSPAIRA(_ZTI7S7250C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7250C1),146, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7250C1),84, //virtual table table var
  32, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names14,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19470C5  : S3216C8_nt {
  ::S3216C8_nt s19470c5f0[3];
  ::S3216C8_nt s19470c5f1[2];
  void *s19470c5f2;
  short s19470c5f3;
  ::S3216C8_nt s19470c5f4;
  virtual void  v2(); // _ZN8S19470C52v2Ev
  virtual void  v3(); // _ZN8S19470C52v3Ev
  virtual void  v4(); // _ZN8S19470C52v4Ev
  ~S19470C5(); // tgen
  S19470C5(); // tgen
};
//SIG(-1 S19470C5) C1{ BC2{ m Fi} v1 v2 v3 FC2[3] FC2[2] Fp Fs FC2}


void  S19470C5 ::v2(){vfunc_called(this, "_ZN8S19470C52v2Ev");}
void  S19470C5 ::v3(){vfunc_called(this, "_ZN8S19470C52v3Ev");}
void  S19470C5 ::v4(){vfunc_called(this, "_ZN8S19470C52v4Ev");}
S19470C5 ::~S19470C5(){ note_dtor("S19470C5", this);} // tgen
S19470C5 ::S19470C5(){ note_ctor("S19470C5", this);} // tgen

static void Test_S19470C5()
{
  extern Class_Descriptor cd_S19470C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,11)];
    init_test(&cd_S19470C5, buf);
    S19470C5 *dp, &lv = *(dp=new (buf) S19470C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S19470C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19470C5)");
    check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(8,4), "S19470C5");
    check_field_offset(lv, s19470c5f0, ABISELECT(12,8), "S19470C5.s19470c5f0");
    check_field_offset(lv, s19470c5f1, ABISELECT(24,20), "S19470C5.s19470c5f1");
    check_field_offset(lv, s19470c5f2, ABISELECT(32,28), "S19470C5.s19470c5f2");
    check_field_offset(lv, s19470c5f3, ABISELECT(40,32), "S19470C5.s19470c5f3");
    check_field_offset(lv, s19470c5f4, ABISELECT(44,36), "S19470C5.s19470c5f4");
    test_class_info(&lv, &cd_S19470C5);
    dp->~S19470C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19470C5(Test_S19470C5, "S19470C5", ABISELECT(48,40));

#else // __cplusplus

extern void _ZN8S19470C5C1Ev();
extern void _ZN8S19470C5D1Ev();
Name_Map name_map_S19470C5[] = {
  NSPAIR(_ZN8S19470C5C1Ev),
  NSPAIR(_ZN8S19470C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S19470C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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 _ZTI8S19470C5[];
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY vtc_S19470C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C5[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
Class_Descriptor cd_S19470C5 = {  "S19470C5", // class name
  bases_S19470C5, 1,
  &(vtc_S19470C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,40), // object size
  NSPAIRA(_ZTI8S19470C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19470C5),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  S19470C6  : S19470C5 , virtual S3216C8_nt {
  long double s19470c6f0;
  __tsi64 s19470c6f1;
  ::S19470C5 s19470c6f2;
  void *s19470c6f3;
  short s19470c6f4[3];
  ~S19470C6(); // tgen
  S19470C6(); // tgen
};
//SIG(-1 S19470C6) C1{ BC2{ BC3{ m Fi} v1 v2 v3 FC3[3] FC3[2] Fp Fs FC3} VBC3 FD FL FC2 Fp Fs[3]}


S19470C6 ::~S19470C6(){ note_dtor("S19470C6", this);} // tgen
S19470C6 ::S19470C6(){ note_ctor("S19470C6", this);} // tgen

static void Test_S19470C6()
{
  extern Class_Descriptor cd_S19470C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,30)];
    init_test(&cd_S19470C6, buf);
    S19470C6 *dp, &lv = *(dp=new (buf) S19470C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,116), "sizeof(S19470C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19470C6)");
    check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*), ABISELECT(8,4), "S19470C6");
    check_base_class_offset(lv, (S19470C5*), 0, "S19470C6");
    /*is_ambiguous_... S19470C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(136,112), "S19470C6");
    check_field_offset(lv, s19470c6f0, ABISELECT(48,40), "S19470C6.s19470c6f0");
    check_field_offset(lv, s19470c6f1, ABISELECT(64,52), "S19470C6.s19470c6f1");
    check_field_offset(lv, s19470c6f2, ABISELECT(72,60), "S19470C6.s19470c6f2");
    check_field_offset(lv, s19470c6f3, ABISELECT(120,100), "S19470C6.s19470c6f3");
    check_field_offset(lv, s19470c6f4, ABISELECT(128,104), "S19470C6.s19470c6f4");
    test_class_info(&lv, &cd_S19470C6);
    dp->~S19470C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19470C6(Test_S19470C6, "S19470C6", ABISELECT(144,116));

#else // __cplusplus

extern void _ZN8S19470C6C1Ev();
extern void _ZN8S19470C6D1Ev();
Name_Map name_map_S19470C6[] = {
  NSPAIR(_ZN8S19470C6C1Ev),
  NSPAIR(_ZN8S19470C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S19470C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S19470C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19470C6[];
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY vtc_S19470C6[] = {
  ABISELECT(136,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern VTBL_ENTRY _ZTV8S19470C6[];
static  VTT_ENTRY vtt_S19470C6[] = {
  {&(_ZTV8S19470C6[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
Class_Descriptor cd_S19470C6 = {  "S19470C6", // class name
  bases_S19470C6, 3,
  &(vtc_S19470C6[0]), // expected_vtbl_contents
  &(vtt_S19470C6[0]), // expected_vtt_contents
  ABISELECT(144,116), // object size
  NSPAIRA(_ZTI8S19470C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19470C6),6, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19470C6),1, //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  S19470C3  : virtual S3216C8_nt , virtual S19470C5 , virtual S19470C6 {
  void *s19470c3f0[2];
  int s19470c3f1;
  ::S19470C6 s19470c3f2[8];
  long double s19470c3f3[9];
  ~S19470C3(); // tgen
  S19470C3(); // tgen
};
//SIG(-1 S19470C3) C1{ VBC2{ m Fi} VBC3{ BC2 v1 v2 v3 FC2[3] FC2[2] Fp Fs FC2} VBC4{ BC3 VBC2 FD FL FC3 Fp Fs[3]} Fp[2] Fi FC4[8] FD[9]}


S19470C3 ::~S19470C3(){ note_dtor("S19470C3", this);} // tgen
S19470C3 ::S19470C3(){ note_ctor("S19470C3", this);} // tgen

static void Test_S19470C3()
{
  extern Class_Descriptor cd_S19470C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(97,303)];
    init_test(&cd_S19470C3, buf);
    S19470C3 *dp, &lv = *(dp=new (buf) S19470C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1536,1208), "sizeof(S19470C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19470C3)");
    /*is_ambiguous_... S19470C3::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(1328,1052), "S19470C3");
    /*is_ambiguous_... S19470C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*), ABISELECT(1328,1052), "S19470C3");
    /*is_ambiguous_... S19470C3::S19470C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*), ABISELECT(1344,1060), "S19470C3");
    /*is_ambiguous_... S19470C3::S19470C5 */ AMB_check_base_class_offset(lv, (S19470C5*), ABISELECT(1336,1056), "S19470C3");
    check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*), ABISELECT(1400,1100), "S19470C3");
    check_base_class_offset(lv, (S19470C5*)(S19470C6*), ABISELECT(1392,1096), "S19470C3");
    check_base_class_offset(lv, (S19470C6*), ABISELECT(1392,1096), "S19470C3");
    check_field_offset(lv, s19470c3f0, ABISELECT(8,4), "S19470C3.s19470c3f0");
    check_field_offset(lv, s19470c3f1, ABISELECT(24,12), "S19470C3.s19470c3f1");
    check_field_offset(lv, s19470c3f2, ABISELECT(32,16), "S19470C3.s19470c3f2");
    check_field_offset(lv, s19470c3f3, ABISELECT(1184,944), "S19470C3.s19470c3f3");
    test_class_info(&lv, &cd_S19470C3);
    dp->~S19470C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19470C3(Test_S19470C3, "S19470C3", ABISELECT(1536,1208));

#else // __cplusplus

extern void _ZN8S19470C3C1Ev();
extern void _ZN8S19470C3D1Ev();
Name_Map name_map_S19470C3[] = {
  NSPAIR(_ZN8S19470C3C1Ev),
  NSPAIR(_ZN8S19470C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
static Base_Class bases_S19470C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(1328,1052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1344,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19470C5,    ABISELECT(1336,1056), //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1400,1100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19470C5,    ABISELECT(1392,1096), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C6,    ABISELECT(1392,1096), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //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 _ZTI8S19470C3[];
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY vtc_S19470C3[] = {
  ABISELECT(1392,1096),
  ABISELECT(1336,1056),
  ABISELECT(1328,1052),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C3[0]),
  0,
  0,
  0,
  ABISELECT(-1336,-1056),
  (VTBL_ENTRY)&(_ZTI8S19470C3[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  0,
  0,
  0,
  ABISELECT(-64,-44),
  ABISELECT(-1392,-1096),
  (VTBL_ENTRY)&(_ZTI8S19470C3[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern VTBL_ENTRY _ZTV8S19470C3[];
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C3[] = {
  ABISELECT(-64,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
static  VTT_ENTRY vtt_S19470C3[] = {
  {&(_ZTV8S19470C3[5]),  5,22},
  {&(_ZTV8S19470C3[10]),  10,22},
  {&(_ZTV8S19470C3[19]),  19,22},
  {&(_tg__ZTV8S19470C6__8S19470C3[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S19470C3[];
extern  VTBL_ENTRY _ZTV8S19470C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C3[];
Class_Descriptor cd_S19470C3 = {  "S19470C3", // class name
  bases_S19470C3, 6,
  &(vtc_S19470C3[0]), // expected_vtbl_contents
  &(vtt_S19470C3[0]), // expected_vtt_contents
  ABISELECT(1536,1208), // object size
  NSPAIRA(_ZTI8S19470C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19470C3),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19470C3),4, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19470C8  : virtual S19470C5 , virtual S3216C8_nt {
  ::S19470C5 s19470c8f0;
  long double s19470c8f1;
  void *s19470c8f2[2];
  ::S19470C5 s19470c8f3;
  virtual void  v5(); // _ZN8S19470C82v5Ev
  ~S19470C8(); // tgen
  S19470C8(); // tgen
};
//SIG(-1 S19470C8) C1{ VBC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC3 v1 FC2 FD Fp[2] FC2}


void  S19470C8 ::v5(){vfunc_called(this, "_ZN8S19470C82v5Ev");}
S19470C8 ::~S19470C8(){ note_dtor("S19470C8", this);} // tgen
S19470C8 ::S19470C8(){ note_ctor("S19470C8", this);} // tgen

static void Test_S19470C8()
{
  extern Class_Descriptor cd_S19470C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,38)];
    init_test(&cd_S19470C8, buf);
    S19470C8 *dp, &lv = *(dp=new (buf) S19470C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,148), "sizeof(S19470C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19470C8)");
    check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*), ABISELECT(152,108), "S19470C8");
    check_base_class_offset(lv, (S19470C5*), ABISELECT(144,104), "S19470C8");
    /*is_ambiguous_... S19470C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(192,144), "S19470C8");
    check_field_offset(lv, s19470c8f0, ABISELECT(8,4), "S19470C8.s19470c8f0");
    check_field_offset(lv, s19470c8f1, ABISELECT(64,44), "S19470C8.s19470c8f1");
    check_field_offset(lv, s19470c8f2, ABISELECT(80,56), "S19470C8.s19470c8f2");
    check_field_offset(lv, s19470c8f3, ABISELECT(96,64), "S19470C8.s19470c8f3");
    test_class_info(&lv, &cd_S19470C8);
    dp->~S19470C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19470C8(Test_S19470C8, "S19470C8", ABISELECT(208,148));

#else // __cplusplus

extern void _ZN8S19470C8C1Ev();
extern void _ZN8S19470C8D1Ev();
Name_Map name_map_S19470C8[] = {
  NSPAIR(_ZN8S19470C8C1Ev),
  NSPAIR(_ZN8S19470C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S19470C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(152,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
    1, //immediately_derived
  0, 0},
  {&cd_S19470C5,    ABISELECT(144,104), //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(192,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19470C8[];
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY vtc_S19470C8[] = {
  ABISELECT(192,144),
  ABISELECT(144,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  0,
  0,
  0,
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern VTBL_ENTRY _ZTV8S19470C8[];
static  VTT_ENTRY vtt_S19470C8[] = {
  {&(_ZTV8S19470C8[4]),  4,13},
  {&(_ZTV8S19470C8[10]),  10,13},
};
extern VTBL_ENTRY _ZTI8S19470C8[];
extern  VTBL_ENTRY _ZTV8S19470C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C8[];
Class_Descriptor cd_S19470C8 = {  "S19470C8", // class name
  bases_S19470C8, 3,
  &(vtc_S19470C8[0]), // expected_vtbl_contents
  &(vtt_S19470C8[0]), // expected_vtt_contents
  ABISELECT(208,148), // object size
  NSPAIRA(_ZTI8S19470C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19470C8),13, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19470C8),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  S19470C7  : virtual S19470C5 , virtual S3216C8_nt , S19470C8 , S19470C6 {
  void *s19470c7f0[2];
  long s19470c7f1;
  int s19470c7f2;
  ::S19470C5 s19470c7f3[5];
  virtual void  v6(); // _ZN8S19470C72v6Ev
  ~S19470C7(); // tgen
  S19470C7(); // tgen
};
//SIG(-1 S19470C7) C1{ VBC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC3 BC4{ VBC2 VBC3 v5 FC2 FD Fp[2] FC2} BC5{ BC2 VBC3 FD FL FC2 Fp Fs[3]} v1 Fp[2] Fl Fi FC2[5]}


void  S19470C7 ::v6(){vfunc_called(this, "_ZN8S19470C72v6Ev");}
S19470C7 ::~S19470C7(){ note_dtor("S19470C7", this);} // tgen
S19470C7 ::S19470C7(){ note_ctor("S19470C7", this);} // tgen

static void Test_S19470C7()
{
  extern Class_Descriptor cd_S19470C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(39,120)];
    init_test(&cd_S19470C7, buf);
    S19470C7 *dp, &lv = *(dp=new (buf) S19470C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(608,476), "sizeof(S19470C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19470C7)");
    /*is_ambiguous_... S19470C7::S19470C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*), ABISELECT(560,436), "S19470C7");
    /*is_ambiguous_... S19470C7::S19470C5 */ AMB_check_base_class_offset(lv, (S19470C5*), ABISELECT(552,432), "S19470C7");
    check_base_class_offset(lv, (S19470C5*)(S19470C8*), ABISELECT(552,432), "S19470C7");
    /*is_ambiguous_... S19470C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(600,472), "S19470C7");
    /*is_ambiguous_... S19470C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C8*), ABISELECT(600,472), "S19470C7");
    /*is_ambiguous_... S19470C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*), ABISELECT(600,472), "S19470C7");
    check_base_class_offset(lv, (S19470C8*), 0, "S19470C7");
    check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*), ABISELECT(152,108), "S19470C7");
    check_base_class_offset(lv, (S19470C5*)(S19470C6*), ABISELECT(144,104), "S19470C7");
    check_base_class_offset(lv, (S19470C6*), ABISELECT(144,104), "S19470C7");
    check_field_offset(lv, s19470c7f0, ABISELECT(280,216), "S19470C7.s19470c7f0");
    check_field_offset(lv, s19470c7f1, ABISELECT(296,224), "S19470C7.s19470c7f1");
    check_field_offset(lv, s19470c7f2, ABISELECT(304,228), "S19470C7.s19470c7f2");
    check_field_offset(lv, s19470c7f3, ABISELECT(312,232), "S19470C7.s19470c7f3");
    test_class_info(&lv, &cd_S19470C7);
    dp->~S19470C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19470C7(Test_S19470C7, "S19470C7", ABISELECT(608,476));

#else // __cplusplus

extern void _ZN8S19470C7C1Ev();
extern void _ZN8S19470C7D1Ev();
Name_Map name_map_S19470C7[] = {
  NSPAIR(_ZN8S19470C7C1Ev),
  NSPAIR(_ZN8S19470C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C8;
extern VTBL_ENTRY _ZTI8S19470C8[];
extern  VTBL_ENTRY _ZTV8S19470C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
static Base_Class bases_S19470C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(560,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
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19470C5,    ABISELECT(552,432), //bcp->offset
    12, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(600,472), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19470C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(152,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19470C5,    ABISELECT(144,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19470C6,    ABISELECT(144,104), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19470C7[];
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY vtc_S19470C7[] = {
  ABISELECT(600,472),
  ABISELECT(552,432),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
  ABISELECT(456,368),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  0,
  0,
  0,
  ABISELECT(-552,-432),
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern VTBL_ENTRY _ZTV8S19470C7[];
extern void _ZN8S19470C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C8__8S19470C7[] = {
  ABISELECT(600,472),
  ABISELECT(552,432),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C8__8S19470C7[] = {
  0,
  0,
  0,
  ABISELECT(-552,-432),
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C7[] = {
  ABISELECT(456,368),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
static  VTT_ENTRY vtt_S19470C7[] = {
  {&(_ZTV8S19470C7[4]),  4,20},
  {&(_tg__ZTV8S19470C8__8S19470C7[4]),  4,5},
  {&(_tg__ZTV8S19470C5__8S19470C8__8S19470C7[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C7[3]),  3,6},
  {&(_ZTV8S19470C7[17]),  17,20},
  {&(_ZTV8S19470C7[9]),  9,20},
};
extern VTBL_ENTRY _ZTI8S19470C7[];
extern  VTBL_ENTRY _ZTV8S19470C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C7[];
Class_Descriptor cd_S19470C7 = {  "S19470C7", // class name
  bases_S19470C7, 7,
  &(vtc_S19470C7[0]), // expected_vtbl_contents
  &(vtt_S19470C7[0]), // expected_vtt_contents
  ABISELECT(608,476), // object size
  NSPAIRA(_ZTI8S19470C7),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19470C7),20, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19470C7),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  S19470C9  : S19470C5 {
  void *s19470c9f0[7];
  int s19470c9f1[2];
  __tsi64 s19470c9f2;
  int s19470c9f3;
  virtual  ~S19470C9(); // _ZN8S19470C9D1Ev
  virtual void  v7(); // _ZN8S19470C92v7Ev
  S19470C9(); // tgen
};
//SIG(-1 S19470C9) C1{ BC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} vd v1 Fp[7] Fi[2] FL Fi}


 S19470C9 ::~S19470C9(){ note_dtor("S19470C9", this);}
void  S19470C9 ::v7(){vfunc_called(this, "_ZN8S19470C92v7Ev");}
S19470C9 ::S19470C9(){ note_ctor("S19470C9", this);} // tgen

static void Test_S19470C9()
{
  extern Class_Descriptor cd_S19470C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,23)];
    init_test(&cd_S19470C9, buf);
    S19470C9 *dp, &lv = *(dp=new (buf) S19470C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,88), "sizeof(S19470C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19470C9)");
    check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*), ABISELECT(8,4), "S19470C9");
    check_base_class_offset(lv, (S19470C5*), 0, "S19470C9");
    check_field_offset(lv, s19470c9f0, ABISELECT(48,40), "S19470C9.s19470c9f0");
    check_field_offset(lv, s19470c9f1, ABISELECT(104,68), "S19470C9.s19470c9f1");
    check_field_offset(lv, s19470c9f2, ABISELECT(112,76), "S19470C9.s19470c9f2");
    check_field_offset(lv, s19470c9f3, ABISELECT(120,84), "S19470C9.s19470c9f3");
    test_class_info(&lv, &cd_S19470C9);
    dp->~S19470C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19470C9(Test_S19470C9, "S19470C9", ABISELECT(128,88));

#else // __cplusplus

extern void _ZN8S19470C9C1Ev();
extern void _ZN8S19470C9D1Ev();
Name_Map name_map_S19470C9[] = {
  NSPAIR(_ZN8S19470C9C1Ev),
  NSPAIR(_ZN8S19470C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
static Base_Class bases_S19470C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S19470C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19470C9[];
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN8S19470C9D1Ev();
extern void _ZN8S19470C9D0Ev();
extern void _ZN8S19470C92v7Ev();
static  VTBL_ENTRY vtc_S19470C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C9[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19470C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19470C9D0Ev,
  (VTBL_ENTRY)&_ZN8S19470C92v7Ev,
};
extern VTBL_ENTRY _ZTI8S19470C9[];
extern  VTBL_ENTRY _ZTV8S19470C9[];
Class_Descriptor cd_S19470C9 = {  "S19470C9", // class name
  bases_S19470C9, 2,
  &(vtc_S19470C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,88), // object size
  NSPAIRA(_ZTI8S19470C9),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19470C9),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  S19470C2  : S19470C3 , S3216C8_nt , virtual S19470C7 , S19470C9 {
  int s19470c2f0;
  void *s19470c2f1;
  int s19470c2f2;
  virtual  ~S19470C2(); // _ZN8S19470C2D2Ev
  virtual void  v8(); // _ZN8S19470C22v8Ev
  S19470C2(); // tgen
};
//SIG(-1 S19470C2) C1{ BC2{ VBC3{ m Fi} VBC4{ BC3 v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC5{ BC4 VBC3 FD FL FC4 Fp Fs[3]} Fp[2] Fi FC5[8] FD[9]} BC3 VBC6{ VBC4 VBC3 BC7{ VBC4 VBC3 v5 FC4 FD Fp[2] FC4} BC5 v6 Fp[2] Fl Fi FC4[5]} BC8{ BC4 vd v7 Fp[7] Fi[2] FL Fi} vd v1 Fi Fp Fi}


 S19470C2 ::~S19470C2(){ note_dtor("S19470C2", this);}
void  S19470C2 ::v8(){vfunc_called(this, "_ZN8S19470C22v8Ev");}
S19470C2 ::S19470C2(){ note_ctor("S19470C2", this);} // tgen

static void Test_S19470C2()
{
  extern Class_Descriptor cd_S19470C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(141,437)];
    init_test(&cd_S19470C2, buf);
    S19470C2 *dp, &lv = *(dp=new (buf) S19470C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2240,1744), "sizeof(S19470C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19470C2)");
    /*is_ambiguous_... S19470C3::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C3*), ABISELECT(1476,1156), "S19470C2");
    /*is_ambiguous_... S19470C2::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*), ABISELECT(1476,1156), "S19470C2");
    /*is_ambiguous_... S19470C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C7*), ABISELECT(1476,1156), "S19470C2");
    /*is_ambiguous_... S19470C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C8*)(S19470C7*), ABISELECT(1476,1156), "S19470C2");
    /*is_ambiguous_... S19470C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*)(S19470C7*), ABISELECT(1476,1156), "S19470C2");
    /*is_ambiguous_... S19470C2::S19470C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*), ABISELECT(1488,1164), "S19470C2");
    /*is_ambiguous_... S19470C3::S19470C5 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C3*), ABISELECT(1480,1160), "S19470C2");
    /*is_ambiguous_... S19470C7::S19470C5 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C7*), ABISELECT(1480,1160), "S19470C2");
    check_base_class_offset(lv, (S19470C5*)(S19470C8*)(S19470C7*), ABISELECT(1480,1160), "S19470C2");
    /*is_ambiguous_... S19470C2::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*), ABISELECT(1544,1204), "S19470C2");
    /*is_ambiguous_... S19470C2::S19470C6 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C6*), ABISELECT(1536,1200), "S19470C2");
    check_base_class_offset(lv, (S19470C6*)(S19470C3*), ABISELECT(1536,1200), "S19470C2");
    check_base_class_offset(lv, (S19470C3*), 0, "S19470C2");
    /*is_ambiguous_... S19470C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(1328,1052), "S19470C2");
    check_base_class_offset(lv, (S19470C8*)(S19470C7*), ABISELECT(1680,1312), "S19470C2");
    check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*)(S19470C7*), ABISELECT(1832,1420), "S19470C2");
    check_base_class_offset(lv, (S19470C5*)(S19470C6*)(S19470C7*), ABISELECT(1824,1416), "S19470C2");
    check_base_class_offset(lv, (S19470C6*)(S19470C7*), ABISELECT(1824,1416), "S19470C2");
    check_base_class_offset(lv, (S19470C7*), ABISELECT(1680,1312), "S19470C2");
    check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C9*), ABISELECT(1344,1060), "S19470C2");
    check_base_class_offset(lv, (S19470C5*)(S19470C9*), ABISELECT(1336,1056), "S19470C2");
    check_base_class_offset(lv, (S19470C9*), ABISELECT(1336,1056), "S19470C2");
    check_field_offset(lv, s19470c2f0, ABISELECT(1460,1144), "S19470C2.s19470c2f0");
    check_field_offset(lv, s19470c2f1, ABISELECT(1464,1148), "S19470C2.s19470c2f1");
    check_field_offset(lv, s19470c2f2, ABISELECT(1472,1152), "S19470C2.s19470c2f2");
    test_class_info(&lv, &cd_S19470C2);
    dp->~S19470C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19470C2(Test_S19470C2, "S19470C2", ABISELECT(2240,1744));

#else // __cplusplus

extern void _ZN8S19470C2C1Ev();
extern void _ZN8S19470C2D2Ev();
Name_Map name_map_S19470C2[] = {
  NSPAIR(_ZN8S19470C2C1Ev),
  NSPAIR(_ZN8S19470C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
extern Class_Descriptor cd_S19470C3;
extern VTBL_ENTRY _ZTI8S19470C3[];
extern  VTBL_ENTRY _ZTV8S19470C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C8;
extern VTBL_ENTRY _ZTI8S19470C8[];
extern  VTBL_ENTRY _ZTV8S19470C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
extern Class_Descriptor cd_S19470C7;
extern VTBL_ENTRY _ZTI8S19470C7[];
extern  VTBL_ENTRY _ZTV8S19470C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C7[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C9;
extern VTBL_ENTRY _ZTI8S19470C9[];
extern  VTBL_ENTRY _ZTV8S19470C9[];
static Base_Class bases_S19470C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(1476,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
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1488,1164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C5,    ABISELECT(1480,1160), //bcp->offset
    17, //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
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1544,1204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C5,    ABISELECT(1536,1200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C6,    ABISELECT(1536,1200), //bcp->offset
    25, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19470C3,    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_S3216C8_nt,    ABISELECT(1328,1052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19470C8,    ABISELECT(1680,1312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1832,1420), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C5,    ABISELECT(1824,1416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19470C6,    ABISELECT(1824,1416), //bcp->offset
    45, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19470C7,    ABISELECT(1680,1312), //bcp->offset
    34, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1344,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19470C5,    ABISELECT(1336,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
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19470C9,    ABISELECT(1336,1056), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19470C2[];
extern void _ZN8S19470C2D1Ev();
extern void _ZN8S19470C2D0Ev();
extern void _ZN8S19470C22v8Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void ABISELECT(_ZThn1336_N8S19470C2D1Ev,_ZThn1056_N8S19470C2D1Ev)();
extern void ABISELECT(_ZThn1336_N8S19470C2D0Ev,_ZThn1056_N8S19470C2D0Ev)();
extern void _ZN8S19470C92v7Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY vtc_S19470C2[] = {
  ABISELECT(1680,1312),
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19470C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19470C22v8Ev,
  ABISELECT(-1336,-1056),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1336_N8S19470C2D1Ev,_ZThn1056_N8S19470C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1336_N8S19470C2D0Ev,_ZThn1056_N8S19470C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19470C92v7Ev,
  0,
  0,
  0,
  ABISELECT(-1480,-1160),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(-1536,-1200),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  ABISELECT(-1680,-1312),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
  ABISELECT(-348,-260),
  ABISELECT(-1824,-1416),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern VTBL_ENTRY _ZTV8S19470C2[];
static  VTBL_ENTRY _tg__ZTV8S19470C3__8S19470C2[] = {
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C3[0]),
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C3__8S19470C2[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1160),
  (VTBL_ENTRY)&(_ZTI8S19470C3[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C3__8S19470C2[] = {
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(-1536,-1200),
  (VTBL_ENTRY)&(_ZTI8S19470C3[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C2[] = {
  ABISELECT(-60,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C7__8S19470C2[] = {
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C88S19470C7__8S19470C2[] = {
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C88S19470C7__8S19470C2[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C7__A1__8S19470C2[] = {
  ABISELECT(-348,-260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C7__8S19470C2[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C7__8S19470C2[] = {
  ABISELECT(-348,-260),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
static  VTT_ENTRY vtt_S19470C2[] = {
  {&(_ZTV8S19470C2[6]),  6,51},
  {&(_tg__ZTV8S19470C3__8S19470C2[5]),  5,5},
  {&(_tg__ZTV8S19470C5__8S19470C3__8S19470C2[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C3__8S19470C2[6]),  6,9},
  {&(_ZTV8S19470C2[22]),  22,51},
  {&(_ZTV8S19470C2[31]),  31,51},
  {&(_ZTV8S19470C2[43]),  43,51},
  {&(_ZTV8S19470C2[48]),  48,51},
  {&(_tg__ZTV8S19470C6__8S19470C2[3]),  3,6},
  {&(_tg__ZTV8S19470C7__8S19470C2[4]),  4,6},
  {&(_tg__ZTV8S19470C88S19470C7__8S19470C2[4]),  4,5},
  {&(_tg__ZTV8S19470C5__8S19470C88S19470C7__8S19470C2[5]),  5,8},
  {&(_tg__ZTV8S19470C68S19470C7__A1__8S19470C2[3]),  3,6},
  {&(_tg__ZTV8S19470C5__8S19470C7__8S19470C2[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C7__8S19470C2[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S19470C2[];
extern  VTBL_ENTRY _ZTV8S19470C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C2[];
Class_Descriptor cd_S19470C2 = {  "S19470C2", // class name
  bases_S19470C2, 16,
  &(vtc_S19470C2[0]), // expected_vtbl_contents
  &(vtt_S19470C2[0]), // expected_vtt_contents
  ABISELECT(2240,1744), // object size
  NSPAIRA(_ZTI8S19470C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19470C2),51, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19470C2),15, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19470C11  : S19470C5 , S19470C6 , virtual S19470C2 {
  void *s19470c11f0;
  int s19470c11f1;
  ::S19470C5 s19470c11f2;
  int s19470c11f3;
  void *s19470c11f4;
  ~S19470C11(); // tgen
  S19470C11(); // tgen
};
//SIG(-1 S19470C11) C1{ BC2{ BC3{ m Fi} v1 v2 v3 FC3[3] FC3[2] Fp Fs FC3} BC4{ BC2 VBC3 FD FL FC2 Fp Fs[3]} VBC5{ BC6{ VBC3 VBC2 VBC4 Fp[2] Fi FC4[8] FD[9]} BC3 VBC7{ VBC2 VBC3 BC8{ VBC2 VBC3 v4 FC2 FD Fp[2] FC2} BC4 v5 Fp[2] Fl Fi FC2[5]} BC9{ BC2 vd v6 Fp[7] Fi[2] FL Fi} vd v7 Fi Fp Fi} Fp Fi FC2 Fi Fp}


S19470C11 ::~S19470C11(){ note_dtor("S19470C11", this);} // tgen
S19470C11 ::S19470C11(){ note_ctor("S19470C11", this);} // tgen

static void Test_S19470C11()
{
  extern Class_Descriptor cd_S19470C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(158,489)];
    init_test(&cd_S19470C11, buf);
    S19470C11 *dp, &lv = *(dp=new (buf) S19470C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2512,1952), "sizeof(S19470C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19470C11)");
    /*is_ambiguous_... S19470C11::S19470C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*), ABISELECT(8,4), "S19470C11");
    /*is_ambiguous_... S19470C11::S19470C5 */ AMB_check_base_class_offset(lv, (S19470C5*), 0, "S19470C11");
    /*is_ambiguous_... S19470C11::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*), ABISELECT(56,44), "S19470C11");
    /*is_ambiguous_... S19470C11::S19470C6 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C6*), ABISELECT(48,40), "S19470C11");
    /*is_ambiguous_... S19470C11::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*), ABISELECT(264,208), "S19470C11");
    /*is_ambiguous_... S19470C3::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C3*)(S19470C2*), ABISELECT(264,208), "S19470C11");
    /*is_ambiguous_... S19470C11::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*), ABISELECT(264,208), "S19470C11");
    /*is_ambiguous_... S19470C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C7*), ABISELECT(264,208), "S19470C11");
    /*is_ambiguous_... S19470C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C8*)(S19470C7*), ABISELECT(264,208), "S19470C11");
    /*is_ambiguous_... S19470C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*)(S19470C7*), ABISELECT(264,208), "S19470C11");
    /*is_ambiguous_... S19470C11::S19470C6 */ AMB_check_base_class_offset(lv, (S19470C6*), ABISELECT(48,40), "S19470C11");
    /*is_ambiguous_... S19470C11::S19470C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*), ABISELECT(1760,1372), "S19470C11");
    /*is_ambiguous_... S19470C3::S19470C5 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C3*)(S19470C2*), ABISELECT(1752,1368), "S19470C11");
    /*is_ambiguous_... S19470C7::S19470C5 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C7*), ABISELECT(1752,1368), "S19470C11");
    check_base_class_offset(lv, (S19470C5*)(S19470C8*)(S19470C7*), ABISELECT(1752,1368), "S19470C11");
    /*is_ambiguous_... S19470C11::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*), ABISELECT(1816,1412), "S19470C11");
    /*is_ambiguous_... S19470C11::S19470C6 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C6*), ABISELECT(1808,1408), "S19470C11");
    check_base_class_offset(lv, (S19470C6*)(S19470C3*)(S19470C2*), ABISELECT(1808,1408), "S19470C11");
    check_base_class_offset(lv, (S19470C3*)(S19470C2*), ABISELECT(272,212), "S19470C11");
    /*is_ambiguous_... S19470C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C2*), ABISELECT(1600,1264), "S19470C11");
    check_base_class_offset(lv, (S19470C8*)(S19470C7*), ABISELECT(1952,1520), "S19470C11");
    check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*)(S19470C7*), ABISELECT(2104,1628), "S19470C11");
    check_base_class_offset(lv, (S19470C5*)(S19470C6*)(S19470C7*), ABISELECT(2096,1624), "S19470C11");
    check_base_class_offset(lv, (S19470C6*)(S19470C7*), ABISELECT(2096,1624), "S19470C11");
    check_base_class_offset(lv, (S19470C7*)(S19470C2*), ABISELECT(1952,1520), "S19470C11");
    check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C9*)(S19470C2*), ABISELECT(1616,1272), "S19470C11");
    check_base_class_offset(lv, (S19470C5*)(S19470C9*)(S19470C2*), ABISELECT(1608,1268), "S19470C11");
    check_base_class_offset(lv, (S19470C9*)(S19470C2*), ABISELECT(1608,1268), "S19470C11");
    check_base_class_offset(lv, (S19470C2*), ABISELECT(272,212), "S19470C11");
    check_field_offset(lv, s19470c11f0, ABISELECT(184,152), "S19470C11.s19470c11f0");
    check_field_offset(lv, s19470c11f1, ABISELECT(192,156), "S19470C11.s19470c11f1");
    check_field_offset(lv, s19470c11f2, ABISELECT(200,160), "S19470C11.s19470c11f2");
    check_field_offset(lv, s19470c11f3, ABISELECT(248,200), "S19470C11.s19470c11f3");
    check_field_offset(lv, s19470c11f4, ABISELECT(256,204), "S19470C11.s19470c11f4");
    test_class_info(&lv, &cd_S19470C11);
    dp->~S19470C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19470C11(Test_S19470C11, "S19470C11", ABISELECT(2512,1952));

#else // __cplusplus

extern void _ZN9S19470C11C1Ev();
extern void _ZN9S19470C11D1Ev();
Name_Map name_map_S19470C11[] = {
  NSPAIR(_ZN9S19470C11C1Ev),
  NSPAIR(_ZN9S19470C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
extern Class_Descriptor cd_S19470C3;
extern VTBL_ENTRY _ZTI8S19470C3[];
extern  VTBL_ENTRY _ZTV8S19470C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C8;
extern VTBL_ENTRY _ZTI8S19470C8[];
extern  VTBL_ENTRY _ZTV8S19470C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
extern Class_Descriptor cd_S19470C7;
extern VTBL_ENTRY _ZTI8S19470C7[];
extern  VTBL_ENTRY _ZTV8S19470C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C7[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C9;
extern VTBL_ENTRY _ZTI8S19470C9[];
extern  VTBL_ENTRY _ZTV8S19470C9[];
extern Class_Descriptor cd_S19470C2;
extern VTBL_ENTRY _ZTI8S19470C2[];
extern  VTBL_ENTRY _ZTV8S19470C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C2[];
static Base_Class bases_S19470C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S19470C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3216C8_nt,    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
    3, //immediately_derived
  0, 0},
  {&cd_S19470C5,    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
    13, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(264,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
    5, //immediately_derived
  0, 1},
  {&cd_S19470C6,    ABISELECT(48,40), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(1760,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
    7, //immediately_derived
  0, 0},
  {&cd_S19470C5,    ABISELECT(1752,1368), //bcp->offset
    41, //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
    1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1816,1412), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19470C5,    ABISELECT(1808,1408), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19470C6,    ABISELECT(1808,1408), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19470C3,    ABISELECT(272,212), //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
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1600,1264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C8,    ABISELECT(1952,1520), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(2104,1628), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C5,    ABISELECT(2096,1624), //bcp->offset
    -1, //bcp->virtual_function_table_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
    16, //immediately_derived
  0, 0},
  {&cd_S19470C6,    ABISELECT(2096,1624), //bcp->offset
    69, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19470C7,    ABISELECT(1952,1520), //bcp->offset
    58, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1616,1272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19470C5,    ABISELECT(1608,1268), //bcp->offset
    -1, //bcp->virtual_function_table_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
    20, //immediately_derived
  0, 0},
  {&cd_S19470C9,    ABISELECT(1608,1268), //bcp->offset
    33, //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
    21, //immediately_derived
  0, 0},
  {&cd_S19470C2,    ABISELECT(272,212), //bcp->offset
    18, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19470C11[];
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN9S19470C11D1Ev();
extern void _ZN9S19470C11D0Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void ABISELECT(_ZTv0_n56_N9S19470C11D1Ev,_ZTv0_n28_N9S19470C11D1Ev)();
extern void ABISELECT(_ZThn272_N9S19470C11D1Ev,_ZThn212_N9S19470C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19470C11D0Ev,_ZTv0_n28_N9S19470C11D0Ev)();
extern void ABISELECT(_ZThn272_N9S19470C11D0Ev,_ZThn212_N9S19470C11D0Ev)() __attribute__((weak));
extern void _ZN8S19470C22v8Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N9S19470C11D1Ev,_ZTvn1056_n28_N9S19470C11D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N9S19470C11D0Ev,_ZTvn1056_n28_N9S19470C11D0Ev)();
extern void _ZN8S19470C92v7Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY vtc_S19470C11[] = {
  ABISELECT(1952,1520),
  ABISELECT(1808,1408),
  ABISELECT(1752,1368),
  ABISELECT(272,212),
  ABISELECT(264,208),
  0,
  (VTBL_ENTRY)&(_ZTI9S19470C11[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  (VTBL_ENTRY)&_ZN9S19470C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19470C11D0Ev,
  ABISELECT(216,168),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI9S19470C11[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-272,-212),
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  ABISELECT(-272,-212),
  (VTBL_ENTRY)&(_ZTI9S19470C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19470C11D1Ev,_ZTv0_n28_N9S19470C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19470C11D0Ev,_ZTv0_n28_N9S19470C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19470C22v8Ev,
  ABISELECT(-1608,-1268),
  (VTBL_ENTRY)&(_ZTI9S19470C11[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19470C11D1Ev,_ZTvn1056_n28_N9S19470C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19470C11D0Ev,_ZTvn1056_n28_N9S19470C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19470C92v7Ev,
  0,
  0,
  0,
  ABISELECT(-1752,-1368),
  (VTBL_ENTRY)&(_ZTI9S19470C11[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-1808,-1408),
  (VTBL_ENTRY)&(_ZTI9S19470C11[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-1952,-1520),
  (VTBL_ENTRY)&(_ZTI9S19470C11[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
  ABISELECT(-1832,-1416),
  ABISELECT(-2096,-1624),
  (VTBL_ENTRY)&(_ZTI9S19470C11[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern VTBL_ENTRY _ZTV9S19470C11[];
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__A__9S19470C11[] = {
  ABISELECT(216,168),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C2D1Ev();
extern void _ZN8S19470C2D0Ev();
extern void _ZN8S19470C22v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C2__9S19470C11[] = {
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19470C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19470C22v8Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19470C38S19470C2__9S19470C11[] = {
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C3[0]),
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C38S19470C2__9S19470C11[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1156),
  (VTBL_ENTRY)&(_ZTI8S19470C3[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C38S19470C2__9S19470C11[] = {
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-1536,-1196),
  (VTBL_ENTRY)&(_ZTI8S19470C3[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C2__9S19470C11[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1156),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C2__9S19470C11[] = {
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-1536,-1196),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C7__8S19470C2__9S19470C11[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-1680,-1308),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C7__A1__8S19470C2__9S19470C11[] = {
  ABISELECT(-1832,-1416),
  ABISELECT(-1824,-1412),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__A1__9S19470C11[] = {
  ABISELECT(-1544,-1200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C7__9S19470C11[] = {
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C88S19470C7__9S19470C11[] = {
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C88S19470C7__9S19470C11[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C7__A2__9S19470C11[] = {
  ABISELECT(-1832,-1416),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C7__9S19470C11[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C7__9S19470C11[] = {
  ABISELECT(-1832,-1416),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
static  VTT_ENTRY vtt_S19470C11[] = {
  {&(_ZTV9S19470C11[7]),  7,75},
  {&(_tg__ZTV8S19470C6__A__9S19470C11[3]),  3,6},
  {&(_ZTV9S19470C11[15]),  15,75},
  {&(_ZTV9S19470C11[30]),  30,75},
  {&(_ZTV9S19470C11[46]),  46,75},
  {&(_ZTV9S19470C11[55]),  55,75},
  {&(_ZTV9S19470C11[67]),  67,75},
  {&(_ZTV9S19470C11[72]),  72,75},
  {&(_ZTV9S19470C11[35]),  35,75},
  {&(_tg__ZTV8S19470C2__9S19470C11[6]),  6,9},
  {&(_tg__ZTV8S19470C38S19470C2__9S19470C11[5]),  5,5},
  {&(_tg__ZTV8S19470C5__8S19470C38S19470C2__9S19470C11[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C38S19470C2__9S19470C11[6]),  6,9},
  {&(_tg__ZTV8S19470C5__8S19470C2__9S19470C11[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C2__9S19470C11[6]),  6,9},
  {&(_tg__ZTV8S19470C7__8S19470C2__9S19470C11[9]),  9,11},
  {&(_tg__ZTV8S19470C68S19470C7__A1__8S19470C2__9S19470C11[3]),  3,6},
  {&(_tg__ZTV8S19470C6__A1__9S19470C11[3]),  3,6},
  {&(_tg__ZTV8S19470C7__9S19470C11[4]),  4,6},
  {&(_tg__ZTV8S19470C88S19470C7__9S19470C11[4]),  4,5},
  {&(_tg__ZTV8S19470C5__8S19470C88S19470C7__9S19470C11[5]),  5,8},
  {&(_tg__ZTV8S19470C68S19470C7__A2__9S19470C11[3]),  3,6},
  {&(_tg__ZTV8S19470C5__8S19470C7__9S19470C11[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C7__9S19470C11[3]),  3,6},
};
extern VTBL_ENTRY _ZTI9S19470C11[];
extern  VTBL_ENTRY _ZTV9S19470C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19470C11[];
static VTBL_ENTRY alt_thunk_names15[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19470C11D0Ev,_ZTv0_n28_N9S19470C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S19470C11D0Ev,_ZThn212_N9S19470C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19470C11D1Ev,_ZTv0_n28_N9S19470C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S19470C11D1Ev,_ZThn212_N9S19470C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19470C11 = {  "S19470C11", // class name
  bases_S19470C11, 22,
  &(vtc_S19470C11[0]), // expected_vtbl_contents
  &(vtt_S19470C11[0]), // expected_vtt_contents
  ABISELECT(2512,1952), // object size
  NSPAIRA(_ZTI9S19470C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19470C11),75, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19470C11),24, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names15,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19470C10  : virtual S19470C11 {
  long double s19470c10f0;
  int s19470c10f1;
  long s19470c10f2[2];
  __tsi64 s19470c10f3[6];
  virtual  ~S19470C10(); // _ZN9S19470C10D2Ev
  S19470C10(); // tgen
};
//SIG(-1 S19470C10) C1{ VBC2{ BC3{ BC4{ m Fi} v1 v2 v3 FC4[3] FC4[2] Fp Fs FC4} BC5{ BC3 VBC4 FD FL FC3 Fp Fs[3]} VBC6{ BC7{ VBC4 VBC3 VBC5 Fp[2] Fi FC5[8] FD[9]} BC4 VBC8{ VBC3 VBC4 BC9{ VBC3 VBC4 v4 FC3 FD Fp[2] FC3} BC5 v5 Fp[2] Fl Fi FC3[5]} BC10{ BC3 vd v6 Fp[7] Fi[2] FL Fi} vd v7 Fi Fp Fi} Fp Fi FC3 Fi Fp} vd FD Fi Fl[2] FL[6]}


 S19470C10 ::~S19470C10(){ note_dtor("S19470C10", this);}
S19470C10 ::S19470C10(){ note_ctor("S19470C10", this);} // tgen

static void Test_S19470C10()
{
  extern Class_Descriptor cd_S19470C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(165,508)];
    init_test(&cd_S19470C10, buf);
    S19470C10 *dp, &lv = *(dp=new (buf) S19470C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2624,2028), "sizeof(S19470C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19470C10)");
    /*is_ambiguous_... S19470C11::S19470C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C11*), ABISELECT(120,80), "S19470C10");
    /*is_ambiguous_... S19470C11::S19470C5 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C11*), ABISELECT(112,76), "S19470C10");
    /*is_ambiguous_... S19470C11::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*)(S19470C11*), ABISELECT(168,120), "S19470C10");
    /*is_ambiguous_... S19470C11::S19470C6 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C6*)(S19470C11*), ABISELECT(160,116), "S19470C10");
    /*is_ambiguous_... S19470C11::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*)(S19470C11*), ABISELECT(376,284), "S19470C10");
    /*is_ambiguous_... S19470C3::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C3*)(S19470C2*), ABISELECT(376,284), "S19470C10");
    /*is_ambiguous_... S19470C10::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*), ABISELECT(376,284), "S19470C10");
    /*is_ambiguous_... S19470C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C7*), ABISELECT(376,284), "S19470C10");
    /*is_ambiguous_... S19470C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C8*)(S19470C7*), ABISELECT(376,284), "S19470C10");
    /*is_ambiguous_... S19470C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*)(S19470C7*), ABISELECT(376,284), "S19470C10");
    /*is_ambiguous_... S19470C11::S19470C6 */ AMB_check_base_class_offset(lv, (S19470C6*)(S19470C11*), ABISELECT(160,116), "S19470C10");
    /*is_ambiguous_... S19470C10::S19470C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*), ABISELECT(1872,1448), "S19470C10");
    /*is_ambiguous_... S19470C3::S19470C5 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C3*)(S19470C2*), ABISELECT(1864,1444), "S19470C10");
    /*is_ambiguous_... S19470C7::S19470C5 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C7*), ABISELECT(1864,1444), "S19470C10");
    check_base_class_offset(lv, (S19470C5*)(S19470C8*)(S19470C7*), ABISELECT(1864,1444), "S19470C10");
    /*is_ambiguous_... S19470C10::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*), ABISELECT(1928,1488), "S19470C10");
    /*is_ambiguous_... S19470C10::S19470C6 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C6*), ABISELECT(1920,1484), "S19470C10");
    check_base_class_offset(lv, (S19470C6*)(S19470C3*)(S19470C2*), ABISELECT(1920,1484), "S19470C10");
    check_base_class_offset(lv, (S19470C3*)(S19470C2*), ABISELECT(384,288), "S19470C10");
    /*is_ambiguous_... S19470C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C2*), ABISELECT(1712,1340), "S19470C10");
    check_base_class_offset(lv, (S19470C8*)(S19470C7*), ABISELECT(2064,1596), "S19470C10");
    check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*)(S19470C7*), ABISELECT(2216,1704), "S19470C10");
    check_base_class_offset(lv, (S19470C5*)(S19470C6*)(S19470C7*), ABISELECT(2208,1700), "S19470C10");
    check_base_class_offset(lv, (S19470C6*)(S19470C7*), ABISELECT(2208,1700), "S19470C10");
    check_base_class_offset(lv, (S19470C7*)(S19470C2*), ABISELECT(2064,1596), "S19470C10");
    check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C9*)(S19470C2*), ABISELECT(1728,1348), "S19470C10");
    check_base_class_offset(lv, (S19470C5*)(S19470C9*)(S19470C2*), ABISELECT(1720,1344), "S19470C10");
    check_base_class_offset(lv, (S19470C9*)(S19470C2*), ABISELECT(1720,1344), "S19470C10");
    check_base_class_offset(lv, (S19470C2*)(S19470C11*), ABISELECT(384,288), "S19470C10");
    check_base_class_offset(lv, (S19470C11*), ABISELECT(112,76), "S19470C10");
    check_field_offset(lv, s19470c10f0, ABISELECT(16,4), "S19470C10.s19470c10f0");
    check_field_offset(lv, s19470c10f1, ABISELECT(32,16), "S19470C10.s19470c10f1");
    check_field_offset(lv, s19470c10f2, ABISELECT(40,20), "S19470C10.s19470c10f2");
    check_field_offset(lv, s19470c10f3, ABISELECT(56,28), "S19470C10.s19470c10f3");
    test_class_info(&lv, &cd_S19470C10);
    dp->~S19470C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19470C10(Test_S19470C10, "S19470C10", ABISELECT(2624,2028));

#else // __cplusplus

extern void _ZN9S19470C10C1Ev();
extern void _ZN9S19470C10D2Ev();
Name_Map name_map_S19470C10[] = {
  NSPAIR(_ZN9S19470C10C1Ev),
  NSPAIR(_ZN9S19470C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
extern Class_Descriptor cd_S19470C3;
extern VTBL_ENTRY _ZTI8S19470C3[];
extern  VTBL_ENTRY _ZTV8S19470C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C8;
extern VTBL_ENTRY _ZTI8S19470C8[];
extern  VTBL_ENTRY _ZTV8S19470C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
extern Class_Descriptor cd_S19470C7;
extern VTBL_ENTRY _ZTI8S19470C7[];
extern  VTBL_ENTRY _ZTV8S19470C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C7[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C9;
extern VTBL_ENTRY _ZTI8S19470C9[];
extern  VTBL_ENTRY _ZTV8S19470C9[];
extern Class_Descriptor cd_S19470C2;
extern VTBL_ENTRY _ZTI8S19470C2[];
extern  VTBL_ENTRY _ZTV8S19470C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C2[];
extern Class_Descriptor cd_S19470C11;
extern VTBL_ENTRY _ZTI9S19470C11[];
extern  VTBL_ENTRY _ZTV9S19470C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19470C11[];
static Base_Class bases_S19470C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(120,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19470C5,    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
    12, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(168,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
    3, //immediately_derived
  0, 0},
  {&cd_S19470C5,    ABISELECT(160,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(376,284), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19470C6,    ABISELECT(160,116), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1872,1448), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C5,    ABISELECT(1864,1444), //bcp->offset
    55, //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
    1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1928,1488), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C5,    ABISELECT(1920,1484), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19470C6,    ABISELECT(1920,1484), //bcp->offset
    63, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19470C3,    ABISELECT(384,288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1712,1340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19470C8,    ABISELECT(2064,1596), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //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
    17, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(2216,1704), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C5,    ABISELECT(2208,1700), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19470C6,    ABISELECT(2208,1700), //bcp->offset
    83, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19470C7,    ABISELECT(2064,1596), //bcp->offset
    72, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1728,1348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C5,    ABISELECT(1720,1344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19470C9,    ABISELECT(1720,1344), //bcp->offset
    47, //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
    21, //immediately_derived
  0, 0},
  {&cd_S19470C2,    ABISELECT(384,288), //bcp->offset
    32, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19470C11,    ABISELECT(112,76), //bcp->offset
    10, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19470C10[];
extern void _ZN9S19470C10D1Ev();
extern void _ZN9S19470C10D0Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void ABISELECT(_ZTv0_n88_N9S19470C10D1Ev,_ZTv0_n44_N9S19470C10D1Ev)();
extern void ABISELECT(_ZThn112_N9S19470C10D1Ev,_ZThn76_N9S19470C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19470C10D0Ev,_ZTv0_n44_N9S19470C10D0Ev)();
extern void ABISELECT(_ZThn112_N9S19470C10D0Ev,_ZThn76_N9S19470C10D0Ev)() __attribute__((weak));
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void ABISELECT(_ZTv0_n56_N9S19470C10D1Ev,_ZTv0_n28_N9S19470C10D1Ev)();
extern void ABISELECT(_ZThn384_N9S19470C10D1Ev,_ZThn288_N9S19470C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19470C10D0Ev,_ZTv0_n28_N9S19470C10D0Ev)();
extern void ABISELECT(_ZThn384_N9S19470C10D0Ev,_ZThn288_N9S19470C10D0Ev)() __attribute__((weak));
extern void _ZN8S19470C22v8Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N9S19470C10D1Ev,_ZTvn1056_n28_N9S19470C10D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N9S19470C10D0Ev,_ZTvn1056_n28_N9S19470C10D0Ev)();
extern void _ZN8S19470C92v7Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY vtc_S19470C10[] = {
  ABISELECT(2064,1596),
  ABISELECT(1920,1484),
  ABISELECT(1864,1444),
  ABISELECT(384,288),
  ABISELECT(376,284),
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19470C10[0]),
  (VTBL_ENTRY)&_ZN9S19470C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19470C10D0Ev,
  ABISELECT(-112,-76),
  0,
  0,
  0,
  ABISELECT(1952,1520),
  ABISELECT(1808,1408),
  ABISELECT(1752,1368),
  ABISELECT(272,212),
  ABISELECT(264,208),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S19470C10[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19470C10D1Ev,_ZTv0_n44_N9S19470C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19470C10D0Ev,_ZTv0_n44_N9S19470C10D0Ev),
  ABISELECT(216,168),
  ABISELECT(-160,-116),
  (VTBL_ENTRY)&(_ZTI9S19470C10[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-384,-288),
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  ABISELECT(-384,-288),
  (VTBL_ENTRY)&(_ZTI9S19470C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19470C10D1Ev,_ZTv0_n28_N9S19470C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19470C10D0Ev,_ZTv0_n28_N9S19470C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19470C22v8Ev,
  ABISELECT(-1720,-1344),
  (VTBL_ENTRY)&(_ZTI9S19470C10[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19470C10D1Ev,_ZTvn1056_n28_N9S19470C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19470C10D0Ev,_ZTvn1056_n28_N9S19470C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19470C92v7Ev,
  0,
  0,
  0,
  ABISELECT(-1864,-1444),
  (VTBL_ENTRY)&(_ZTI9S19470C10[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-1920,-1484),
  (VTBL_ENTRY)&(_ZTI9S19470C10[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-2064,-1596),
  (VTBL_ENTRY)&(_ZTI9S19470C10[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
  ABISELECT(-1832,-1416),
  ABISELECT(-2208,-1700),
  (VTBL_ENTRY)&(_ZTI9S19470C10[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern VTBL_ENTRY _ZTV9S19470C10[];
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN9S19470C11D1Ev();
extern void _ZN9S19470C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19470C11__9S19470C10[] = {
  ABISELECT(1952,1520),
  ABISELECT(1808,1408),
  ABISELECT(1752,1368),
  ABISELECT(272,212),
  ABISELECT(264,208),
  0,
  (VTBL_ENTRY)&(_ZTI9S19470C11[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  (VTBL_ENTRY)&_ZN9S19470C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19470C11D0Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C69S19470C11__9S19470C10[] = {
  ABISELECT(216,168),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__A__9S19470C11__9S19470C10[] = {
  ABISELECT(216,168),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI9S19470C11[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19470C11D1Ev,_ZTv0_n28_N9S19470C11D1Ev)();
extern void ABISELECT(_ZThn272_N9S19470C11D1Ev,_ZThn212_N9S19470C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19470C11D0Ev,_ZTv0_n28_N9S19470C11D0Ev)();
extern void ABISELECT(_ZThn272_N9S19470C11D0Ev,_ZThn212_N9S19470C11D0Ev)() __attribute__((weak));
extern void _ZN8S19470C22v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C2__9S19470C11__9S19470C10[] = {
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-272,-212),
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  ABISELECT(-272,-212),
  (VTBL_ENTRY)&(_ZTI9S19470C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19470C11D1Ev,_ZTv0_n28_N9S19470C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19470C11D0Ev,_ZTv0_n28_N9S19470C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19470C22v8Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__A2__9S19470C11__9S19470C10[] = {
  0,
  0,
  0,
  ABISELECT(-1752,-1368),
  (VTBL_ENTRY)&(_ZTI9S19470C11[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__A1__9S19470C11__9S19470C10[] = {
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-1808,-1408),
  (VTBL_ENTRY)&(_ZTI9S19470C11[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C7__9S19470C11__9S19470C10[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-1952,-1520),
  (VTBL_ENTRY)&(_ZTI9S19470C11[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C7__A2__9S19470C11__9S19470C10[] = {
  ABISELECT(-1832,-1416),
  ABISELECT(-2096,-1624),
  (VTBL_ENTRY)&(_ZTI9S19470C11[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N9S19470C11D1Ev,_ZTvn1056_n28_N9S19470C11D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N9S19470C11D0Ev,_ZTvn1056_n28_N9S19470C11D0Ev)();
extern void _ZN8S19470C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C98S19470C2__9S19470C11__9S19470C10[] = {
  ABISELECT(-1608,-1268),
  (VTBL_ENTRY)&(_ZTI9S19470C11[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19470C11D1Ev,_ZTvn1056_n28_N9S19470C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19470C11D0Ev,_ZTvn1056_n28_N9S19470C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19470C92v7Ev,
};
extern void _ZN8S19470C2D1Ev();
extern void _ZN8S19470C2D0Ev();
extern void _ZN8S19470C22v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C2__9S19470C10[] = {
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19470C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19470C22v8Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19470C38S19470C2__9S19470C10[] = {
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C3[0]),
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C38S19470C2__9S19470C10[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1156),
  (VTBL_ENTRY)&(_ZTI8S19470C3[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C38S19470C2__9S19470C10[] = {
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-1536,-1196),
  (VTBL_ENTRY)&(_ZTI8S19470C3[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C2__9S19470C10[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1156),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C2__9S19470C10[] = {
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-1536,-1196),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C7__8S19470C2__9S19470C10[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-1680,-1308),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C7__A1__8S19470C2__9S19470C10[] = {
  ABISELECT(-1832,-1416),
  ABISELECT(-1824,-1412),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__A1__9S19470C10[] = {
  ABISELECT(-1544,-1200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C7__9S19470C10[] = {
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C88S19470C7__9S19470C10[] = {
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C88S19470C7__9S19470C10[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C7__A2__9S19470C10[] = {
  ABISELECT(-1832,-1416),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C7__9S19470C10[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C7__9S19470C10[] = {
  ABISELECT(-1832,-1416),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
static  VTT_ENTRY vtt_S19470C10[] = {
  {&(_ZTV9S19470C10[8]),  8,89},
  {&(_ZTV9S19470C10[21]),  21,89},
  {&(_ZTV9S19470C10[29]),  29,89},
  {&(_ZTV9S19470C10[44]),  44,89},
  {&(_ZTV9S19470C10[60]),  60,89},
  {&(_ZTV9S19470C10[69]),  69,89},
  {&(_ZTV9S19470C10[81]),  81,89},
  {&(_ZTV9S19470C10[86]),  86,89},
  {&(_ZTV9S19470C10[49]),  49,89},
  {&(_tg__ZTV9S19470C11__9S19470C10[7]),  7,12},
  {&(_tg__ZTV8S19470C69S19470C11__9S19470C10[3]),  3,6},
  {&(_tg__ZTV8S19470C6__A__9S19470C11__9S19470C10[3]),  3,6},
  {&(_tg__ZTV8S19470C2__9S19470C11__9S19470C10[12]),  12,15},
  {&(_tg__ZTV8S19470C5__A2__9S19470C11__9S19470C10[5]),  5,8},
  {&(_tg__ZTV8S19470C6__A1__9S19470C11__9S19470C10[6]),  6,9},
  {&(_tg__ZTV8S19470C7__9S19470C11__9S19470C10[9]),  9,11},
  {&(_tg__ZTV8S19470C68S19470C7__A2__9S19470C11__9S19470C10[3]),  3,6},
  {&(_tg__ZTV8S19470C98S19470C2__9S19470C11__9S19470C10[2]),  2,8},
  {&(_tg__ZTV8S19470C2__9S19470C10[6]),  6,9},
  {&(_tg__ZTV8S19470C38S19470C2__9S19470C10[5]),  5,5},
  {&(_tg__ZTV8S19470C5__8S19470C38S19470C2__9S19470C10[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C38S19470C2__9S19470C10[6]),  6,9},
  {&(_tg__ZTV8S19470C5__8S19470C2__9S19470C10[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C2__9S19470C10[6]),  6,9},
  {&(_tg__ZTV8S19470C7__8S19470C2__9S19470C10[9]),  9,11},
  {&(_tg__ZTV8S19470C68S19470C7__A1__8S19470C2__9S19470C10[3]),  3,6},
  {&(_tg__ZTV8S19470C6__A1__9S19470C10[3]),  3,6},
  {&(_tg__ZTV8S19470C7__9S19470C10[4]),  4,6},
  {&(_tg__ZTV8S19470C88S19470C7__9S19470C10[4]),  4,5},
  {&(_tg__ZTV8S19470C5__8S19470C88S19470C7__9S19470C10[5]),  5,8},
  {&(_tg__ZTV8S19470C68S19470C7__A2__9S19470C10[3]),  3,6},
  {&(_tg__ZTV8S19470C5__8S19470C7__9S19470C10[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C7__9S19470C10[3]),  3,6},
};
extern VTBL_ENTRY _ZTI9S19470C10[];
extern  VTBL_ENTRY _ZTV9S19470C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19470C10[];
static VTBL_ENTRY alt_thunk_names16[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19470C11D0Ev,_ZTv0_n28_N9S19470C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S19470C11D0Ev,_ZThn212_N9S19470C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19470C11D1Ev,_ZTv0_n28_N9S19470C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S19470C11D1Ev,_ZThn212_N9S19470C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19470C10D0Ev,_ZTv0_n28_N9S19470C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S19470C10D0Ev,_ZThn288_N9S19470C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19470C10D1Ev,_ZTv0_n28_N9S19470C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S19470C10D1Ev,_ZThn288_N9S19470C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19470C10D0Ev,_ZTv0_n44_N9S19470C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19470C10D0Ev,_ZThn76_N9S19470C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19470C10D1Ev,_ZTv0_n44_N9S19470C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19470C10D1Ev,_ZThn76_N9S19470C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19470C10 = {  "S19470C10", // class name
  bases_S19470C10, 23,
  &(vtc_S19470C10[0]), // expected_vtbl_contents
  &(vtt_S19470C10[0]), // expected_vtt_contents
  ABISELECT(2624,2028), // object size
  NSPAIRA(_ZTI9S19470C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19470C10),89, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19470C10),33, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names16,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19470C14  : virtual S3216C8_nt , S19470C7 , S19470C8 , S19470C6 {
  int s19470c14f0;
  ::S20643C15_nt s19470c14f1;
  void *s19470c14f2[2];
  virtual void  v9(); // _ZN9S19470C142v9Ev
  ~S19470C14(); // tgen
  S19470C14(); // tgen
};
//SIG(-1 S19470C14) C1{ VBC2{ m Fi} BC3{ VBC4{ BC2 v2 v3 v4 FC2[3] FC2[2] Fp Fs FC2} VBC2 BC5{ VBC4 VBC2 v5 FC4 FD Fp[2] FC4} BC6{ BC4 VBC2 FD FL FC4 Fp Fs[3]} v6 Fp[2] Fl Fi FC4[5]} BC5 BC6 v1 Fi FC7{} Fp[2]}


void  S19470C14 ::v9(){vfunc_called(this, "_ZN9S19470C142v9Ev");}
S19470C14 ::~S19470C14(){ note_dtor("S19470C14", this);} // tgen
S19470C14 ::S19470C14(){ note_ctor("S19470C14", this);} // tgen

static void Test_S19470C14()
{
  extern Class_Descriptor cd_S19470C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(59,178)];
    init_test(&cd_S19470C14, buf);
    S19470C14 *dp, &lv = *(dp=new (buf) S19470C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(928,708), "sizeof(S19470C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19470C14)");
    /*is_ambiguous_... S19470C14::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(864,664), "S19470C14");
    /*is_ambiguous_... S19470C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C7*), ABISELECT(864,664), "S19470C14");
    /*is_ambiguous_... S19470C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C8*)(S19470C7*), ABISELECT(864,664), "S19470C14");
    /*is_ambiguous_... S19470C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*)(S19470C7*), ABISELECT(864,664), "S19470C14");
    /*is_ambiguous_... S19470C14::S19470C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C8*), ABISELECT(864,664), "S19470C14");
    /*is_ambiguous_... S19470C14::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*), ABISELECT(864,664), "S19470C14");
    /*is_ambiguous_... S19470C14::S19470C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*), ABISELECT(880,672), "S19470C14");
    /*is_ambiguous_... S19470C7::S19470C5 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C7*), ABISELECT(872,668), "S19470C14");
    check_base_class_offset(lv, (S19470C5*)(S19470C8*)(S19470C7*), ABISELECT(872,668), "S19470C14");
    /*is_ambiguous_... S19470C14::S19470C8 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C8*), ABISELECT(872,668), "S19470C14");
    check_base_class_offset(lv, (S19470C8*)(S19470C7*), 0, "S19470C14");
    check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*)(S19470C7*), ABISELECT(152,108), "S19470C14");
    check_base_class_offset(lv, (S19470C5*)(S19470C6*)(S19470C7*), ABISELECT(144,104), "S19470C14");
    check_base_class_offset(lv, (S19470C6*)(S19470C7*), ABISELECT(144,104), "S19470C14");
    check_base_class_offset(lv, (S19470C7*), 0, "S19470C14");
    /*is_ambiguous_... S19470C14::S19470C8 */ AMB_check_base_class_offset(lv, (S19470C8*), ABISELECT(560,432), "S19470C14");
    /*is_ambiguous_... S19470C14::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*), ABISELECT(712,540), "S19470C14");
    /*is_ambiguous_... S19470C14::S19470C6 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C6*), ABISELECT(704,536), "S19470C14");
    /*is_ambiguous_... S19470C14::S19470C6 */ AMB_check_base_class_offset(lv, (S19470C6*), ABISELECT(704,536), "S19470C14");
    check_field_offset(lv, s19470c14f0, ABISELECT(840,648), "S19470C14.s19470c14f0");
    check_field_offset(lv, s19470c14f1, ABISELECT(844,652), "S19470C14.s19470c14f1");
    check_field_offset(lv, s19470c14f2, ABISELECT(848,656), "S19470C14.s19470c14f2");
    test_class_info(&lv, &cd_S19470C14);
    dp->~S19470C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19470C14(Test_S19470C14, "S19470C14", ABISELECT(928,708));

#else // __cplusplus

extern void _ZN9S19470C14C1Ev();
extern void _ZN9S19470C14D1Ev();
Name_Map name_map_S19470C14[] = {
  NSPAIR(_ZN9S19470C14C1Ev),
  NSPAIR(_ZN9S19470C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C8;
extern VTBL_ENTRY _ZTI8S19470C8[];
extern  VTBL_ENTRY _ZTV8S19470C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
extern Class_Descriptor cd_S19470C7;
extern VTBL_ENTRY _ZTI8S19470C7[];
extern  VTBL_ENTRY _ZTV8S19470C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C7[];
extern Class_Descriptor cd_S19470C8;
extern VTBL_ENTRY _ZTI8S19470C8[];
extern  VTBL_ENTRY _ZTV8S19470C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
static Base_Class bases_S19470C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(864,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
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(880,672), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C5,    ABISELECT(872,668), //bcp->offset
    24, //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
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19470C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(152,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19470C5,    ABISELECT(144,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19470C6,    ABISELECT(144,104), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19470C7,    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_S19470C8,    ABISELECT(560,432), //bcp->offset
    13, //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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(712,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
    10, //immediately_derived
  0, 0},
  {&cd_S19470C5,    ABISELECT(704,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
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19470C6,    ABISELECT(704,536), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19470C14[];
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
extern void _ZN9S19470C142v9Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY vtc_S19470C14[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI9S19470C14[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19470C142v9Ev,
  ABISELECT(720,560),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI9S19470C14[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  ABISELECT(304,232),
  ABISELECT(312,236),
  ABISELECT(-560,-432),
  (VTBL_ENTRY)&(_ZTI9S19470C14[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  ABISELECT(160,128),
  ABISELECT(-704,-536),
  (VTBL_ENTRY)&(_ZTI9S19470C14[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI9S19470C14[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern VTBL_ENTRY _ZTV9S19470C14[];
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C7__9S19470C14[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C88S19470C7__9S19470C14[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C88S19470C7__9S19470C14[] = {
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C7__9S19470C14[] = {
  ABISELECT(720,560),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C7__9S19470C14[] = {
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C7__9S19470C14[] = {
  ABISELECT(720,560),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C8__A1__9S19470C14[] = {
  ABISELECT(304,232),
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C8__A1__9S19470C14[] = {
  0,
  0,
  0,
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__A1__9S19470C14[] = {
  ABISELECT(160,128),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
static  VTT_ENTRY vtt_S19470C14[] = {
  {&(_ZTV9S19470C14[4]),  4,32},
  {&(_tg__ZTV8S19470C7__9S19470C14[4]),  4,6},
  {&(_tg__ZTV8S19470C88S19470C7__9S19470C14[4]),  4,5},
  {&(_tg__ZTV8S19470C5__8S19470C88S19470C7__9S19470C14[5]),  5,8},
  {&(_tg__ZTV8S19470C68S19470C7__9S19470C14[3]),  3,6},
  {&(_tg__ZTV8S19470C5__8S19470C7__9S19470C14[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C7__9S19470C14[3]),  3,6},
  {&(_tg__ZTV8S19470C8__A1__9S19470C14[4]),  4,5},
  {&(_tg__ZTV8S19470C5__8S19470C8__A1__9S19470C14[5]),  5,8},
  {&(_tg__ZTV8S19470C6__A1__9S19470C14[3]),  3,6},
  {&(_ZTV9S19470C14[29]),  29,32},
  {&(_ZTV9S19470C14[10]),  10,32},
  {&(_ZTV9S19470C14[17]),  17,32},
  {&(_ZTV9S19470C14[21]),  21,32},
};
extern VTBL_ENTRY _ZTI9S19470C14[];
extern  VTBL_ENTRY _ZTV9S19470C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19470C14[];
Class_Descriptor cd_S19470C14 = {  "S19470C14", // class name
  bases_S19470C14, 12,
  &(vtc_S19470C14[0]), // expected_vtbl_contents
  &(vtt_S19470C14[0]), // expected_vtt_contents
  ABISELECT(928,708), // object size
  NSPAIRA(_ZTI9S19470C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19470C14),32, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19470C14),14, //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  S19470C13  : S19470C6 , virtual S19470C2 , S19470C7 , S19470C14 {
  int s19470c13f0;
  char s19470c13f1[2];
  int s19470c13f2;
  __tsi64 s19470c13f3;
  ::S20643C15_nt s19470c13f4;
  void *s19470c13f5[8];
  short s19470c13f6[5];
  __tsi64 s19470c13f7;
  ::S20644C18 s19470c13f8;
  virtual  ~S19470C13(); // _ZN9S19470C13D2Ev
  S19470C13(); // tgen
};
//SIG(-1 S19470C13) C1{ BC2{ BC3{ BC4{ m Fi} v1 v2 v3 FC4[3] FC4[2] Fp Fs FC4} VBC4 FD FL FC3 Fp Fs[3]} VBC5{ BC6{ VBC4 VBC3 VBC2 Fp[2] Fi FC2[8] FD[9]} BC4 VBC7{ VBC3 VBC4 BC8{ VBC3 VBC4 v4 FC3 FD Fp[2] FC3} BC2 v5 Fp[2] Fl Fi FC3[5]} BC9{ BC3 vd v6 Fp[7] Fi[2] FL Fi} vd v7 Fi Fp Fi} BC7 BC10{ VBC4 BC7 BC8 BC2 v8 Fi FC11{} Fp[2]} vd Fi Fc[2] Fi FL FC11 Fp[8] Fs[5] FL FC12{ vd m Fc[2] Fi FL Fp[7] FU13{ m FL:3 Fi Fi Fi FD[8] Fp Fc[5] FD Fc[4] Fi Fp Fc[4] Fp}[4] FC14{ VBC4 VBC15{ BC4 v9 v10 v11 FC4[3] FC4[2] Fp Fs FC4} VBC16{ BC15 VBC4 FD FL FC15 Fp Fs[3]} Fp[2] Fi FC16[8] FD[9]}}}


 S19470C13 ::~S19470C13(){ note_dtor("S19470C13", this);}
S19470C13 ::S19470C13(){ note_ctor("S19470C13", this);} // tgen

static void Test_S19470C13()
{
  extern Class_Descriptor cd_S19470C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(381,1168)];
    init_test(&cd_S19470C13, buf);
    S19470C13 *dp, &lv = *(dp=new (buf) S19470C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(6080,4668), "sizeof(S19470C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19470C13)");
    /*is_ambiguous_... S19470C13::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*), ABISELECT(8,4), "S19470C13");
    /*is_ambiguous_... S19470C13::S19470C6 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C6*), 0, "S19470C13");
    /*is_ambiguous_... S19470C13::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*), ABISELECT(3824,2924), "S19470C13");
    /*is_ambiguous_... S19470C3::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C3*)(S19470C2*), ABISELECT(3824,2924), "S19470C13");
    /*is_ambiguous_... S19470C13::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*), ABISELECT(3824,2924), "S19470C13");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C7*), ABISELECT(3824,2924), "S19470C13");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C8*)(S19470C7*), ABISELECT(3824,2924), "S19470C13");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*)(S19470C7*), ABISELECT(3824,2924), "S19470C13");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C7*), ABISELECT(3824,2924), "S19470C13");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C8*)(S19470C7*), ABISELECT(3824,2924), "S19470C13");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*)(S19470C7*), ABISELECT(3824,2924), "S19470C13");
    /*is_ambiguous_... S19470C14::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C14*), ABISELECT(3824,2924), "S19470C13");
    /*is_ambiguous_... S19470C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C7*)(S19470C14*), ABISELECT(3824,2924), "S19470C13");
    /*is_ambiguous_... S19470C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C8*)(S19470C7*)(S19470C14*), ABISELECT(3824,2924), "S19470C13");
    /*is_ambiguous_... S19470C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*)(S19470C7*)(S19470C14*), ABISELECT(3824,2924), "S19470C13");
    /*is_ambiguous_... S19470C14::S19470C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C8*)(S19470C14*), ABISELECT(3824,2924), "S19470C13");
    /*is_ambiguous_... S19470C14::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*)(S19470C14*), ABISELECT(3824,2924), "S19470C13");
    /*is_ambiguous_... S19470C13::S19470C6 */ AMB_check_base_class_offset(lv, (S19470C6*), 0, "S19470C13");
    /*is_ambiguous_... S19470C13::S19470C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*), ABISELECT(5328,4088), "S19470C13");
    /*is_ambiguous_... S19470C3::S19470C5 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C3*)(S19470C2*), ABISELECT(5320,4084), "S19470C13");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C7*), ABISELECT(5320,4084), "S19470C13");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C8*)(S19470C7*), ABISELECT(5320,4084), "S19470C13");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C7*), ABISELECT(5320,4084), "S19470C13");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C8*)(S19470C7*), ABISELECT(5320,4084), "S19470C13");
    /*is_ambiguous_... S19470C7::S19470C5 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C7*)(S19470C14*), ABISELECT(5320,4084), "S19470C13");
    check_base_class_offset(lv, (S19470C5*)(S19470C8*)(S19470C7*)(S19470C14*), ABISELECT(5320,4084), "S19470C13");
    /*is_ambiguous_... S19470C14::S19470C8 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C8*)(S19470C14*), ABISELECT(5320,4084), "S19470C13");
    /*is_ambiguous_... S19470C13::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*), ABISELECT(5384,4128), "S19470C13");
    /*is_ambiguous_... S19470C13::S19470C6 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C6*), ABISELECT(5376,4124), "S19470C13");
    check_base_class_offset(lv, (S19470C6*)(S19470C3*)(S19470C2*), ABISELECT(5376,4124), "S19470C13");
    check_base_class_offset(lv, (S19470C3*)(S19470C2*), ABISELECT(3840,2928), "S19470C13");
    /*is_ambiguous_... S19470C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C2*), ABISELECT(5168,3980), "S19470C13");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C8*)(S19470C7*), ABISELECT(5520,4236), "S19470C13");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*)(S19470C7*), ABISELECT(5672,4344), "S19470C13");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C6*)(S19470C7*), ABISELECT(5664,4340), "S19470C13");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C6*)(S19470C7*), ABISELECT(5664,4340), "S19470C13");
    check_base_class_offset(lv, (S19470C7*)(S19470C2*), ABISELECT(5520,4236), "S19470C13");
    check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C9*)(S19470C2*), ABISELECT(5184,3988), "S19470C13");
    check_base_class_offset(lv, (S19470C5*)(S19470C9*)(S19470C2*), ABISELECT(5176,3984), "S19470C13");
    check_base_class_offset(lv, (S19470C9*)(S19470C2*), ABISELECT(5176,3984), "S19470C13");
    check_base_class_offset(lv, (S19470C2*), ABISELECT(3840,2928), "S19470C13");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C8*)(S19470C7*), ABISELECT(144,112), "S19470C13");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*)(S19470C7*), ABISELECT(296,220), "S19470C13");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C6*)(S19470C7*), ABISELECT(288,216), "S19470C13");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C6*)(S19470C7*), ABISELECT(288,216), "S19470C13");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C7*), ABISELECT(144,112), "S19470C13");
    check_base_class_offset(lv, (S19470C8*)(S19470C7*)(S19470C14*), ABISELECT(704,544), "S19470C13");
    check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*)(S19470C7*)(S19470C14*), ABISELECT(856,652), "S19470C13");
    check_base_class_offset(lv, (S19470C5*)(S19470C6*)(S19470C7*)(S19470C14*), ABISELECT(848,648), "S19470C13");
    check_base_class_offset(lv, (S19470C6*)(S19470C7*)(S19470C14*), ABISELECT(848,648), "S19470C13");
    check_base_class_offset(lv, (S19470C7*)(S19470C14*), ABISELECT(704,544), "S19470C13");
    /*is_ambiguous_... S19470C14::S19470C8 */ AMB_check_base_class_offset(lv, (S19470C8*)(S19470C14*), ABISELECT(1264,976), "S19470C13");
    /*is_ambiguous_... S19470C14::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*)(S19470C14*), ABISELECT(1416,1084), "S19470C13");
    /*is_ambiguous_... S19470C14::S19470C6 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C6*)(S19470C14*), ABISELECT(1408,1080), "S19470C13");
    /*is_ambiguous_... S19470C14::S19470C6 */ AMB_check_base_class_offset(lv, (S19470C6*)(S19470C14*), ABISELECT(1408,1080), "S19470C13");
    check_base_class_offset(lv, (S19470C14*), ABISELECT(704,544), "S19470C13");
    check_field_offset(lv, s19470c13f0, ABISELECT(1568,1208), "S19470C13.s19470c13f0");
    check_field_offset(lv, s19470c13f1, ABISELECT(1572,1212), "S19470C13.s19470c13f1");
    check_field_offset(lv, s19470c13f2, ABISELECT(1576,1216), "S19470C13.s19470c13f2");
    check_field_offset(lv, s19470c13f3, ABISELECT(1584,1220), "S19470C13.s19470c13f3");
    check_field_offset(lv, s19470c13f4, ABISELECT(1592,1228), "S19470C13.s19470c13f4");
    check_field_offset(lv, s19470c13f5, ABISELECT(1600,1232), "S19470C13.s19470c13f5");
    check_field_offset(lv, s19470c13f6, ABISELECT(1664,1264), "S19470C13.s19470c13f6");
    check_field_offset(lv, s19470c13f7, ABISELECT(1680,1276), "S19470C13.s19470c13f7");
    check_field_offset(lv, s19470c13f8, ABISELECT(1696,1284), "S19470C13.s19470c13f8");
    test_class_info(&lv, &cd_S19470C13);
    dp->~S19470C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19470C13(Test_S19470C13, "S19470C13", ABISELECT(6080,4668));

#else // __cplusplus

extern void _ZN9S19470C13C1Ev();
extern void _ZN9S19470C13D2Ev();
Name_Map name_map_S19470C13[] = {
  NSPAIR(_ZN9S19470C13C1Ev),
  NSPAIR(_ZN9S19470C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
extern Class_Descriptor cd_S19470C3;
extern VTBL_ENTRY _ZTI8S19470C3[];
extern  VTBL_ENTRY _ZTV8S19470C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C8;
extern VTBL_ENTRY _ZTI8S19470C8[];
extern  VTBL_ENTRY _ZTV8S19470C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
extern Class_Descriptor cd_S19470C7;
extern VTBL_ENTRY _ZTI8S19470C7[];
extern  VTBL_ENTRY _ZTV8S19470C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C7[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C9;
extern VTBL_ENTRY _ZTI8S19470C9[];
extern  VTBL_ENTRY _ZTV8S19470C9[];
extern Class_Descriptor cd_S19470C2;
extern VTBL_ENTRY _ZTI8S19470C2[];
extern  VTBL_ENTRY _ZTV8S19470C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C2[];
extern Class_Descriptor cd_S19470C8;
extern VTBL_ENTRY _ZTI8S19470C8[];
extern  VTBL_ENTRY _ZTV8S19470C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
extern Class_Descriptor cd_S19470C7;
extern VTBL_ENTRY _ZTI8S19470C7[];
extern  VTBL_ENTRY _ZTV8S19470C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C7[];
extern Class_Descriptor cd_S19470C8;
extern VTBL_ENTRY _ZTI8S19470C8[];
extern  VTBL_ENTRY _ZTV8S19470C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
extern Class_Descriptor cd_S19470C7;
extern VTBL_ENTRY _ZTI8S19470C7[];
extern  VTBL_ENTRY _ZTV8S19470C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C7[];
extern Class_Descriptor cd_S19470C8;
extern VTBL_ENTRY _ZTI8S19470C8[];
extern  VTBL_ENTRY _ZTV8S19470C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
extern Class_Descriptor cd_S19470C14;
extern VTBL_ENTRY _ZTI9S19470C14[];
extern  VTBL_ENTRY _ZTV9S19470C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19470C14[];
static Base_Class bases_S19470C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S19470C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3216C8_nt,    ABISELECT(3824,2924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C6,    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_S3216C8_nt,    ABISELECT(5328,4088), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19470C5,    ABISELECT(5320,4084), //bcp->offset
    71, //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
    9, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(5384,4128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C5,    ABISELECT(5376,4124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19470C6,    ABISELECT(5376,4124), //bcp->offset
    79, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19470C3,    ABISELECT(3840,2928), //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
    8, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(5168,3980), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C8,    ABISELECT(5520,4236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(5672,4344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C5,    ABISELECT(5664,4340), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19470C6,    ABISELECT(5664,4340), //bcp->offset
    99, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19470C7,    ABISELECT(5520,4236), //bcp->offset
    88, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(5184,3988), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C5,    ABISELECT(5176,3984), //bcp->offset
    -1, //bcp->virtual_function_table_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
    18, //immediately_derived
  0, 0},
  {&cd_S19470C9,    ABISELECT(5176,3984), //bcp->offset
    63, //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
    10, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19470C2,    ABISELECT(3840,2928), //bcp->offset
    48, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19470C8,    ABISELECT(144,112), //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
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    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
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19470C5,    ABISELECT(288,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
    15, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19470C6,    ABISELECT(288,216), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19470C7,    ABISELECT(144,112), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19470C8,    ABISELECT(704,544), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(856,652), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19470C5,    ABISELECT(848,648), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19470C6,    ABISELECT(848,648), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19470C7,    ABISELECT(704,544), //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
    21, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19470C8,    ABISELECT(1264,976), //bcp->offset
    37, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1416,1084), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19470C5,    ABISELECT(1408,1080), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19470C6,    ABISELECT(1408,1080), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19470C14,    ABISELECT(704,544), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19470C13[];
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN9S19470C13D1Ev();
extern void _ZN9S19470C13D0Ev();
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
extern void _ZN9S19470C142v9Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void ABISELECT(_ZTv0_n56_N9S19470C13D1Ev,_ZTv0_n28_N9S19470C13D1Ev)();
extern void ABISELECT(_ZThn3840_N9S19470C13D1Ev,_ZThn2928_N9S19470C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19470C13D0Ev,_ZTv0_n28_N9S19470C13D0Ev)();
extern void ABISELECT(_ZThn3840_N9S19470C13D0Ev,_ZThn2928_N9S19470C13D0Ev)() __attribute__((weak));
extern void _ZN8S19470C22v8Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N9S19470C13D1Ev,_ZTvn1056_n28_N9S19470C13D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N9S19470C13D0Ev,_ZTvn1056_n28_N9S19470C13D0Ev)();
extern void _ZN8S19470C92v7Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY vtc_S19470C13[] = {
  ABISELECT(5520,4236),
  ABISELECT(5376,4124),
  ABISELECT(5320,4084),
  ABISELECT(3840,2928),
  ABISELECT(3824,2924),
  0,
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  (VTBL_ENTRY)&_ZN9S19470C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19470C13D0Ev,
  ABISELECT(3680,2812),
  ABISELECT(5176,3972),
  ABISELECT(-144,-112),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
  ABISELECT(3536,2708),
  ABISELECT(-288,-216),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  ABISELECT(3120,2380),
  ABISELECT(4616,3540),
  ABISELECT(-704,-544),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19470C142v9Ev,
  ABISELECT(2976,2276),
  ABISELECT(-848,-648),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  ABISELECT(2560,1948),
  ABISELECT(4056,3108),
  ABISELECT(-1264,-976),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  ABISELECT(2416,1844),
  ABISELECT(-1408,-1080),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-3840,-2928),
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-16,-4),
  ABISELECT(-3840,-2928),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19470C13D1Ev,_ZTv0_n28_N9S19470C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19470C13D0Ev,_ZTv0_n28_N9S19470C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19470C22v8Ev,
  ABISELECT(-5176,-3984),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19470C13D1Ev,_ZTvn1056_n28_N9S19470C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19470C13D0Ev,_ZTvn1056_n28_N9S19470C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19470C92v7Ev,
  0,
  0,
  0,
  ABISELECT(-5320,-4084),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  0,
  0,
  0,
  ABISELECT(-1552,-1200),
  ABISELECT(-5376,-4124),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1696,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-5520,-4236),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
  ABISELECT(-1840,-1416),
  ABISELECT(-5664,-4340),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern VTBL_ENTRY _ZTV9S19470C13[];
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__A__9S19470C13[] = {
  ABISELECT(3824,2924),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C7__A__9S19470C13[] = {
  ABISELECT(3680,2812),
  ABISELECT(5176,3972),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C88S19470C7__A1__9S19470C13[] = {
  ABISELECT(3680,2812),
  ABISELECT(5176,3972),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C88S19470C7__A1__9S19470C13[] = {
  0,
  0,
  0,
  ABISELECT(-5176,-3972),
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C7__A3__9S19470C13[] = {
  ABISELECT(3536,2708),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C7__A__9S19470C13[] = {
  0,
  0,
  0,
  ABISELECT(-5176,-3972),
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C7__A__9S19470C13[] = {
  ABISELECT(3536,2708),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
extern void _ZN9S19470C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19470C14__9S19470C13[] = {
  ABISELECT(3120,2380),
  ABISELECT(4616,3540),
  0,
  (VTBL_ENTRY)&(_ZTI9S19470C14[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19470C142v9Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C79S19470C14__A2__9S19470C13[] = {
  ABISELECT(3120,2380),
  ABISELECT(4616,3540),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C88S19470C79S19470C14__A2__9S19470C13[] = {
  ABISELECT(3120,2380),
  ABISELECT(4616,3540),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C88S19470C79S19470C14__A2__9S19470C13[] = {
  0,
  0,
  0,
  ABISELECT(-4616,-3540),
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C79S19470C14__A4__9S19470C13[] = {
  ABISELECT(2976,2276),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C79S19470C14__A2__9S19470C13[] = {
  0,
  0,
  0,
  ABISELECT(-4616,-3540),
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C79S19470C14__A2__9S19470C13[] = {
  ABISELECT(2976,2276),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C89S19470C14__A3__9S19470C13[] = {
  ABISELECT(2560,1948),
  ABISELECT(4056,3108),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C89S19470C14__A3__9S19470C13[] = {
  0,
  0,
  0,
  ABISELECT(-4056,-3108),
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C69S19470C14__A5__9S19470C13[] = {
  ABISELECT(2416,1844),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__9S19470C14__9S19470C13[] = {
  0,
  0,
  0,
  ABISELECT(-4616,-3540),
  (VTBL_ENTRY)&(_ZTI9S19470C14[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C7__9S19470C14__9S19470C13[] = {
  ABISELECT(2976,2276),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI9S19470C14[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C8__A1__9S19470C14__9S19470C13[] = {
  ABISELECT(2560,1948),
  ABISELECT(4056,3108),
  ABISELECT(-560,-432),
  (VTBL_ENTRY)&(_ZTI9S19470C14[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__A1__9S19470C14__9S19470C13[] = {
  ABISELECT(2416,1844),
  ABISELECT(-704,-536),
  (VTBL_ENTRY)&(_ZTI9S19470C14[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C2D1Ev();
extern void _ZN8S19470C2D0Ev();
extern void _ZN8S19470C22v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C2__9S19470C13[] = {
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19470C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19470C22v8Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19470C38S19470C2__9S19470C13[] = {
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C3[0]),
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C38S19470C2__9S19470C13[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1156),
  (VTBL_ENTRY)&(_ZTI8S19470C3[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C38S19470C2__9S19470C13[] = {
  0,
  0,
  0,
  ABISELECT(-1552,-1200),
  ABISELECT(-1536,-1196),
  (VTBL_ENTRY)&(_ZTI8S19470C3[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C2__9S19470C13[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1156),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C2__9S19470C13[] = {
  0,
  0,
  0,
  ABISELECT(-1552,-1200),
  ABISELECT(-1536,-1196),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C7__8S19470C2__9S19470C13[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1696,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-1680,-1308),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C7__A1__8S19470C2__9S19470C13[] = {
  ABISELECT(-1840,-1416),
  ABISELECT(-1824,-1412),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__A1__9S19470C13[] = {
  ABISELECT(-1552,-1200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C7__9S19470C13[] = {
  ABISELECT(-1696,-1312),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C88S19470C7__9S19470C13[] = {
  ABISELECT(-1696,-1312),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C88S19470C7__9S19470C13[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C7__A2__9S19470C13[] = {
  ABISELECT(-1840,-1416),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C7__9S19470C13[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C7__9S19470C13[] = {
  ABISELECT(-1840,-1416),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
static  VTT_ENTRY vtt_S19470C13[] = {
  {&(_ZTV9S19470C13[7]),  7,105},
  {&(_tg__ZTV8S19470C6__A__9S19470C13[3]),  3,6},
  {&(_tg__ZTV8S19470C7__A__9S19470C13[4]),  4,6},
  {&(_tg__ZTV8S19470C88S19470C7__A1__9S19470C13[4]),  4,5},
  {&(_tg__ZTV8S19470C5__8S19470C88S19470C7__A1__9S19470C13[5]),  5,8},
  {&(_tg__ZTV8S19470C68S19470C7__A3__9S19470C13[3]),  3,6},
  {&(_tg__ZTV8S19470C5__8S19470C7__A__9S19470C13[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C7__A__9S19470C13[3]),  3,6},
  {&(_tg__ZTV9S19470C14__9S19470C13[4]),  4,7},
  {&(_tg__ZTV8S19470C79S19470C14__A2__9S19470C13[4]),  4,6},
  {&(_tg__ZTV8S19470C88S19470C79S19470C14__A2__9S19470C13[4]),  4,5},
  {&(_tg__ZTV8S19470C5__8S19470C88S19470C79S19470C14__A2__9S19470C13[5]),  5,8},
  {&(_tg__ZTV8S19470C68S19470C79S19470C14__A4__9S19470C13[3]),  3,6},
  {&(_tg__ZTV8S19470C5__8S19470C79S19470C14__A2__9S19470C13[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C79S19470C14__A2__9S19470C13[3]),  3,6},
  {&(_tg__ZTV8S19470C89S19470C14__A3__9S19470C13[4]),  4,5},
  {&(_tg__ZTV8S19470C5__8S19470C89S19470C14__A3__9S19470C13[5]),  5,8},
  {&(_tg__ZTV8S19470C69S19470C14__A5__9S19470C13[3]),  3,6},
  {&(_tg__ZTV8S19470C5__9S19470C14__9S19470C13[5]),  5,8},
  {&(_tg__ZTV8S19470C68S19470C7__9S19470C14__9S19470C13[3]),  3,6},
  {&(_tg__ZTV8S19470C8__A1__9S19470C14__9S19470C13[4]),  4,5},
  {&(_tg__ZTV8S19470C6__A1__9S19470C14__9S19470C13[3]),  3,6},
  {&(_ZTV9S19470C13[60]),  60,105},
  {&(_ZTV9S19470C13[76]),  76,105},
  {&(_ZTV9S19470C13[85]),  85,105},
  {&(_ZTV9S19470C13[97]),  97,105},
  {&(_ZTV9S19470C13[102]),  102,105},
  {&(_ZTV9S19470C13[65]),  65,105},
  {&(_ZTV9S19470C13[16]),  16,105},
  {&(_ZTV9S19470C13[21]),  21,105},
  {&(_ZTV9S19470C13[28]),  28,105},
  {&(_ZTV9S19470C13[34]),  34,105},
  {&(_ZTV9S19470C13[41]),  41,105},
  {&(_ZTV9S19470C13[45]),  45,105},
  {&(_tg__ZTV8S19470C2__9S19470C13[6]),  6,9},
  {&(_tg__ZTV8S19470C38S19470C2__9S19470C13[5]),  5,5},
  {&(_tg__ZTV8S19470C5__8S19470C38S19470C2__9S19470C13[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C38S19470C2__9S19470C13[6]),  6,9},
  {&(_tg__ZTV8S19470C5__8S19470C2__9S19470C13[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C2__9S19470C13[6]),  6,9},
  {&(_tg__ZTV8S19470C7__8S19470C2__9S19470C13[9]),  9,11},
  {&(_tg__ZTV8S19470C68S19470C7__A1__8S19470C2__9S19470C13[3]),  3,6},
  {&(_tg__ZTV8S19470C6__A1__9S19470C13[3]),  3,6},
  {&(_tg__ZTV8S19470C7__9S19470C13[4]),  4,6},
  {&(_tg__ZTV8S19470C88S19470C7__9S19470C13[4]),  4,5},
  {&(_tg__ZTV8S19470C5__8S19470C88S19470C7__9S19470C13[5]),  5,8},
  {&(_tg__ZTV8S19470C68S19470C7__A2__9S19470C13[3]),  3,6},
  {&(_tg__ZTV8S19470C5__8S19470C7__9S19470C13[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C7__9S19470C13[3]),  3,6},
};
extern VTBL_ENTRY _ZTI9S19470C13[];
extern  VTBL_ENTRY _ZTV9S19470C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19470C13[];
static VTBL_ENTRY alt_thunk_names17[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19470C13D0Ev,_ZTv0_n28_N9S19470C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3840_N9S19470C13D0Ev,_ZThn2928_N9S19470C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19470C13D1Ev,_ZTv0_n28_N9S19470C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3840_N9S19470C13D1Ev,_ZThn2928_N9S19470C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19470C13 = {  "S19470C13", // class name
  bases_S19470C13, 35,
  &(vtc_S19470C13[0]), // expected_vtbl_contents
  &(vtt_S19470C13[0]), // expected_vtt_contents
  ABISELECT(6080,4668), // object size
  NSPAIRA(_ZTI9S19470C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19470C13),105, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19470C13),49, //virtual table table var
  25, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names17,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19470C12  : virtual S19470C6 , S19470C2 , S19470C13 , S19470C8 {
  char s19470c12f0;
  int s19470c12f1;
  int s19470c12f2;
  int s19470c12f3;
  int s19470c12f4;
  void *s19470c12f5;
  char s19470c12f6[4];
  int s19470c12f7;
  virtual  ~S19470C12(); // _ZN9S19470C12D2Ev
  S19470C12(); // tgen
};
//SIG(-1 S19470C12) C1{ VBC2{ BC3{ BC4{ m Fi} v1 v2 v3 FC4[3] FC4[2] Fp Fs FC4} VBC4 FD FL FC3 Fp Fs[3]} BC5{ BC6{ VBC4 VBC3 VBC2 Fp[2] Fi FC2[8] FD[9]} BC4 VBC7{ VBC3 VBC4 BC8{ VBC3 VBC4 v4 FC3 FD Fp[2] FC3} BC2 v5 Fp[2] Fl Fi FC3[5]} BC9{ BC3 vd v6 Fp[7] Fi[2] FL Fi} vd v7 Fi Fp Fi} BC10{ BC2 VBC5 BC7 BC11{ VBC4 BC7 BC8 BC2 v8 Fi FC12{} Fp[2]} vd Fi Fc[2] Fi FL FC12 Fp[8] Fs[5] FL FC13{ vd m Fc[2] Fi FL Fp[7] FU14{ m FL:3 Fi Fi Fi FD[8] Fp Fc[5] FD Fc[4] Fi Fp Fc[4] Fp}[4] FC15{ VBC4 VBC16{ BC4 v9 v10 v11 FC4[3] FC4[2] Fp Fs FC4} VBC17{ BC16 VBC4 FD FL FC16 Fp Fs[3]} Fp[2] Fi FC17[8] FD[9]}}} BC8 vd Fc Fi Fi Fi Fi Fp Fc[4] Fi}


 S19470C12 ::~S19470C12(){ note_dtor("S19470C12", this);}
S19470C12 ::S19470C12(){ note_ctor("S19470C12", this);} // tgen

static void Test_S19470C12()
{
  extern Class_Descriptor cd_S19470C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(485,1491)];
    init_test(&cd_S19470C12, buf);
    S19470C12 *dp, &lv = *(dp=new (buf) S19470C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(7744,5960), "sizeof(S19470C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19470C12)");
    /*is_ambiguous_... S19470C12::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*), ABISELECT(5512,4220), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C6 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C6*), ABISELECT(5504,4216), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*), ABISELECT(5640,4328), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C3*)(S19470C2*), ABISELECT(5640,4328), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C7*), ABISELECT(5640,4328), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C8*)(S19470C7*), ABISELECT(5640,4328), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*)(S19470C7*), ABISELECT(5640,4328), "S19470C12");
    /*is_ambiguous_... S19470C13::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*)(S19470C13*), ABISELECT(5640,4328), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C3*)(S19470C2*), ABISELECT(5640,4328), "S19470C12");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C7*)(S19470C13*), ABISELECT(5640,4328), "S19470C12");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C8*)(S19470C7*)(S19470C13*), ABISELECT(5640,4328), "S19470C12");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*)(S19470C7*)(S19470C13*), ABISELECT(5640,4328), "S19470C12");
    /*is_ambiguous_... S19470C14::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C14*)(S19470C13*), ABISELECT(5640,4328), "S19470C12");
    /*is_ambiguous_... S19470C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C7*)(S19470C14*)(S19470C13*), ABISELECT(5640,4328), "S19470C12");
    /*is_ambiguous_... S19470C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C8*)(S19470C7*)(S19470C14*)(S19470C13*), ABISELECT(5640,4328), "S19470C12");
    /*is_ambiguous_... S19470C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*)(S19470C7*)(S19470C14*)(S19470C13*), ABISELECT(5640,4328), "S19470C12");
    /*is_ambiguous_... S19470C14::S19470C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C8*)(S19470C14*)(S19470C13*), ABISELECT(5640,4328), "S19470C12");
    /*is_ambiguous_... S19470C14::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*)(S19470C14*)(S19470C13*), ABISELECT(5640,4328), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C8*), ABISELECT(5640,4328), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C6 */ AMB_check_base_class_offset(lv, (S19470C6*), ABISELECT(5504,4216), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C2 */ AMB_check_base_class_offset(lv, (S19470C6*)(S19470C3*)(S19470C2*), ABISELECT(5504,4216), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C2 */ AMB_check_base_class_offset(lv, (S19470C6*)(S19470C3*)(S19470C2*), ABISELECT(5504,4216), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*), ABISELECT(5656,4336), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C2 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C3*)(S19470C2*), ABISELECT(5648,4332), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C7*), ABISELECT(5648,4332), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C8*)(S19470C7*), ABISELECT(5648,4332), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C2 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C3*)(S19470C2*), ABISELECT(5648,4332), "S19470C12");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C7*)(S19470C13*), ABISELECT(5648,4332), "S19470C12");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C8*)(S19470C7*)(S19470C13*), ABISELECT(5648,4332), "S19470C12");
    /*is_ambiguous_... S19470C7::S19470C5 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C7*)(S19470C14*)(S19470C13*), ABISELECT(5648,4332), "S19470C12");
    check_base_class_offset(lv, (S19470C5*)(S19470C8*)(S19470C7*)(S19470C14*)(S19470C13*), ABISELECT(5648,4332), "S19470C12");
    /*is_ambiguous_... S19470C14::S19470C8 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C8*)(S19470C14*)(S19470C13*), ABISELECT(5648,4332), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C8 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C8*), ABISELECT(5648,4332), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C2 */ AMB_check_base_class_offset(lv, (S19470C3*)(S19470C2*), 0, "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C2*), ABISELECT(1328,1052), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C8*)(S19470C7*), ABISELECT(5696,4372), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*)(S19470C7*), ABISELECT(5848,4480), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C6*)(S19470C7*), ABISELECT(5840,4476), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C6*)(S19470C7*), ABISELECT(5840,4476), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C2 */ AMB_check_base_class_offset(lv, (S19470C7*)(S19470C2*), ABISELECT(5696,4372), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C2 */ AMB_check_base_class_offset(lv, (S19470C7*)(S19470C2*), ABISELECT(5696,4372), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C9*)(S19470C2*), ABISELECT(1344,1060), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C2 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C9*)(S19470C2*), ABISELECT(1336,1056), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C2 */ AMB_check_base_class_offset(lv, (S19470C9*)(S19470C2*), ABISELECT(1336,1056), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C2 */ AMB_check_base_class_offset(lv, (S19470C2*), 0, "S19470C12");
    /*is_ambiguous_... S19470C13::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*)(S19470C13*), ABISELECT(1496,1160), "S19470C12");
    /*is_ambiguous_... S19470C13::S19470C6 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C6*)(S19470C13*), ABISELECT(1488,1156), "S19470C12");
    /*is_ambiguous_... S19470C13::S19470C6 */ AMB_check_base_class_offset(lv, (S19470C6*)(S19470C13*), ABISELECT(1488,1156), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C2 */ AMB_check_base_class_offset(lv, (S19470C3*)(S19470C2*), ABISELECT(6256,4804), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C2*), ABISELECT(7584,5856), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C9*)(S19470C2*), ABISELECT(7600,5864), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C2 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C9*)(S19470C2*), ABISELECT(7592,5860), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C2 */ AMB_check_base_class_offset(lv, (S19470C9*)(S19470C2*), ABISELECT(7592,5860), "S19470C12");
    check_base_class_offset(lv, (S19470C2*)(S19470C13*), ABISELECT(6256,4804), "S19470C12");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C8*)(S19470C7*)(S19470C13*), ABISELECT(1632,1268), "S19470C12");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*)(S19470C7*)(S19470C13*), ABISELECT(1784,1376), "S19470C12");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C6*)(S19470C7*)(S19470C13*), ABISELECT(1776,1372), "S19470C12");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C6*)(S19470C7*)(S19470C13*), ABISELECT(1776,1372), "S19470C12");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C7*)(S19470C13*), ABISELECT(1632,1268), "S19470C12");
    check_base_class_offset(lv, (S19470C8*)(S19470C7*)(S19470C14*)(S19470C13*), ABISELECT(2192,1700), "S19470C12");
    check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*)(S19470C7*)(S19470C14*)(S19470C13*), ABISELECT(2344,1808), "S19470C12");
    check_base_class_offset(lv, (S19470C5*)(S19470C6*)(S19470C7*)(S19470C14*)(S19470C13*), ABISELECT(2336,1804), "S19470C12");
    check_base_class_offset(lv, (S19470C6*)(S19470C7*)(S19470C14*)(S19470C13*), ABISELECT(2336,1804), "S19470C12");
    check_base_class_offset(lv, (S19470C7*)(S19470C14*)(S19470C13*), ABISELECT(2192,1700), "S19470C12");
    /*is_ambiguous_... S19470C14::S19470C8 */ AMB_check_base_class_offset(lv, (S19470C8*)(S19470C14*)(S19470C13*), ABISELECT(2752,2132), "S19470C12");
    /*is_ambiguous_... S19470C14::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*)(S19470C14*)(S19470C13*), ABISELECT(2904,2240), "S19470C12");
    /*is_ambiguous_... S19470C14::S19470C6 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C6*)(S19470C14*)(S19470C13*), ABISELECT(2896,2236), "S19470C12");
    /*is_ambiguous_... S19470C14::S19470C6 */ AMB_check_base_class_offset(lv, (S19470C6*)(S19470C14*)(S19470C13*), ABISELECT(2896,2236), "S19470C12");
    check_base_class_offset(lv, (S19470C14*)(S19470C13*), ABISELECT(2192,1700), "S19470C12");
    check_base_class_offset(lv, (S19470C13*), ABISELECT(1488,1156), "S19470C12");
    /*is_ambiguous_... S19470C12::S19470C8 */ AMB_check_base_class_offset(lv, (S19470C8*), ABISELECT(5312,4080), "S19470C12");
    check_field_offset(lv, s19470c12f0, ABISELECT(5456,4184), "S19470C12.s19470c12f0");
    check_field_offset(lv, s19470c12f1, ABISELECT(5460,4188), "S19470C12.s19470c12f1");
    check_field_offset(lv, s19470c12f2, ABISELECT(5464,4192), "S19470C12.s19470c12f2");
    check_field_offset(lv, s19470c12f3, ABISELECT(5468,4196), "S19470C12.s19470c12f3");
    check_field_offset(lv, s19470c12f4, ABISELECT(5472,4200), "S19470C12.s19470c12f4");
    check_field_offset(lv, s19470c12f5, ABISELECT(5480,4204), "S19470C12.s19470c12f5");
    check_field_offset(lv, s19470c12f6, ABISELECT(5488,4208), "S19470C12.s19470c12f6");
    check_field_offset(lv, s19470c12f7, ABISELECT(5492,4212), "S19470C12.s19470c12f7");
    test_class_info(&lv, &cd_S19470C12);
    dp->~S19470C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19470C12(Test_S19470C12, "S19470C12", ABISELECT(7744,5960));

#else // __cplusplus

extern void _ZN9S19470C12C1Ev();
extern void _ZN9S19470C12D2Ev();
Name_Map name_map_S19470C12[] = {
  NSPAIR(_ZN9S19470C12C1Ev),
  NSPAIR(_ZN9S19470C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C3;
extern VTBL_ENTRY _ZTI8S19470C3[];
extern  VTBL_ENTRY _ZTV8S19470C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C8;
extern VTBL_ENTRY _ZTI8S19470C8[];
extern  VTBL_ENTRY _ZTV8S19470C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
extern Class_Descriptor cd_S19470C7;
extern VTBL_ENTRY _ZTI8S19470C7[];
extern  VTBL_ENTRY _ZTV8S19470C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C7[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C9;
extern VTBL_ENTRY _ZTI8S19470C9[];
extern  VTBL_ENTRY _ZTV8S19470C9[];
extern Class_Descriptor cd_S19470C2;
extern VTBL_ENTRY _ZTI8S19470C2[];
extern  VTBL_ENTRY _ZTV8S19470C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
extern Class_Descriptor cd_S19470C3;
extern VTBL_ENTRY _ZTI8S19470C3[];
extern  VTBL_ENTRY _ZTV8S19470C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C9;
extern VTBL_ENTRY _ZTI8S19470C9[];
extern  VTBL_ENTRY _ZTV8S19470C9[];
extern Class_Descriptor cd_S19470C2;
extern VTBL_ENTRY _ZTI8S19470C2[];
extern  VTBL_ENTRY _ZTV8S19470C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C2[];
extern Class_Descriptor cd_S19470C8;
extern VTBL_ENTRY _ZTI8S19470C8[];
extern  VTBL_ENTRY _ZTV8S19470C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
extern Class_Descriptor cd_S19470C7;
extern VTBL_ENTRY _ZTI8S19470C7[];
extern  VTBL_ENTRY _ZTV8S19470C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C7[];
extern Class_Descriptor cd_S19470C8;
extern VTBL_ENTRY _ZTI8S19470C8[];
extern  VTBL_ENTRY _ZTV8S19470C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
extern Class_Descriptor cd_S19470C7;
extern VTBL_ENTRY _ZTI8S19470C7[];
extern  VTBL_ENTRY _ZTV8S19470C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C7[];
extern Class_Descriptor cd_S19470C8;
extern VTBL_ENTRY _ZTI8S19470C8[];
extern  VTBL_ENTRY _ZTV8S19470C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
extern Class_Descriptor cd_S19470C14;
extern VTBL_ENTRY _ZTI9S19470C14[];
extern  VTBL_ENTRY _ZTV9S19470C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19470C14[];
extern Class_Descriptor cd_S19470C13;
extern VTBL_ENTRY _ZTI9S19470C13[];
extern  VTBL_ENTRY _ZTV9S19470C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19470C13[];
extern Class_Descriptor cd_S19470C8;
extern VTBL_ENTRY _ZTI8S19470C8[];
extern  VTBL_ENTRY _ZTV8S19470C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C8[];
static Base_Class bases_S19470C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(5512,4220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19470C5,    ABISELECT(5504,4216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3216C8_nt,    ABISELECT(5640,4328), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C6,    ABISELECT(5504,4216), //bcp->offset
    71, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(5656,4336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19470C5,    ABISELECT(5648,4332), //bcp->offset
    80, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19470C3,    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
    12, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1328,1052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C8,    ABISELECT(5696,4372), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(5848,4480), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C5,    ABISELECT(5840,4476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19470C6,    ABISELECT(5840,4476), //bcp->offset
    99, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19470C7,    ABISELECT(5696,4372), //bcp->offset
    88, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1344,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19470C5,    ABISELECT(1336,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
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19470C9,    ABISELECT(1336,1056), //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
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19470C2,    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},
  {&cd_S3216C8_nt,    ABISELECT(1496,1160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19470C5,    ABISELECT(1488,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
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19470C6,    ABISELECT(1488,1156), //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
    17, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S19470C3,    ABISELECT(6256,4804), //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
    8, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(7584,5856), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3216C8_nt,    ABISELECT(7600,5864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C5,    ABISELECT(7592,5860), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19470C9,    ABISELECT(7592,5860), //bcp->offset
    120, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19470C2,    ABISELECT(6256,4804), //bcp->offset
    105, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S19470C8,    ABISELECT(1632,1268), //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
    18, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1784,1376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C5,    ABISELECT(1776,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
    19, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19470C6,    ABISELECT(1776,1372), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19470C7,    ABISELECT(1632,1268), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S19470C8,    ABISELECT(2192,1700), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(2344,1808), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C5,    ABISELECT(2336,1804), //bcp->offset
    -1, //bcp->virtual_function_table_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
    34, //immediately_derived
  0, 0},
  {&cd_S19470C6,    ABISELECT(2336,1804), //bcp->offset
    49, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19470C7,    ABISELECT(2192,1700), //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
    25, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19470C8,    ABISELECT(2752,2132), //bcp->offset
    55, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(2904,2240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S19470C5,    ABISELECT(2896,2236), //bcp->offset
    -1, //bcp->virtual_function_table_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
    39, //immediately_derived
  0, 0},
  {&cd_S19470C6,    ABISELECT(2896,2236), //bcp->offset
    60, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19470C14,    ABISELECT(2192,1700), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S19470C13,    ABISELECT(1488,1156), //bcp->offset
    18, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19470C8,    ABISELECT(5312,4080), //bcp->offset
    66, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19470C12[];
extern void _ZN9S19470C12D1Ev();
extern void _ZN9S19470C12D0Ev();
extern void _ZN8S19470C22v8Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void ABISELECT(_ZThn1336_N9S19470C12D1Ev,_ZThn1056_N9S19470C12D1Ev)();
extern void ABISELECT(_ZThn1336_N9S19470C12D0Ev,_ZThn1056_N9S19470C12D0Ev)();
extern void _ZN8S19470C92v7Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void ABISELECT(_ZThn1488_N9S19470C12D1Ev,_ZThn1156_N9S19470C12D1Ev)();
extern void ABISELECT(_ZThn1488_N9S19470C12D0Ev,_ZThn1156_N9S19470C12D0Ev)();
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
extern void _ZN9S19470C142v9Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void ABISELECT(_ZTv0_n56_N9S19470C12D1Ev,_ZTv0_n28_N9S19470C12D1Ev)();
extern void ABISELECT(_ZThn6256_N9S19470C12D1Ev,_ZThn4804_N9S19470C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19470C12D0Ev,_ZTv0_n28_N9S19470C12D0Ev)();
extern void ABISELECT(_ZThn6256_N9S19470C12D0Ev,_ZThn4804_N9S19470C12D0Ev)() __attribute__((weak));
extern void _ZN8S19470C22v8Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N9S19470C12D1Ev,_ZTvn1056_n28_N9S19470C12D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N9S19470C12D0Ev,_ZTvn1056_n28_N9S19470C12D0Ev)();
extern void _ZN8S19470C92v7Ev();
static  VTBL_ENTRY vtc_S19470C12[] = {
  ABISELECT(6256,4804),
  ABISELECT(5696,4372),
  ABISELECT(5504,4216),
  ABISELECT(5648,4332),
  ABISELECT(5640,4328),
  0,
  (VTBL_ENTRY)&(_ZTI9S19470C12[0]),
  (VTBL_ENTRY)&_ZN9S19470C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19470C12D0Ev,
  (VTBL_ENTRY)&_ZN8S19470C22v8Ev,
  ABISELECT(-1336,-1056),
  (VTBL_ENTRY)&(_ZTI9S19470C12[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1336_N9S19470C12D1Ev,_ZThn1056_N9S19470C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1336_N9S19470C12D0Ev,_ZThn1056_N9S19470C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19470C92v7Ev,
  ABISELECT(4208,3216),
  ABISELECT(4016,3060),
  ABISELECT(4160,3176),
  ABISELECT(4768,3648),
  ABISELECT(4152,3172),
  ABISELECT(-1488,-1156),
  (VTBL_ENTRY)&(_ZTI9S19470C12[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1488_N9S19470C12D1Ev,_ZThn1156_N9S19470C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1488_N9S19470C12D0Ev,_ZThn1156_N9S19470C12D0Ev),
  ABISELECT(4008,3060),
  ABISELECT(4016,3064),
  ABISELECT(-1632,-1268),
  (VTBL_ENTRY)&(_ZTI9S19470C12[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
  ABISELECT(3864,2956),
  ABISELECT(-1776,-1372),
  (VTBL_ENTRY)&(_ZTI9S19470C12[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  ABISELECT(3448,2628),
  ABISELECT(3456,2632),
  ABISELECT(-2192,-1700),
  (VTBL_ENTRY)&(_ZTI9S19470C12[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19470C142v9Ev,
  ABISELECT(3304,2524),
  ABISELECT(-2336,-1804),
  (VTBL_ENTRY)&(_ZTI9S19470C12[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  ABISELECT(2888,2196),
  ABISELECT(2896,2200),
  ABISELECT(-2752,-2132),
  (VTBL_ENTRY)&(_ZTI9S19470C12[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  ABISELECT(2744,2092),
  ABISELECT(-2896,-2236),
  (VTBL_ENTRY)&(_ZTI9S19470C12[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  ABISELECT(328,248),
  ABISELECT(336,252),
  ABISELECT(-5312,-4080),
  (VTBL_ENTRY)&(_ZTI9S19470C12[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  0,
  0,
  0,
  ABISELECT(136,112),
  ABISELECT(-5504,-4216),
  (VTBL_ENTRY)&(_ZTI9S19470C12[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  0,
  0,
  0,
  ABISELECT(-5648,-4332),
  (VTBL_ENTRY)&(_ZTI9S19470C12[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-56,-44),
  ABISELECT(-48,-40),
  ABISELECT(-5696,-4372),
  (VTBL_ENTRY)&(_ZTI9S19470C12[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
  ABISELECT(-200,-148),
  ABISELECT(-5840,-4476),
  (VTBL_ENTRY)&(_ZTI9S19470C12[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-6256,-4804),
  ABISELECT(-560,-432),
  ABISELECT(-752,-588),
  ABISELECT(-608,-472),
  ABISELECT(-616,-476),
  ABISELECT(-6256,-4804),
  (VTBL_ENTRY)&(_ZTI9S19470C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19470C12D1Ev,_ZTv0_n28_N9S19470C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19470C12D0Ev,_ZTv0_n28_N9S19470C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19470C22v8Ev,
  ABISELECT(-7592,-5860),
  (VTBL_ENTRY)&(_ZTI9S19470C12[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19470C12D1Ev,_ZTvn1056_n28_N9S19470C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19470C12D0Ev,_ZTvn1056_n28_N9S19470C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19470C92v7Ev,
};
extern VTBL_ENTRY _ZTV9S19470C12[];
extern void _ZN8S19470C2D1Ev();
extern void _ZN8S19470C2D0Ev();
extern void _ZN8S19470C22v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C2__A__9S19470C12[] = {
  ABISELECT(5696,4372),
  ABISELECT(5504,4216),
  ABISELECT(5648,4332),
  ABISELECT(5640,4328),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19470C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19470C22v8Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19470C38S19470C2__9S19470C12[] = {
  ABISELECT(5504,4216),
  ABISELECT(5648,4332),
  ABISELECT(5640,4328),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C3[0]),
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C38S19470C2__9S19470C12[] = {
  0,
  0,
  0,
  ABISELECT(-5648,-4332),
  (VTBL_ENTRY)&(_ZTI8S19470C3[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C38S19470C2__9S19470C12[] = {
  0,
  0,
  0,
  ABISELECT(136,112),
  ABISELECT(-5504,-4216),
  (VTBL_ENTRY)&(_ZTI8S19470C3[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C2__A__9S19470C12[] = {
  0,
  0,
  0,
  ABISELECT(-5648,-4332),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C2__A__9S19470C12[] = {
  0,
  0,
  0,
  ABISELECT(136,112),
  ABISELECT(-5504,-4216),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C7__8S19470C2__A__9S19470C12[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-56,-44),
  ABISELECT(-48,-40),
  ABISELECT(-5696,-4372),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C7__A1__8S19470C2__A__9S19470C12[] = {
  ABISELECT(-200,-148),
  ABISELECT(-5840,-4476),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN9S19470C13D1Ev();
extern void _ZN9S19470C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19470C13__9S19470C12[] = {
  ABISELECT(4208,3216),
  ABISELECT(4016,3060),
  ABISELECT(4160,3176),
  ABISELECT(4768,3648),
  ABISELECT(4152,3172),
  0,
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  (VTBL_ENTRY)&_ZN9S19470C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19470C13D0Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C69S19470C13__A2__9S19470C12[] = {
  ABISELECT(4152,3172),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C79S19470C13__A1__9S19470C12[] = {
  ABISELECT(4008,3060),
  ABISELECT(4016,3064),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C88S19470C79S19470C13__A1__9S19470C12[] = {
  ABISELECT(4008,3060),
  ABISELECT(4016,3064),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C88S19470C79S19470C13__A1__9S19470C12[] = {
  0,
  0,
  0,
  ABISELECT(-4016,-3064),
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C79S19470C13__A3__9S19470C12[] = {
  ABISELECT(3864,2956),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C79S19470C13__A1__9S19470C12[] = {
  0,
  0,
  0,
  ABISELECT(-4016,-3064),
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C79S19470C13__A1__9S19470C12[] = {
  ABISELECT(3864,2956),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
extern void _ZN9S19470C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19470C149S19470C13__9S19470C12[] = {
  ABISELECT(3448,2628),
  ABISELECT(3456,2632),
  0,
  (VTBL_ENTRY)&(_ZTI9S19470C14[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19470C142v9Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C79S19470C149S19470C13__A2__9S19470C12[] = {
  ABISELECT(3448,2628),
  ABISELECT(3456,2632),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C88S19470C79S19470C149S19470C13__A2__9S19470C12[] = {
  ABISELECT(3448,2628),
  ABISELECT(3456,2632),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C88S19470C79S19470C149S19470C13__A2__9S19470C12[] = {
  0,
  0,
  0,
  ABISELECT(-3456,-2632),
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C79S19470C149S19470C13__A4__9S19470C12[] = {
  ABISELECT(3304,2524),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C79S19470C149S19470C13__A2__9S19470C12[] = {
  0,
  0,
  0,
  ABISELECT(-3456,-2632),
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C79S19470C149S19470C13__A2__9S19470C12[] = {
  ABISELECT(3304,2524),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C89S19470C149S19470C13__A3__9S19470C12[] = {
  ABISELECT(2888,2196),
  ABISELECT(2896,2200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C89S19470C149S19470C13__A3__9S19470C12[] = {
  0,
  0,
  0,
  ABISELECT(-2896,-2200),
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C69S19470C149S19470C13__A5__9S19470C12[] = {
  ABISELECT(2744,2092),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__9S19470C149S19470C13__9S19470C12[] = {
  0,
  0,
  0,
  ABISELECT(-3456,-2632),
  (VTBL_ENTRY)&(_ZTI9S19470C14[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C7__9S19470C149S19470C13__9S19470C12[] = {
  ABISELECT(3304,2524),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI9S19470C14[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C8__A1__9S19470C149S19470C13__9S19470C12[] = {
  ABISELECT(2888,2196),
  ABISELECT(2896,2200),
  ABISELECT(-560,-432),
  (VTBL_ENTRY)&(_ZTI9S19470C14[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__A1__9S19470C149S19470C13__9S19470C12[] = {
  ABISELECT(2744,2092),
  ABISELECT(-704,-536),
  (VTBL_ENTRY)&(_ZTI9S19470C14[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19470C13D1Ev,_ZTv0_n28_N9S19470C13D1Ev)();
extern void ABISELECT(_ZThn4768_N9S19470C13D1Ev,_ZThn3648_N9S19470C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19470C13D0Ev,_ZTv0_n28_N9S19470C13D0Ev)();
extern void ABISELECT(_ZThn4768_N9S19470C13D0Ev,_ZThn3648_N9S19470C13D0Ev)() __attribute__((weak));
extern void _ZN8S19470C22v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C2__9S19470C13__9S19470C12[] = {
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-4768,-3648),
  ABISELECT(-560,-432),
  ABISELECT(-752,-588),
  ABISELECT(-608,-472),
  ABISELECT(-616,-476),
  ABISELECT(-4768,-3648),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19470C13D1Ev,_ZTv0_n28_N9S19470C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19470C13D0Ev,_ZTv0_n28_N9S19470C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19470C22v8Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__A1__9S19470C13__9S19470C12[] = {
  0,
  0,
  0,
  ABISELECT(-4160,-3176),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__A1__9S19470C13__9S19470C12[] = {
  0,
  0,
  0,
  ABISELECT(136,112),
  ABISELECT(-4016,-3060),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C7__9S19470C13__9S19470C12[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-56,-44),
  ABISELECT(-48,-40),
  ABISELECT(-4208,-3216),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C7__A2__9S19470C13__9S19470C12[] = {
  ABISELECT(-200,-148),
  ABISELECT(-4352,-3320),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N9S19470C13D1Ev,_ZTvn1056_n28_N9S19470C13D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N9S19470C13D0Ev,_ZTvn1056_n28_N9S19470C13D0Ev)();
extern void _ZN8S19470C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C98S19470C2__9S19470C13__9S19470C12[] = {
  ABISELECT(-6104,-4704),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19470C13D1Ev,_ZTvn1056_n28_N9S19470C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19470C13D0Ev,_ZTvn1056_n28_N9S19470C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19470C92v7Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C7__A__9S19470C13__9S19470C12[] = {
  ABISELECT(4008,3060),
  ABISELECT(4016,3064),
  ABISELECT(-144,-112),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C7__A3__9S19470C13__9S19470C12[] = {
  ABISELECT(3864,2956),
  ABISELECT(-288,-216),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
extern void _ZN9S19470C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19470C14__9S19470C13__9S19470C12[] = {
  ABISELECT(3448,2628),
  ABISELECT(3456,2632),
  ABISELECT(-704,-544),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19470C142v9Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C79S19470C14__A4__9S19470C13__9S19470C12[] = {
  ABISELECT(3304,2524),
  ABISELECT(-848,-648),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C89S19470C14__A3__9S19470C13__9S19470C12[] = {
  ABISELECT(2888,2196),
  ABISELECT(2896,2200),
  ABISELECT(-1264,-976),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C69S19470C14__A5__9S19470C13__9S19470C12[] = {
  ABISELECT(2744,2092),
  ABISELECT(-1408,-1080),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C8__A4__9S19470C12[] = {
  ABISELECT(328,248),
  ABISELECT(336,252),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C8__A4__9S19470C12[] = {
  0,
  0,
  0,
  ABISELECT(-336,-252),
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__9S19470C12[] = {
  ABISELECT(136,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C7__9S19470C12[] = {
  ABISELECT(-56,-44),
  ABISELECT(-48,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C88S19470C7__9S19470C12[] = {
  ABISELECT(-56,-44),
  ABISELECT(-48,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C88S19470C7__9S19470C12[] = {
  0,
  0,
  0,
  ABISELECT(48,40),
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C7__A1__9S19470C12[] = {
  ABISELECT(-200,-148),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C7__9S19470C12[] = {
  0,
  0,
  0,
  ABISELECT(48,40),
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C7__9S19470C12[] = {
  ABISELECT(-200,-148),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C2D1Ev();
extern void _ZN8S19470C2D0Ev();
extern void _ZN8S19470C22v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C2__A1__9S19470C12[] = {
  ABISELECT(-560,-432),
  ABISELECT(-752,-588),
  ABISELECT(-608,-472),
  ABISELECT(-616,-476),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19470C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19470C22v8Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19470C38S19470C2__A1__9S19470C12[] = {
  ABISELECT(-752,-588),
  ABISELECT(-608,-472),
  ABISELECT(-616,-476),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C3[0]),
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C38S19470C2__A1__9S19470C12[] = {
  0,
  0,
  0,
  ABISELECT(608,472),
  (VTBL_ENTRY)&(_ZTI8S19470C3[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C38S19470C2__A1__9S19470C12[] = {
  0,
  0,
  0,
  ABISELECT(136,112),
  ABISELECT(752,588),
  (VTBL_ENTRY)&(_ZTI8S19470C3[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C2__A1__9S19470C12[] = {
  0,
  0,
  0,
  ABISELECT(608,472),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C2__A1__9S19470C12[] = {
  0,
  0,
  0,
  ABISELECT(136,112),
  ABISELECT(752,588),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C7__8S19470C2__A1__9S19470C12[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-56,-44),
  ABISELECT(-48,-40),
  ABISELECT(560,432),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C7__A1__8S19470C2__A1__9S19470C12[] = {
  ABISELECT(-200,-148),
  ABISELECT(416,328),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
static  VTT_ENTRY vtt_S19470C12[] = {
  {&(_ZTV9S19470C12[7]),  7,128},
  {&(_tg__ZTV8S19470C2__A__9S19470C12[6]),  6,9},
  {&(_tg__ZTV8S19470C38S19470C2__9S19470C12[5]),  5,5},
  {&(_tg__ZTV8S19470C5__8S19470C38S19470C2__9S19470C12[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C38S19470C2__9S19470C12[6]),  6,9},
  {&(_tg__ZTV8S19470C5__8S19470C2__A__9S19470C12[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C2__A__9S19470C12[6]),  6,9},
  {&(_tg__ZTV8S19470C7__8S19470C2__A__9S19470C12[9]),  9,11},
  {&(_tg__ZTV8S19470C68S19470C7__A1__8S19470C2__A__9S19470C12[3]),  3,6},
  {&(_tg__ZTV9S19470C13__9S19470C12[7]),  7,12},
  {&(_tg__ZTV8S19470C69S19470C13__A2__9S19470C12[3]),  3,6},
  {&(_tg__ZTV8S19470C79S19470C13__A1__9S19470C12[4]),  4,6},
  {&(_tg__ZTV8S19470C88S19470C79S19470C13__A1__9S19470C12[4]),  4,5},
  {&(_tg__ZTV8S19470C5__8S19470C88S19470C79S19470C13__A1__9S19470C12[5]),  5,8},
  {&(_tg__ZTV8S19470C68S19470C79S19470C13__A3__9S19470C12[3]),  3,6},
  {&(_tg__ZTV8S19470C5__8S19470C79S19470C13__A1__9S19470C12[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C79S19470C13__A1__9S19470C12[3]),  3,6},
  {&(_tg__ZTV9S19470C149S19470C13__9S19470C12[4]),  4,7},
  {&(_tg__ZTV8S19470C79S19470C149S19470C13__A2__9S19470C12[4]),  4,6},
  {&(_tg__ZTV8S19470C88S19470C79S19470C149S19470C13__A2__9S19470C12[4]),  4,5},
  {&(_tg__ZTV8S19470C5__8S19470C88S19470C79S19470C149S19470C13__A2__9S19470C12[5]),  5,8},
  {&(_tg__ZTV8S19470C68S19470C79S19470C149S19470C13__A4__9S19470C12[3]),  3,6},
  {&(_tg__ZTV8S19470C5__8S19470C79S19470C149S19470C13__A2__9S19470C12[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C79S19470C149S19470C13__A2__9S19470C12[3]),  3,6},
  {&(_tg__ZTV8S19470C89S19470C149S19470C13__A3__9S19470C12[4]),  4,5},
  {&(_tg__ZTV8S19470C5__8S19470C89S19470C149S19470C13__A3__9S19470C12[5]),  5,8},
  {&(_tg__ZTV8S19470C69S19470C149S19470C13__A5__9S19470C12[3]),  3,6},
  {&(_tg__ZTV8S19470C5__9S19470C149S19470C13__9S19470C12[5]),  5,8},
  {&(_tg__ZTV8S19470C68S19470C7__9S19470C149S19470C13__9S19470C12[3]),  3,6},
  {&(_tg__ZTV8S19470C8__A1__9S19470C149S19470C13__9S19470C12[4]),  4,5},
  {&(_tg__ZTV8S19470C6__A1__9S19470C149S19470C13__9S19470C12[3]),  3,6},
  {&(_tg__ZTV8S19470C2__9S19470C13__9S19470C12[12]),  12,15},
  {&(_tg__ZTV8S19470C5__A1__9S19470C13__9S19470C12[5]),  5,8},
  {&(_tg__ZTV8S19470C6__A1__9S19470C13__9S19470C12[6]),  6,9},
  {&(_tg__ZTV8S19470C7__9S19470C13__9S19470C12[9]),  9,11},
  {&(_tg__ZTV8S19470C68S19470C7__A2__9S19470C13__9S19470C12[3]),  3,6},
  {&(_tg__ZTV8S19470C98S19470C2__9S19470C13__9S19470C12[2]),  2,8},
  {&(_tg__ZTV8S19470C7__A__9S19470C13__9S19470C12[4]),  4,6},
  {&(_tg__ZTV8S19470C68S19470C7__A3__9S19470C13__9S19470C12[3]),  3,6},
  {&(_tg__ZTV9S19470C14__9S19470C13__9S19470C12[4]),  4,7},
  {&(_tg__ZTV8S19470C68S19470C79S19470C14__A4__9S19470C13__9S19470C12[3]),  3,6},
  {&(_tg__ZTV8S19470C89S19470C14__A3__9S19470C13__9S19470C12[4]),  4,5},
  {&(_tg__ZTV8S19470C69S19470C14__A5__9S19470C13__9S19470C12[3]),  3,6},
  {&(_tg__ZTV8S19470C8__A4__9S19470C12[4]),  4,5},
  {&(_tg__ZTV8S19470C5__8S19470C8__A4__9S19470C12[5]),  5,8},
  {&(_ZTV9S19470C12[77]),  77,128},
  {&(_ZTV9S19470C12[85]),  85,128},
  {&(_ZTV9S19470C12[97]),  97,128},
  {&(_ZTV9S19470C12[102]),  102,128},
  {&(_ZTV9S19470C12[25]),  25,128},
  {&(_ZTV9S19470C12[117]),  117,128},
  {&(_ZTV9S19470C12[122]),  122,128},
  {&(_ZTV9S19470C12[34]),  34,128},
  {&(_ZTV9S19470C12[39]),  39,128},
  {&(_ZTV9S19470C12[46]),  46,128},
  {&(_ZTV9S19470C12[52]),  52,128},
  {&(_ZTV9S19470C12[59]),  59,128},
  {&(_ZTV9S19470C12[63]),  63,128},
  {&(_ZTV9S19470C12[70]),  70,128},
  {&(_tg__ZTV8S19470C6__9S19470C12[3]),  3,6},
  {&(_tg__ZTV8S19470C7__9S19470C12[4]),  4,6},
  {&(_tg__ZTV8S19470C88S19470C7__9S19470C12[4]),  4,5},
  {&(_tg__ZTV8S19470C5__8S19470C88S19470C7__9S19470C12[5]),  5,8},
  {&(_tg__ZTV8S19470C68S19470C7__A1__9S19470C12[3]),  3,6},
  {&(_tg__ZTV8S19470C5__8S19470C7__9S19470C12[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C7__9S19470C12[3]),  3,6},
  {&(_tg__ZTV8S19470C2__A1__9S19470C12[6]),  6,9},
  {&(_tg__ZTV8S19470C38S19470C2__A1__9S19470C12[5]),  5,5},
  {&(_tg__ZTV8S19470C5__8S19470C38S19470C2__A1__9S19470C12[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C38S19470C2__A1__9S19470C12[6]),  6,9},
  {&(_tg__ZTV8S19470C5__8S19470C2__A1__9S19470C12[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C2__A1__9S19470C12[6]),  6,9},
  {&(_tg__ZTV8S19470C7__8S19470C2__A1__9S19470C12[9]),  9,11},
  {&(_tg__ZTV8S19470C68S19470C7__A1__8S19470C2__A1__9S19470C12[3]),  3,6},
};
extern VTBL_ENTRY _ZTI9S19470C12[];
extern  VTBL_ENTRY _ZTV9S19470C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19470C12[];
static VTBL_ENTRY alt_thunk_names18[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19470C13D0Ev,_ZTv0_n28_N9S19470C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4768_N9S19470C13D0Ev,_ZThn3648_N9S19470C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19470C13D1Ev,_ZTv0_n28_N9S19470C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4768_N9S19470C13D1Ev,_ZThn3648_N9S19470C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19470C12D0Ev,_ZTv0_n28_N9S19470C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6256_N9S19470C12D0Ev,_ZThn4804_N9S19470C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19470C12D1Ev,_ZTv0_n28_N9S19470C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6256_N9S19470C12D1Ev,_ZThn4804_N9S19470C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19470C12 = {  "S19470C12", // class name
  bases_S19470C12, 43,
  &(vtc_S19470C12[0]), // expected_vtbl_contents
  &(vtt_S19470C12[0]), // expected_vtt_contents
  ABISELECT(7744,5960), // object size
  NSPAIRA(_ZTI9S19470C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19470C12),128, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19470C12),74, //virtual table table var
  31, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names18,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19470C18  : S19470C11 , S19470C7 {
  ::S19470C12 s19470c18f0;
  void *s19470c18f1;
  unsigned int s19470c18f2:1;
  int s19470c18f3;
  int s19470c18f4:30;
  int s19470c18f5;
  virtual  ~S19470C18(); // _ZN9S19470C18D2Ev
  S19470C18(); // tgen
};
//SIG(-1 S19470C18) C1{ BC2{ BC3{ BC4{ m Fi} v1 v2 v3 FC4[3] FC4[2] Fp Fs FC4} BC5{ BC3 VBC4 FD FL FC3 Fp Fs[3]} VBC6{ BC7{ VBC4 VBC3 VBC5 Fp[2] Fi FC5[8] FD[9]} BC4 VBC8{ VBC3 VBC4 BC9{ VBC3 VBC4 v4 FC3 FD Fp[2] FC3} BC5 v5 Fp[2] Fl Fi FC3[5]} BC10{ BC3 vd v6 Fp[7] Fi[2] FL Fi} vd v7 Fi Fp Fi} Fp Fi FC3 Fi Fp} BC8 vd FC11{ VBC5 BC6 BC12{ BC5 VBC6 BC8 BC13{ VBC4 BC8 BC9 BC5 v8 Fi FC14{} Fp[2]} vd Fi Fc[2] Fi FL FC14 Fp[8] Fs[5] FL FC15{ vd m Fc[2] Fi FL Fp[7] FU16{ m FL:3 Fi Fi Fi FD[8] Fp Fc[5] FD Fc[4] Fi Fp Fc[4] Fp}[4] FC17{ VBC4 VBC18{ BC4 v9 v10 v11 FC4[3] FC4[2] Fp Fs FC4} VBC19{ BC18 VBC4 FD FL FC18 Fp Fs[3]} Fp[2] Fi FC19[8] FD[9]}}} BC9 vd Fc Fi Fi Fi Fi Fp Fc[4] Fi} Fp Fi:1 Fi Fi:30 Fi}


 S19470C18 ::~S19470C18(){ note_dtor("S19470C18", this);}
S19470C18 ::S19470C18(){ note_ctor("S19470C18", this);} // tgen

static void Test_S19470C18()
{
  extern Class_Descriptor cd_S19470C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(679,2092)];
    init_test(&cd_S19470C18, buf);
    S19470C18 *dp, &lv = *(dp=new (buf) S19470C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(10848,8364), "sizeof(S19470C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19470C18)");
    /*is_ambiguous_... S19470C11::S19470C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C11*), ABISELECT(8,4), "S19470C18");
    /*is_ambiguous_... S19470C11::S19470C5 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C11*), 0, "S19470C18");
    /*is_ambiguous_... S19470C11::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*)(S19470C11*), ABISELECT(56,44), "S19470C18");
    /*is_ambiguous_... S19470C11::S19470C6 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C6*)(S19470C11*), ABISELECT(48,40), "S19470C18");
    /*is_ambiguous_... S19470C11::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*)(S19470C11*), ABISELECT(8600,6620), "S19470C18");
    /*is_ambiguous_... S19470C3::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C3*)(S19470C2*), ABISELECT(8600,6620), "S19470C18");
    /*is_ambiguous_... S19470C18::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*), ABISELECT(8600,6620), "S19470C18");
    /*is_ambiguous_... S19470C18::S19470C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C7*), ABISELECT(8600,6620), "S19470C18");
    /*is_ambiguous_... S19470C18::S19470C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C8*)(S19470C7*), ABISELECT(8600,6620), "S19470C18");
    /*is_ambiguous_... S19470C18::S19470C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*)(S19470C7*), ABISELECT(8600,6620), "S19470C18");
    /*is_ambiguous_... S19470C18::S19470C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C7*), ABISELECT(8600,6620), "S19470C18");
    /*is_ambiguous_... S19470C18::S19470C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C8*)(S19470C7*), ABISELECT(8600,6620), "S19470C18");
    /*is_ambiguous_... S19470C18::S19470C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*)(S19470C7*), ABISELECT(8600,6620), "S19470C18");
    /*is_ambiguous_... S19470C11::S19470C6 */ AMB_check_base_class_offset(lv, (S19470C6*)(S19470C11*), ABISELECT(48,40), "S19470C18");
    /*is_ambiguous_... S19470C18::S19470C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*), ABISELECT(10096,7784), "S19470C18");
    /*is_ambiguous_... S19470C3::S19470C5 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C3*)(S19470C2*), ABISELECT(10088,7780), "S19470C18");
    /*is_ambiguous_... S19470C18::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C7*), ABISELECT(10088,7780), "S19470C18");
    /*is_ambiguous_... S19470C18::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C8*)(S19470C7*), ABISELECT(10088,7780), "S19470C18");
    /*is_ambiguous_... S19470C18::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C7*), ABISELECT(10088,7780), "S19470C18");
    /*is_ambiguous_... S19470C18::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C8*)(S19470C7*), ABISELECT(10088,7780), "S19470C18");
    /*is_ambiguous_... S19470C18::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*), ABISELECT(10152,7824), "S19470C18");
    /*is_ambiguous_... S19470C18::S19470C6 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C6*), ABISELECT(10144,7820), "S19470C18");
    check_base_class_offset(lv, (S19470C6*)(S19470C3*)(S19470C2*), ABISELECT(10144,7820), "S19470C18");
    check_base_class_offset(lv, (S19470C3*)(S19470C2*), ABISELECT(8608,6624), "S19470C18");
    /*is_ambiguous_... S19470C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C2*), ABISELECT(9936,7676), "S19470C18");
    /*is_ambiguous_... S19470C18::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C8*)(S19470C7*), ABISELECT(10288,7932), "S19470C18");
    /*is_ambiguous_... S19470C18::S19470C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*)(S19470C7*), ABISELECT(10440,8040), "S19470C18");
    /*is_ambiguous_... S19470C18::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C6*)(S19470C7*), ABISELECT(10432,8036), "S19470C18");
    /*is_ambiguous_... S19470C18::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C6*)(S19470C7*), ABISELECT(10432,8036), "S19470C18");
    check_base_class_offset(lv, (S19470C7*)(S19470C2*), ABISELECT(10288,7932), "S19470C18");
    check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C9*)(S19470C2*), ABISELECT(9952,7684), "S19470C18");
    check_base_class_offset(lv, (S19470C5*)(S19470C9*)(S19470C2*), ABISELECT(9944,7680), "S19470C18");
    check_base_class_offset(lv, (S19470C9*)(S19470C2*), ABISELECT(9944,7680), "S19470C18");
    check_base_class_offset(lv, (S19470C2*)(S19470C11*), ABISELECT(8608,6624), "S19470C18");
    check_base_class_offset(lv, (S19470C11*), 0, "S19470C18");
    /*is_ambiguous_... S19470C18::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C8*)(S19470C7*), ABISELECT(272,208), "S19470C18");
    /*is_ambiguous_... S19470C18::S19470C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*)(S19470C7*), ABISELECT(424,316), "S19470C18");
    /*is_ambiguous_... S19470C18::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C6*)(S19470C7*), ABISELECT(416,312), "S19470C18");
    /*is_ambiguous_... S19470C18::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C6*)(S19470C7*), ABISELECT(416,312), "S19470C18");
    /*is_ambiguous_... S19470C18::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C7*), ABISELECT(272,208), "S19470C18");
    check_field_offset(lv, s19470c18f0, ABISELECT(832,640), "S19470C18.s19470c18f0");
    check_field_offset(lv, s19470c18f1, ABISELECT(8576,6600), "S19470C18.s19470c18f1");
    set_bf_and_test(lv, s19470c18f2, ABISELECT(8584,6604), 0, 1, 1, "S19470C18");
    check_field_offset(lv, s19470c18f3, ABISELECT(8588,6608), "S19470C18.s19470c18f3");
    set_bf_and_test(lv, s19470c18f4, ABISELECT(8592,6612), 0, 30, 1, "S19470C18");
    set_bf_and_test(lv, s19470c18f4, ABISELECT(8592,6612), 0, 30, hide_sll(1LL<<29), "S19470C18");
    check_field_offset(lv, s19470c18f5, ABISELECT(8596,6616), "S19470C18.s19470c18f5");
    test_class_info(&lv, &cd_S19470C18);
    dp->~S19470C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19470C18(Test_S19470C18, "S19470C18", ABISELECT(10848,8364));

#else // __cplusplus

extern void _ZN9S19470C18C1Ev();
extern void _ZN9S19470C18D2Ev();
Name_Map name_map_S19470C18[] = {
  NSPAIR(_ZN9S19470C18C1Ev),
  NSPAIR(_ZN9S19470C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
extern Class_Descriptor cd_S19470C3;
extern VTBL_ENTRY _ZTI8S19470C3[];
extern  VTBL_ENTRY _ZTV8S19470C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C8;
extern VTBL_ENTRY _ZTI8S19470C8[];
extern  VTBL_ENTRY _ZTV8S19470C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
extern Class_Descriptor cd_S19470C7;
extern VTBL_ENTRY _ZTI8S19470C7[];
extern  VTBL_ENTRY _ZTV8S19470C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C7[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C9;
extern VTBL_ENTRY _ZTI8S19470C9[];
extern  VTBL_ENTRY _ZTV8S19470C9[];
extern Class_Descriptor cd_S19470C2;
extern VTBL_ENTRY _ZTI8S19470C2[];
extern  VTBL_ENTRY _ZTV8S19470C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C2[];
extern Class_Descriptor cd_S19470C11;
extern VTBL_ENTRY _ZTI9S19470C11[];
extern  VTBL_ENTRY _ZTV9S19470C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19470C11[];
extern Class_Descriptor cd_S19470C8;
extern VTBL_ENTRY _ZTI8S19470C8[];
extern  VTBL_ENTRY _ZTV8S19470C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
extern Class_Descriptor cd_S19470C7;
extern VTBL_ENTRY _ZTI8S19470C7[];
extern  VTBL_ENTRY _ZTV8S19470C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C7[];
static Base_Class bases_S19470C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S19470C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3216C8_nt,    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
    3, //immediately_derived
  0, 0},
  {&cd_S19470C5,    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
    13, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(8600,6620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19470C6,    ABISELECT(48,40), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(10096,7784), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C5,    ABISELECT(10088,7780), //bcp->offset
    53, //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
    11, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(10152,7824), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C5,    ABISELECT(10144,7820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19470C6,    ABISELECT(10144,7820), //bcp->offset
    61, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19470C3,    ABISELECT(8608,6624), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(9936,7676), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C8,    ABISELECT(10288,7932), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(10440,8040), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C5,    ABISELECT(10432,8036), //bcp->offset
    -1, //bcp->virtual_function_table_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
    16, //immediately_derived
  0, 0},
  {&cd_S19470C6,    ABISELECT(10432,8036), //bcp->offset
    81, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19470C7,    ABISELECT(10288,7932), //bcp->offset
    70, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(9952,7684), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C5,    ABISELECT(9944,7680), //bcp->offset
    -1, //bcp->virtual_function_table_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
    20, //immediately_derived
  0, 0},
  {&cd_S19470C9,    ABISELECT(9944,7680), //bcp->offset
    45, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19470C2,    ABISELECT(8608,6624), //bcp->offset
    30, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19470C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19470C8,    ABISELECT(272,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(424,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
    25, //immediately_derived
  0, 0},
  {&cd_S19470C5,    ABISELECT(416,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
    17, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19470C6,    ABISELECT(416,312), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19470C7,    ABISELECT(272,208), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19470C18[];
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN9S19470C18D1Ev();
extern void _ZN9S19470C18D0Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void ABISELECT(_ZTv0_n56_N9S19470C18D1Ev,_ZTv0_n28_N9S19470C18D1Ev)();
extern void ABISELECT(_ZThn8608_N9S19470C18D1Ev,_ZThn6624_N9S19470C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19470C18D0Ev,_ZTv0_n28_N9S19470C18D0Ev)();
extern void ABISELECT(_ZThn8608_N9S19470C18D0Ev,_ZThn6624_N9S19470C18D0Ev)() __attribute__((weak));
extern void _ZN8S19470C22v8Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N9S19470C18D1Ev,_ZTvn1056_n28_N9S19470C18D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N9S19470C18D0Ev,_ZTvn1056_n28_N9S19470C18D0Ev)();
extern void _ZN8S19470C92v7Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY vtc_S19470C18[] = {
  ABISELECT(10288,7932),
  ABISELECT(10144,7820),
  ABISELECT(10088,7780),
  ABISELECT(8608,6624),
  ABISELECT(8600,6620),
  0,
  (VTBL_ENTRY)&(_ZTI9S19470C18[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  (VTBL_ENTRY)&_ZN9S19470C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19470C18D0Ev,
  ABISELECT(8552,6580),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI9S19470C18[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  ABISELECT(8328,6412),
  ABISELECT(9816,7572),
  ABISELECT(-272,-208),
  (VTBL_ENTRY)&(_ZTI9S19470C18[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
  ABISELECT(8184,6308),
  ABISELECT(-416,-312),
  (VTBL_ENTRY)&(_ZTI9S19470C18[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-8608,-6624),
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  ABISELECT(-8608,-6624),
  (VTBL_ENTRY)&(_ZTI9S19470C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19470C18D1Ev,_ZTv0_n28_N9S19470C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19470C18D0Ev,_ZTv0_n28_N9S19470C18D0Ev),
  (VTBL_ENTRY)&_ZN8S19470C22v8Ev,
  ABISELECT(-9944,-7680),
  (VTBL_ENTRY)&(_ZTI9S19470C18[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19470C18D1Ev,_ZTvn1056_n28_N9S19470C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19470C18D0Ev,_ZTvn1056_n28_N9S19470C18D0Ev),
  (VTBL_ENTRY)&_ZN8S19470C92v7Ev,
  0,
  0,
  0,
  ABISELECT(-10088,-7780),
  (VTBL_ENTRY)&(_ZTI9S19470C18[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-10144,-7820),
  (VTBL_ENTRY)&(_ZTI9S19470C18[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-10288,-7932),
  (VTBL_ENTRY)&(_ZTI9S19470C18[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
  ABISELECT(-1832,-1416),
  ABISELECT(-10432,-8036),
  (VTBL_ENTRY)&(_ZTI9S19470C18[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern VTBL_ENTRY _ZTV9S19470C18[];
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN9S19470C11D1Ev();
extern void _ZN9S19470C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19470C11__9S19470C18[] = {
  ABISELECT(10288,7932),
  ABISELECT(10144,7820),
  ABISELECT(10088,7780),
  ABISELECT(8608,6624),
  ABISELECT(8600,6620),
  0,
  (VTBL_ENTRY)&(_ZTI9S19470C11[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  (VTBL_ENTRY)&_ZN9S19470C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19470C11D0Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C69S19470C11__9S19470C18[] = {
  ABISELECT(8552,6580),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__A__9S19470C11__9S19470C18[] = {
  ABISELECT(8552,6580),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI9S19470C11[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19470C11D1Ev,_ZTv0_n28_N9S19470C11D1Ev)();
extern void ABISELECT(_ZThn8608_N9S19470C11D1Ev,_ZThn6624_N9S19470C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19470C11D0Ev,_ZTv0_n28_N9S19470C11D0Ev)();
extern void ABISELECT(_ZThn8608_N9S19470C11D0Ev,_ZThn6624_N9S19470C11D0Ev)() __attribute__((weak));
extern void _ZN8S19470C22v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C2__9S19470C11__9S19470C18[] = {
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-8608,-6624),
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  ABISELECT(-8608,-6624),
  (VTBL_ENTRY)&(_ZTI9S19470C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19470C11D1Ev,_ZTv0_n28_N9S19470C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19470C11D0Ev,_ZTv0_n28_N9S19470C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19470C22v8Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__A2__9S19470C11__9S19470C18[] = {
  0,
  0,
  0,
  ABISELECT(-10088,-7780),
  (VTBL_ENTRY)&(_ZTI9S19470C11[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__A1__9S19470C11__9S19470C18[] = {
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-10144,-7820),
  (VTBL_ENTRY)&(_ZTI9S19470C11[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C7__9S19470C11__9S19470C18[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-10288,-7932),
  (VTBL_ENTRY)&(_ZTI9S19470C11[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C7__A2__9S19470C11__9S19470C18[] = {
  ABISELECT(-1832,-1416),
  ABISELECT(-10432,-8036),
  (VTBL_ENTRY)&(_ZTI9S19470C11[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N9S19470C11D1Ev,_ZTvn1056_n28_N9S19470C11D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N9S19470C11D0Ev,_ZTvn1056_n28_N9S19470C11D0Ev)();
extern void _ZN8S19470C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C98S19470C2__9S19470C11__9S19470C18[] = {
  ABISELECT(-9944,-7680),
  (VTBL_ENTRY)&(_ZTI9S19470C11[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19470C11D1Ev,_ZTvn1056_n28_N9S19470C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19470C11D0Ev,_ZTvn1056_n28_N9S19470C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19470C92v7Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C7__A__9S19470C18[] = {
  ABISELECT(8328,6412),
  ABISELECT(9816,7572),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C88S19470C7__A1__9S19470C18[] = {
  ABISELECT(8328,6412),
  ABISELECT(9816,7572),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C88S19470C7__A1__9S19470C18[] = {
  0,
  0,
  0,
  ABISELECT(-9816,-7572),
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C7__A3__9S19470C18[] = {
  ABISELECT(8184,6308),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C7__A__9S19470C18[] = {
  0,
  0,
  0,
  ABISELECT(-9816,-7572),
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C7__A__9S19470C18[] = {
  ABISELECT(8184,6308),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C2D1Ev();
extern void _ZN8S19470C2D0Ev();
extern void _ZN8S19470C22v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C2__9S19470C18[] = {
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19470C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19470C22v8Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19470C38S19470C2__9S19470C18[] = {
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C3[0]),
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C38S19470C2__9S19470C18[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1156),
  (VTBL_ENTRY)&(_ZTI8S19470C3[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C38S19470C2__9S19470C18[] = {
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-1536,-1196),
  (VTBL_ENTRY)&(_ZTI8S19470C3[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C2__9S19470C18[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1156),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C2__9S19470C18[] = {
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-1536,-1196),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C7__8S19470C2__9S19470C18[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-1680,-1308),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C7__A1__8S19470C2__9S19470C18[] = {
  ABISELECT(-1832,-1416),
  ABISELECT(-1824,-1412),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__A1__9S19470C18[] = {
  ABISELECT(-1544,-1200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C7__9S19470C18[] = {
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C88S19470C7__9S19470C18[] = {
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C88S19470C7__9S19470C18[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C7__A2__9S19470C18[] = {
  ABISELECT(-1832,-1416),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C7__9S19470C18[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C7__9S19470C18[] = {
  ABISELECT(-1832,-1416),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
static  VTT_ENTRY vtt_S19470C18[] = {
  {&(_ZTV9S19470C18[7]),  7,87},
  {&(_tg__ZTV9S19470C11__9S19470C18[7]),  7,12},
  {&(_tg__ZTV8S19470C69S19470C11__9S19470C18[3]),  3,6},
  {&(_tg__ZTV8S19470C6__A__9S19470C11__9S19470C18[3]),  3,6},
  {&(_tg__ZTV8S19470C2__9S19470C11__9S19470C18[12]),  12,15},
  {&(_tg__ZTV8S19470C5__A2__9S19470C11__9S19470C18[5]),  5,8},
  {&(_tg__ZTV8S19470C6__A1__9S19470C11__9S19470C18[6]),  6,9},
  {&(_tg__ZTV8S19470C7__9S19470C11__9S19470C18[9]),  9,11},
  {&(_tg__ZTV8S19470C68S19470C7__A2__9S19470C11__9S19470C18[3]),  3,6},
  {&(_tg__ZTV8S19470C98S19470C2__9S19470C11__9S19470C18[2]),  2,8},
  {&(_tg__ZTV8S19470C7__A__9S19470C18[4]),  4,6},
  {&(_tg__ZTV8S19470C88S19470C7__A1__9S19470C18[4]),  4,5},
  {&(_tg__ZTV8S19470C5__8S19470C88S19470C7__A1__9S19470C18[5]),  5,8},
  {&(_tg__ZTV8S19470C68S19470C7__A3__9S19470C18[3]),  3,6},
  {&(_tg__ZTV8S19470C5__8S19470C7__A__9S19470C18[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C7__A__9S19470C18[3]),  3,6},
  {&(_ZTV9S19470C18[15]),  15,87},
  {&(_ZTV9S19470C18[42]),  42,87},
  {&(_ZTV9S19470C18[58]),  58,87},
  {&(_ZTV9S19470C18[67]),  67,87},
  {&(_ZTV9S19470C18[79]),  79,87},
  {&(_ZTV9S19470C18[84]),  84,87},
  {&(_ZTV9S19470C18[47]),  47,87},
  {&(_ZTV9S19470C18[22]),  22,87},
  {&(_ZTV9S19470C18[27]),  27,87},
  {&(_tg__ZTV8S19470C2__9S19470C18[6]),  6,9},
  {&(_tg__ZTV8S19470C38S19470C2__9S19470C18[5]),  5,5},
  {&(_tg__ZTV8S19470C5__8S19470C38S19470C2__9S19470C18[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C38S19470C2__9S19470C18[6]),  6,9},
  {&(_tg__ZTV8S19470C5__8S19470C2__9S19470C18[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C2__9S19470C18[6]),  6,9},
  {&(_tg__ZTV8S19470C7__8S19470C2__9S19470C18[9]),  9,11},
  {&(_tg__ZTV8S19470C68S19470C7__A1__8S19470C2__9S19470C18[3]),  3,6},
  {&(_tg__ZTV8S19470C6__A1__9S19470C18[3]),  3,6},
  {&(_tg__ZTV8S19470C7__9S19470C18[4]),  4,6},
  {&(_tg__ZTV8S19470C88S19470C7__9S19470C18[4]),  4,5},
  {&(_tg__ZTV8S19470C5__8S19470C88S19470C7__9S19470C18[5]),  5,8},
  {&(_tg__ZTV8S19470C68S19470C7__A2__9S19470C18[3]),  3,6},
  {&(_tg__ZTV8S19470C5__8S19470C7__9S19470C18[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C7__9S19470C18[3]),  3,6},
};
extern VTBL_ENTRY _ZTI9S19470C18[];
extern  VTBL_ENTRY _ZTV9S19470C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19470C18[];
static VTBL_ENTRY alt_thunk_names19[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19470C11D0Ev,_ZTv0_n28_N9S19470C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8608_N9S19470C11D0Ev,_ZThn6624_N9S19470C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19470C11D1Ev,_ZTv0_n28_N9S19470C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8608_N9S19470C11D1Ev,_ZThn6624_N9S19470C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19470C18D0Ev,_ZTv0_n28_N9S19470C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8608_N9S19470C18D0Ev,_ZThn6624_N9S19470C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19470C18D1Ev,_ZTv0_n28_N9S19470C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8608_N9S19470C18D1Ev,_ZThn6624_N9S19470C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19470C18 = {  "S19470C18", // class name
  bases_S19470C18, 28,
  &(vtc_S19470C18[0]), // expected_vtbl_contents
  &(vtt_S19470C18[0]), // expected_vtt_contents
  ABISELECT(10848,8364), // object size
  NSPAIRA(_ZTI9S19470C18),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19470C18),87, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19470C18),40, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names19,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19470C1  : virtual S19470C2 , virtual S19470C10 , virtual S19470C12 {
  char s19470c1f0;
  void *s19470c1f1;
  void *s19470c1f2;
  void *s19470c1f3;
  long s19470c1f4;
  int s19470c1f5;
  void *s19470c1f6;
  ::S19470C18 s19470c1f7;
  virtual  ~S19470C1(); // _ZN8S19470C1D2Ev
  virtual void  v1(); // _ZN8S19470C12v1Ev
  S19470C1(); // tgen
};
//SIG(1 S19470C1) C1{ VBC2{ BC3{ VBC4{ m Fi} VBC5{ BC4 v2 v3 v4 FC4[3] FC4[2] Fp Fs FC4} VBC6{ BC5 VBC4 FD FL FC5 Fp Fs[3]} Fp[2] Fi FC6[8] FD[9]} BC4 VBC7{ VBC5 VBC4 BC8{ VBC5 VBC4 v5 FC5 FD Fp[2] FC5} BC6 v6 Fp[2] Fl Fi FC5[5]} BC9{ BC5 vd v7 Fp[7] Fi[2] FL Fi} vd v8 Fi Fp Fi} VBC10{ VBC11{ BC5 BC6 VBC2 Fp Fi FC5 Fi Fp} vd FD Fi Fl[2] FL[6]} VBC12{ VBC6 BC2 BC13{ BC6 VBC2 BC7 BC14{ VBC4 BC7 BC8 BC6 v9 Fi FC15{} Fp[2]} vd Fi Fc[2] Fi FL FC15 Fp[8] Fs[5] FL FC16{ vd m Fc[2] Fi FL Fp[7] FU17{ m FL:3 Fi Fi Fi FD[8] Fp Fc[5] FD Fc[4] Fi Fp Fc[4] Fp}[4] FC18{ VBC4 VBC19{ BC4 v10 v11 v12 FC4[3] FC4[2] Fp Fs FC4} VBC20{ BC19 VBC4 FD FL FC19 Fp Fs[3]} Fp[2] Fi FC20[8] FD[9]}}} BC8 vd Fc Fi Fi Fi Fi Fp Fc[4] Fi} vd v1 Fc Fp Fp Fp Fl Fi Fp FC21{ BC11 BC7 vd FC12 Fp Fi:1 Fi Fi:30 Fi}}


 S19470C1 ::~S19470C1(){ note_dtor("S19470C1", this);}
void  S19470C1 ::v1(){vfunc_called(this, "_ZN8S19470C12v1Ev");}
S19470C1 ::S19470C1(){ note_ctor("S19470C1", this);} // tgen

static void Test_S19470C1()
{
  extern Class_Descriptor cd_S19470C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1191,3661)];
    init_test(&cd_S19470C1, buf);
    S19470C1 *dp, &lv = *(dp=new (buf) S19470C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(19040,14640), "sizeof(S19470C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19470C1)");
    /*is_ambiguous_... S19470C1::S19470C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C3*)(S19470C2*), ABISELECT(12388,9552), "S19470C1");
    /*is_ambiguous_... S19470C1::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*), ABISELECT(12388,9552), "S19470C1");
    /*is_ambiguous_... S19470C1::S19470C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C7*), ABISELECT(12388,9552), "S19470C1");
    /*is_ambiguous_... S19470C1::S19470C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C8*)(S19470C7*), ABISELECT(12388,9552), "S19470C1");
    /*is_ambiguous_... S19470C1::S19470C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*)(S19470C7*), ABISELECT(12388,9552), "S19470C1");
    /*is_ambiguous_... S19470C11::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*)(S19470C11*), ABISELECT(12388,9552), "S19470C1");
    /*is_ambiguous_... S19470C12::S19470C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C3*)(S19470C2*)(S19470C12*), ABISELECT(12388,9552), "S19470C1");
    /*is_ambiguous_... S19470C13::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*)(S19470C13*)(S19470C12*), ABISELECT(12388,9552), "S19470C1");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C7*)(S19470C13*)(S19470C12*), ABISELECT(12388,9552), "S19470C1");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C8*)(S19470C7*)(S19470C13*)(S19470C12*), ABISELECT(12388,9552), "S19470C1");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*)(S19470C7*)(S19470C13*)(S19470C12*), ABISELECT(12388,9552), "S19470C1");
    /*is_ambiguous_... S19470C14::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C14*)(S19470C13*)(S19470C12*), ABISELECT(12388,9552), "S19470C1");
    /*is_ambiguous_... S19470C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C7*)(S19470C14*)(S19470C13*)(S19470C12*), ABISELECT(12388,9552), "S19470C1");
    /*is_ambiguous_... S19470C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C8*)(S19470C7*)(S19470C14*)(S19470C13*)(S19470C12*), ABISELECT(12388,9552), "S19470C1");
    /*is_ambiguous_... S19470C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*)(S19470C7*)(S19470C14*)(S19470C13*)(S19470C12*), ABISELECT(12388,9552), "S19470C1");
    /*is_ambiguous_... S19470C14::S19470C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C8*)(S19470C14*)(S19470C13*)(S19470C12*), ABISELECT(12388,9552), "S19470C1");
    /*is_ambiguous_... S19470C14::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C6*)(S19470C14*)(S19470C13*)(S19470C12*), ABISELECT(12388,9552), "S19470C1");
    /*is_ambiguous_... S19470C12::S19470C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C8*)(S19470C12*), ABISELECT(12388,9552), "S19470C1");
    /*is_ambiguous_... S19470C1::S19470C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*), ABISELECT(12400,9560), "S19470C1");
    /*is_ambiguous_... S19470C1::S19470C2 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C3*)(S19470C2*), ABISELECT(12392,9556), "S19470C1");
    /*is_ambiguous_... S19470C1::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C7*), ABISELECT(12392,9556), "S19470C1");
    /*is_ambiguous_... S19470C1::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C8*)(S19470C7*), ABISELECT(12392,9556), "S19470C1");
    /*is_ambiguous_... S19470C12::S19470C2 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C3*)(S19470C2*)(S19470C12*), ABISELECT(12392,9556), "S19470C1");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C7*)(S19470C13*)(S19470C12*), ABISELECT(12392,9556), "S19470C1");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C8*)(S19470C7*)(S19470C13*)(S19470C12*), ABISELECT(12392,9556), "S19470C1");
    /*is_ambiguous_... S19470C7::S19470C5 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C7*)(S19470C14*)(S19470C13*)(S19470C12*), ABISELECT(12392,9556), "S19470C1");
    check_base_class_offset(lv, (S19470C5*)(S19470C8*)(S19470C7*)(S19470C14*)(S19470C13*)(S19470C12*), ABISELECT(12392,9556), "S19470C1");
    /*is_ambiguous_... S19470C14::S19470C8 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C8*)(S19470C14*)(S19470C13*)(S19470C12*), ABISELECT(12392,9556), "S19470C1");
    /*is_ambiguous_... S19470C12::S19470C8 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C8*)(S19470C12*), ABISELECT(12392,9556), "S19470C1");
    /*is_ambiguous_... S19470C1::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*), ABISELECT(12456,9600), "S19470C1");
    /*is_ambiguous_... S19470C1::S19470C6 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C6*), ABISELECT(12448,9596), "S19470C1");
    /*is_ambiguous_... S19470C1::S19470C2 */ AMB_check_base_class_offset(lv, (S19470C6*)(S19470C3*)(S19470C2*), ABISELECT(12448,9596), "S19470C1");
    /*is_ambiguous_... S19470C12::S19470C6 */ AMB_check_base_class_offset(lv, (S19470C6*)(S19470C12*), ABISELECT(12448,9596), "S19470C1");
    /*is_ambiguous_... S19470C12::S19470C2 */ AMB_check_base_class_offset(lv, (S19470C6*)(S19470C3*)(S19470C2*)(S19470C12*), ABISELECT(12448,9596), "S19470C1");
    /*is_ambiguous_... S19470C1::S19470C2 */ AMB_check_base_class_offset(lv, (S19470C3*)(S19470C2*), ABISELECT(10912,8396), "S19470C1");
    /*is_ambiguous_... S19470C1::S19470C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C2*), ABISELECT(12240,9448), "S19470C1");
    /*is_ambiguous_... S19470C1::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C8*)(S19470C7*), ABISELECT(12592,9708), "S19470C1");
    /*is_ambiguous_... S19470C1::S19470C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*)(S19470C7*), ABISELECT(12744,9816), "S19470C1");
    /*is_ambiguous_... S19470C1::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C6*)(S19470C7*), ABISELECT(12736,9812), "S19470C1");
    /*is_ambiguous_... S19470C1::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C6*)(S19470C7*), ABISELECT(12736,9812), "S19470C1");
    /*is_ambiguous_... S19470C1::S19470C2 */ AMB_check_base_class_offset(lv, (S19470C7*)(S19470C2*), ABISELECT(12592,9708), "S19470C1");
    /*is_ambiguous_... S19470C12::S19470C2 */ AMB_check_base_class_offset(lv, (S19470C7*)(S19470C2*)(S19470C12*), ABISELECT(12592,9708), "S19470C1");
    /*is_ambiguous_... S19470C1::S19470C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C9*)(S19470C2*), ABISELECT(12256,9456), "S19470C1");
    /*is_ambiguous_... S19470C1::S19470C2 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C9*)(S19470C2*), ABISELECT(12248,9452), "S19470C1");
    /*is_ambiguous_... S19470C1::S19470C2 */ AMB_check_base_class_offset(lv, (S19470C9*)(S19470C2*), ABISELECT(12248,9452), "S19470C1");
    /*is_ambiguous_... S19470C1::S19470C2 */ AMB_check_base_class_offset(lv, (S19470C2*), ABISELECT(10912,8396), "S19470C1");
    check_base_class_offset(lv, (S19470C2*)(S19470C11*), ABISELECT(10912,8396), "S19470C1");
    check_base_class_offset(lv, (S19470C2*)(S19470C13*)(S19470C12*), ABISELECT(10912,8396), "S19470C1");
    /*is_ambiguous_... S19470C11::S19470C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C11*), ABISELECT(13272,10220), "S19470C1");
    /*is_ambiguous_... S19470C11::S19470C5 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C11*), ABISELECT(13264,10216), "S19470C1");
    /*is_ambiguous_... S19470C11::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*)(S19470C11*), ABISELECT(13320,10260), "S19470C1");
    /*is_ambiguous_... S19470C11::S19470C6 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C6*)(S19470C11*), ABISELECT(13312,10256), "S19470C1");
    /*is_ambiguous_... S19470C11::S19470C6 */ AMB_check_base_class_offset(lv, (S19470C6*)(S19470C11*), ABISELECT(13312,10256), "S19470C1");
    check_base_class_offset(lv, (S19470C11*)(S19470C10*), ABISELECT(13264,10216), "S19470C1");
    check_base_class_offset(lv, (S19470C10*), ABISELECT(13152,10140), "S19470C1");
    /*is_ambiguous_... S19470C12::S19470C2 */ AMB_check_base_class_offset(lv, (S19470C3*)(S19470C2*)(S19470C12*), ABISELECT(13536,10424), "S19470C1");
    /*is_ambiguous_... S19470C12::S19470C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C2*)(S19470C12*), ABISELECT(14864,11476), "S19470C1");
    /*is_ambiguous_... S19470C12::S19470C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C9*)(S19470C2*)(S19470C12*), ABISELECT(14880,11484), "S19470C1");
    /*is_ambiguous_... S19470C12::S19470C2 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C9*)(S19470C2*)(S19470C12*), ABISELECT(14872,11480), "S19470C1");
    /*is_ambiguous_... S19470C12::S19470C2 */ AMB_check_base_class_offset(lv, (S19470C9*)(S19470C2*)(S19470C12*), ABISELECT(14872,11480), "S19470C1");
    /*is_ambiguous_... S19470C12::S19470C2 */ AMB_check_base_class_offset(lv, (S19470C2*)(S19470C12*), ABISELECT(13536,10424), "S19470C1");
    /*is_ambiguous_... S19470C13::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*)(S19470C13*)(S19470C12*), ABISELECT(15032,11584), "S19470C1");
    /*is_ambiguous_... S19470C13::S19470C6 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C6*)(S19470C13*)(S19470C12*), ABISELECT(15024,11580), "S19470C1");
    /*is_ambiguous_... S19470C13::S19470C6 */ AMB_check_base_class_offset(lv, (S19470C6*)(S19470C13*)(S19470C12*), ABISELECT(15024,11580), "S19470C1");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C8*)(S19470C7*)(S19470C13*)(S19470C12*), ABISELECT(15168,11692), "S19470C1");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*)(S19470C7*)(S19470C13*)(S19470C12*), ABISELECT(15320,11800), "S19470C1");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C6*)(S19470C7*)(S19470C13*)(S19470C12*), ABISELECT(15312,11796), "S19470C1");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C6*)(S19470C7*)(S19470C13*)(S19470C12*), ABISELECT(15312,11796), "S19470C1");
    /*is_ambiguous_... S19470C13::S19470C7 */ AMB_check_base_class_offset(lv, (S19470C7*)(S19470C13*)(S19470C12*), ABISELECT(15168,11692), "S19470C1");
    check_base_class_offset(lv, (S19470C8*)(S19470C7*)(S19470C14*)(S19470C13*)(S19470C12*), ABISELECT(15728,12124), "S19470C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*)(S19470C7*)(S19470C14*)(S19470C13*)(S19470C12*), ABISELECT(15880,12232), "S19470C1");
    check_base_class_offset(lv, (S19470C5*)(S19470C6*)(S19470C7*)(S19470C14*)(S19470C13*)(S19470C12*), ABISELECT(15872,12228), "S19470C1");
    check_base_class_offset(lv, (S19470C6*)(S19470C7*)(S19470C14*)(S19470C13*)(S19470C12*), ABISELECT(15872,12228), "S19470C1");
    check_base_class_offset(lv, (S19470C7*)(S19470C14*)(S19470C13*)(S19470C12*), ABISELECT(15728,12124), "S19470C1");
    /*is_ambiguous_... S19470C14::S19470C8 */ AMB_check_base_class_offset(lv, (S19470C8*)(S19470C14*)(S19470C13*)(S19470C12*), ABISELECT(16288,12556), "S19470C1");
    /*is_ambiguous_... S19470C14::S19470C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19470C5*)(S19470C6*)(S19470C14*)(S19470C13*)(S19470C12*), ABISELECT(16440,12664), "S19470C1");
    /*is_ambiguous_... S19470C14::S19470C6 */ AMB_check_base_class_offset(lv, (S19470C5*)(S19470C6*)(S19470C14*)(S19470C13*)(S19470C12*), ABISELECT(16432,12660), "S19470C1");
    /*is_ambiguous_... S19470C14::S19470C6 */ AMB_check_base_class_offset(lv, (S19470C6*)(S19470C14*)(S19470C13*)(S19470C12*), ABISELECT(16432,12660), "S19470C1");
    check_base_class_offset(lv, (S19470C14*)(S19470C13*)(S19470C12*), ABISELECT(15728,12124), "S19470C1");
    check_base_class_offset(lv, (S19470C13*)(S19470C12*), ABISELECT(15024,11580), "S19470C1");
    /*is_ambiguous_... S19470C12::S19470C8 */ AMB_check_base_class_offset(lv, (S19470C8*)(S19470C12*), ABISELECT(18848,14504), "S19470C1");
    check_base_class_offset(lv, (S19470C12*), ABISELECT(13536,10424), "S19470C1");
    check_field_offset(lv, s19470c1f0, ABISELECT(8,4), "S19470C1.s19470c1f0");
    check_field_offset(lv, s19470c1f1, ABISELECT(16,8), "S19470C1.s19470c1f1");
    check_field_offset(lv, s19470c1f2, ABISELECT(24,12), "S19470C1.s19470c1f2");
    check_field_offset(lv, s19470c1f3, ABISELECT(32,16), "S19470C1.s19470c1f3");
    check_field_offset(lv, s19470c1f4, ABISELECT(40,20), "S19470C1.s19470c1f4");
    check_field_offset(lv, s19470c1f5, ABISELECT(48,24), "S19470C1.s19470c1f5");
    check_field_offset(lv, s19470c1f6, ABISELECT(56,28), "S19470C1.s19470c1f6");
    check_field_offset(lv, s19470c1f7, ABISELECT(64,32), "S19470C1.s19470c1f7");
    test_class_info(&lv, &cd_S19470C1);
    dp->~S19470C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19470C1(Test_S19470C1, "S19470C1", ABISELECT(19040,14640));

#else // __cplusplus

extern void _ZN8S19470C1C1Ev();
extern void _ZN8S19470C1D2Ev();
Name_Map name_map_S19470C1[] = {
  NSPAIR(_ZN8S19470C1C1Ev),
  NSPAIR(_ZN8S19470C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
extern Class_Descriptor cd_S19470C3;
extern VTBL_ENTRY _ZTI8S19470C3[];
extern  VTBL_ENTRY _ZTV8S19470C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C8;
extern VTBL_ENTRY _ZTI8S19470C8[];
extern  VTBL_ENTRY _ZTV8S19470C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
extern Class_Descriptor cd_S19470C7;
extern VTBL_ENTRY _ZTI8S19470C7[];
extern  VTBL_ENTRY _ZTV8S19470C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C7[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C9;
extern VTBL_ENTRY _ZTI8S19470C9[];
extern  VTBL_ENTRY _ZTV8S19470C9[];
extern Class_Descriptor cd_S19470C2;
extern VTBL_ENTRY _ZTI8S19470C2[];
extern  VTBL_ENTRY _ZTV8S19470C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
extern Class_Descriptor cd_S19470C11;
extern VTBL_ENTRY _ZTI9S19470C11[];
extern  VTBL_ENTRY _ZTV9S19470C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19470C11[];
extern Class_Descriptor cd_S19470C10;
extern VTBL_ENTRY _ZTI9S19470C10[];
extern  VTBL_ENTRY _ZTV9S19470C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19470C10[];
extern Class_Descriptor cd_S19470C3;
extern VTBL_ENTRY _ZTI8S19470C3[];
extern  VTBL_ENTRY _ZTV8S19470C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C9;
extern VTBL_ENTRY _ZTI8S19470C9[];
extern  VTBL_ENTRY _ZTV8S19470C9[];
extern Class_Descriptor cd_S19470C2;
extern VTBL_ENTRY _ZTI8S19470C2[];
extern  VTBL_ENTRY _ZTV8S19470C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
extern Class_Descriptor cd_S19470C8;
extern VTBL_ENTRY _ZTI8S19470C8[];
extern  VTBL_ENTRY _ZTV8S19470C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
extern Class_Descriptor cd_S19470C7;
extern VTBL_ENTRY _ZTI8S19470C7[];
extern  VTBL_ENTRY _ZTV8S19470C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C7[];
extern Class_Descriptor cd_S19470C8;
extern VTBL_ENTRY _ZTI8S19470C8[];
extern  VTBL_ENTRY _ZTV8S19470C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
extern Class_Descriptor cd_S19470C7;
extern VTBL_ENTRY _ZTI8S19470C7[];
extern  VTBL_ENTRY _ZTV8S19470C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C7[];
extern Class_Descriptor cd_S19470C8;
extern VTBL_ENTRY _ZTI8S19470C8[];
extern  VTBL_ENTRY _ZTV8S19470C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19470C5;
extern VTBL_ENTRY _ZTI8S19470C5[];
extern  VTBL_ENTRY _ZTV8S19470C5[];
extern Class_Descriptor cd_S19470C6;
extern VTBL_ENTRY _ZTI8S19470C6[];
extern  VTBL_ENTRY _ZTV8S19470C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C6[];
extern Class_Descriptor cd_S19470C14;
extern VTBL_ENTRY _ZTI9S19470C14[];
extern  VTBL_ENTRY _ZTV9S19470C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19470C14[];
extern Class_Descriptor cd_S19470C13;
extern VTBL_ENTRY _ZTI9S19470C13[];
extern  VTBL_ENTRY _ZTV9S19470C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19470C13[];
extern Class_Descriptor cd_S19470C8;
extern VTBL_ENTRY _ZTI8S19470C8[];
extern  VTBL_ENTRY _ZTV8S19470C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C8[];
extern Class_Descriptor cd_S19470C12;
extern VTBL_ENTRY _ZTI9S19470C12[];
extern  VTBL_ENTRY _ZTV9S19470C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19470C12[];
static Base_Class bases_S19470C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(12388,9552), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3216C8_nt,    ABISELECT(12400,9560), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C5,    ABISELECT(12392,9556), //bcp->offset
    36, //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
    6, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(12456,9600), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C5,    ABISELECT(12448,9596), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C6,    ABISELECT(12448,9596), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19470C3,    ABISELECT(10912,8396), //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
    16, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(12240,9448), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C8,    ABISELECT(12592,9708), //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
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(12744,9816), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C5,    ABISELECT(12736,9812), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19470C6,    ABISELECT(12736,9812), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19470C7,    ABISELECT(12592,9708), //bcp->offset
    53, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(12256,9456), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C5,    ABISELECT(12248,9452), //bcp->offset
    -1, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S19470C9,    ABISELECT(12248,9452), //bcp->offset
    28, //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
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19470C2,    ABISELECT(10912,8396), //bcp->offset
    13, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(13272,10220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C5,    ABISELECT(13264,10216), //bcp->offset
    -1, //bcp->virtual_function_table_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_S3216C8_nt,    ABISELECT(13320,10260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C5,    ABISELECT(13312,10256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19470C6,    ABISELECT(13312,10256), //bcp->offset
    97, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19470C11,    ABISELECT(13264,10216), //bcp->offset
    81, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19470C10,    ABISELECT(13152,10140), //bcp->offset
    70, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19470C3,    ABISELECT(13536,10424), //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
    17, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(14864,11476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3216C8_nt,    ABISELECT(14880,11484), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C5,    ABISELECT(14872,11480), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19470C9,    ABISELECT(14872,11480), //bcp->offset
    122, //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
    19, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19470C2,    ABISELECT(13536,10424), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(15032,11584), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C5,    ABISELECT(15024,11580), //bcp->offset
    -1, //bcp->virtual_function_table_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
    32, //immediately_derived
  0, 0},
  {&cd_S19470C6,    ABISELECT(15024,11580), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19470C8,    ABISELECT(15168,11692), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(15320,11800), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C5,    ABISELECT(15312,11796), //bcp->offset
    -1, //bcp->virtual_function_table_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
    36, //immediately_derived
  0, 0},
  {&cd_S19470C6,    ABISELECT(15312,11796), //bcp->offset
    148, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19470C7,    ABISELECT(15168,11692), //bcp->offset
    142, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19470C8,    ABISELECT(15728,12124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(15880,12232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19470C5,    ABISELECT(15872,12228), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19470C6,    ABISELECT(15872,12228), //bcp->offset
    161, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S19470C7,    ABISELECT(15728,12124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S19470C8,    ABISELECT(16288,12556), //bcp->offset
    167, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(16440,12664), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S19470C5,    ABISELECT(16432,12660), //bcp->offset
    -1, //bcp->virtual_function_table_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
    46, //immediately_derived
  0, 0},
  {&cd_S19470C6,    ABISELECT(16432,12660), //bcp->offset
    172, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S19470C14,    ABISELECT(15728,12124), //bcp->offset
    154, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19470C13,    ABISELECT(15024,11580), //bcp->offset
    130, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S19470C8,    ABISELECT(18848,14504), //bcp->offset
    178, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S19470C12,    ABISELECT(13536,10424), //bcp->offset
    103, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19470C1[];
extern void _ZN8S19470C1D1Ev();
extern void _ZN8S19470C1D0Ev();
extern void _ZN8S19470C12v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S19470C1D1Ev,_ZTv0_n28_N8S19470C1D1Ev)();
extern void ABISELECT(_ZThn10912_N8S19470C1D1Ev,_ZThn8396_N8S19470C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19470C1D0Ev,_ZTv0_n28_N8S19470C1D0Ev)();
extern void ABISELECT(_ZThn10912_N8S19470C1D0Ev,_ZThn8396_N8S19470C1D0Ev)() __attribute__((weak));
extern void _ZN8S19470C22v8Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N8S19470C1D1Ev,_ZTvn1056_n28_N8S19470C1D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N8S19470C1D0Ev,_ZTvn1056_n28_N8S19470C1D0Ev)();
extern void _ZN8S19470C92v7Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void ABISELECT(_ZTv0_n72_N8S19470C1D1Ev,_ZTv0_n36_N8S19470C1D1Ev)();
extern void ABISELECT(_ZThn13152_N8S19470C1D1Ev,_ZThn10140_N8S19470C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19470C1D0Ev,_ZTv0_n36_N8S19470C1D0Ev)();
extern void ABISELECT(_ZThn13152_N8S19470C1D0Ev,_ZThn10140_N8S19470C1D0Ev)() __attribute__((weak));
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void ABISELECT(_ZTv0_n88_N8S19470C1D1Ev,_ZTv0_n44_N8S19470C1D1Ev)();
extern void ABISELECT(_ZThn13264_N8S19470C1D1Ev,_ZThn10216_N8S19470C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19470C1D0Ev,_ZTv0_n44_N8S19470C1D0Ev)();
extern void ABISELECT(_ZThn13264_N8S19470C1D0Ev,_ZThn10216_N8S19470C1D0Ev)() __attribute__((weak));
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void ABISELECT(_ZTv0_n64_N8S19470C1D1Ev,_ZTv0_n32_N8S19470C1D1Ev)();
extern void ABISELECT(_ZThn13536_N8S19470C1D1Ev,_ZThn10424_N8S19470C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19470C1D0Ev,_ZTv0_n32_N8S19470C1D0Ev)();
extern void ABISELECT(_ZThn13536_N8S19470C1D0Ev,_ZThn10424_N8S19470C1D0Ev)() __attribute__((weak));
extern void _ZN8S19470C22v8Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void ABISELECT(_ZTvn1336_n64_N8S19470C1D1Ev,_ZTvn1056_n32_N8S19470C1D1Ev)();
extern void ABISELECT(_ZTvn1336_n64_N8S19470C1D0Ev,_ZTvn1056_n32_N8S19470C1D0Ev)();
extern void _ZN8S19470C92v7Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void ABISELECT(_ZTvn1488_n64_N8S19470C1D1Ev,_ZTvn1156_n32_N8S19470C1D1Ev)();
extern void ABISELECT(_ZTvn1488_n64_N8S19470C1D0Ev,_ZTvn1156_n32_N8S19470C1D0Ev)();
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
extern void _ZN9S19470C142v9Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN8S19470C82v5Ev();
static  VTBL_ENTRY vtc_S19470C1[] = {
  ABISELECT(13536,10424),
  ABISELECT(13264,10216),
  ABISELECT(13152,10140),
  ABISELECT(12592,9708),
  ABISELECT(12448,9596),
  ABISELECT(12392,9556),
  ABISELECT(12388,9552),
  ABISELECT(10912,8396),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C1[0]),
  (VTBL_ENTRY)&_ZN8S19470C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19470C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19470C12v1Ev,
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-10912,-8396),
  ABISELECT(1680,1312),
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  ABISELECT(-10912,-8396),
  (VTBL_ENTRY)&(_ZTI8S19470C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19470C1D1Ev,_ZTv0_n28_N8S19470C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19470C1D0Ev,_ZTv0_n28_N8S19470C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19470C22v8Ev,
  ABISELECT(-12248,-9452),
  (VTBL_ENTRY)&(_ZTI8S19470C1[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S19470C1D1Ev,_ZTvn1056_n28_N8S19470C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S19470C1D0Ev,_ZTvn1056_n28_N8S19470C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19470C92v7Ev,
  0,
  0,
  0,
  ABISELECT(-12392,-9556),
  (VTBL_ENTRY)&(_ZTI8S19470C1[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(-12448,-9596),
  (VTBL_ENTRY)&(_ZTI8S19470C1[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  ABISELECT(-12592,-9708),
  (VTBL_ENTRY)&(_ZTI8S19470C1[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
  ABISELECT(-348,-260),
  ABISELECT(-12736,-9812),
  (VTBL_ENTRY)&(_ZTI8S19470C1[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  ABISELECT(-13152,-10140),
  ABISELECT(-560,-432),
  ABISELECT(-704,-544),
  ABISELECT(-760,-584),
  ABISELECT(-2240,-1744),
  ABISELECT(-764,-588),
  ABISELECT(112,76),
  ABISELECT(-13152,-10140),
  (VTBL_ENTRY)&(_ZTI8S19470C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19470C1D1Ev,_ZTv0_n36_N8S19470C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19470C1D0Ev,_ZTv0_n36_N8S19470C1D0Ev),
  ABISELECT(-13264,-10216),
  0,
  0,
  0,
  ABISELECT(-672,-508),
  ABISELECT(-816,-620),
  ABISELECT(-872,-660),
  ABISELECT(-2352,-1820),
  ABISELECT(-876,-664),
  ABISELECT(-13264,-10216),
  (VTBL_ENTRY)&(_ZTI8S19470C1[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19470C1D1Ev,_ZTv0_n44_N8S19470C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19470C1D0Ev,_ZTv0_n44_N8S19470C1D0Ev),
  ABISELECT(-924,-704),
  ABISELECT(-13312,-10256),
  (VTBL_ENTRY)&(_ZTI8S19470C1[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  ABISELECT(2192,1700),
  ABISELECT(1632,1268),
  ABISELECT(1632,1268),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-13536,-10424),
  ABISELECT(-2624,-2028),
  ABISELECT(-944,-716),
  ABISELECT(-1088,-828),
  ABISELECT(-1144,-868),
  ABISELECT(-1148,-872),
  ABISELECT(-13536,-10424),
  (VTBL_ENTRY)&(_ZTI8S19470C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19470C1D1Ev,_ZTv0_n32_N8S19470C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19470C1D0Ev,_ZTv0_n32_N8S19470C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19470C22v8Ev,
  ABISELECT(-14872,-11480),
  (VTBL_ENTRY)&(_ZTI8S19470C1[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n64_N8S19470C1D1Ev,_ZTvn1056_n32_N8S19470C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n64_N8S19470C1D0Ev,_ZTvn1056_n32_N8S19470C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19470C92v7Ev,
  ABISELECT(-2432,-1872),
  ABISELECT(-2576,-1984),
  ABISELECT(-2632,-2024),
  ABISELECT(-4112,-3184),
  ABISELECT(-2636,-2028),
  ABISELECT(-15024,-11580),
  (VTBL_ENTRY)&(_ZTI8S19470C1[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1488_n64_N8S19470C1D1Ev,_ZTvn1156_n32_N8S19470C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1488_n64_N8S19470C1D0Ev,_ZTvn1156_n32_N8S19470C1D0Ev),
  ABISELECT(-2780,-2140),
  ABISELECT(-2776,-2136),
  ABISELECT(-15168,-11692),
  (VTBL_ENTRY)&(_ZTI8S19470C1[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
  ABISELECT(-2924,-2244),
  ABISELECT(-15312,-11796),
  (VTBL_ENTRY)&(_ZTI8S19470C1[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  ABISELECT(-3340,-2572),
  ABISELECT(-3336,-2568),
  ABISELECT(-15728,-12124),
  (VTBL_ENTRY)&(_ZTI8S19470C1[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19470C142v9Ev,
  ABISELECT(-3484,-2676),
  ABISELECT(-15872,-12228),
  (VTBL_ENTRY)&(_ZTI8S19470C1[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  ABISELECT(-3900,-3004),
  ABISELECT(-3896,-3000),
  ABISELECT(-16288,-12556),
  (VTBL_ENTRY)&(_ZTI8S19470C1[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  ABISELECT(-4044,-3108),
  ABISELECT(-16432,-12660),
  (VTBL_ENTRY)&(_ZTI8S19470C1[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  ABISELECT(-6460,-4952),
  ABISELECT(-6456,-4948),
  ABISELECT(-18848,-14504),
  (VTBL_ENTRY)&(_ZTI8S19470C1[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
};
extern VTBL_ENTRY _ZTV8S19470C1[];
extern void _ZN8S19470C2D1Ev();
extern void _ZN8S19470C2D0Ev();
extern void _ZN8S19470C22v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C2__8S19470C1[] = {
  ABISELECT(1680,1312),
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19470C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19470C22v8Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19470C38S19470C2__8S19470C1[] = {
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C3[0]),
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C38S19470C2__8S19470C1[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1160),
  (VTBL_ENTRY)&(_ZTI8S19470C3[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C38S19470C2__8S19470C1[] = {
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(-1536,-1200),
  (VTBL_ENTRY)&(_ZTI8S19470C3[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C2__8S19470C1[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1160),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C2__8S19470C1[] = {
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(-1536,-1200),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C7__8S19470C2__8S19470C1[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  ABISELECT(-1680,-1312),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C7__A1__8S19470C2__8S19470C1[] = {
  ABISELECT(-348,-260),
  ABISELECT(-1824,-1416),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C1[] = {
  ABISELECT(-60,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C7__8S19470C1[] = {
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C88S19470C7__8S19470C1[] = {
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C88S19470C7__8S19470C1[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C7__A1__8S19470C1[] = {
  ABISELECT(-348,-260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C7__8S19470C1[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C7__8S19470C1[] = {
  ABISELECT(-348,-260),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN9S19470C10D1Ev();
extern void _ZN9S19470C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19470C10__8S19470C1[] = {
  ABISELECT(-560,-432),
  ABISELECT(-704,-544),
  ABISELECT(-760,-584),
  ABISELECT(-2240,-1744),
  ABISELECT(-764,-588),
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19470C10[0]),
  (VTBL_ENTRY)&_ZN9S19470C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19470C10D0Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void ABISELECT(_ZTv0_n88_N9S19470C10D1Ev,_ZTv0_n44_N9S19470C10D1Ev)();
extern void ABISELECT(_ZThn112_N9S19470C10D1Ev,_ZThn76_N9S19470C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19470C10D0Ev,_ZTv0_n44_N9S19470C10D0Ev)();
extern void ABISELECT(_ZThn112_N9S19470C10D0Ev,_ZThn76_N9S19470C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19470C11__9S19470C10__8S19470C1[] = {
  ABISELECT(-112,-76),
  0,
  0,
  0,
  ABISELECT(-672,-508),
  ABISELECT(-816,-620),
  ABISELECT(-872,-660),
  ABISELECT(-2352,-1820),
  ABISELECT(-876,-664),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S19470C10[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19470C10D1Ev,_ZTv0_n44_N9S19470C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19470C10D0Ev,_ZTv0_n44_N9S19470C10D0Ev),
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C69S19470C11__9S19470C10__8S19470C1[] = {
  ABISELECT(-924,-704),
  ABISELECT(-160,-116),
  (VTBL_ENTRY)&(_ZTI9S19470C10[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19470C10D1Ev,_ZTv0_n28_N9S19470C10D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S19470C10D0Ev,_ZTv0_n28_N9S19470C10D0Ev)();
extern void _ZN8S19470C22v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C2__9S19470C10__8S19470C1[] = {
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(2240,1744),
  ABISELECT(1680,1312),
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  ABISELECT(2240,1744),
  (VTBL_ENTRY)&(_ZTI9S19470C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19470C10D1Ev,_ZTv0_n28_N9S19470C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19470C10D0Ev,_ZTv0_n28_N9S19470C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19470C22v8Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__A2__9S19470C10__8S19470C1[] = {
  0,
  0,
  0,
  ABISELECT(760,584),
  (VTBL_ENTRY)&(_ZTI9S19470C10[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__A1__9S19470C10__8S19470C1[] = {
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(704,544),
  (VTBL_ENTRY)&(_ZTI9S19470C10[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C7__9S19470C10__8S19470C1[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  ABISELECT(560,432),
  (VTBL_ENTRY)&(_ZTI9S19470C10[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C7__A2__9S19470C10__8S19470C1[] = {
  ABISELECT(-348,-260),
  ABISELECT(416,328),
  (VTBL_ENTRY)&(_ZTI9S19470C10[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N9S19470C10D1Ev,_ZTvn1056_n28_N9S19470C10D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N9S19470C10D0Ev,_ZTvn1056_n28_N9S19470C10D0Ev)();
extern void _ZN8S19470C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C98S19470C2__9S19470C10__8S19470C1[] = {
  ABISELECT(904,688),
  (VTBL_ENTRY)&(_ZTI9S19470C10[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19470C10D1Ev,_ZTvn1056_n28_N9S19470C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19470C10D0Ev,_ZTvn1056_n28_N9S19470C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19470C92v7Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN9S19470C11D1Ev();
extern void _ZN9S19470C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19470C11__8S19470C1[] = {
  ABISELECT(-672,-508),
  ABISELECT(-816,-620),
  ABISELECT(-872,-660),
  ABISELECT(-2352,-1820),
  ABISELECT(-876,-664),
  0,
  (VTBL_ENTRY)&(_ZTI9S19470C11[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  (VTBL_ENTRY)&_ZN9S19470C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19470C11D0Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C69S19470C11__A2__8S19470C1[] = {
  ABISELECT(-924,-704),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__A__9S19470C11__8S19470C1[] = {
  ABISELECT(-924,-704),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI9S19470C11[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19470C11D1Ev,_ZTv0_n28_N9S19470C11D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S19470C11D0Ev,_ZTv0_n28_N9S19470C11D0Ev)();
extern void _ZN8S19470C22v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C2__9S19470C11__8S19470C1[] = {
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(2352,1820),
  ABISELECT(1680,1312),
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  ABISELECT(2352,1820),
  (VTBL_ENTRY)&(_ZTI9S19470C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19470C11D1Ev,_ZTv0_n28_N9S19470C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19470C11D0Ev,_ZTv0_n28_N9S19470C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19470C22v8Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__A2__9S19470C11__8S19470C1[] = {
  0,
  0,
  0,
  ABISELECT(872,660),
  (VTBL_ENTRY)&(_ZTI9S19470C11[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__A1__9S19470C11__8S19470C1[] = {
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(816,620),
  (VTBL_ENTRY)&(_ZTI9S19470C11[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C7__9S19470C11__8S19470C1[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  ABISELECT(672,508),
  (VTBL_ENTRY)&(_ZTI9S19470C11[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C7__A2__9S19470C11__8S19470C1[] = {
  ABISELECT(-348,-260),
  ABISELECT(528,404),
  (VTBL_ENTRY)&(_ZTI9S19470C11[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N9S19470C11D1Ev,_ZTvn1056_n28_N9S19470C11D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N9S19470C11D0Ev,_ZTvn1056_n28_N9S19470C11D0Ev)();
extern void _ZN8S19470C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C98S19470C2__9S19470C11__8S19470C1[] = {
  ABISELECT(1016,764),
  (VTBL_ENTRY)&(_ZTI9S19470C11[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19470C11D1Ev,_ZTvn1056_n28_N9S19470C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19470C11D0Ev,_ZTvn1056_n28_N9S19470C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19470C92v7Ev,
};
extern void _ZN9S19470C12D1Ev();
extern void _ZN9S19470C12D0Ev();
extern void _ZN8S19470C22v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19470C12__8S19470C1[] = {
  ABISELECT(-2624,-2028),
  ABISELECT(-944,-716),
  ABISELECT(-1088,-828),
  ABISELECT(-1144,-868),
  ABISELECT(-1148,-872),
  0,
  (VTBL_ENTRY)&(_ZTI9S19470C12[0]),
  (VTBL_ENTRY)&_ZN9S19470C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19470C12D0Ev,
  (VTBL_ENTRY)&_ZN8S19470C22v8Ev,
};
extern void _ZN8S19470C2D1Ev();
extern void _ZN8S19470C2D0Ev();
extern void _ZN8S19470C22v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C29S19470C12__A1__8S19470C1[] = {
  ABISELECT(-944,-716),
  ABISELECT(-1088,-828),
  ABISELECT(-1144,-868),
  ABISELECT(-1148,-872),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19470C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19470C22v8Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19470C38S19470C29S19470C12__A1__8S19470C1[] = {
  ABISELECT(-1088,-828),
  ABISELECT(-1144,-868),
  ABISELECT(-1148,-872),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C3[0]),
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C38S19470C29S19470C12__A1__8S19470C1[] = {
  0,
  0,
  0,
  ABISELECT(1144,868),
  (VTBL_ENTRY)&(_ZTI8S19470C3[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C38S19470C29S19470C12__A1__8S19470C1[] = {
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(1088,828),
  (VTBL_ENTRY)&(_ZTI8S19470C3[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C29S19470C12__A1__8S19470C1[] = {
  0,
  0,
  0,
  ABISELECT(1144,868),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C29S19470C12__A1__8S19470C1[] = {
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(1088,828),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C7__8S19470C29S19470C12__A1__8S19470C1[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  ABISELECT(944,716),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C7__A1__8S19470C29S19470C12__A1__8S19470C1[] = {
  ABISELECT(-348,-260),
  ABISELECT(800,612),
  (VTBL_ENTRY)&(_ZTI8S19470C2[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void _ZN9S19470C13D1Ev();
extern void _ZN9S19470C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19470C139S19470C12__8S19470C1[] = {
  ABISELECT(-2432,-1872),
  ABISELECT(-2576,-1984),
  ABISELECT(-2632,-2024),
  ABISELECT(-4112,-3184),
  ABISELECT(-2636,-2028),
  0,
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  (VTBL_ENTRY)&_ZN9S19470C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19470C13D0Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C69S19470C139S19470C12__A3__8S19470C1[] = {
  ABISELECT(-2636,-2028),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C79S19470C139S19470C12__A1__8S19470C1[] = {
  ABISELECT(-2780,-2140),
  ABISELECT(-2776,-2136),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C88S19470C79S19470C139S19470C12__A1__8S19470C1[] = {
  ABISELECT(-2780,-2140),
  ABISELECT(-2776,-2136),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C88S19470C79S19470C139S19470C12__A1__8S19470C1[] = {
  0,
  0,
  0,
  ABISELECT(2776,2136),
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C79S19470C139S19470C12__A4__8S19470C1[] = {
  ABISELECT(-2924,-2244),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C79S19470C139S19470C12__A1__8S19470C1[] = {
  0,
  0,
  0,
  ABISELECT(2776,2136),
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C79S19470C139S19470C12__A1__8S19470C1[] = {
  ABISELECT(-2924,-2244),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
extern void _ZN9S19470C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19470C149S19470C139S19470C12__8S19470C1[] = {
  ABISELECT(-3340,-2572),
  ABISELECT(-3336,-2568),
  0,
  (VTBL_ENTRY)&(_ZTI9S19470C14[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19470C142v9Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C79S19470C149S19470C139S19470C12__A2__8S19470C1[] = {
  ABISELECT(-3340,-2572),
  ABISELECT(-3336,-2568),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C88S19470C79S19470C149S19470C139S19470C12__A2__8S19470C1[] = {
  ABISELECT(-3340,-2572),
  ABISELECT(-3336,-2568),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C88S19470C79S19470C149S19470C139S19470C12__A2__8S19470C1[] = {
  0,
  0,
  0,
  ABISELECT(3336,2568),
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C79S19470C149S19470C139S19470C12__A5__8S19470C1[] = {
  ABISELECT(-3484,-2676),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C79S19470C149S19470C139S19470C12__A2__8S19470C1[] = {
  0,
  0,
  0,
  ABISELECT(3336,2568),
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__8S19470C79S19470C149S19470C139S19470C12__A2__8S19470C1[] = {
  ABISELECT(-3484,-2676),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19470C7[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C89S19470C149S19470C139S19470C12__A3__8S19470C1[] = {
  ABISELECT(-3900,-3004),
  ABISELECT(-3896,-3000),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C89S19470C149S19470C139S19470C12__A3__8S19470C1[] = {
  0,
  0,
  0,
  ABISELECT(3896,3000),
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C69S19470C149S19470C139S19470C12__A6__8S19470C1[] = {
  ABISELECT(-4044,-3108),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C6[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__9S19470C149S19470C139S19470C12__8S19470C1[] = {
  0,
  0,
  0,
  ABISELECT(3336,2568),
  (VTBL_ENTRY)&(_ZTI9S19470C14[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C7__9S19470C149S19470C139S19470C12__8S19470C1[] = {
  ABISELECT(-3484,-2676),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI9S19470C14[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C8__A1__9S19470C149S19470C139S19470C12__8S19470C1[] = {
  ABISELECT(-3900,-3004),
  ABISELECT(-3896,-3000),
  ABISELECT(-560,-432),
  (VTBL_ENTRY)&(_ZTI9S19470C14[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__A1__9S19470C149S19470C139S19470C12__8S19470C1[] = {
  ABISELECT(-4044,-3108),
  ABISELECT(-704,-536),
  (VTBL_ENTRY)&(_ZTI9S19470C14[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19470C13D1Ev,_ZTv0_n28_N9S19470C13D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S19470C13D0Ev,_ZTv0_n28_N9S19470C13D0Ev)();
extern void _ZN8S19470C22v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C2__9S19470C139S19470C12__8S19470C1[] = {
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(4112,3184),
  ABISELECT(1680,1312),
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  ABISELECT(4112,3184),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19470C13D1Ev,_ZTv0_n28_N9S19470C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19470C13D0Ev,_ZTv0_n28_N9S19470C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19470C22v8Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__A1__9S19470C139S19470C12__8S19470C1[] = {
  0,
  0,
  0,
  ABISELECT(2632,2024),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__A1__9S19470C139S19470C12__8S19470C1[] = {
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(2576,1984),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C7__9S19470C139S19470C12__8S19470C1[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  ABISELECT(2432,1872),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C7__A2__9S19470C139S19470C12__8S19470C1[] = {
  ABISELECT(-348,-260),
  ABISELECT(2288,1768),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N9S19470C13D1Ev,_ZTvn1056_n28_N9S19470C13D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N9S19470C13D0Ev,_ZTvn1056_n28_N9S19470C13D0Ev)();
extern void _ZN8S19470C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C98S19470C2__9S19470C139S19470C12__8S19470C1[] = {
  ABISELECT(2776,2128),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19470C13D1Ev,_ZTvn1056_n28_N9S19470C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19470C13D0Ev,_ZTvn1056_n28_N9S19470C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19470C92v7Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C7__A__9S19470C139S19470C12__8S19470C1[] = {
  ABISELECT(-2780,-2140),
  ABISELECT(-2776,-2136),
  ABISELECT(-144,-112),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C7__A3__9S19470C139S19470C12__8S19470C1[] = {
  ABISELECT(-2924,-2244),
  ABISELECT(-288,-216),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
extern void _ZN9S19470C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19470C14__9S19470C139S19470C12__8S19470C1[] = {
  ABISELECT(-3340,-2572),
  ABISELECT(-3336,-2568),
  ABISELECT(-704,-544),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19470C142v9Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C79S19470C14__A4__9S19470C139S19470C12__8S19470C1[] = {
  ABISELECT(-3484,-2676),
  ABISELECT(-848,-648),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C89S19470C14__A3__9S19470C139S19470C12__8S19470C1[] = {
  ABISELECT(-3900,-3004),
  ABISELECT(-3896,-3000),
  ABISELECT(-1264,-976),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C69S19470C14__A5__9S19470C139S19470C12__8S19470C1[] = {
  ABISELECT(-4044,-3108),
  ABISELECT(-1408,-1080),
  (VTBL_ENTRY)&(_ZTI9S19470C13[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C89S19470C12__A4__8S19470C1[] = {
  ABISELECT(-6460,-4952),
  ABISELECT(-6456,-4948),
  0,
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__8S19470C89S19470C12__A4__8S19470C1[] = {
  0,
  0,
  0,
  ABISELECT(6456,4948),
  (VTBL_ENTRY)&(_ZTI8S19470C8[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C6__9S19470C12__8S19470C1[] = {
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(1088,828),
  (VTBL_ENTRY)&(_ZTI9S19470C12[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C5__A1__9S19470C12__8S19470C1[] = {
  0,
  0,
  0,
  ABISELECT(1144,868),
  (VTBL_ENTRY)&(_ZTI9S19470C12[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C7__9S19470C12__8S19470C1[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  ABISELECT(944,716),
  (VTBL_ENTRY)&(_ZTI9S19470C12[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C7__A1__9S19470C12__8S19470C1[] = {
  ABISELECT(-348,-260),
  ABISELECT(800,612),
  (VTBL_ENTRY)&(_ZTI9S19470C12[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void ABISELECT(_ZThn1488_N9S19470C12D1Ev,_ZThn1156_N9S19470C12D1Ev)();
extern void ABISELECT(_ZThn1488_N9S19470C12D0Ev,_ZThn1156_N9S19470C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19470C13__9S19470C12__8S19470C1[] = {
  ABISELECT(-2432,-1872),
  ABISELECT(-2576,-1984),
  ABISELECT(-2632,-2024),
  ABISELECT(-4112,-3184),
  ABISELECT(-2636,-2028),
  ABISELECT(-1488,-1156),
  (VTBL_ENTRY)&(_ZTI9S19470C12[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1488_N9S19470C12D1Ev,_ZThn1156_N9S19470C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1488_N9S19470C12D0Ev,_ZThn1156_N9S19470C12D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N9S19470C12D1Ev,_ZTv0_n28_N9S19470C12D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S19470C12D0Ev,_ZTv0_n28_N9S19470C12D0Ev)();
extern void _ZN8S19470C22v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C2__A1__9S19470C12__8S19470C1[] = {
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(2624,2028),
  ABISELECT(1680,1312),
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  ABISELECT(2624,2028),
  (VTBL_ENTRY)&(_ZTI9S19470C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19470C12D1Ev,_ZTv0_n28_N9S19470C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19470C12D0Ev,_ZTv0_n28_N9S19470C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19470C22v8Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N9S19470C12D1Ev,_ZTvn1056_n28_N9S19470C12D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N9S19470C12D0Ev,_ZTvn1056_n28_N9S19470C12D0Ev)();
extern void _ZN8S19470C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C98S19470C2__A1__9S19470C12__8S19470C1[] = {
  ABISELECT(1288,972),
  (VTBL_ENTRY)&(_ZTI9S19470C12[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19470C12D1Ev,_ZTvn1056_n28_N9S19470C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19470C12D0Ev,_ZTvn1056_n28_N9S19470C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19470C92v7Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C79S19470C13__A1__9S19470C12__8S19470C1[] = {
  ABISELECT(-2780,-2140),
  ABISELECT(-2776,-2136),
  ABISELECT(-1632,-1268),
  (VTBL_ENTRY)&(_ZTI9S19470C12[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C79S19470C13__A3__9S19470C12__8S19470C1[] = {
  ABISELECT(-2924,-2244),
  ABISELECT(-1776,-1372),
  (VTBL_ENTRY)&(_ZTI9S19470C12[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
extern void _ZN8S19470C72v6Ev();
extern void _ZN9S19470C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19470C149S19470C13__9S19470C12__8S19470C1[] = {
  ABISELECT(-3340,-2572),
  ABISELECT(-3336,-2568),
  ABISELECT(-2192,-1700),
  (VTBL_ENTRY)&(_ZTI9S19470C12[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19470C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19470C142v9Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C68S19470C79S19470C149S19470C13__A4__9S19470C12__8S19470C1[] = {
  ABISELECT(-3484,-2676),
  ABISELECT(-2336,-1804),
  (VTBL_ENTRY)&(_ZTI9S19470C12[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C89S19470C149S19470C13__A3__9S19470C12__8S19470C1[] = {
  ABISELECT(-3900,-3004),
  ABISELECT(-3896,-3000),
  ABISELECT(-2752,-2132),
  (VTBL_ENTRY)&(_ZTI9S19470C12[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
};
extern void _ZN8S19470C52v2Ev();
extern void _ZN8S19470C52v3Ev();
extern void _ZN8S19470C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C69S19470C149S19470C13__A5__9S19470C12__8S19470C1[] = {
  ABISELECT(-4044,-3108),
  ABISELECT(-2896,-2236),
  (VTBL_ENTRY)&(_ZTI9S19470C12[0]),
  (VTBL_ENTRY)&_ZN8S19470C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19470C52v4Ev,
};
extern void _ZN8S19470C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19470C8__A4__9S19470C12__8S19470C1[] = {
  ABISELECT(-6460,-4952),
  ABISELECT(-6456,-4948),
  ABISELECT(-5312,-4080),
  (VTBL_ENTRY)&(_ZTI9S19470C12[0]),
  (VTBL_ENTRY)&_ZN8S19470C82v5Ev,
};
static  VTT_ENTRY vtt_S19470C1[] = {
  {&(_ZTV8S19470C1[10]),  10,183},
  {&(_ZTV8S19470C1[25]),  25,183},
  {&(_ZTV8S19470C1[41]),  41,183},
  {&(_ZTV8S19470C1[50]),  50,183},
  {&(_ZTV8S19470C1[62]),  62,183},
  {&(_ZTV8S19470C1[67]),  67,183},
  {&(_ZTV8S19470C1[30]),  30,183},
  {&(_ZTV8S19470C1[79]),  79,183},
  {&(_ZTV8S19470C1[92]),  92,183},
  {&(_ZTV8S19470C1[100]),  100,183},
  {&(_ZTV8S19470C1[119]),  119,183},
  {&(_ZTV8S19470C1[124]),  124,183},
  {&(_ZTV8S19470C1[137]),  137,183},
  {&(_ZTV8S19470C1[146]),  146,183},
  {&(_ZTV8S19470C1[151]),  151,183},
  {&(_ZTV8S19470C1[158]),  158,183},
  {&(_ZTV8S19470C1[164]),  164,183},
  {&(_ZTV8S19470C1[171]),  171,183},
  {&(_ZTV8S19470C1[175]),  175,183},
  {&(_ZTV8S19470C1[182]),  182,183},
  {&(_tg__ZTV8S19470C2__8S19470C1[6]),  6,9},
  {&(_tg__ZTV8S19470C38S19470C2__8S19470C1[5]),  5,5},
  {&(_tg__ZTV8S19470C5__8S19470C38S19470C2__8S19470C1[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C38S19470C2__8S19470C1[6]),  6,9},
  {&(_tg__ZTV8S19470C5__8S19470C2__8S19470C1[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C2__8S19470C1[6]),  6,9},
  {&(_tg__ZTV8S19470C7__8S19470C2__8S19470C1[9]),  9,11},
  {&(_tg__ZTV8S19470C68S19470C7__A1__8S19470C2__8S19470C1[3]),  3,6},
  {&(_tg__ZTV8S19470C6__8S19470C1[3]),  3,6},
  {&(_tg__ZTV8S19470C7__8S19470C1[4]),  4,6},
  {&(_tg__ZTV8S19470C88S19470C7__8S19470C1[4]),  4,5},
  {&(_tg__ZTV8S19470C5__8S19470C88S19470C7__8S19470C1[5]),  5,8},
  {&(_tg__ZTV8S19470C68S19470C7__A1__8S19470C1[3]),  3,6},
  {&(_tg__ZTV8S19470C5__8S19470C7__8S19470C1[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C7__8S19470C1[3]),  3,6},
  {&(_tg__ZTV9S19470C10__8S19470C1[8]),  8,10},
  {&(_tg__ZTV9S19470C11__9S19470C10__8S19470C1[11]),  11,16},
  {&(_tg__ZTV8S19470C69S19470C11__9S19470C10__8S19470C1[3]),  3,6},
  {&(_tg__ZTV8S19470C2__9S19470C10__8S19470C1[12]),  12,15},
  {&(_tg__ZTV8S19470C5__A2__9S19470C10__8S19470C1[5]),  5,8},
  {&(_tg__ZTV8S19470C6__A1__9S19470C10__8S19470C1[6]),  6,9},
  {&(_tg__ZTV8S19470C7__9S19470C10__8S19470C1[9]),  9,11},
  {&(_tg__ZTV8S19470C68S19470C7__A2__9S19470C10__8S19470C1[3]),  3,6},
  {&(_tg__ZTV8S19470C98S19470C2__9S19470C10__8S19470C1[2]),  2,8},
  {&(_tg__ZTV9S19470C11__8S19470C1[7]),  7,12},
  {&(_tg__ZTV8S19470C69S19470C11__A2__8S19470C1[3]),  3,6},
  {&(_tg__ZTV8S19470C6__A__9S19470C11__8S19470C1[3]),  3,6},
  {&(_tg__ZTV8S19470C2__9S19470C11__8S19470C1[12]),  12,15},
  {&(_tg__ZTV8S19470C5__A2__9S19470C11__8S19470C1[5]),  5,8},
  {&(_tg__ZTV8S19470C6__A1__9S19470C11__8S19470C1[6]),  6,9},
  {&(_tg__ZTV8S19470C7__9S19470C11__8S19470C1[9]),  9,11},
  {&(_tg__ZTV8S19470C68S19470C7__A2__9S19470C11__8S19470C1[3]),  3,6},
  {&(_tg__ZTV8S19470C98S19470C2__9S19470C11__8S19470C1[2]),  2,8},
  {&(_tg__ZTV9S19470C12__8S19470C1[7]),  7,10},
  {&(_tg__ZTV8S19470C29S19470C12__A1__8S19470C1[6]),  6,9},
  {&(_tg__ZTV8S19470C38S19470C29S19470C12__A1__8S19470C1[5]),  5,5},
  {&(_tg__ZTV8S19470C5__8S19470C38S19470C29S19470C12__A1__8S19470C1[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C38S19470C29S19470C12__A1__8S19470C1[6]),  6,9},
  {&(_tg__ZTV8S19470C5__8S19470C29S19470C12__A1__8S19470C1[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C29S19470C12__A1__8S19470C1[6]),  6,9},
  {&(_tg__ZTV8S19470C7__8S19470C29S19470C12__A1__8S19470C1[9]),  9,11},
  {&(_tg__ZTV8S19470C68S19470C7__A1__8S19470C29S19470C12__A1__8S19470C1[3]),  3,6},
  {&(_tg__ZTV9S19470C139S19470C12__8S19470C1[7]),  7,12},
  {&(_tg__ZTV8S19470C69S19470C139S19470C12__A3__8S19470C1[3]),  3,6},
  {&(_tg__ZTV8S19470C79S19470C139S19470C12__A1__8S19470C1[4]),  4,6},
  {&(_tg__ZTV8S19470C88S19470C79S19470C139S19470C12__A1__8S19470C1[4]),  4,5},
  {&(_tg__ZTV8S19470C5__8S19470C88S19470C79S19470C139S19470C12__A1__8S19470C1[5]),  5,8},
  {&(_tg__ZTV8S19470C68S19470C79S19470C139S19470C12__A4__8S19470C1[3]),  3,6},
  {&(_tg__ZTV8S19470C5__8S19470C79S19470C139S19470C12__A1__8S19470C1[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C79S19470C139S19470C12__A1__8S19470C1[3]),  3,6},
  {&(_tg__ZTV9S19470C149S19470C139S19470C12__8S19470C1[4]),  4,7},
  {&(_tg__ZTV8S19470C79S19470C149S19470C139S19470C12__A2__8S19470C1[4]),  4,6},
  {&(_tg__ZTV8S19470C88S19470C79S19470C149S19470C139S19470C12__A2__8S19470C1[4]),  4,5},
  {&(_tg__ZTV8S19470C5__8S19470C88S19470C79S19470C149S19470C139S19470C12__A2__8S19470C1[5]),  5,8},
  {&(_tg__ZTV8S19470C68S19470C79S19470C149S19470C139S19470C12__A5__8S19470C1[3]),  3,6},
  {&(_tg__ZTV8S19470C5__8S19470C79S19470C149S19470C139S19470C12__A2__8S19470C1[5]),  5,8},
  {&(_tg__ZTV8S19470C6__8S19470C79S19470C149S19470C139S19470C12__A2__8S19470C1[3]),  3,6},
  {&(_tg__ZTV8S19470C89S19470C149S19470C139S19470C12__A3__8S19470C1[4]),  4,5},
  {&(_tg__ZTV8S19470C5__8S19470C89S19470C149S19470C139S19470C12__A3__8S19470C1[5]),  5,8},
  {&(_tg__ZTV8S19470C69S19470C149S19470C139S19470C12__A6__8S19470C1[3]),  3,6},
  {&(_tg__ZTV8S19470C5__9S19470C149S19470C139S19470C12__8S19470C1[5]),  5,8},
  {&(_tg__ZTV8S19470C68S19470C7__9S19470C149S19470C139S19470C12__8S19470C1[3]),  3,6},
  {&(_tg__ZTV8S19470C8__A1__9S19470C149S19470C139S19470C12__8S19470C1[4]),  4,5},
  {&(_tg__ZTV8S19470C6__A1__9S19470C149S19470C139S19470C12__8S19470C1[3]),  3,6},
  {&(_tg__ZTV8S19470C2__9S19470C139S19470C12__8S19470C1[12]),  12,15},
  {&(_tg__ZTV8S19470C5__A1__9S19470C139S19470C12__8S19470C1[5]),  5,8},
  {&(_tg__ZTV8S19470C6__A1__9S19470C139S19470C12__8S19470C1[6]),  6,9},
  {&(_tg__ZTV8S19470C7__9S19470C139S19470C12__8S19470C1[9]),  9,11},
  {&(_tg__ZTV8S19470C68S19470C7__A2__9S19470C139S19470C12__8S19470C1[3]),  3,6},
  {&(_tg__ZTV8S19470C98S19470C2__9S19470C139S19470C12__8S19470C1[2]),  2,8},
  {&(_tg__ZTV8S19470C7__A__9S19470C139S19470C12__8S19470C1[4]),  4,6},
  {&(_tg__ZTV8S19470C68S19470C7__A3__9S19470C139S19470C12__8S19470C1[3]),  3,6},
  {&(_tg__ZTV9S19470C14__9S19470C139S19470C12__8S19470C1[4]),  4,7},
  {&(_tg__ZTV8S19470C68S19470C79S19470C14__A4__9S19470C139S19470C12__8S19470C1[3]),  3,6},
  {&(_tg__ZTV8S19470C89S19470C14__A3__9S19470C139S19470C12__8S19470C1[4]),  4,5},
  {&(_tg__ZTV8S19470C69S19470C14__A5__9S19470C139S19470C12__8S19470C1[3]),  3,6},
  {&(_tg__ZTV8S19470C89S19470C12__A4__8S19470C1[4]),  4,5},
  {&(_tg__ZTV8S19470C5__8S19470C89S19470C12__A4__8S19470C1[5]),  5,8},
  {&(_tg__ZTV8S19470C6__9S19470C12__8S19470C1[6]),  6,9},
  {&(_tg__ZTV8S19470C5__A1__9S19470C12__8S19470C1[5]),  5,8},
  {&(_tg__ZTV8S19470C7__9S19470C12__8S19470C1[9]),  9,11},
  {&(_tg__ZTV8S19470C68S19470C7__A1__9S19470C12__8S19470C1[3]),  3,6},
  {&(_tg__ZTV9S19470C13__9S19470C12__8S19470C1[7]),  7,12},
  {&(_tg__ZTV8S19470C2__A1__9S19470C12__8S19470C1[12]),  12,15},
  {&(_tg__ZTV8S19470C98S19470C2__A1__9S19470C12__8S19470C1[2]),  2,8},
  {&(_tg__ZTV8S19470C79S19470C13__A1__9S19470C12__8S19470C1[4]),  4,6},
  {&(_tg__ZTV8S19470C68S19470C79S19470C13__A3__9S19470C12__8S19470C1[3]),  3,6},
  {&(_tg__ZTV9S19470C149S19470C13__9S19470C12__8S19470C1[4]),  4,7},
  {&(_tg__ZTV8S19470C68S19470C79S19470C149S19470C13__A4__9S19470C12__8S19470C1[3]),  3,6},
  {&(_tg__ZTV8S19470C89S19470C149S19470C13__A3__9S19470C12__8S19470C1[4]),  4,5},
  {&(_tg__ZTV8S19470C69S19470C149S19470C13__A5__9S19470C12__8S19470C1[3]),  3,6},
  {&(_tg__ZTV8S19470C8__A4__9S19470C12__8S19470C1[4]),  4,5},
};
extern VTBL_ENTRY _ZTI8S19470C1[];
extern  VTBL_ENTRY _ZTV8S19470C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19470C1[];
static VTBL_ENTRY alt_thunk_names20[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19470C10D0Ev,_ZTv0_n44_N9S19470C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19470C10D0Ev,_ZThn76_N9S19470C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19470C10D1Ev,_ZTv0_n44_N9S19470C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19470C10D1Ev,_ZThn76_N9S19470C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19470C1D0Ev,_ZTv0_n32_N8S19470C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn13536_N8S19470C1D0Ev,_ZThn10424_N8S19470C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19470C1D1Ev,_ZTv0_n32_N8S19470C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn13536_N8S19470C1D1Ev,_ZThn10424_N8S19470C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19470C1D0Ev,_ZTv0_n44_N8S19470C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn13264_N8S19470C1D0Ev,_ZThn10216_N8S19470C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19470C1D1Ev,_ZTv0_n44_N8S19470C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn13264_N8S19470C1D1Ev,_ZThn10216_N8S19470C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19470C1D0Ev,_ZTv0_n36_N8S19470C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn13152_N8S19470C1D0Ev,_ZThn10140_N8S19470C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19470C1D1Ev,_ZTv0_n36_N8S19470C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn13152_N8S19470C1D1Ev,_ZThn10140_N8S19470C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19470C1D0Ev,_ZTv0_n28_N8S19470C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10912_N8S19470C1D0Ev,_ZThn8396_N8S19470C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19470C1D1Ev,_ZTv0_n28_N8S19470C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10912_N8S19470C1D1Ev,_ZThn8396_N8S19470C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19470C1 = {  "S19470C1", // class name
  bases_S19470C1, 51,
  &(vtc_S19470C1[0]), // expected_vtbl_contents
  &(vtt_S19470C1[0]), // expected_vtt_contents
  ABISELECT(19040,14640), // object size
  NSPAIRA(_ZTI8S19470C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19470C1),183, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19470C1),112, //virtual table table var
  37, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names20,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19471C5  : S3216C8_nt {
  ::S3216C8_nt s19471c5f0[3];
  ::S3216C8_nt s19471c5f1[2];
  void *s19471c5f2;
  short s19471c5f3;
  ::S3216C8_nt s19471c5f4;
  virtual void  v2(); // _ZN8S19471C52v2Ev
  virtual void  v3(); // _ZN8S19471C52v3Ev
  virtual void  v4(); // _ZN8S19471C52v4Ev
  ~S19471C5(); // tgen
  S19471C5(); // tgen
};
//SIG(-1 S19471C5) C1{ BC2{ m Fi} v1 v2 v3 FC2[3] FC2[2] Fp Fs FC2}


void  S19471C5 ::v2(){vfunc_called(this, "_ZN8S19471C52v2Ev");}
void  S19471C5 ::v3(){vfunc_called(this, "_ZN8S19471C52v3Ev");}
void  S19471C5 ::v4(){vfunc_called(this, "_ZN8S19471C52v4Ev");}
S19471C5 ::~S19471C5(){ note_dtor("S19471C5", this);} // tgen
S19471C5 ::S19471C5(){ note_ctor("S19471C5", this);} // tgen

static void Test_S19471C5()
{
  extern Class_Descriptor cd_S19471C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,11)];
    init_test(&cd_S19471C5, buf);
    S19471C5 *dp, &lv = *(dp=new (buf) S19471C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S19471C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19471C5)");
    check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(8,4), "S19471C5");
    check_field_offset(lv, s19471c5f0, ABISELECT(12,8), "S19471C5.s19471c5f0");
    check_field_offset(lv, s19471c5f1, ABISELECT(24,20), "S19471C5.s19471c5f1");
    check_field_offset(lv, s19471c5f2, ABISELECT(32,28), "S19471C5.s19471c5f2");
    check_field_offset(lv, s19471c5f3, ABISELECT(40,32), "S19471C5.s19471c5f3");
    check_field_offset(lv, s19471c5f4, ABISELECT(44,36), "S19471C5.s19471c5f4");
    test_class_info(&lv, &cd_S19471C5);
    dp->~S19471C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19471C5(Test_S19471C5, "S19471C5", ABISELECT(48,40));

#else // __cplusplus

extern void _ZN8S19471C5C1Ev();
extern void _ZN8S19471C5D1Ev();
Name_Map name_map_S19471C5[] = {
  NSPAIR(_ZN8S19471C5C1Ev),
  NSPAIR(_ZN8S19471C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S19471C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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 _ZTI8S19471C5[];
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY vtc_S19471C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C5[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
Class_Descriptor cd_S19471C5 = {  "S19471C5", // class name
  bases_S19471C5, 1,
  &(vtc_S19471C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,40), // object size
  NSPAIRA(_ZTI8S19471C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19471C5),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  S19471C6  : S19471C5 , virtual S3216C8_nt {
  long double s19471c6f0;
  __tsi64 s19471c6f1;
  ::S19471C5 s19471c6f2;
  void *s19471c6f3;
  short s19471c6f4[3];
  ~S19471C6(); // tgen
  S19471C6(); // tgen
};
//SIG(-1 S19471C6) C1{ BC2{ BC3{ m Fi} v1 v2 v3 FC3[3] FC3[2] Fp Fs FC3} VBC3 FD FL FC2 Fp Fs[3]}


S19471C6 ::~S19471C6(){ note_dtor("S19471C6", this);} // tgen
S19471C6 ::S19471C6(){ note_ctor("S19471C6", this);} // tgen

static void Test_S19471C6()
{
  extern Class_Descriptor cd_S19471C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,30)];
    init_test(&cd_S19471C6, buf);
    S19471C6 *dp, &lv = *(dp=new (buf) S19471C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,116), "sizeof(S19471C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19471C6)");
    check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*), ABISELECT(8,4), "S19471C6");
    check_base_class_offset(lv, (S19471C5*), 0, "S19471C6");
    /*is_ambiguous_... S19471C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(136,112), "S19471C6");
    check_field_offset(lv, s19471c6f0, ABISELECT(48,40), "S19471C6.s19471c6f0");
    check_field_offset(lv, s19471c6f1, ABISELECT(64,52), "S19471C6.s19471c6f1");
    check_field_offset(lv, s19471c6f2, ABISELECT(72,60), "S19471C6.s19471c6f2");
    check_field_offset(lv, s19471c6f3, ABISELECT(120,100), "S19471C6.s19471c6f3");
    check_field_offset(lv, s19471c6f4, ABISELECT(128,104), "S19471C6.s19471c6f4");
    test_class_info(&lv, &cd_S19471C6);
    dp->~S19471C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19471C6(Test_S19471C6, "S19471C6", ABISELECT(144,116));

#else // __cplusplus

extern void _ZN8S19471C6C1Ev();
extern void _ZN8S19471C6D1Ev();
Name_Map name_map_S19471C6[] = {
  NSPAIR(_ZN8S19471C6C1Ev),
  NSPAIR(_ZN8S19471C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S19471C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S19471C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19471C6[];
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY vtc_S19471C6[] = {
  ABISELECT(136,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern VTBL_ENTRY _ZTV8S19471C6[];
static  VTT_ENTRY vtt_S19471C6[] = {
  {&(_ZTV8S19471C6[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
Class_Descriptor cd_S19471C6 = {  "S19471C6", // class name
  bases_S19471C6, 3,
  &(vtc_S19471C6[0]), // expected_vtbl_contents
  &(vtt_S19471C6[0]), // expected_vtt_contents
  ABISELECT(144,116), // object size
  NSPAIRA(_ZTI8S19471C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19471C6),6, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19471C6),1, //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  S19471C3  : virtual S3216C8_nt , virtual S19471C5 , virtual S19471C6 {
  void *s19471c3f0[2];
  int s19471c3f1;
  ::S19471C6 s19471c3f2[8];
  long double s19471c3f3[9];
  ~S19471C3(); // tgen
  S19471C3(); // tgen
};
//SIG(-1 S19471C3) C1{ VBC2{ m Fi} VBC3{ BC2 v1 v2 v3 FC2[3] FC2[2] Fp Fs FC2} VBC4{ BC3 VBC2 FD FL FC3 Fp Fs[3]} Fp[2] Fi FC4[8] FD[9]}


S19471C3 ::~S19471C3(){ note_dtor("S19471C3", this);} // tgen
S19471C3 ::S19471C3(){ note_ctor("S19471C3", this);} // tgen

static void Test_S19471C3()
{
  extern Class_Descriptor cd_S19471C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(97,303)];
    init_test(&cd_S19471C3, buf);
    S19471C3 *dp, &lv = *(dp=new (buf) S19471C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1536,1208), "sizeof(S19471C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19471C3)");
    /*is_ambiguous_... S19471C3::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(1328,1052), "S19471C3");
    /*is_ambiguous_... S19471C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*), ABISELECT(1328,1052), "S19471C3");
    /*is_ambiguous_... S19471C3::S19471C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*), ABISELECT(1344,1060), "S19471C3");
    /*is_ambiguous_... S19471C3::S19471C5 */ AMB_check_base_class_offset(lv, (S19471C5*), ABISELECT(1336,1056), "S19471C3");
    check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*), ABISELECT(1400,1100), "S19471C3");
    check_base_class_offset(lv, (S19471C5*)(S19471C6*), ABISELECT(1392,1096), "S19471C3");
    check_base_class_offset(lv, (S19471C6*), ABISELECT(1392,1096), "S19471C3");
    check_field_offset(lv, s19471c3f0, ABISELECT(8,4), "S19471C3.s19471c3f0");
    check_field_offset(lv, s19471c3f1, ABISELECT(24,12), "S19471C3.s19471c3f1");
    check_field_offset(lv, s19471c3f2, ABISELECT(32,16), "S19471C3.s19471c3f2");
    check_field_offset(lv, s19471c3f3, ABISELECT(1184,944), "S19471C3.s19471c3f3");
    test_class_info(&lv, &cd_S19471C3);
    dp->~S19471C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19471C3(Test_S19471C3, "S19471C3", ABISELECT(1536,1208));

#else // __cplusplus

extern void _ZN8S19471C3C1Ev();
extern void _ZN8S19471C3D1Ev();
Name_Map name_map_S19471C3[] = {
  NSPAIR(_ZN8S19471C3C1Ev),
  NSPAIR(_ZN8S19471C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
static Base_Class bases_S19471C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(1328,1052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1344,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19471C5,    ABISELECT(1336,1056), //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1400,1100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19471C5,    ABISELECT(1392,1096), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C6,    ABISELECT(1392,1096), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //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 _ZTI8S19471C3[];
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY vtc_S19471C3[] = {
  ABISELECT(1392,1096),
  ABISELECT(1336,1056),
  ABISELECT(1328,1052),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C3[0]),
  0,
  0,
  0,
  ABISELECT(-1336,-1056),
  (VTBL_ENTRY)&(_ZTI8S19471C3[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  0,
  0,
  0,
  ABISELECT(-64,-44),
  ABISELECT(-1392,-1096),
  (VTBL_ENTRY)&(_ZTI8S19471C3[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern VTBL_ENTRY _ZTV8S19471C3[];
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C3[] = {
  ABISELECT(-64,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
static  VTT_ENTRY vtt_S19471C3[] = {
  {&(_ZTV8S19471C3[5]),  5,22},
  {&(_ZTV8S19471C3[10]),  10,22},
  {&(_ZTV8S19471C3[19]),  19,22},
  {&(_tg__ZTV8S19471C6__8S19471C3[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S19471C3[];
extern  VTBL_ENTRY _ZTV8S19471C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C3[];
Class_Descriptor cd_S19471C3 = {  "S19471C3", // class name
  bases_S19471C3, 6,
  &(vtc_S19471C3[0]), // expected_vtbl_contents
  &(vtt_S19471C3[0]), // expected_vtt_contents
  ABISELECT(1536,1208), // object size
  NSPAIRA(_ZTI8S19471C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19471C3),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19471C3),4, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19471C8  : virtual S19471C5 , virtual S3216C8_nt {
  ::S19471C5 s19471c8f0;
  long double s19471c8f1;
  void *s19471c8f2[2];
  ::S19471C5 s19471c8f3;
  virtual void  v5(); // _ZN8S19471C82v5Ev
  ~S19471C8(); // tgen
  S19471C8(); // tgen
};
//SIG(-1 S19471C8) C1{ VBC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC3 v1 FC2 FD Fp[2] FC2}


void  S19471C8 ::v5(){vfunc_called(this, "_ZN8S19471C82v5Ev");}
S19471C8 ::~S19471C8(){ note_dtor("S19471C8", this);} // tgen
S19471C8 ::S19471C8(){ note_ctor("S19471C8", this);} // tgen

static void Test_S19471C8()
{
  extern Class_Descriptor cd_S19471C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,38)];
    init_test(&cd_S19471C8, buf);
    S19471C8 *dp, &lv = *(dp=new (buf) S19471C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,148), "sizeof(S19471C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19471C8)");
    check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*), ABISELECT(152,108), "S19471C8");
    check_base_class_offset(lv, (S19471C5*), ABISELECT(144,104), "S19471C8");
    /*is_ambiguous_... S19471C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(192,144), "S19471C8");
    check_field_offset(lv, s19471c8f0, ABISELECT(8,4), "S19471C8.s19471c8f0");
    check_field_offset(lv, s19471c8f1, ABISELECT(64,44), "S19471C8.s19471c8f1");
    check_field_offset(lv, s19471c8f2, ABISELECT(80,56), "S19471C8.s19471c8f2");
    check_field_offset(lv, s19471c8f3, ABISELECT(96,64), "S19471C8.s19471c8f3");
    test_class_info(&lv, &cd_S19471C8);
    dp->~S19471C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19471C8(Test_S19471C8, "S19471C8", ABISELECT(208,148));

#else // __cplusplus

extern void _ZN8S19471C8C1Ev();
extern void _ZN8S19471C8D1Ev();
Name_Map name_map_S19471C8[] = {
  NSPAIR(_ZN8S19471C8C1Ev),
  NSPAIR(_ZN8S19471C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S19471C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(152,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
    1, //immediately_derived
  0, 0},
  {&cd_S19471C5,    ABISELECT(144,104), //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(192,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19471C8[];
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY vtc_S19471C8[] = {
  ABISELECT(192,144),
  ABISELECT(144,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  0,
  0,
  0,
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern VTBL_ENTRY _ZTV8S19471C8[];
static  VTT_ENTRY vtt_S19471C8[] = {
  {&(_ZTV8S19471C8[4]),  4,13},
  {&(_ZTV8S19471C8[10]),  10,13},
};
extern VTBL_ENTRY _ZTI8S19471C8[];
extern  VTBL_ENTRY _ZTV8S19471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C8[];
Class_Descriptor cd_S19471C8 = {  "S19471C8", // class name
  bases_S19471C8, 3,
  &(vtc_S19471C8[0]), // expected_vtbl_contents
  &(vtt_S19471C8[0]), // expected_vtt_contents
  ABISELECT(208,148), // object size
  NSPAIRA(_ZTI8S19471C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19471C8),13, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19471C8),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  S19471C7  : virtual S19471C5 , virtual S3216C8_nt , S19471C8 , S19471C6 {
  void *s19471c7f0[2];
  long s19471c7f1;
  int s19471c7f2;
  ::S19471C5 s19471c7f3[5];
  virtual void  v6(); // _ZN8S19471C72v6Ev
  ~S19471C7(); // tgen
  S19471C7(); // tgen
};
//SIG(-1 S19471C7) C1{ VBC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC3 BC4{ VBC2 VBC3 v5 FC2 FD Fp[2] FC2} BC5{ BC2 VBC3 FD FL FC2 Fp Fs[3]} v1 Fp[2] Fl Fi FC2[5]}


void  S19471C7 ::v6(){vfunc_called(this, "_ZN8S19471C72v6Ev");}
S19471C7 ::~S19471C7(){ note_dtor("S19471C7", this);} // tgen
S19471C7 ::S19471C7(){ note_ctor("S19471C7", this);} // tgen

static void Test_S19471C7()
{
  extern Class_Descriptor cd_S19471C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(39,120)];
    init_test(&cd_S19471C7, buf);
    S19471C7 *dp, &lv = *(dp=new (buf) S19471C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(608,476), "sizeof(S19471C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19471C7)");
    /*is_ambiguous_... S19471C7::S19471C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*), ABISELECT(560,436), "S19471C7");
    /*is_ambiguous_... S19471C7::S19471C5 */ AMB_check_base_class_offset(lv, (S19471C5*), ABISELECT(552,432), "S19471C7");
    check_base_class_offset(lv, (S19471C5*)(S19471C8*), ABISELECT(552,432), "S19471C7");
    /*is_ambiguous_... S19471C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(600,472), "S19471C7");
    /*is_ambiguous_... S19471C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C8*), ABISELECT(600,472), "S19471C7");
    /*is_ambiguous_... S19471C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*), ABISELECT(600,472), "S19471C7");
    check_base_class_offset(lv, (S19471C8*), 0, "S19471C7");
    check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*), ABISELECT(152,108), "S19471C7");
    check_base_class_offset(lv, (S19471C5*)(S19471C6*), ABISELECT(144,104), "S19471C7");
    check_base_class_offset(lv, (S19471C6*), ABISELECT(144,104), "S19471C7");
    check_field_offset(lv, s19471c7f0, ABISELECT(280,216), "S19471C7.s19471c7f0");
    check_field_offset(lv, s19471c7f1, ABISELECT(296,224), "S19471C7.s19471c7f1");
    check_field_offset(lv, s19471c7f2, ABISELECT(304,228), "S19471C7.s19471c7f2");
    check_field_offset(lv, s19471c7f3, ABISELECT(312,232), "S19471C7.s19471c7f3");
    test_class_info(&lv, &cd_S19471C7);
    dp->~S19471C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19471C7(Test_S19471C7, "S19471C7", ABISELECT(608,476));

#else // __cplusplus

extern void _ZN8S19471C7C1Ev();
extern void _ZN8S19471C7D1Ev();
Name_Map name_map_S19471C7[] = {
  NSPAIR(_ZN8S19471C7C1Ev),
  NSPAIR(_ZN8S19471C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C8;
extern VTBL_ENTRY _ZTI8S19471C8[];
extern  VTBL_ENTRY _ZTV8S19471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
static Base_Class bases_S19471C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(560,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
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19471C5,    ABISELECT(552,432), //bcp->offset
    12, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(600,472), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19471C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(152,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19471C5,    ABISELECT(144,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19471C6,    ABISELECT(144,104), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19471C7[];
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY vtc_S19471C7[] = {
  ABISELECT(600,472),
  ABISELECT(552,432),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
  ABISELECT(456,368),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  0,
  0,
  0,
  ABISELECT(-552,-432),
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern VTBL_ENTRY _ZTV8S19471C7[];
extern void _ZN8S19471C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C8__8S19471C7[] = {
  ABISELECT(600,472),
  ABISELECT(552,432),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C8__8S19471C7[] = {
  0,
  0,
  0,
  ABISELECT(-552,-432),
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C7[] = {
  ABISELECT(456,368),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
static  VTT_ENTRY vtt_S19471C7[] = {
  {&(_ZTV8S19471C7[4]),  4,20},
  {&(_tg__ZTV8S19471C8__8S19471C7[4]),  4,5},
  {&(_tg__ZTV8S19471C5__8S19471C8__8S19471C7[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C7[3]),  3,6},
  {&(_ZTV8S19471C7[17]),  17,20},
  {&(_ZTV8S19471C7[9]),  9,20},
};
extern VTBL_ENTRY _ZTI8S19471C7[];
extern  VTBL_ENTRY _ZTV8S19471C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C7[];
Class_Descriptor cd_S19471C7 = {  "S19471C7", // class name
  bases_S19471C7, 7,
  &(vtc_S19471C7[0]), // expected_vtbl_contents
  &(vtt_S19471C7[0]), // expected_vtt_contents
  ABISELECT(608,476), // object size
  NSPAIRA(_ZTI8S19471C7),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19471C7),20, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19471C7),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  S19471C9  : S19471C5 {
  void *s19471c9f0[7];
  int s19471c9f1[2];
  __tsi64 s19471c9f2;
  int s19471c9f3;
  virtual  ~S19471C9(); // _ZN8S19471C9D1Ev
  virtual void  v7(); // _ZN8S19471C92v7Ev
  S19471C9(); // tgen
};
//SIG(-1 S19471C9) C1{ BC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} vd v1 Fp[7] Fi[2] FL Fi}


 S19471C9 ::~S19471C9(){ note_dtor("S19471C9", this);}
void  S19471C9 ::v7(){vfunc_called(this, "_ZN8S19471C92v7Ev");}
S19471C9 ::S19471C9(){ note_ctor("S19471C9", this);} // tgen

static void Test_S19471C9()
{
  extern Class_Descriptor cd_S19471C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,23)];
    init_test(&cd_S19471C9, buf);
    S19471C9 *dp, &lv = *(dp=new (buf) S19471C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,88), "sizeof(S19471C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19471C9)");
    check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*), ABISELECT(8,4), "S19471C9");
    check_base_class_offset(lv, (S19471C5*), 0, "S19471C9");
    check_field_offset(lv, s19471c9f0, ABISELECT(48,40), "S19471C9.s19471c9f0");
    check_field_offset(lv, s19471c9f1, ABISELECT(104,68), "S19471C9.s19471c9f1");
    check_field_offset(lv, s19471c9f2, ABISELECT(112,76), "S19471C9.s19471c9f2");
    check_field_offset(lv, s19471c9f3, ABISELECT(120,84), "S19471C9.s19471c9f3");
    test_class_info(&lv, &cd_S19471C9);
    dp->~S19471C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19471C9(Test_S19471C9, "S19471C9", ABISELECT(128,88));

#else // __cplusplus

extern void _ZN8S19471C9C1Ev();
extern void _ZN8S19471C9D1Ev();
Name_Map name_map_S19471C9[] = {
  NSPAIR(_ZN8S19471C9C1Ev),
  NSPAIR(_ZN8S19471C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
static Base_Class bases_S19471C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S19471C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19471C9[];
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN8S19471C9D1Ev();
extern void _ZN8S19471C9D0Ev();
extern void _ZN8S19471C92v7Ev();
static  VTBL_ENTRY vtc_S19471C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C9[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19471C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19471C9D0Ev,
  (VTBL_ENTRY)&_ZN8S19471C92v7Ev,
};
extern VTBL_ENTRY _ZTI8S19471C9[];
extern  VTBL_ENTRY _ZTV8S19471C9[];
Class_Descriptor cd_S19471C9 = {  "S19471C9", // class name
  bases_S19471C9, 2,
  &(vtc_S19471C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,88), // object size
  NSPAIRA(_ZTI8S19471C9),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19471C9),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  S19471C2  : S19471C3 , S3216C8_nt , virtual S19471C7 , S19471C9 {
  int s19471c2f0;
  void *s19471c2f1;
  int s19471c2f2;
  virtual  ~S19471C2(); // _ZN8S19471C2D2Ev
  virtual void  v8(); // _ZN8S19471C22v8Ev
  S19471C2(); // tgen
};
//SIG(-1 S19471C2) C1{ BC2{ VBC3{ m Fi} VBC4{ BC3 v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC5{ BC4 VBC3 FD FL FC4 Fp Fs[3]} Fp[2] Fi FC5[8] FD[9]} BC3 VBC6{ VBC4 VBC3 BC7{ VBC4 VBC3 v5 FC4 FD Fp[2] FC4} BC5 v6 Fp[2] Fl Fi FC4[5]} BC8{ BC4 vd v7 Fp[7] Fi[2] FL Fi} vd v1 Fi Fp Fi}


 S19471C2 ::~S19471C2(){ note_dtor("S19471C2", this);}
void  S19471C2 ::v8(){vfunc_called(this, "_ZN8S19471C22v8Ev");}
S19471C2 ::S19471C2(){ note_ctor("S19471C2", this);} // tgen

static void Test_S19471C2()
{
  extern Class_Descriptor cd_S19471C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(141,437)];
    init_test(&cd_S19471C2, buf);
    S19471C2 *dp, &lv = *(dp=new (buf) S19471C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2240,1744), "sizeof(S19471C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19471C2)");
    /*is_ambiguous_... S19471C3::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C3*), ABISELECT(1476,1156), "S19471C2");
    /*is_ambiguous_... S19471C2::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*), ABISELECT(1476,1156), "S19471C2");
    /*is_ambiguous_... S19471C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C7*), ABISELECT(1476,1156), "S19471C2");
    /*is_ambiguous_... S19471C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C8*)(S19471C7*), ABISELECT(1476,1156), "S19471C2");
    /*is_ambiguous_... S19471C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*)(S19471C7*), ABISELECT(1476,1156), "S19471C2");
    /*is_ambiguous_... S19471C2::S19471C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*), ABISELECT(1488,1164), "S19471C2");
    /*is_ambiguous_... S19471C3::S19471C5 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C3*), ABISELECT(1480,1160), "S19471C2");
    /*is_ambiguous_... S19471C7::S19471C5 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C7*), ABISELECT(1480,1160), "S19471C2");
    check_base_class_offset(lv, (S19471C5*)(S19471C8*)(S19471C7*), ABISELECT(1480,1160), "S19471C2");
    /*is_ambiguous_... S19471C2::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*), ABISELECT(1544,1204), "S19471C2");
    /*is_ambiguous_... S19471C2::S19471C6 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C6*), ABISELECT(1536,1200), "S19471C2");
    check_base_class_offset(lv, (S19471C6*)(S19471C3*), ABISELECT(1536,1200), "S19471C2");
    check_base_class_offset(lv, (S19471C3*), 0, "S19471C2");
    /*is_ambiguous_... S19471C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(1328,1052), "S19471C2");
    check_base_class_offset(lv, (S19471C8*)(S19471C7*), ABISELECT(1680,1312), "S19471C2");
    check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*)(S19471C7*), ABISELECT(1832,1420), "S19471C2");
    check_base_class_offset(lv, (S19471C5*)(S19471C6*)(S19471C7*), ABISELECT(1824,1416), "S19471C2");
    check_base_class_offset(lv, (S19471C6*)(S19471C7*), ABISELECT(1824,1416), "S19471C2");
    check_base_class_offset(lv, (S19471C7*), ABISELECT(1680,1312), "S19471C2");
    check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C9*), ABISELECT(1344,1060), "S19471C2");
    check_base_class_offset(lv, (S19471C5*)(S19471C9*), ABISELECT(1336,1056), "S19471C2");
    check_base_class_offset(lv, (S19471C9*), ABISELECT(1336,1056), "S19471C2");
    check_field_offset(lv, s19471c2f0, ABISELECT(1460,1144), "S19471C2.s19471c2f0");
    check_field_offset(lv, s19471c2f1, ABISELECT(1464,1148), "S19471C2.s19471c2f1");
    check_field_offset(lv, s19471c2f2, ABISELECT(1472,1152), "S19471C2.s19471c2f2");
    test_class_info(&lv, &cd_S19471C2);
    dp->~S19471C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19471C2(Test_S19471C2, "S19471C2", ABISELECT(2240,1744));

#else // __cplusplus

extern void _ZN8S19471C2C1Ev();
extern void _ZN8S19471C2D2Ev();
Name_Map name_map_S19471C2[] = {
  NSPAIR(_ZN8S19471C2C1Ev),
  NSPAIR(_ZN8S19471C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
extern Class_Descriptor cd_S19471C3;
extern VTBL_ENTRY _ZTI8S19471C3[];
extern  VTBL_ENTRY _ZTV8S19471C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C8;
extern VTBL_ENTRY _ZTI8S19471C8[];
extern  VTBL_ENTRY _ZTV8S19471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
extern Class_Descriptor cd_S19471C7;
extern VTBL_ENTRY _ZTI8S19471C7[];
extern  VTBL_ENTRY _ZTV8S19471C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C7[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C9;
extern VTBL_ENTRY _ZTI8S19471C9[];
extern  VTBL_ENTRY _ZTV8S19471C9[];
static Base_Class bases_S19471C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(1476,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
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1488,1164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C5,    ABISELECT(1480,1160), //bcp->offset
    17, //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
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1544,1204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C5,    ABISELECT(1536,1200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C6,    ABISELECT(1536,1200), //bcp->offset
    25, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19471C3,    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_S3216C8_nt,    ABISELECT(1328,1052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19471C8,    ABISELECT(1680,1312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1832,1420), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C5,    ABISELECT(1824,1416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19471C6,    ABISELECT(1824,1416), //bcp->offset
    45, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19471C7,    ABISELECT(1680,1312), //bcp->offset
    34, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1344,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19471C5,    ABISELECT(1336,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
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19471C9,    ABISELECT(1336,1056), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19471C2[];
extern void _ZN8S19471C2D1Ev();
extern void _ZN8S19471C2D0Ev();
extern void _ZN8S19471C22v8Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void ABISELECT(_ZThn1336_N8S19471C2D1Ev,_ZThn1056_N8S19471C2D1Ev)();
extern void ABISELECT(_ZThn1336_N8S19471C2D0Ev,_ZThn1056_N8S19471C2D0Ev)();
extern void _ZN8S19471C92v7Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY vtc_S19471C2[] = {
  ABISELECT(1680,1312),
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19471C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19471C22v8Ev,
  ABISELECT(-1336,-1056),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1336_N8S19471C2D1Ev,_ZThn1056_N8S19471C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1336_N8S19471C2D0Ev,_ZThn1056_N8S19471C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19471C92v7Ev,
  0,
  0,
  0,
  ABISELECT(-1480,-1160),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(-1536,-1200),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  ABISELECT(-1680,-1312),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
  ABISELECT(-348,-260),
  ABISELECT(-1824,-1416),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern VTBL_ENTRY _ZTV8S19471C2[];
static  VTBL_ENTRY _tg__ZTV8S19471C3__8S19471C2[] = {
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C3[0]),
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C3__8S19471C2[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1160),
  (VTBL_ENTRY)&(_ZTI8S19471C3[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C3__8S19471C2[] = {
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(-1536,-1200),
  (VTBL_ENTRY)&(_ZTI8S19471C3[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C2[] = {
  ABISELECT(-60,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C7__8S19471C2[] = {
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C88S19471C7__8S19471C2[] = {
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C88S19471C7__8S19471C2[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C7__A1__8S19471C2[] = {
  ABISELECT(-348,-260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C7__8S19471C2[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C7__8S19471C2[] = {
  ABISELECT(-348,-260),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
static  VTT_ENTRY vtt_S19471C2[] = {
  {&(_ZTV8S19471C2[6]),  6,51},
  {&(_tg__ZTV8S19471C3__8S19471C2[5]),  5,5},
  {&(_tg__ZTV8S19471C5__8S19471C3__8S19471C2[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C3__8S19471C2[6]),  6,9},
  {&(_ZTV8S19471C2[22]),  22,51},
  {&(_ZTV8S19471C2[31]),  31,51},
  {&(_ZTV8S19471C2[43]),  43,51},
  {&(_ZTV8S19471C2[48]),  48,51},
  {&(_tg__ZTV8S19471C6__8S19471C2[3]),  3,6},
  {&(_tg__ZTV8S19471C7__8S19471C2[4]),  4,6},
  {&(_tg__ZTV8S19471C88S19471C7__8S19471C2[4]),  4,5},
  {&(_tg__ZTV8S19471C5__8S19471C88S19471C7__8S19471C2[5]),  5,8},
  {&(_tg__ZTV8S19471C68S19471C7__A1__8S19471C2[3]),  3,6},
  {&(_tg__ZTV8S19471C5__8S19471C7__8S19471C2[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C7__8S19471C2[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S19471C2[];
extern  VTBL_ENTRY _ZTV8S19471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C2[];
Class_Descriptor cd_S19471C2 = {  "S19471C2", // class name
  bases_S19471C2, 16,
  &(vtc_S19471C2[0]), // expected_vtbl_contents
  &(vtt_S19471C2[0]), // expected_vtt_contents
  ABISELECT(2240,1744), // object size
  NSPAIRA(_ZTI8S19471C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19471C2),51, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19471C2),15, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19471C11  : S19471C5 , S19471C6 , virtual S19471C2 {
  void *s19471c11f0;
  int s19471c11f1;
  ::S19471C5 s19471c11f2;
  int s19471c11f3;
  void *s19471c11f4;
  ~S19471C11(); // tgen
  S19471C11(); // tgen
};
//SIG(-1 S19471C11) C1{ BC2{ BC3{ m Fi} v1 v2 v3 FC3[3] FC3[2] Fp Fs FC3} BC4{ BC2 VBC3 FD FL FC2 Fp Fs[3]} VBC5{ BC6{ VBC3 VBC2 VBC4 Fp[2] Fi FC4[8] FD[9]} BC3 VBC7{ VBC2 VBC3 BC8{ VBC2 VBC3 v4 FC2 FD Fp[2] FC2} BC4 v5 Fp[2] Fl Fi FC2[5]} BC9{ BC2 vd v6 Fp[7] Fi[2] FL Fi} vd v7 Fi Fp Fi} Fp Fi FC2 Fi Fp}


S19471C11 ::~S19471C11(){ note_dtor("S19471C11", this);} // tgen
S19471C11 ::S19471C11(){ note_ctor("S19471C11", this);} // tgen

static void Test_S19471C11()
{
  extern Class_Descriptor cd_S19471C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(158,489)];
    init_test(&cd_S19471C11, buf);
    S19471C11 *dp, &lv = *(dp=new (buf) S19471C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2512,1952), "sizeof(S19471C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19471C11)");
    /*is_ambiguous_... S19471C11::S19471C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*), ABISELECT(8,4), "S19471C11");
    /*is_ambiguous_... S19471C11::S19471C5 */ AMB_check_base_class_offset(lv, (S19471C5*), 0, "S19471C11");
    /*is_ambiguous_... S19471C11::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*), ABISELECT(56,44), "S19471C11");
    /*is_ambiguous_... S19471C11::S19471C6 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C6*), ABISELECT(48,40), "S19471C11");
    /*is_ambiguous_... S19471C11::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*), ABISELECT(264,208), "S19471C11");
    /*is_ambiguous_... S19471C3::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C3*)(S19471C2*), ABISELECT(264,208), "S19471C11");
    /*is_ambiguous_... S19471C11::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*), ABISELECT(264,208), "S19471C11");
    /*is_ambiguous_... S19471C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C7*), ABISELECT(264,208), "S19471C11");
    /*is_ambiguous_... S19471C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C8*)(S19471C7*), ABISELECT(264,208), "S19471C11");
    /*is_ambiguous_... S19471C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*)(S19471C7*), ABISELECT(264,208), "S19471C11");
    /*is_ambiguous_... S19471C11::S19471C6 */ AMB_check_base_class_offset(lv, (S19471C6*), ABISELECT(48,40), "S19471C11");
    /*is_ambiguous_... S19471C11::S19471C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*), ABISELECT(1760,1372), "S19471C11");
    /*is_ambiguous_... S19471C3::S19471C5 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C3*)(S19471C2*), ABISELECT(1752,1368), "S19471C11");
    /*is_ambiguous_... S19471C7::S19471C5 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C7*), ABISELECT(1752,1368), "S19471C11");
    check_base_class_offset(lv, (S19471C5*)(S19471C8*)(S19471C7*), ABISELECT(1752,1368), "S19471C11");
    /*is_ambiguous_... S19471C11::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*), ABISELECT(1816,1412), "S19471C11");
    /*is_ambiguous_... S19471C11::S19471C6 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C6*), ABISELECT(1808,1408), "S19471C11");
    check_base_class_offset(lv, (S19471C6*)(S19471C3*)(S19471C2*), ABISELECT(1808,1408), "S19471C11");
    check_base_class_offset(lv, (S19471C3*)(S19471C2*), ABISELECT(272,212), "S19471C11");
    /*is_ambiguous_... S19471C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C2*), ABISELECT(1600,1264), "S19471C11");
    check_base_class_offset(lv, (S19471C8*)(S19471C7*), ABISELECT(1952,1520), "S19471C11");
    check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*)(S19471C7*), ABISELECT(2104,1628), "S19471C11");
    check_base_class_offset(lv, (S19471C5*)(S19471C6*)(S19471C7*), ABISELECT(2096,1624), "S19471C11");
    check_base_class_offset(lv, (S19471C6*)(S19471C7*), ABISELECT(2096,1624), "S19471C11");
    check_base_class_offset(lv, (S19471C7*)(S19471C2*), ABISELECT(1952,1520), "S19471C11");
    check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C9*)(S19471C2*), ABISELECT(1616,1272), "S19471C11");
    check_base_class_offset(lv, (S19471C5*)(S19471C9*)(S19471C2*), ABISELECT(1608,1268), "S19471C11");
    check_base_class_offset(lv, (S19471C9*)(S19471C2*), ABISELECT(1608,1268), "S19471C11");
    check_base_class_offset(lv, (S19471C2*), ABISELECT(272,212), "S19471C11");
    check_field_offset(lv, s19471c11f0, ABISELECT(184,152), "S19471C11.s19471c11f0");
    check_field_offset(lv, s19471c11f1, ABISELECT(192,156), "S19471C11.s19471c11f1");
    check_field_offset(lv, s19471c11f2, ABISELECT(200,160), "S19471C11.s19471c11f2");
    check_field_offset(lv, s19471c11f3, ABISELECT(248,200), "S19471C11.s19471c11f3");
    check_field_offset(lv, s19471c11f4, ABISELECT(256,204), "S19471C11.s19471c11f4");
    test_class_info(&lv, &cd_S19471C11);
    dp->~S19471C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19471C11(Test_S19471C11, "S19471C11", ABISELECT(2512,1952));

#else // __cplusplus

extern void _ZN9S19471C11C1Ev();
extern void _ZN9S19471C11D1Ev();
Name_Map name_map_S19471C11[] = {
  NSPAIR(_ZN9S19471C11C1Ev),
  NSPAIR(_ZN9S19471C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
extern Class_Descriptor cd_S19471C3;
extern VTBL_ENTRY _ZTI8S19471C3[];
extern  VTBL_ENTRY _ZTV8S19471C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C8;
extern VTBL_ENTRY _ZTI8S19471C8[];
extern  VTBL_ENTRY _ZTV8S19471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
extern Class_Descriptor cd_S19471C7;
extern VTBL_ENTRY _ZTI8S19471C7[];
extern  VTBL_ENTRY _ZTV8S19471C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C7[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C9;
extern VTBL_ENTRY _ZTI8S19471C9[];
extern  VTBL_ENTRY _ZTV8S19471C9[];
extern Class_Descriptor cd_S19471C2;
extern VTBL_ENTRY _ZTI8S19471C2[];
extern  VTBL_ENTRY _ZTV8S19471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C2[];
static Base_Class bases_S19471C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S19471C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3216C8_nt,    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
    3, //immediately_derived
  0, 0},
  {&cd_S19471C5,    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
    13, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(264,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
    5, //immediately_derived
  0, 1},
  {&cd_S19471C6,    ABISELECT(48,40), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(1760,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
    7, //immediately_derived
  0, 0},
  {&cd_S19471C5,    ABISELECT(1752,1368), //bcp->offset
    41, //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
    1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1816,1412), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19471C5,    ABISELECT(1808,1408), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19471C6,    ABISELECT(1808,1408), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19471C3,    ABISELECT(272,212), //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
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1600,1264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C8,    ABISELECT(1952,1520), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(2104,1628), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C5,    ABISELECT(2096,1624), //bcp->offset
    -1, //bcp->virtual_function_table_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
    16, //immediately_derived
  0, 0},
  {&cd_S19471C6,    ABISELECT(2096,1624), //bcp->offset
    69, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19471C7,    ABISELECT(1952,1520), //bcp->offset
    58, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1616,1272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19471C5,    ABISELECT(1608,1268), //bcp->offset
    -1, //bcp->virtual_function_table_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
    20, //immediately_derived
  0, 0},
  {&cd_S19471C9,    ABISELECT(1608,1268), //bcp->offset
    33, //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
    21, //immediately_derived
  0, 0},
  {&cd_S19471C2,    ABISELECT(272,212), //bcp->offset
    18, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19471C11[];
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN9S19471C11D1Ev();
extern void _ZN9S19471C11D0Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void ABISELECT(_ZTv0_n56_N9S19471C11D1Ev,_ZTv0_n28_N9S19471C11D1Ev)();
extern void ABISELECT(_ZThn272_N9S19471C11D1Ev,_ZThn212_N9S19471C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19471C11D0Ev,_ZTv0_n28_N9S19471C11D0Ev)();
extern void ABISELECT(_ZThn272_N9S19471C11D0Ev,_ZThn212_N9S19471C11D0Ev)() __attribute__((weak));
extern void _ZN8S19471C22v8Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N9S19471C11D1Ev,_ZTvn1056_n28_N9S19471C11D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N9S19471C11D0Ev,_ZTvn1056_n28_N9S19471C11D0Ev)();
extern void _ZN8S19471C92v7Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY vtc_S19471C11[] = {
  ABISELECT(1952,1520),
  ABISELECT(1808,1408),
  ABISELECT(1752,1368),
  ABISELECT(272,212),
  ABISELECT(264,208),
  0,
  (VTBL_ENTRY)&(_ZTI9S19471C11[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  (VTBL_ENTRY)&_ZN9S19471C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19471C11D0Ev,
  ABISELECT(216,168),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI9S19471C11[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-272,-212),
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  ABISELECT(-272,-212),
  (VTBL_ENTRY)&(_ZTI9S19471C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19471C11D1Ev,_ZTv0_n28_N9S19471C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19471C11D0Ev,_ZTv0_n28_N9S19471C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19471C22v8Ev,
  ABISELECT(-1608,-1268),
  (VTBL_ENTRY)&(_ZTI9S19471C11[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19471C11D1Ev,_ZTvn1056_n28_N9S19471C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19471C11D0Ev,_ZTvn1056_n28_N9S19471C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19471C92v7Ev,
  0,
  0,
  0,
  ABISELECT(-1752,-1368),
  (VTBL_ENTRY)&(_ZTI9S19471C11[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-1808,-1408),
  (VTBL_ENTRY)&(_ZTI9S19471C11[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-1952,-1520),
  (VTBL_ENTRY)&(_ZTI9S19471C11[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
  ABISELECT(-1832,-1416),
  ABISELECT(-2096,-1624),
  (VTBL_ENTRY)&(_ZTI9S19471C11[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern VTBL_ENTRY _ZTV9S19471C11[];
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__A__9S19471C11[] = {
  ABISELECT(216,168),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C2D1Ev();
extern void _ZN8S19471C2D0Ev();
extern void _ZN8S19471C22v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C2__9S19471C11[] = {
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19471C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19471C22v8Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19471C38S19471C2__9S19471C11[] = {
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C3[0]),
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C38S19471C2__9S19471C11[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1156),
  (VTBL_ENTRY)&(_ZTI8S19471C3[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C38S19471C2__9S19471C11[] = {
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-1536,-1196),
  (VTBL_ENTRY)&(_ZTI8S19471C3[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C2__9S19471C11[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1156),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C2__9S19471C11[] = {
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-1536,-1196),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C7__8S19471C2__9S19471C11[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-1680,-1308),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C7__A1__8S19471C2__9S19471C11[] = {
  ABISELECT(-1832,-1416),
  ABISELECT(-1824,-1412),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__A1__9S19471C11[] = {
  ABISELECT(-1544,-1200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C7__9S19471C11[] = {
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C88S19471C7__9S19471C11[] = {
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C88S19471C7__9S19471C11[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C7__A2__9S19471C11[] = {
  ABISELECT(-1832,-1416),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C7__9S19471C11[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C7__9S19471C11[] = {
  ABISELECT(-1832,-1416),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
static  VTT_ENTRY vtt_S19471C11[] = {
  {&(_ZTV9S19471C11[7]),  7,75},
  {&(_tg__ZTV8S19471C6__A__9S19471C11[3]),  3,6},
  {&(_ZTV9S19471C11[15]),  15,75},
  {&(_ZTV9S19471C11[30]),  30,75},
  {&(_ZTV9S19471C11[46]),  46,75},
  {&(_ZTV9S19471C11[55]),  55,75},
  {&(_ZTV9S19471C11[67]),  67,75},
  {&(_ZTV9S19471C11[72]),  72,75},
  {&(_ZTV9S19471C11[35]),  35,75},
  {&(_tg__ZTV8S19471C2__9S19471C11[6]),  6,9},
  {&(_tg__ZTV8S19471C38S19471C2__9S19471C11[5]),  5,5},
  {&(_tg__ZTV8S19471C5__8S19471C38S19471C2__9S19471C11[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C38S19471C2__9S19471C11[6]),  6,9},
  {&(_tg__ZTV8S19471C5__8S19471C2__9S19471C11[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C2__9S19471C11[6]),  6,9},
  {&(_tg__ZTV8S19471C7__8S19471C2__9S19471C11[9]),  9,11},
  {&(_tg__ZTV8S19471C68S19471C7__A1__8S19471C2__9S19471C11[3]),  3,6},
  {&(_tg__ZTV8S19471C6__A1__9S19471C11[3]),  3,6},
  {&(_tg__ZTV8S19471C7__9S19471C11[4]),  4,6},
  {&(_tg__ZTV8S19471C88S19471C7__9S19471C11[4]),  4,5},
  {&(_tg__ZTV8S19471C5__8S19471C88S19471C7__9S19471C11[5]),  5,8},
  {&(_tg__ZTV8S19471C68S19471C7__A2__9S19471C11[3]),  3,6},
  {&(_tg__ZTV8S19471C5__8S19471C7__9S19471C11[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C7__9S19471C11[3]),  3,6},
};
extern VTBL_ENTRY _ZTI9S19471C11[];
extern  VTBL_ENTRY _ZTV9S19471C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19471C11[];
static VTBL_ENTRY alt_thunk_names21[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19471C11D0Ev,_ZTv0_n28_N9S19471C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S19471C11D0Ev,_ZThn212_N9S19471C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19471C11D1Ev,_ZTv0_n28_N9S19471C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S19471C11D1Ev,_ZThn212_N9S19471C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19471C11 = {  "S19471C11", // class name
  bases_S19471C11, 22,
  &(vtc_S19471C11[0]), // expected_vtbl_contents
  &(vtt_S19471C11[0]), // expected_vtt_contents
  ABISELECT(2512,1952), // object size
  NSPAIRA(_ZTI9S19471C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19471C11),75, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19471C11),24, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names21,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19471C10  : virtual S19471C11 {
  long double s19471c10f0;
  int s19471c10f1;
  __tsi64 s19471c10f2[8];
  virtual  ~S19471C10(); // _ZN9S19471C10D2Ev
  S19471C10(); // tgen
};
//SIG(-1 S19471C10) C1{ VBC2{ BC3{ BC4{ m Fi} v1 v2 v3 FC4[3] FC4[2] Fp Fs FC4} BC5{ BC3 VBC4 FD FL FC3 Fp Fs[3]} VBC6{ BC7{ VBC4 VBC3 VBC5 Fp[2] Fi FC5[8] FD[9]} BC4 VBC8{ VBC3 VBC4 BC9{ VBC3 VBC4 v4 FC3 FD Fp[2] FC3} BC5 v5 Fp[2] Fl Fi FC3[5]} BC10{ BC3 vd v6 Fp[7] Fi[2] FL Fi} vd v7 Fi Fp Fi} Fp Fi FC3 Fi Fp} vd FD Fi FL[8]}


 S19471C10 ::~S19471C10(){ note_dtor("S19471C10", this);}
S19471C10 ::S19471C10(){ note_ctor("S19471C10", this);} // tgen

static void Test_S19471C10()
{
  extern Class_Descriptor cd_S19471C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(165,510)];
    init_test(&cd_S19471C10, buf);
    S19471C10 *dp, &lv = *(dp=new (buf) S19471C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2624,2036), "sizeof(S19471C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19471C10)");
    /*is_ambiguous_... S19471C11::S19471C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C11*), ABISELECT(120,88), "S19471C10");
    /*is_ambiguous_... S19471C11::S19471C5 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C11*), ABISELECT(112,84), "S19471C10");
    /*is_ambiguous_... S19471C11::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*)(S19471C11*), ABISELECT(168,128), "S19471C10");
    /*is_ambiguous_... S19471C11::S19471C6 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C6*)(S19471C11*), ABISELECT(160,124), "S19471C10");
    /*is_ambiguous_... S19471C11::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*)(S19471C11*), ABISELECT(376,292), "S19471C10");
    /*is_ambiguous_... S19471C3::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C3*)(S19471C2*), ABISELECT(376,292), "S19471C10");
    /*is_ambiguous_... S19471C10::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*), ABISELECT(376,292), "S19471C10");
    /*is_ambiguous_... S19471C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C7*), ABISELECT(376,292), "S19471C10");
    /*is_ambiguous_... S19471C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C8*)(S19471C7*), ABISELECT(376,292), "S19471C10");
    /*is_ambiguous_... S19471C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*)(S19471C7*), ABISELECT(376,292), "S19471C10");
    /*is_ambiguous_... S19471C11::S19471C6 */ AMB_check_base_class_offset(lv, (S19471C6*)(S19471C11*), ABISELECT(160,124), "S19471C10");
    /*is_ambiguous_... S19471C10::S19471C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*), ABISELECT(1872,1456), "S19471C10");
    /*is_ambiguous_... S19471C3::S19471C5 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C3*)(S19471C2*), ABISELECT(1864,1452), "S19471C10");
    /*is_ambiguous_... S19471C7::S19471C5 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C7*), ABISELECT(1864,1452), "S19471C10");
    check_base_class_offset(lv, (S19471C5*)(S19471C8*)(S19471C7*), ABISELECT(1864,1452), "S19471C10");
    /*is_ambiguous_... S19471C10::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*), ABISELECT(1928,1496), "S19471C10");
    /*is_ambiguous_... S19471C10::S19471C6 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C6*), ABISELECT(1920,1492), "S19471C10");
    check_base_class_offset(lv, (S19471C6*)(S19471C3*)(S19471C2*), ABISELECT(1920,1492), "S19471C10");
    check_base_class_offset(lv, (S19471C3*)(S19471C2*), ABISELECT(384,296), "S19471C10");
    /*is_ambiguous_... S19471C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C2*), ABISELECT(1712,1348), "S19471C10");
    check_base_class_offset(lv, (S19471C8*)(S19471C7*), ABISELECT(2064,1604), "S19471C10");
    check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*)(S19471C7*), ABISELECT(2216,1712), "S19471C10");
    check_base_class_offset(lv, (S19471C5*)(S19471C6*)(S19471C7*), ABISELECT(2208,1708), "S19471C10");
    check_base_class_offset(lv, (S19471C6*)(S19471C7*), ABISELECT(2208,1708), "S19471C10");
    check_base_class_offset(lv, (S19471C7*)(S19471C2*), ABISELECT(2064,1604), "S19471C10");
    check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C9*)(S19471C2*), ABISELECT(1728,1356), "S19471C10");
    check_base_class_offset(lv, (S19471C5*)(S19471C9*)(S19471C2*), ABISELECT(1720,1352), "S19471C10");
    check_base_class_offset(lv, (S19471C9*)(S19471C2*), ABISELECT(1720,1352), "S19471C10");
    check_base_class_offset(lv, (S19471C2*)(S19471C11*), ABISELECT(384,296), "S19471C10");
    check_base_class_offset(lv, (S19471C11*), ABISELECT(112,84), "S19471C10");
    check_field_offset(lv, s19471c10f0, ABISELECT(16,4), "S19471C10.s19471c10f0");
    check_field_offset(lv, s19471c10f1, ABISELECT(32,16), "S19471C10.s19471c10f1");
    check_field_offset(lv, s19471c10f2, ABISELECT(40,20), "S19471C10.s19471c10f2");
    test_class_info(&lv, &cd_S19471C10);
    dp->~S19471C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19471C10(Test_S19471C10, "S19471C10", ABISELECT(2624,2036));

#else // __cplusplus

extern void _ZN9S19471C10C1Ev();
extern void _ZN9S19471C10D2Ev();
Name_Map name_map_S19471C10[] = {
  NSPAIR(_ZN9S19471C10C1Ev),
  NSPAIR(_ZN9S19471C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
extern Class_Descriptor cd_S19471C3;
extern VTBL_ENTRY _ZTI8S19471C3[];
extern  VTBL_ENTRY _ZTV8S19471C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C8;
extern VTBL_ENTRY _ZTI8S19471C8[];
extern  VTBL_ENTRY _ZTV8S19471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
extern Class_Descriptor cd_S19471C7;
extern VTBL_ENTRY _ZTI8S19471C7[];
extern  VTBL_ENTRY _ZTV8S19471C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C7[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C9;
extern VTBL_ENTRY _ZTI8S19471C9[];
extern  VTBL_ENTRY _ZTV8S19471C9[];
extern Class_Descriptor cd_S19471C2;
extern VTBL_ENTRY _ZTI8S19471C2[];
extern  VTBL_ENTRY _ZTV8S19471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C2[];
extern Class_Descriptor cd_S19471C11;
extern VTBL_ENTRY _ZTI9S19471C11[];
extern  VTBL_ENTRY _ZTV9S19471C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19471C11[];
static Base_Class bases_S19471C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(120,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19471C5,    ABISELECT(112,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(168,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19471C5,    ABISELECT(160,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
    13, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(376,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19471C6,    ABISELECT(160,124), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1872,1456), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C5,    ABISELECT(1864,1452), //bcp->offset
    55, //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
    1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1928,1496), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C5,    ABISELECT(1920,1492), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19471C6,    ABISELECT(1920,1492), //bcp->offset
    63, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19471C3,    ABISELECT(384,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1712,1348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C8,    ABISELECT(2064,1604), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //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
    17, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(2216,1712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C5,    ABISELECT(2208,1708), //bcp->offset
    -1, //bcp->virtual_function_table_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
    16, //immediately_derived
  0, 0},
  {&cd_S19471C6,    ABISELECT(2208,1708), //bcp->offset
    83, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19471C7,    ABISELECT(2064,1604), //bcp->offset
    72, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1728,1356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19471C5,    ABISELECT(1720,1352), //bcp->offset
    -1, //bcp->virtual_function_table_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
    20, //immediately_derived
  0, 0},
  {&cd_S19471C9,    ABISELECT(1720,1352), //bcp->offset
    47, //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
    21, //immediately_derived
  0, 0},
  {&cd_S19471C2,    ABISELECT(384,296), //bcp->offset
    32, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19471C11,    ABISELECT(112,84), //bcp->offset
    10, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19471C10[];
extern void _ZN9S19471C10D1Ev();
extern void _ZN9S19471C10D0Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void ABISELECT(_ZTv0_n88_N9S19471C10D1Ev,_ZTv0_n44_N9S19471C10D1Ev)();
extern void ABISELECT(_ZThn112_N9S19471C10D1Ev,_ZThn84_N9S19471C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19471C10D0Ev,_ZTv0_n44_N9S19471C10D0Ev)();
extern void ABISELECT(_ZThn112_N9S19471C10D0Ev,_ZThn84_N9S19471C10D0Ev)() __attribute__((weak));
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void ABISELECT(_ZTv0_n56_N9S19471C10D1Ev,_ZTv0_n28_N9S19471C10D1Ev)();
extern void ABISELECT(_ZThn384_N9S19471C10D1Ev,_ZThn296_N9S19471C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19471C10D0Ev,_ZTv0_n28_N9S19471C10D0Ev)();
extern void ABISELECT(_ZThn384_N9S19471C10D0Ev,_ZThn296_N9S19471C10D0Ev)() __attribute__((weak));
extern void _ZN8S19471C22v8Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N9S19471C10D1Ev,_ZTvn1056_n28_N9S19471C10D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N9S19471C10D0Ev,_ZTvn1056_n28_N9S19471C10D0Ev)();
extern void _ZN8S19471C92v7Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY vtc_S19471C10[] = {
  ABISELECT(2064,1604),
  ABISELECT(1920,1492),
  ABISELECT(1864,1452),
  ABISELECT(384,296),
  ABISELECT(376,292),
  ABISELECT(112,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19471C10[0]),
  (VTBL_ENTRY)&_ZN9S19471C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19471C10D0Ev,
  ABISELECT(-112,-84),
  0,
  0,
  0,
  ABISELECT(1952,1520),
  ABISELECT(1808,1408),
  ABISELECT(1752,1368),
  ABISELECT(272,212),
  ABISELECT(264,208),
  ABISELECT(-112,-84),
  (VTBL_ENTRY)&(_ZTI9S19471C10[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19471C10D1Ev,_ZTv0_n44_N9S19471C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19471C10D0Ev,_ZTv0_n44_N9S19471C10D0Ev),
  ABISELECT(216,168),
  ABISELECT(-160,-124),
  (VTBL_ENTRY)&(_ZTI9S19471C10[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-384,-296),
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  ABISELECT(-384,-296),
  (VTBL_ENTRY)&(_ZTI9S19471C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19471C10D1Ev,_ZTv0_n28_N9S19471C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19471C10D0Ev,_ZTv0_n28_N9S19471C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19471C22v8Ev,
  ABISELECT(-1720,-1352),
  (VTBL_ENTRY)&(_ZTI9S19471C10[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19471C10D1Ev,_ZTvn1056_n28_N9S19471C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19471C10D0Ev,_ZTvn1056_n28_N9S19471C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19471C92v7Ev,
  0,
  0,
  0,
  ABISELECT(-1864,-1452),
  (VTBL_ENTRY)&(_ZTI9S19471C10[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-1920,-1492),
  (VTBL_ENTRY)&(_ZTI9S19471C10[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-2064,-1604),
  (VTBL_ENTRY)&(_ZTI9S19471C10[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
  ABISELECT(-1832,-1416),
  ABISELECT(-2208,-1708),
  (VTBL_ENTRY)&(_ZTI9S19471C10[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern VTBL_ENTRY _ZTV9S19471C10[];
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN9S19471C11D1Ev();
extern void _ZN9S19471C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19471C11__9S19471C10[] = {
  ABISELECT(1952,1520),
  ABISELECT(1808,1408),
  ABISELECT(1752,1368),
  ABISELECT(272,212),
  ABISELECT(264,208),
  0,
  (VTBL_ENTRY)&(_ZTI9S19471C11[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  (VTBL_ENTRY)&_ZN9S19471C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19471C11D0Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C69S19471C11__9S19471C10[] = {
  ABISELECT(216,168),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__A__9S19471C11__9S19471C10[] = {
  ABISELECT(216,168),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI9S19471C11[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19471C11D1Ev,_ZTv0_n28_N9S19471C11D1Ev)();
extern void ABISELECT(_ZThn272_N9S19471C11D1Ev,_ZThn212_N9S19471C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19471C11D0Ev,_ZTv0_n28_N9S19471C11D0Ev)();
extern void ABISELECT(_ZThn272_N9S19471C11D0Ev,_ZThn212_N9S19471C11D0Ev)() __attribute__((weak));
extern void _ZN8S19471C22v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C2__9S19471C11__9S19471C10[] = {
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-272,-212),
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  ABISELECT(-272,-212),
  (VTBL_ENTRY)&(_ZTI9S19471C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19471C11D1Ev,_ZTv0_n28_N9S19471C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19471C11D0Ev,_ZTv0_n28_N9S19471C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19471C22v8Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__A2__9S19471C11__9S19471C10[] = {
  0,
  0,
  0,
  ABISELECT(-1752,-1368),
  (VTBL_ENTRY)&(_ZTI9S19471C11[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__A1__9S19471C11__9S19471C10[] = {
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-1808,-1408),
  (VTBL_ENTRY)&(_ZTI9S19471C11[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C7__9S19471C11__9S19471C10[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-1952,-1520),
  (VTBL_ENTRY)&(_ZTI9S19471C11[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C7__A2__9S19471C11__9S19471C10[] = {
  ABISELECT(-1832,-1416),
  ABISELECT(-2096,-1624),
  (VTBL_ENTRY)&(_ZTI9S19471C11[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N9S19471C11D1Ev,_ZTvn1056_n28_N9S19471C11D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N9S19471C11D0Ev,_ZTvn1056_n28_N9S19471C11D0Ev)();
extern void _ZN8S19471C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C98S19471C2__9S19471C11__9S19471C10[] = {
  ABISELECT(-1608,-1268),
  (VTBL_ENTRY)&(_ZTI9S19471C11[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19471C11D1Ev,_ZTvn1056_n28_N9S19471C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19471C11D0Ev,_ZTvn1056_n28_N9S19471C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19471C92v7Ev,
};
extern void _ZN8S19471C2D1Ev();
extern void _ZN8S19471C2D0Ev();
extern void _ZN8S19471C22v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C2__9S19471C10[] = {
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19471C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19471C22v8Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19471C38S19471C2__9S19471C10[] = {
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C3[0]),
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C38S19471C2__9S19471C10[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1156),
  (VTBL_ENTRY)&(_ZTI8S19471C3[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C38S19471C2__9S19471C10[] = {
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-1536,-1196),
  (VTBL_ENTRY)&(_ZTI8S19471C3[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C2__9S19471C10[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1156),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C2__9S19471C10[] = {
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-1536,-1196),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C7__8S19471C2__9S19471C10[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-1680,-1308),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C7__A1__8S19471C2__9S19471C10[] = {
  ABISELECT(-1832,-1416),
  ABISELECT(-1824,-1412),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__A1__9S19471C10[] = {
  ABISELECT(-1544,-1200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C7__9S19471C10[] = {
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C88S19471C7__9S19471C10[] = {
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C88S19471C7__9S19471C10[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C7__A2__9S19471C10[] = {
  ABISELECT(-1832,-1416),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C7__9S19471C10[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C7__9S19471C10[] = {
  ABISELECT(-1832,-1416),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
static  VTT_ENTRY vtt_S19471C10[] = {
  {&(_ZTV9S19471C10[8]),  8,89},
  {&(_ZTV9S19471C10[21]),  21,89},
  {&(_ZTV9S19471C10[29]),  29,89},
  {&(_ZTV9S19471C10[44]),  44,89},
  {&(_ZTV9S19471C10[60]),  60,89},
  {&(_ZTV9S19471C10[69]),  69,89},
  {&(_ZTV9S19471C10[81]),  81,89},
  {&(_ZTV9S19471C10[86]),  86,89},
  {&(_ZTV9S19471C10[49]),  49,89},
  {&(_tg__ZTV9S19471C11__9S19471C10[7]),  7,12},
  {&(_tg__ZTV8S19471C69S19471C11__9S19471C10[3]),  3,6},
  {&(_tg__ZTV8S19471C6__A__9S19471C11__9S19471C10[3]),  3,6},
  {&(_tg__ZTV8S19471C2__9S19471C11__9S19471C10[12]),  12,15},
  {&(_tg__ZTV8S19471C5__A2__9S19471C11__9S19471C10[5]),  5,8},
  {&(_tg__ZTV8S19471C6__A1__9S19471C11__9S19471C10[6]),  6,9},
  {&(_tg__ZTV8S19471C7__9S19471C11__9S19471C10[9]),  9,11},
  {&(_tg__ZTV8S19471C68S19471C7__A2__9S19471C11__9S19471C10[3]),  3,6},
  {&(_tg__ZTV8S19471C98S19471C2__9S19471C11__9S19471C10[2]),  2,8},
  {&(_tg__ZTV8S19471C2__9S19471C10[6]),  6,9},
  {&(_tg__ZTV8S19471C38S19471C2__9S19471C10[5]),  5,5},
  {&(_tg__ZTV8S19471C5__8S19471C38S19471C2__9S19471C10[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C38S19471C2__9S19471C10[6]),  6,9},
  {&(_tg__ZTV8S19471C5__8S19471C2__9S19471C10[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C2__9S19471C10[6]),  6,9},
  {&(_tg__ZTV8S19471C7__8S19471C2__9S19471C10[9]),  9,11},
  {&(_tg__ZTV8S19471C68S19471C7__A1__8S19471C2__9S19471C10[3]),  3,6},
  {&(_tg__ZTV8S19471C6__A1__9S19471C10[3]),  3,6},
  {&(_tg__ZTV8S19471C7__9S19471C10[4]),  4,6},
  {&(_tg__ZTV8S19471C88S19471C7__9S19471C10[4]),  4,5},
  {&(_tg__ZTV8S19471C5__8S19471C88S19471C7__9S19471C10[5]),  5,8},
  {&(_tg__ZTV8S19471C68S19471C7__A2__9S19471C10[3]),  3,6},
  {&(_tg__ZTV8S19471C5__8S19471C7__9S19471C10[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C7__9S19471C10[3]),  3,6},
};
extern VTBL_ENTRY _ZTI9S19471C10[];
extern  VTBL_ENTRY _ZTV9S19471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19471C10[];
static VTBL_ENTRY alt_thunk_names22[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19471C11D0Ev,_ZTv0_n28_N9S19471C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S19471C11D0Ev,_ZThn212_N9S19471C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19471C11D1Ev,_ZTv0_n28_N9S19471C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S19471C11D1Ev,_ZThn212_N9S19471C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19471C10D0Ev,_ZTv0_n28_N9S19471C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S19471C10D0Ev,_ZThn296_N9S19471C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19471C10D1Ev,_ZTv0_n28_N9S19471C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S19471C10D1Ev,_ZThn296_N9S19471C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19471C10D0Ev,_ZTv0_n44_N9S19471C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19471C10D0Ev,_ZThn84_N9S19471C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19471C10D1Ev,_ZTv0_n44_N9S19471C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19471C10D1Ev,_ZThn84_N9S19471C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19471C10 = {  "S19471C10", // class name
  bases_S19471C10, 23,
  &(vtc_S19471C10[0]), // expected_vtbl_contents
  &(vtt_S19471C10[0]), // expected_vtt_contents
  ABISELECT(2624,2036), // object size
  NSPAIRA(_ZTI9S19471C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19471C10),89, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19471C10),33, //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  S19471C14  : virtual S3216C8_nt , S19471C7 , S19471C8 , S19471C6 {
  int s19471c14f0;
  ::S20643C15_nt s19471c14f1;
  void *s19471c14f2[2];
  virtual void  v9(); // _ZN9S19471C142v9Ev
  ~S19471C14(); // tgen
  S19471C14(); // tgen
};
//SIG(-1 S19471C14) C1{ VBC2{ m Fi} BC3{ VBC4{ BC2 v2 v3 v4 FC2[3] FC2[2] Fp Fs FC2} VBC2 BC5{ VBC4 VBC2 v5 FC4 FD Fp[2] FC4} BC6{ BC4 VBC2 FD FL FC4 Fp Fs[3]} v6 Fp[2] Fl Fi FC4[5]} BC5 BC6 v1 Fi FC7{} Fp[2]}


void  S19471C14 ::v9(){vfunc_called(this, "_ZN9S19471C142v9Ev");}
S19471C14 ::~S19471C14(){ note_dtor("S19471C14", this);} // tgen
S19471C14 ::S19471C14(){ note_ctor("S19471C14", this);} // tgen

static void Test_S19471C14()
{
  extern Class_Descriptor cd_S19471C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(59,178)];
    init_test(&cd_S19471C14, buf);
    S19471C14 *dp, &lv = *(dp=new (buf) S19471C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(928,708), "sizeof(S19471C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19471C14)");
    /*is_ambiguous_... S19471C14::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(864,664), "S19471C14");
    /*is_ambiguous_... S19471C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C7*), ABISELECT(864,664), "S19471C14");
    /*is_ambiguous_... S19471C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C8*)(S19471C7*), ABISELECT(864,664), "S19471C14");
    /*is_ambiguous_... S19471C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*)(S19471C7*), ABISELECT(864,664), "S19471C14");
    /*is_ambiguous_... S19471C14::S19471C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C8*), ABISELECT(864,664), "S19471C14");
    /*is_ambiguous_... S19471C14::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*), ABISELECT(864,664), "S19471C14");
    /*is_ambiguous_... S19471C14::S19471C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*), ABISELECT(880,672), "S19471C14");
    /*is_ambiguous_... S19471C7::S19471C5 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C7*), ABISELECT(872,668), "S19471C14");
    check_base_class_offset(lv, (S19471C5*)(S19471C8*)(S19471C7*), ABISELECT(872,668), "S19471C14");
    /*is_ambiguous_... S19471C14::S19471C8 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C8*), ABISELECT(872,668), "S19471C14");
    check_base_class_offset(lv, (S19471C8*)(S19471C7*), 0, "S19471C14");
    check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*)(S19471C7*), ABISELECT(152,108), "S19471C14");
    check_base_class_offset(lv, (S19471C5*)(S19471C6*)(S19471C7*), ABISELECT(144,104), "S19471C14");
    check_base_class_offset(lv, (S19471C6*)(S19471C7*), ABISELECT(144,104), "S19471C14");
    check_base_class_offset(lv, (S19471C7*), 0, "S19471C14");
    /*is_ambiguous_... S19471C14::S19471C8 */ AMB_check_base_class_offset(lv, (S19471C8*), ABISELECT(560,432), "S19471C14");
    /*is_ambiguous_... S19471C14::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*), ABISELECT(712,540), "S19471C14");
    /*is_ambiguous_... S19471C14::S19471C6 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C6*), ABISELECT(704,536), "S19471C14");
    /*is_ambiguous_... S19471C14::S19471C6 */ AMB_check_base_class_offset(lv, (S19471C6*), ABISELECT(704,536), "S19471C14");
    check_field_offset(lv, s19471c14f0, ABISELECT(840,648), "S19471C14.s19471c14f0");
    check_field_offset(lv, s19471c14f1, ABISELECT(844,652), "S19471C14.s19471c14f1");
    check_field_offset(lv, s19471c14f2, ABISELECT(848,656), "S19471C14.s19471c14f2");
    test_class_info(&lv, &cd_S19471C14);
    dp->~S19471C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19471C14(Test_S19471C14, "S19471C14", ABISELECT(928,708));

#else // __cplusplus

extern void _ZN9S19471C14C1Ev();
extern void _ZN9S19471C14D1Ev();
Name_Map name_map_S19471C14[] = {
  NSPAIR(_ZN9S19471C14C1Ev),
  NSPAIR(_ZN9S19471C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C8;
extern VTBL_ENTRY _ZTI8S19471C8[];
extern  VTBL_ENTRY _ZTV8S19471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
extern Class_Descriptor cd_S19471C7;
extern VTBL_ENTRY _ZTI8S19471C7[];
extern  VTBL_ENTRY _ZTV8S19471C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C7[];
extern Class_Descriptor cd_S19471C8;
extern VTBL_ENTRY _ZTI8S19471C8[];
extern  VTBL_ENTRY _ZTV8S19471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
static Base_Class bases_S19471C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(864,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
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(880,672), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C5,    ABISELECT(872,668), //bcp->offset
    24, //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
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19471C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(152,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19471C5,    ABISELECT(144,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19471C6,    ABISELECT(144,104), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19471C7,    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_S19471C8,    ABISELECT(560,432), //bcp->offset
    13, //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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(712,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
    10, //immediately_derived
  0, 0},
  {&cd_S19471C5,    ABISELECT(704,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
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19471C6,    ABISELECT(704,536), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19471C14[];
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
extern void _ZN9S19471C142v9Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY vtc_S19471C14[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI9S19471C14[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19471C142v9Ev,
  ABISELECT(720,560),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI9S19471C14[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  ABISELECT(304,232),
  ABISELECT(312,236),
  ABISELECT(-560,-432),
  (VTBL_ENTRY)&(_ZTI9S19471C14[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  ABISELECT(160,128),
  ABISELECT(-704,-536),
  (VTBL_ENTRY)&(_ZTI9S19471C14[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI9S19471C14[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern VTBL_ENTRY _ZTV9S19471C14[];
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C7__9S19471C14[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C88S19471C7__9S19471C14[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C88S19471C7__9S19471C14[] = {
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C7__9S19471C14[] = {
  ABISELECT(720,560),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C7__9S19471C14[] = {
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C7__9S19471C14[] = {
  ABISELECT(720,560),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C8__A1__9S19471C14[] = {
  ABISELECT(304,232),
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C8__A1__9S19471C14[] = {
  0,
  0,
  0,
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__A1__9S19471C14[] = {
  ABISELECT(160,128),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
static  VTT_ENTRY vtt_S19471C14[] = {
  {&(_ZTV9S19471C14[4]),  4,32},
  {&(_tg__ZTV8S19471C7__9S19471C14[4]),  4,6},
  {&(_tg__ZTV8S19471C88S19471C7__9S19471C14[4]),  4,5},
  {&(_tg__ZTV8S19471C5__8S19471C88S19471C7__9S19471C14[5]),  5,8},
  {&(_tg__ZTV8S19471C68S19471C7__9S19471C14[3]),  3,6},
  {&(_tg__ZTV8S19471C5__8S19471C7__9S19471C14[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C7__9S19471C14[3]),  3,6},
  {&(_tg__ZTV8S19471C8__A1__9S19471C14[4]),  4,5},
  {&(_tg__ZTV8S19471C5__8S19471C8__A1__9S19471C14[5]),  5,8},
  {&(_tg__ZTV8S19471C6__A1__9S19471C14[3]),  3,6},
  {&(_ZTV9S19471C14[29]),  29,32},
  {&(_ZTV9S19471C14[10]),  10,32},
  {&(_ZTV9S19471C14[17]),  17,32},
  {&(_ZTV9S19471C14[21]),  21,32},
};
extern VTBL_ENTRY _ZTI9S19471C14[];
extern  VTBL_ENTRY _ZTV9S19471C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19471C14[];
Class_Descriptor cd_S19471C14 = {  "S19471C14", // class name
  bases_S19471C14, 12,
  &(vtc_S19471C14[0]), // expected_vtbl_contents
  &(vtt_S19471C14[0]), // expected_vtt_contents
  ABISELECT(928,708), // object size
  NSPAIRA(_ZTI9S19471C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19471C14),32, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19471C14),14, //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  S19471C13  : S19471C6 , virtual S19471C2 , S19471C7 , S19471C14 {
  int s19471c13f0;
  char s19471c13f1[2];
  int s19471c13f2;
  __tsi64 s19471c13f3;
  ::S20643C15_nt s19471c13f4;
  void *s19471c13f5[8];
  short s19471c13f6[5];
  __tsi64 s19471c13f7;
  ::S20643C18 s19471c13f8;
  virtual  ~S19471C13(); // _ZN9S19471C13D2Ev
  S19471C13(); // tgen
};
//SIG(-1 S19471C13) C1{ BC2{ BC3{ BC4{ m Fi} v1 v2 v3 FC4[3] FC4[2] Fp Fs FC4} VBC4 FD FL FC3 Fp Fs[3]} VBC5{ BC6{ VBC4 VBC3 VBC2 Fp[2] Fi FC2[8] FD[9]} BC4 VBC7{ VBC3 VBC4 BC8{ VBC3 VBC4 v4 FC3 FD Fp[2] FC3} BC2 v5 Fp[2] Fl Fi FC3[5]} BC9{ BC3 vd v6 Fp[7] Fi[2] FL Fi} vd v7 Fi Fp Fi} BC7 BC10{ VBC4 BC7 BC8 BC2 v8 Fi FC11{} Fp[2]} vd Fi Fc[2] Fi FL FC11 Fp[8] Fs[5] FL FC12{ vd m Fc[2] Fi FL Fp[7] FU13{ m Fi:3 Fi Fi Fi FD[8] Fp Fc[5] FD Fc[4] Fi Fp Fc[4] Fp}[4] FC14{ VBC4 VBC15{ BC4 v9 v10 v11 FC4[3] FC4[2] Fp Fs FC4} VBC16{ BC15 VBC4 FD FL FC15 Fp Fs[3]} Fp[2] Fi FC16[8] FD[9]}}}


 S19471C13 ::~S19471C13(){ note_dtor("S19471C13", this);}
S19471C13 ::S19471C13(){ note_ctor("S19471C13", this);} // tgen

static void Test_S19471C13()
{
  extern Class_Descriptor cd_S19471C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(381,1168)];
    init_test(&cd_S19471C13, buf);
    S19471C13 *dp, &lv = *(dp=new (buf) S19471C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(6080,4668), "sizeof(S19471C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19471C13)");
    /*is_ambiguous_... S19471C13::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*), ABISELECT(8,4), "S19471C13");
    /*is_ambiguous_... S19471C13::S19471C6 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C6*), 0, "S19471C13");
    /*is_ambiguous_... S19471C13::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*), ABISELECT(3824,2924), "S19471C13");
    /*is_ambiguous_... S19471C3::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C3*)(S19471C2*), ABISELECT(3824,2924), "S19471C13");
    /*is_ambiguous_... S19471C13::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*), ABISELECT(3824,2924), "S19471C13");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C7*), ABISELECT(3824,2924), "S19471C13");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C8*)(S19471C7*), ABISELECT(3824,2924), "S19471C13");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*)(S19471C7*), ABISELECT(3824,2924), "S19471C13");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C7*), ABISELECT(3824,2924), "S19471C13");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C8*)(S19471C7*), ABISELECT(3824,2924), "S19471C13");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*)(S19471C7*), ABISELECT(3824,2924), "S19471C13");
    /*is_ambiguous_... S19471C14::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C14*), ABISELECT(3824,2924), "S19471C13");
    /*is_ambiguous_... S19471C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C7*)(S19471C14*), ABISELECT(3824,2924), "S19471C13");
    /*is_ambiguous_... S19471C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C8*)(S19471C7*)(S19471C14*), ABISELECT(3824,2924), "S19471C13");
    /*is_ambiguous_... S19471C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*)(S19471C7*)(S19471C14*), ABISELECT(3824,2924), "S19471C13");
    /*is_ambiguous_... S19471C14::S19471C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C8*)(S19471C14*), ABISELECT(3824,2924), "S19471C13");
    /*is_ambiguous_... S19471C14::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*)(S19471C14*), ABISELECT(3824,2924), "S19471C13");
    /*is_ambiguous_... S19471C13::S19471C6 */ AMB_check_base_class_offset(lv, (S19471C6*), 0, "S19471C13");
    /*is_ambiguous_... S19471C13::S19471C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*), ABISELECT(5328,4088), "S19471C13");
    /*is_ambiguous_... S19471C3::S19471C5 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C3*)(S19471C2*), ABISELECT(5320,4084), "S19471C13");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C7*), ABISELECT(5320,4084), "S19471C13");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C8*)(S19471C7*), ABISELECT(5320,4084), "S19471C13");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C7*), ABISELECT(5320,4084), "S19471C13");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C8*)(S19471C7*), ABISELECT(5320,4084), "S19471C13");
    /*is_ambiguous_... S19471C7::S19471C5 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C7*)(S19471C14*), ABISELECT(5320,4084), "S19471C13");
    check_base_class_offset(lv, (S19471C5*)(S19471C8*)(S19471C7*)(S19471C14*), ABISELECT(5320,4084), "S19471C13");
    /*is_ambiguous_... S19471C14::S19471C8 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C8*)(S19471C14*), ABISELECT(5320,4084), "S19471C13");
    /*is_ambiguous_... S19471C13::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*), ABISELECT(5384,4128), "S19471C13");
    /*is_ambiguous_... S19471C13::S19471C6 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C6*), ABISELECT(5376,4124), "S19471C13");
    check_base_class_offset(lv, (S19471C6*)(S19471C3*)(S19471C2*), ABISELECT(5376,4124), "S19471C13");
    check_base_class_offset(lv, (S19471C3*)(S19471C2*), ABISELECT(3840,2928), "S19471C13");
    /*is_ambiguous_... S19471C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C2*), ABISELECT(5168,3980), "S19471C13");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C8*)(S19471C7*), ABISELECT(5520,4236), "S19471C13");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*)(S19471C7*), ABISELECT(5672,4344), "S19471C13");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C6*)(S19471C7*), ABISELECT(5664,4340), "S19471C13");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C6*)(S19471C7*), ABISELECT(5664,4340), "S19471C13");
    check_base_class_offset(lv, (S19471C7*)(S19471C2*), ABISELECT(5520,4236), "S19471C13");
    check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C9*)(S19471C2*), ABISELECT(5184,3988), "S19471C13");
    check_base_class_offset(lv, (S19471C5*)(S19471C9*)(S19471C2*), ABISELECT(5176,3984), "S19471C13");
    check_base_class_offset(lv, (S19471C9*)(S19471C2*), ABISELECT(5176,3984), "S19471C13");
    check_base_class_offset(lv, (S19471C2*), ABISELECT(3840,2928), "S19471C13");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C8*)(S19471C7*), ABISELECT(144,112), "S19471C13");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*)(S19471C7*), ABISELECT(296,220), "S19471C13");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C6*)(S19471C7*), ABISELECT(288,216), "S19471C13");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C6*)(S19471C7*), ABISELECT(288,216), "S19471C13");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C7*), ABISELECT(144,112), "S19471C13");
    check_base_class_offset(lv, (S19471C8*)(S19471C7*)(S19471C14*), ABISELECT(704,544), "S19471C13");
    check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*)(S19471C7*)(S19471C14*), ABISELECT(856,652), "S19471C13");
    check_base_class_offset(lv, (S19471C5*)(S19471C6*)(S19471C7*)(S19471C14*), ABISELECT(848,648), "S19471C13");
    check_base_class_offset(lv, (S19471C6*)(S19471C7*)(S19471C14*), ABISELECT(848,648), "S19471C13");
    check_base_class_offset(lv, (S19471C7*)(S19471C14*), ABISELECT(704,544), "S19471C13");
    /*is_ambiguous_... S19471C14::S19471C8 */ AMB_check_base_class_offset(lv, (S19471C8*)(S19471C14*), ABISELECT(1264,976), "S19471C13");
    /*is_ambiguous_... S19471C14::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*)(S19471C14*), ABISELECT(1416,1084), "S19471C13");
    /*is_ambiguous_... S19471C14::S19471C6 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C6*)(S19471C14*), ABISELECT(1408,1080), "S19471C13");
    /*is_ambiguous_... S19471C14::S19471C6 */ AMB_check_base_class_offset(lv, (S19471C6*)(S19471C14*), ABISELECT(1408,1080), "S19471C13");
    check_base_class_offset(lv, (S19471C14*), ABISELECT(704,544), "S19471C13");
    check_field_offset(lv, s19471c13f0, ABISELECT(1568,1208), "S19471C13.s19471c13f0");
    check_field_offset(lv, s19471c13f1, ABISELECT(1572,1212), "S19471C13.s19471c13f1");
    check_field_offset(lv, s19471c13f2, ABISELECT(1576,1216), "S19471C13.s19471c13f2");
    check_field_offset(lv, s19471c13f3, ABISELECT(1584,1220), "S19471C13.s19471c13f3");
    check_field_offset(lv, s19471c13f4, ABISELECT(1592,1228), "S19471C13.s19471c13f4");
    check_field_offset(lv, s19471c13f5, ABISELECT(1600,1232), "S19471C13.s19471c13f5");
    check_field_offset(lv, s19471c13f6, ABISELECT(1664,1264), "S19471C13.s19471c13f6");
    check_field_offset(lv, s19471c13f7, ABISELECT(1680,1276), "S19471C13.s19471c13f7");
    check_field_offset(lv, s19471c13f8, ABISELECT(1696,1284), "S19471C13.s19471c13f8");
    test_class_info(&lv, &cd_S19471C13);
    dp->~S19471C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19471C13(Test_S19471C13, "S19471C13", ABISELECT(6080,4668));

#else // __cplusplus

extern void _ZN9S19471C13C1Ev();
extern void _ZN9S19471C13D2Ev();
Name_Map name_map_S19471C13[] = {
  NSPAIR(_ZN9S19471C13C1Ev),
  NSPAIR(_ZN9S19471C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
extern Class_Descriptor cd_S19471C3;
extern VTBL_ENTRY _ZTI8S19471C3[];
extern  VTBL_ENTRY _ZTV8S19471C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C8;
extern VTBL_ENTRY _ZTI8S19471C8[];
extern  VTBL_ENTRY _ZTV8S19471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
extern Class_Descriptor cd_S19471C7;
extern VTBL_ENTRY _ZTI8S19471C7[];
extern  VTBL_ENTRY _ZTV8S19471C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C7[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C9;
extern VTBL_ENTRY _ZTI8S19471C9[];
extern  VTBL_ENTRY _ZTV8S19471C9[];
extern Class_Descriptor cd_S19471C2;
extern VTBL_ENTRY _ZTI8S19471C2[];
extern  VTBL_ENTRY _ZTV8S19471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C2[];
extern Class_Descriptor cd_S19471C8;
extern VTBL_ENTRY _ZTI8S19471C8[];
extern  VTBL_ENTRY _ZTV8S19471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
extern Class_Descriptor cd_S19471C7;
extern VTBL_ENTRY _ZTI8S19471C7[];
extern  VTBL_ENTRY _ZTV8S19471C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C7[];
extern Class_Descriptor cd_S19471C8;
extern VTBL_ENTRY _ZTI8S19471C8[];
extern  VTBL_ENTRY _ZTV8S19471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
extern Class_Descriptor cd_S19471C7;
extern VTBL_ENTRY _ZTI8S19471C7[];
extern  VTBL_ENTRY _ZTV8S19471C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C7[];
extern Class_Descriptor cd_S19471C8;
extern VTBL_ENTRY _ZTI8S19471C8[];
extern  VTBL_ENTRY _ZTV8S19471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
extern Class_Descriptor cd_S19471C14;
extern VTBL_ENTRY _ZTI9S19471C14[];
extern  VTBL_ENTRY _ZTV9S19471C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19471C14[];
static Base_Class bases_S19471C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S19471C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3216C8_nt,    ABISELECT(3824,2924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C6,    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_S3216C8_nt,    ABISELECT(5328,4088), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19471C5,    ABISELECT(5320,4084), //bcp->offset
    71, //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
    9, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(5384,4128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C5,    ABISELECT(5376,4124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19471C6,    ABISELECT(5376,4124), //bcp->offset
    79, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19471C3,    ABISELECT(3840,2928), //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
    8, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(5168,3980), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C8,    ABISELECT(5520,4236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(5672,4344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C5,    ABISELECT(5664,4340), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19471C6,    ABISELECT(5664,4340), //bcp->offset
    99, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19471C7,    ABISELECT(5520,4236), //bcp->offset
    88, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(5184,3988), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C5,    ABISELECT(5176,3984), //bcp->offset
    -1, //bcp->virtual_function_table_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
    18, //immediately_derived
  0, 0},
  {&cd_S19471C9,    ABISELECT(5176,3984), //bcp->offset
    63, //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
    10, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19471C2,    ABISELECT(3840,2928), //bcp->offset
    48, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19471C8,    ABISELECT(144,112), //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
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    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
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19471C5,    ABISELECT(288,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
    15, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19471C6,    ABISELECT(288,216), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19471C7,    ABISELECT(144,112), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19471C8,    ABISELECT(704,544), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(856,652), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19471C5,    ABISELECT(848,648), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19471C6,    ABISELECT(848,648), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19471C7,    ABISELECT(704,544), //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
    21, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19471C8,    ABISELECT(1264,976), //bcp->offset
    37, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1416,1084), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19471C5,    ABISELECT(1408,1080), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19471C6,    ABISELECT(1408,1080), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19471C14,    ABISELECT(704,544), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19471C13[];
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN9S19471C13D1Ev();
extern void _ZN9S19471C13D0Ev();
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
extern void _ZN9S19471C142v9Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void ABISELECT(_ZTv0_n56_N9S19471C13D1Ev,_ZTv0_n28_N9S19471C13D1Ev)();
extern void ABISELECT(_ZThn3840_N9S19471C13D1Ev,_ZThn2928_N9S19471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19471C13D0Ev,_ZTv0_n28_N9S19471C13D0Ev)();
extern void ABISELECT(_ZThn3840_N9S19471C13D0Ev,_ZThn2928_N9S19471C13D0Ev)() __attribute__((weak));
extern void _ZN8S19471C22v8Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N9S19471C13D1Ev,_ZTvn1056_n28_N9S19471C13D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N9S19471C13D0Ev,_ZTvn1056_n28_N9S19471C13D0Ev)();
extern void _ZN8S19471C92v7Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY vtc_S19471C13[] = {
  ABISELECT(5520,4236),
  ABISELECT(5376,4124),
  ABISELECT(5320,4084),
  ABISELECT(3840,2928),
  ABISELECT(3824,2924),
  0,
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  (VTBL_ENTRY)&_ZN9S19471C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19471C13D0Ev,
  ABISELECT(3680,2812),
  ABISELECT(5176,3972),
  ABISELECT(-144,-112),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
  ABISELECT(3536,2708),
  ABISELECT(-288,-216),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  ABISELECT(3120,2380),
  ABISELECT(4616,3540),
  ABISELECT(-704,-544),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19471C142v9Ev,
  ABISELECT(2976,2276),
  ABISELECT(-848,-648),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  ABISELECT(2560,1948),
  ABISELECT(4056,3108),
  ABISELECT(-1264,-976),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  ABISELECT(2416,1844),
  ABISELECT(-1408,-1080),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-3840,-2928),
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-16,-4),
  ABISELECT(-3840,-2928),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19471C13D1Ev,_ZTv0_n28_N9S19471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19471C13D0Ev,_ZTv0_n28_N9S19471C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19471C22v8Ev,
  ABISELECT(-5176,-3984),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19471C13D1Ev,_ZTvn1056_n28_N9S19471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19471C13D0Ev,_ZTvn1056_n28_N9S19471C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19471C92v7Ev,
  0,
  0,
  0,
  ABISELECT(-5320,-4084),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  0,
  0,
  0,
  ABISELECT(-1552,-1200),
  ABISELECT(-5376,-4124),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1696,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-5520,-4236),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
  ABISELECT(-1840,-1416),
  ABISELECT(-5664,-4340),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern VTBL_ENTRY _ZTV9S19471C13[];
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__A__9S19471C13[] = {
  ABISELECT(3824,2924),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C7__A__9S19471C13[] = {
  ABISELECT(3680,2812),
  ABISELECT(5176,3972),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C88S19471C7__A1__9S19471C13[] = {
  ABISELECT(3680,2812),
  ABISELECT(5176,3972),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C88S19471C7__A1__9S19471C13[] = {
  0,
  0,
  0,
  ABISELECT(-5176,-3972),
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C7__A3__9S19471C13[] = {
  ABISELECT(3536,2708),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C7__A__9S19471C13[] = {
  0,
  0,
  0,
  ABISELECT(-5176,-3972),
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C7__A__9S19471C13[] = {
  ABISELECT(3536,2708),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
extern void _ZN9S19471C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19471C14__9S19471C13[] = {
  ABISELECT(3120,2380),
  ABISELECT(4616,3540),
  0,
  (VTBL_ENTRY)&(_ZTI9S19471C14[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19471C142v9Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C79S19471C14__A2__9S19471C13[] = {
  ABISELECT(3120,2380),
  ABISELECT(4616,3540),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C88S19471C79S19471C14__A2__9S19471C13[] = {
  ABISELECT(3120,2380),
  ABISELECT(4616,3540),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C88S19471C79S19471C14__A2__9S19471C13[] = {
  0,
  0,
  0,
  ABISELECT(-4616,-3540),
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C79S19471C14__A4__9S19471C13[] = {
  ABISELECT(2976,2276),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C79S19471C14__A2__9S19471C13[] = {
  0,
  0,
  0,
  ABISELECT(-4616,-3540),
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C79S19471C14__A2__9S19471C13[] = {
  ABISELECT(2976,2276),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C89S19471C14__A3__9S19471C13[] = {
  ABISELECT(2560,1948),
  ABISELECT(4056,3108),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C89S19471C14__A3__9S19471C13[] = {
  0,
  0,
  0,
  ABISELECT(-4056,-3108),
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C69S19471C14__A5__9S19471C13[] = {
  ABISELECT(2416,1844),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__9S19471C14__9S19471C13[] = {
  0,
  0,
  0,
  ABISELECT(-4616,-3540),
  (VTBL_ENTRY)&(_ZTI9S19471C14[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C7__9S19471C14__9S19471C13[] = {
  ABISELECT(2976,2276),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI9S19471C14[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C8__A1__9S19471C14__9S19471C13[] = {
  ABISELECT(2560,1948),
  ABISELECT(4056,3108),
  ABISELECT(-560,-432),
  (VTBL_ENTRY)&(_ZTI9S19471C14[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__A1__9S19471C14__9S19471C13[] = {
  ABISELECT(2416,1844),
  ABISELECT(-704,-536),
  (VTBL_ENTRY)&(_ZTI9S19471C14[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C2D1Ev();
extern void _ZN8S19471C2D0Ev();
extern void _ZN8S19471C22v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C2__9S19471C13[] = {
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19471C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19471C22v8Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19471C38S19471C2__9S19471C13[] = {
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C3[0]),
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C38S19471C2__9S19471C13[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1156),
  (VTBL_ENTRY)&(_ZTI8S19471C3[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C38S19471C2__9S19471C13[] = {
  0,
  0,
  0,
  ABISELECT(-1552,-1200),
  ABISELECT(-1536,-1196),
  (VTBL_ENTRY)&(_ZTI8S19471C3[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C2__9S19471C13[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1156),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C2__9S19471C13[] = {
  0,
  0,
  0,
  ABISELECT(-1552,-1200),
  ABISELECT(-1536,-1196),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C7__8S19471C2__9S19471C13[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1696,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-1680,-1308),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C7__A1__8S19471C2__9S19471C13[] = {
  ABISELECT(-1840,-1416),
  ABISELECT(-1824,-1412),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__A1__9S19471C13[] = {
  ABISELECT(-1552,-1200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C7__9S19471C13[] = {
  ABISELECT(-1696,-1312),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C88S19471C7__9S19471C13[] = {
  ABISELECT(-1696,-1312),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C88S19471C7__9S19471C13[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C7__A2__9S19471C13[] = {
  ABISELECT(-1840,-1416),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C7__9S19471C13[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C7__9S19471C13[] = {
  ABISELECT(-1840,-1416),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
static  VTT_ENTRY vtt_S19471C13[] = {
  {&(_ZTV9S19471C13[7]),  7,105},
  {&(_tg__ZTV8S19471C6__A__9S19471C13[3]),  3,6},
  {&(_tg__ZTV8S19471C7__A__9S19471C13[4]),  4,6},
  {&(_tg__ZTV8S19471C88S19471C7__A1__9S19471C13[4]),  4,5},
  {&(_tg__ZTV8S19471C5__8S19471C88S19471C7__A1__9S19471C13[5]),  5,8},
  {&(_tg__ZTV8S19471C68S19471C7__A3__9S19471C13[3]),  3,6},
  {&(_tg__ZTV8S19471C5__8S19471C7__A__9S19471C13[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C7__A__9S19471C13[3]),  3,6},
  {&(_tg__ZTV9S19471C14__9S19471C13[4]),  4,7},
  {&(_tg__ZTV8S19471C79S19471C14__A2__9S19471C13[4]),  4,6},
  {&(_tg__ZTV8S19471C88S19471C79S19471C14__A2__9S19471C13[4]),  4,5},
  {&(_tg__ZTV8S19471C5__8S19471C88S19471C79S19471C14__A2__9S19471C13[5]),  5,8},
  {&(_tg__ZTV8S19471C68S19471C79S19471C14__A4__9S19471C13[3]),  3,6},
  {&(_tg__ZTV8S19471C5__8S19471C79S19471C14__A2__9S19471C13[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C79S19471C14__A2__9S19471C13[3]),  3,6},
  {&(_tg__ZTV8S19471C89S19471C14__A3__9S19471C13[4]),  4,5},
  {&(_tg__ZTV8S19471C5__8S19471C89S19471C14__A3__9S19471C13[5]),  5,8},
  {&(_tg__ZTV8S19471C69S19471C14__A5__9S19471C13[3]),  3,6},
  {&(_tg__ZTV8S19471C5__9S19471C14__9S19471C13[5]),  5,8},
  {&(_tg__ZTV8S19471C68S19471C7__9S19471C14__9S19471C13[3]),  3,6},
  {&(_tg__ZTV8S19471C8__A1__9S19471C14__9S19471C13[4]),  4,5},
  {&(_tg__ZTV8S19471C6__A1__9S19471C14__9S19471C13[3]),  3,6},
  {&(_ZTV9S19471C13[60]),  60,105},
  {&(_ZTV9S19471C13[76]),  76,105},
  {&(_ZTV9S19471C13[85]),  85,105},
  {&(_ZTV9S19471C13[97]),  97,105},
  {&(_ZTV9S19471C13[102]),  102,105},
  {&(_ZTV9S19471C13[65]),  65,105},
  {&(_ZTV9S19471C13[16]),  16,105},
  {&(_ZTV9S19471C13[21]),  21,105},
  {&(_ZTV9S19471C13[28]),  28,105},
  {&(_ZTV9S19471C13[34]),  34,105},
  {&(_ZTV9S19471C13[41]),  41,105},
  {&(_ZTV9S19471C13[45]),  45,105},
  {&(_tg__ZTV8S19471C2__9S19471C13[6]),  6,9},
  {&(_tg__ZTV8S19471C38S19471C2__9S19471C13[5]),  5,5},
  {&(_tg__ZTV8S19471C5__8S19471C38S19471C2__9S19471C13[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C38S19471C2__9S19471C13[6]),  6,9},
  {&(_tg__ZTV8S19471C5__8S19471C2__9S19471C13[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C2__9S19471C13[6]),  6,9},
  {&(_tg__ZTV8S19471C7__8S19471C2__9S19471C13[9]),  9,11},
  {&(_tg__ZTV8S19471C68S19471C7__A1__8S19471C2__9S19471C13[3]),  3,6},
  {&(_tg__ZTV8S19471C6__A1__9S19471C13[3]),  3,6},
  {&(_tg__ZTV8S19471C7__9S19471C13[4]),  4,6},
  {&(_tg__ZTV8S19471C88S19471C7__9S19471C13[4]),  4,5},
  {&(_tg__ZTV8S19471C5__8S19471C88S19471C7__9S19471C13[5]),  5,8},
  {&(_tg__ZTV8S19471C68S19471C7__A2__9S19471C13[3]),  3,6},
  {&(_tg__ZTV8S19471C5__8S19471C7__9S19471C13[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C7__9S19471C13[3]),  3,6},
};
extern VTBL_ENTRY _ZTI9S19471C13[];
extern  VTBL_ENTRY _ZTV9S19471C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19471C13[];
static VTBL_ENTRY alt_thunk_names23[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19471C13D0Ev,_ZTv0_n28_N9S19471C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3840_N9S19471C13D0Ev,_ZThn2928_N9S19471C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19471C13D1Ev,_ZTv0_n28_N9S19471C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3840_N9S19471C13D1Ev,_ZThn2928_N9S19471C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19471C13 = {  "S19471C13", // class name
  bases_S19471C13, 35,
  &(vtc_S19471C13[0]), // expected_vtbl_contents
  &(vtt_S19471C13[0]), // expected_vtt_contents
  ABISELECT(6080,4668), // object size
  NSPAIRA(_ZTI9S19471C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19471C13),105, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19471C13),49, //virtual table table var
  25, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names23,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19471C12  : virtual S19471C6 , S19471C2 , S19471C13 , S19471C8 {
  char s19471c12f0;
  int s19471c12f1;
  int s19471c12f2;
  int s19471c12f3;
  int s19471c12f4;
  void *s19471c12f5;
  char s19471c12f6[4];
  int s19471c12f7;
  virtual  ~S19471C12(); // _ZN9S19471C12D2Ev
  S19471C12(); // tgen
};
//SIG(-1 S19471C12) C1{ VBC2{ BC3{ BC4{ m Fi} v1 v2 v3 FC4[3] FC4[2] Fp Fs FC4} VBC4 FD FL FC3 Fp Fs[3]} BC5{ BC6{ VBC4 VBC3 VBC2 Fp[2] Fi FC2[8] FD[9]} BC4 VBC7{ VBC3 VBC4 BC8{ VBC3 VBC4 v4 FC3 FD Fp[2] FC3} BC2 v5 Fp[2] Fl Fi FC3[5]} BC9{ BC3 vd v6 Fp[7] Fi[2] FL Fi} vd v7 Fi Fp Fi} BC10{ BC2 VBC5 BC7 BC11{ VBC4 BC7 BC8 BC2 v8 Fi FC12{} Fp[2]} vd Fi Fc[2] Fi FL FC12 Fp[8] Fs[5] FL FC13{ vd m Fc[2] Fi FL Fp[7] FU14{ m Fi:3 Fi Fi Fi FD[8] Fp Fc[5] FD Fc[4] Fi Fp Fc[4] Fp}[4] FC15{ VBC4 VBC16{ BC4 v9 v10 v11 FC4[3] FC4[2] Fp Fs FC4} VBC17{ BC16 VBC4 FD FL FC16 Fp Fs[3]} Fp[2] Fi FC17[8] FD[9]}}} BC8 vd Fc Fi Fi Fi Fi Fp Fc[4] Fi}


 S19471C12 ::~S19471C12(){ note_dtor("S19471C12", this);}
S19471C12 ::S19471C12(){ note_ctor("S19471C12", this);} // tgen

static void Test_S19471C12()
{
  extern Class_Descriptor cd_S19471C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(485,1491)];
    init_test(&cd_S19471C12, buf);
    S19471C12 *dp, &lv = *(dp=new (buf) S19471C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(7744,5960), "sizeof(S19471C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19471C12)");
    /*is_ambiguous_... S19471C12::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*), ABISELECT(5512,4220), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C6 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C6*), ABISELECT(5504,4216), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*), ABISELECT(5640,4328), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C3*)(S19471C2*), ABISELECT(5640,4328), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C7*), ABISELECT(5640,4328), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C8*)(S19471C7*), ABISELECT(5640,4328), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*)(S19471C7*), ABISELECT(5640,4328), "S19471C12");
    /*is_ambiguous_... S19471C13::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*)(S19471C13*), ABISELECT(5640,4328), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C3*)(S19471C2*), ABISELECT(5640,4328), "S19471C12");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C7*)(S19471C13*), ABISELECT(5640,4328), "S19471C12");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C8*)(S19471C7*)(S19471C13*), ABISELECT(5640,4328), "S19471C12");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*)(S19471C7*)(S19471C13*), ABISELECT(5640,4328), "S19471C12");
    /*is_ambiguous_... S19471C14::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C14*)(S19471C13*), ABISELECT(5640,4328), "S19471C12");
    /*is_ambiguous_... S19471C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C7*)(S19471C14*)(S19471C13*), ABISELECT(5640,4328), "S19471C12");
    /*is_ambiguous_... S19471C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C8*)(S19471C7*)(S19471C14*)(S19471C13*), ABISELECT(5640,4328), "S19471C12");
    /*is_ambiguous_... S19471C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*)(S19471C7*)(S19471C14*)(S19471C13*), ABISELECT(5640,4328), "S19471C12");
    /*is_ambiguous_... S19471C14::S19471C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C8*)(S19471C14*)(S19471C13*), ABISELECT(5640,4328), "S19471C12");
    /*is_ambiguous_... S19471C14::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*)(S19471C14*)(S19471C13*), ABISELECT(5640,4328), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C8*), ABISELECT(5640,4328), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C6 */ AMB_check_base_class_offset(lv, (S19471C6*), ABISELECT(5504,4216), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C2 */ AMB_check_base_class_offset(lv, (S19471C6*)(S19471C3*)(S19471C2*), ABISELECT(5504,4216), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C2 */ AMB_check_base_class_offset(lv, (S19471C6*)(S19471C3*)(S19471C2*), ABISELECT(5504,4216), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*), ABISELECT(5656,4336), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C2 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C3*)(S19471C2*), ABISELECT(5648,4332), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C7*), ABISELECT(5648,4332), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C8*)(S19471C7*), ABISELECT(5648,4332), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C2 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C3*)(S19471C2*), ABISELECT(5648,4332), "S19471C12");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C7*)(S19471C13*), ABISELECT(5648,4332), "S19471C12");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C8*)(S19471C7*)(S19471C13*), ABISELECT(5648,4332), "S19471C12");
    /*is_ambiguous_... S19471C7::S19471C5 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C7*)(S19471C14*)(S19471C13*), ABISELECT(5648,4332), "S19471C12");
    check_base_class_offset(lv, (S19471C5*)(S19471C8*)(S19471C7*)(S19471C14*)(S19471C13*), ABISELECT(5648,4332), "S19471C12");
    /*is_ambiguous_... S19471C14::S19471C8 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C8*)(S19471C14*)(S19471C13*), ABISELECT(5648,4332), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C8 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C8*), ABISELECT(5648,4332), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C2 */ AMB_check_base_class_offset(lv, (S19471C3*)(S19471C2*), 0, "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C2*), ABISELECT(1328,1052), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C8*)(S19471C7*), ABISELECT(5696,4372), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*)(S19471C7*), ABISELECT(5848,4480), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C6*)(S19471C7*), ABISELECT(5840,4476), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C6*)(S19471C7*), ABISELECT(5840,4476), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C2 */ AMB_check_base_class_offset(lv, (S19471C7*)(S19471C2*), ABISELECT(5696,4372), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C2 */ AMB_check_base_class_offset(lv, (S19471C7*)(S19471C2*), ABISELECT(5696,4372), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C9*)(S19471C2*), ABISELECT(1344,1060), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C2 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C9*)(S19471C2*), ABISELECT(1336,1056), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C2 */ AMB_check_base_class_offset(lv, (S19471C9*)(S19471C2*), ABISELECT(1336,1056), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C2 */ AMB_check_base_class_offset(lv, (S19471C2*), 0, "S19471C12");
    /*is_ambiguous_... S19471C13::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*)(S19471C13*), ABISELECT(1496,1160), "S19471C12");
    /*is_ambiguous_... S19471C13::S19471C6 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C6*)(S19471C13*), ABISELECT(1488,1156), "S19471C12");
    /*is_ambiguous_... S19471C13::S19471C6 */ AMB_check_base_class_offset(lv, (S19471C6*)(S19471C13*), ABISELECT(1488,1156), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C2 */ AMB_check_base_class_offset(lv, (S19471C3*)(S19471C2*), ABISELECT(6256,4804), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C2*), ABISELECT(7584,5856), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C9*)(S19471C2*), ABISELECT(7600,5864), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C2 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C9*)(S19471C2*), ABISELECT(7592,5860), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C2 */ AMB_check_base_class_offset(lv, (S19471C9*)(S19471C2*), ABISELECT(7592,5860), "S19471C12");
    check_base_class_offset(lv, (S19471C2*)(S19471C13*), ABISELECT(6256,4804), "S19471C12");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C8*)(S19471C7*)(S19471C13*), ABISELECT(1632,1268), "S19471C12");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*)(S19471C7*)(S19471C13*), ABISELECT(1784,1376), "S19471C12");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C6*)(S19471C7*)(S19471C13*), ABISELECT(1776,1372), "S19471C12");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C6*)(S19471C7*)(S19471C13*), ABISELECT(1776,1372), "S19471C12");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C7*)(S19471C13*), ABISELECT(1632,1268), "S19471C12");
    check_base_class_offset(lv, (S19471C8*)(S19471C7*)(S19471C14*)(S19471C13*), ABISELECT(2192,1700), "S19471C12");
    check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*)(S19471C7*)(S19471C14*)(S19471C13*), ABISELECT(2344,1808), "S19471C12");
    check_base_class_offset(lv, (S19471C5*)(S19471C6*)(S19471C7*)(S19471C14*)(S19471C13*), ABISELECT(2336,1804), "S19471C12");
    check_base_class_offset(lv, (S19471C6*)(S19471C7*)(S19471C14*)(S19471C13*), ABISELECT(2336,1804), "S19471C12");
    check_base_class_offset(lv, (S19471C7*)(S19471C14*)(S19471C13*), ABISELECT(2192,1700), "S19471C12");
    /*is_ambiguous_... S19471C14::S19471C8 */ AMB_check_base_class_offset(lv, (S19471C8*)(S19471C14*)(S19471C13*), ABISELECT(2752,2132), "S19471C12");
    /*is_ambiguous_... S19471C14::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*)(S19471C14*)(S19471C13*), ABISELECT(2904,2240), "S19471C12");
    /*is_ambiguous_... S19471C14::S19471C6 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C6*)(S19471C14*)(S19471C13*), ABISELECT(2896,2236), "S19471C12");
    /*is_ambiguous_... S19471C14::S19471C6 */ AMB_check_base_class_offset(lv, (S19471C6*)(S19471C14*)(S19471C13*), ABISELECT(2896,2236), "S19471C12");
    check_base_class_offset(lv, (S19471C14*)(S19471C13*), ABISELECT(2192,1700), "S19471C12");
    check_base_class_offset(lv, (S19471C13*), ABISELECT(1488,1156), "S19471C12");
    /*is_ambiguous_... S19471C12::S19471C8 */ AMB_check_base_class_offset(lv, (S19471C8*), ABISELECT(5312,4080), "S19471C12");
    check_field_offset(lv, s19471c12f0, ABISELECT(5456,4184), "S19471C12.s19471c12f0");
    check_field_offset(lv, s19471c12f1, ABISELECT(5460,4188), "S19471C12.s19471c12f1");
    check_field_offset(lv, s19471c12f2, ABISELECT(5464,4192), "S19471C12.s19471c12f2");
    check_field_offset(lv, s19471c12f3, ABISELECT(5468,4196), "S19471C12.s19471c12f3");
    check_field_offset(lv, s19471c12f4, ABISELECT(5472,4200), "S19471C12.s19471c12f4");
    check_field_offset(lv, s19471c12f5, ABISELECT(5480,4204), "S19471C12.s19471c12f5");
    check_field_offset(lv, s19471c12f6, ABISELECT(5488,4208), "S19471C12.s19471c12f6");
    check_field_offset(lv, s19471c12f7, ABISELECT(5492,4212), "S19471C12.s19471c12f7");
    test_class_info(&lv, &cd_S19471C12);
    dp->~S19471C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19471C12(Test_S19471C12, "S19471C12", ABISELECT(7744,5960));

#else // __cplusplus

extern void _ZN9S19471C12C1Ev();
extern void _ZN9S19471C12D2Ev();
Name_Map name_map_S19471C12[] = {
  NSPAIR(_ZN9S19471C12C1Ev),
  NSPAIR(_ZN9S19471C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C3;
extern VTBL_ENTRY _ZTI8S19471C3[];
extern  VTBL_ENTRY _ZTV8S19471C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C8;
extern VTBL_ENTRY _ZTI8S19471C8[];
extern  VTBL_ENTRY _ZTV8S19471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
extern Class_Descriptor cd_S19471C7;
extern VTBL_ENTRY _ZTI8S19471C7[];
extern  VTBL_ENTRY _ZTV8S19471C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C7[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C9;
extern VTBL_ENTRY _ZTI8S19471C9[];
extern  VTBL_ENTRY _ZTV8S19471C9[];
extern Class_Descriptor cd_S19471C2;
extern VTBL_ENTRY _ZTI8S19471C2[];
extern  VTBL_ENTRY _ZTV8S19471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
extern Class_Descriptor cd_S19471C3;
extern VTBL_ENTRY _ZTI8S19471C3[];
extern  VTBL_ENTRY _ZTV8S19471C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C9;
extern VTBL_ENTRY _ZTI8S19471C9[];
extern  VTBL_ENTRY _ZTV8S19471C9[];
extern Class_Descriptor cd_S19471C2;
extern VTBL_ENTRY _ZTI8S19471C2[];
extern  VTBL_ENTRY _ZTV8S19471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C2[];
extern Class_Descriptor cd_S19471C8;
extern VTBL_ENTRY _ZTI8S19471C8[];
extern  VTBL_ENTRY _ZTV8S19471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
extern Class_Descriptor cd_S19471C7;
extern VTBL_ENTRY _ZTI8S19471C7[];
extern  VTBL_ENTRY _ZTV8S19471C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C7[];
extern Class_Descriptor cd_S19471C8;
extern VTBL_ENTRY _ZTI8S19471C8[];
extern  VTBL_ENTRY _ZTV8S19471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
extern Class_Descriptor cd_S19471C7;
extern VTBL_ENTRY _ZTI8S19471C7[];
extern  VTBL_ENTRY _ZTV8S19471C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C7[];
extern Class_Descriptor cd_S19471C8;
extern VTBL_ENTRY _ZTI8S19471C8[];
extern  VTBL_ENTRY _ZTV8S19471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
extern Class_Descriptor cd_S19471C14;
extern VTBL_ENTRY _ZTI9S19471C14[];
extern  VTBL_ENTRY _ZTV9S19471C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19471C14[];
extern Class_Descriptor cd_S19471C13;
extern VTBL_ENTRY _ZTI9S19471C13[];
extern  VTBL_ENTRY _ZTV9S19471C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19471C13[];
extern Class_Descriptor cd_S19471C8;
extern VTBL_ENTRY _ZTI8S19471C8[];
extern  VTBL_ENTRY _ZTV8S19471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C8[];
static Base_Class bases_S19471C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(5512,4220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19471C5,    ABISELECT(5504,4216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3216C8_nt,    ABISELECT(5640,4328), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C6,    ABISELECT(5504,4216), //bcp->offset
    71, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(5656,4336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19471C5,    ABISELECT(5648,4332), //bcp->offset
    80, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19471C3,    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
    12, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1328,1052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C8,    ABISELECT(5696,4372), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(5848,4480), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C5,    ABISELECT(5840,4476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19471C6,    ABISELECT(5840,4476), //bcp->offset
    99, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19471C7,    ABISELECT(5696,4372), //bcp->offset
    88, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1344,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19471C5,    ABISELECT(1336,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
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19471C9,    ABISELECT(1336,1056), //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
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19471C2,    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},
  {&cd_S3216C8_nt,    ABISELECT(1496,1160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19471C5,    ABISELECT(1488,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
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19471C6,    ABISELECT(1488,1156), //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
    17, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S19471C3,    ABISELECT(6256,4804), //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
    8, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(7584,5856), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3216C8_nt,    ABISELECT(7600,5864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C5,    ABISELECT(7592,5860), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19471C9,    ABISELECT(7592,5860), //bcp->offset
    120, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19471C2,    ABISELECT(6256,4804), //bcp->offset
    105, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S19471C8,    ABISELECT(1632,1268), //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
    18, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1784,1376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C5,    ABISELECT(1776,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
    19, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19471C6,    ABISELECT(1776,1372), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19471C7,    ABISELECT(1632,1268), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S19471C8,    ABISELECT(2192,1700), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(2344,1808), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C5,    ABISELECT(2336,1804), //bcp->offset
    -1, //bcp->virtual_function_table_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
    34, //immediately_derived
  0, 0},
  {&cd_S19471C6,    ABISELECT(2336,1804), //bcp->offset
    49, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19471C7,    ABISELECT(2192,1700), //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
    25, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19471C8,    ABISELECT(2752,2132), //bcp->offset
    55, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(2904,2240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S19471C5,    ABISELECT(2896,2236), //bcp->offset
    -1, //bcp->virtual_function_table_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
    39, //immediately_derived
  0, 0},
  {&cd_S19471C6,    ABISELECT(2896,2236), //bcp->offset
    60, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19471C14,    ABISELECT(2192,1700), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S19471C13,    ABISELECT(1488,1156), //bcp->offset
    18, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19471C8,    ABISELECT(5312,4080), //bcp->offset
    66, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19471C12[];
extern void _ZN9S19471C12D1Ev();
extern void _ZN9S19471C12D0Ev();
extern void _ZN8S19471C22v8Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void ABISELECT(_ZThn1336_N9S19471C12D1Ev,_ZThn1056_N9S19471C12D1Ev)();
extern void ABISELECT(_ZThn1336_N9S19471C12D0Ev,_ZThn1056_N9S19471C12D0Ev)();
extern void _ZN8S19471C92v7Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void ABISELECT(_ZThn1488_N9S19471C12D1Ev,_ZThn1156_N9S19471C12D1Ev)();
extern void ABISELECT(_ZThn1488_N9S19471C12D0Ev,_ZThn1156_N9S19471C12D0Ev)();
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
extern void _ZN9S19471C142v9Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void ABISELECT(_ZTv0_n56_N9S19471C12D1Ev,_ZTv0_n28_N9S19471C12D1Ev)();
extern void ABISELECT(_ZThn6256_N9S19471C12D1Ev,_ZThn4804_N9S19471C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19471C12D0Ev,_ZTv0_n28_N9S19471C12D0Ev)();
extern void ABISELECT(_ZThn6256_N9S19471C12D0Ev,_ZThn4804_N9S19471C12D0Ev)() __attribute__((weak));
extern void _ZN8S19471C22v8Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N9S19471C12D1Ev,_ZTvn1056_n28_N9S19471C12D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N9S19471C12D0Ev,_ZTvn1056_n28_N9S19471C12D0Ev)();
extern void _ZN8S19471C92v7Ev();
static  VTBL_ENTRY vtc_S19471C12[] = {
  ABISELECT(6256,4804),
  ABISELECT(5696,4372),
  ABISELECT(5504,4216),
  ABISELECT(5648,4332),
  ABISELECT(5640,4328),
  0,
  (VTBL_ENTRY)&(_ZTI9S19471C12[0]),
  (VTBL_ENTRY)&_ZN9S19471C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19471C12D0Ev,
  (VTBL_ENTRY)&_ZN8S19471C22v8Ev,
  ABISELECT(-1336,-1056),
  (VTBL_ENTRY)&(_ZTI9S19471C12[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1336_N9S19471C12D1Ev,_ZThn1056_N9S19471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1336_N9S19471C12D0Ev,_ZThn1056_N9S19471C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19471C92v7Ev,
  ABISELECT(4208,3216),
  ABISELECT(4016,3060),
  ABISELECT(4160,3176),
  ABISELECT(4768,3648),
  ABISELECT(4152,3172),
  ABISELECT(-1488,-1156),
  (VTBL_ENTRY)&(_ZTI9S19471C12[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1488_N9S19471C12D1Ev,_ZThn1156_N9S19471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1488_N9S19471C12D0Ev,_ZThn1156_N9S19471C12D0Ev),
  ABISELECT(4008,3060),
  ABISELECT(4016,3064),
  ABISELECT(-1632,-1268),
  (VTBL_ENTRY)&(_ZTI9S19471C12[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
  ABISELECT(3864,2956),
  ABISELECT(-1776,-1372),
  (VTBL_ENTRY)&(_ZTI9S19471C12[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  ABISELECT(3448,2628),
  ABISELECT(3456,2632),
  ABISELECT(-2192,-1700),
  (VTBL_ENTRY)&(_ZTI9S19471C12[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19471C142v9Ev,
  ABISELECT(3304,2524),
  ABISELECT(-2336,-1804),
  (VTBL_ENTRY)&(_ZTI9S19471C12[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  ABISELECT(2888,2196),
  ABISELECT(2896,2200),
  ABISELECT(-2752,-2132),
  (VTBL_ENTRY)&(_ZTI9S19471C12[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  ABISELECT(2744,2092),
  ABISELECT(-2896,-2236),
  (VTBL_ENTRY)&(_ZTI9S19471C12[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  ABISELECT(328,248),
  ABISELECT(336,252),
  ABISELECT(-5312,-4080),
  (VTBL_ENTRY)&(_ZTI9S19471C12[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  0,
  0,
  0,
  ABISELECT(136,112),
  ABISELECT(-5504,-4216),
  (VTBL_ENTRY)&(_ZTI9S19471C12[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  0,
  0,
  0,
  ABISELECT(-5648,-4332),
  (VTBL_ENTRY)&(_ZTI9S19471C12[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-56,-44),
  ABISELECT(-48,-40),
  ABISELECT(-5696,-4372),
  (VTBL_ENTRY)&(_ZTI9S19471C12[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
  ABISELECT(-200,-148),
  ABISELECT(-5840,-4476),
  (VTBL_ENTRY)&(_ZTI9S19471C12[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-6256,-4804),
  ABISELECT(-560,-432),
  ABISELECT(-752,-588),
  ABISELECT(-608,-472),
  ABISELECT(-616,-476),
  ABISELECT(-6256,-4804),
  (VTBL_ENTRY)&(_ZTI9S19471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19471C12D1Ev,_ZTv0_n28_N9S19471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19471C12D0Ev,_ZTv0_n28_N9S19471C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19471C22v8Ev,
  ABISELECT(-7592,-5860),
  (VTBL_ENTRY)&(_ZTI9S19471C12[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19471C12D1Ev,_ZTvn1056_n28_N9S19471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19471C12D0Ev,_ZTvn1056_n28_N9S19471C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19471C92v7Ev,
};
extern VTBL_ENTRY _ZTV9S19471C12[];
extern void _ZN8S19471C2D1Ev();
extern void _ZN8S19471C2D0Ev();
extern void _ZN8S19471C22v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C2__A__9S19471C12[] = {
  ABISELECT(5696,4372),
  ABISELECT(5504,4216),
  ABISELECT(5648,4332),
  ABISELECT(5640,4328),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19471C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19471C22v8Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19471C38S19471C2__9S19471C12[] = {
  ABISELECT(5504,4216),
  ABISELECT(5648,4332),
  ABISELECT(5640,4328),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C3[0]),
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C38S19471C2__9S19471C12[] = {
  0,
  0,
  0,
  ABISELECT(-5648,-4332),
  (VTBL_ENTRY)&(_ZTI8S19471C3[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C38S19471C2__9S19471C12[] = {
  0,
  0,
  0,
  ABISELECT(136,112),
  ABISELECT(-5504,-4216),
  (VTBL_ENTRY)&(_ZTI8S19471C3[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C2__A__9S19471C12[] = {
  0,
  0,
  0,
  ABISELECT(-5648,-4332),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C2__A__9S19471C12[] = {
  0,
  0,
  0,
  ABISELECT(136,112),
  ABISELECT(-5504,-4216),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C7__8S19471C2__A__9S19471C12[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-56,-44),
  ABISELECT(-48,-40),
  ABISELECT(-5696,-4372),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C7__A1__8S19471C2__A__9S19471C12[] = {
  ABISELECT(-200,-148),
  ABISELECT(-5840,-4476),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN9S19471C13D1Ev();
extern void _ZN9S19471C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19471C13__9S19471C12[] = {
  ABISELECT(4208,3216),
  ABISELECT(4016,3060),
  ABISELECT(4160,3176),
  ABISELECT(4768,3648),
  ABISELECT(4152,3172),
  0,
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  (VTBL_ENTRY)&_ZN9S19471C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19471C13D0Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C69S19471C13__A2__9S19471C12[] = {
  ABISELECT(4152,3172),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C79S19471C13__A1__9S19471C12[] = {
  ABISELECT(4008,3060),
  ABISELECT(4016,3064),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C88S19471C79S19471C13__A1__9S19471C12[] = {
  ABISELECT(4008,3060),
  ABISELECT(4016,3064),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C88S19471C79S19471C13__A1__9S19471C12[] = {
  0,
  0,
  0,
  ABISELECT(-4016,-3064),
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C79S19471C13__A3__9S19471C12[] = {
  ABISELECT(3864,2956),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C79S19471C13__A1__9S19471C12[] = {
  0,
  0,
  0,
  ABISELECT(-4016,-3064),
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C79S19471C13__A1__9S19471C12[] = {
  ABISELECT(3864,2956),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
extern void _ZN9S19471C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19471C149S19471C13__9S19471C12[] = {
  ABISELECT(3448,2628),
  ABISELECT(3456,2632),
  0,
  (VTBL_ENTRY)&(_ZTI9S19471C14[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19471C142v9Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C79S19471C149S19471C13__A2__9S19471C12[] = {
  ABISELECT(3448,2628),
  ABISELECT(3456,2632),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C88S19471C79S19471C149S19471C13__A2__9S19471C12[] = {
  ABISELECT(3448,2628),
  ABISELECT(3456,2632),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C88S19471C79S19471C149S19471C13__A2__9S19471C12[] = {
  0,
  0,
  0,
  ABISELECT(-3456,-2632),
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C79S19471C149S19471C13__A4__9S19471C12[] = {
  ABISELECT(3304,2524),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C79S19471C149S19471C13__A2__9S19471C12[] = {
  0,
  0,
  0,
  ABISELECT(-3456,-2632),
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C79S19471C149S19471C13__A2__9S19471C12[] = {
  ABISELECT(3304,2524),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C89S19471C149S19471C13__A3__9S19471C12[] = {
  ABISELECT(2888,2196),
  ABISELECT(2896,2200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C89S19471C149S19471C13__A3__9S19471C12[] = {
  0,
  0,
  0,
  ABISELECT(-2896,-2200),
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C69S19471C149S19471C13__A5__9S19471C12[] = {
  ABISELECT(2744,2092),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__9S19471C149S19471C13__9S19471C12[] = {
  0,
  0,
  0,
  ABISELECT(-3456,-2632),
  (VTBL_ENTRY)&(_ZTI9S19471C14[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C7__9S19471C149S19471C13__9S19471C12[] = {
  ABISELECT(3304,2524),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI9S19471C14[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C8__A1__9S19471C149S19471C13__9S19471C12[] = {
  ABISELECT(2888,2196),
  ABISELECT(2896,2200),
  ABISELECT(-560,-432),
  (VTBL_ENTRY)&(_ZTI9S19471C14[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__A1__9S19471C149S19471C13__9S19471C12[] = {
  ABISELECT(2744,2092),
  ABISELECT(-704,-536),
  (VTBL_ENTRY)&(_ZTI9S19471C14[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19471C13D1Ev,_ZTv0_n28_N9S19471C13D1Ev)();
extern void ABISELECT(_ZThn4768_N9S19471C13D1Ev,_ZThn3648_N9S19471C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19471C13D0Ev,_ZTv0_n28_N9S19471C13D0Ev)();
extern void ABISELECT(_ZThn4768_N9S19471C13D0Ev,_ZThn3648_N9S19471C13D0Ev)() __attribute__((weak));
extern void _ZN8S19471C22v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C2__9S19471C13__9S19471C12[] = {
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-4768,-3648),
  ABISELECT(-560,-432),
  ABISELECT(-752,-588),
  ABISELECT(-608,-472),
  ABISELECT(-616,-476),
  ABISELECT(-4768,-3648),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19471C13D1Ev,_ZTv0_n28_N9S19471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19471C13D0Ev,_ZTv0_n28_N9S19471C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19471C22v8Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__A1__9S19471C13__9S19471C12[] = {
  0,
  0,
  0,
  ABISELECT(-4160,-3176),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__A1__9S19471C13__9S19471C12[] = {
  0,
  0,
  0,
  ABISELECT(136,112),
  ABISELECT(-4016,-3060),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C7__9S19471C13__9S19471C12[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-56,-44),
  ABISELECT(-48,-40),
  ABISELECT(-4208,-3216),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C7__A2__9S19471C13__9S19471C12[] = {
  ABISELECT(-200,-148),
  ABISELECT(-4352,-3320),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N9S19471C13D1Ev,_ZTvn1056_n28_N9S19471C13D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N9S19471C13D0Ev,_ZTvn1056_n28_N9S19471C13D0Ev)();
extern void _ZN8S19471C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C98S19471C2__9S19471C13__9S19471C12[] = {
  ABISELECT(-6104,-4704),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19471C13D1Ev,_ZTvn1056_n28_N9S19471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19471C13D0Ev,_ZTvn1056_n28_N9S19471C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19471C92v7Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C7__A__9S19471C13__9S19471C12[] = {
  ABISELECT(4008,3060),
  ABISELECT(4016,3064),
  ABISELECT(-144,-112),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C7__A3__9S19471C13__9S19471C12[] = {
  ABISELECT(3864,2956),
  ABISELECT(-288,-216),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
extern void _ZN9S19471C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19471C14__9S19471C13__9S19471C12[] = {
  ABISELECT(3448,2628),
  ABISELECT(3456,2632),
  ABISELECT(-704,-544),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19471C142v9Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C79S19471C14__A4__9S19471C13__9S19471C12[] = {
  ABISELECT(3304,2524),
  ABISELECT(-848,-648),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C89S19471C14__A3__9S19471C13__9S19471C12[] = {
  ABISELECT(2888,2196),
  ABISELECT(2896,2200),
  ABISELECT(-1264,-976),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C69S19471C14__A5__9S19471C13__9S19471C12[] = {
  ABISELECT(2744,2092),
  ABISELECT(-1408,-1080),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C8__A4__9S19471C12[] = {
  ABISELECT(328,248),
  ABISELECT(336,252),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C8__A4__9S19471C12[] = {
  0,
  0,
  0,
  ABISELECT(-336,-252),
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__9S19471C12[] = {
  ABISELECT(136,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C7__9S19471C12[] = {
  ABISELECT(-56,-44),
  ABISELECT(-48,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C88S19471C7__9S19471C12[] = {
  ABISELECT(-56,-44),
  ABISELECT(-48,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C88S19471C7__9S19471C12[] = {
  0,
  0,
  0,
  ABISELECT(48,40),
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C7__A1__9S19471C12[] = {
  ABISELECT(-200,-148),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C7__9S19471C12[] = {
  0,
  0,
  0,
  ABISELECT(48,40),
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C7__9S19471C12[] = {
  ABISELECT(-200,-148),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C2D1Ev();
extern void _ZN8S19471C2D0Ev();
extern void _ZN8S19471C22v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C2__A1__9S19471C12[] = {
  ABISELECT(-560,-432),
  ABISELECT(-752,-588),
  ABISELECT(-608,-472),
  ABISELECT(-616,-476),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19471C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19471C22v8Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19471C38S19471C2__A1__9S19471C12[] = {
  ABISELECT(-752,-588),
  ABISELECT(-608,-472),
  ABISELECT(-616,-476),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C3[0]),
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C38S19471C2__A1__9S19471C12[] = {
  0,
  0,
  0,
  ABISELECT(608,472),
  (VTBL_ENTRY)&(_ZTI8S19471C3[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C38S19471C2__A1__9S19471C12[] = {
  0,
  0,
  0,
  ABISELECT(136,112),
  ABISELECT(752,588),
  (VTBL_ENTRY)&(_ZTI8S19471C3[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C2__A1__9S19471C12[] = {
  0,
  0,
  0,
  ABISELECT(608,472),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C2__A1__9S19471C12[] = {
  0,
  0,
  0,
  ABISELECT(136,112),
  ABISELECT(752,588),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C7__8S19471C2__A1__9S19471C12[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-56,-44),
  ABISELECT(-48,-40),
  ABISELECT(560,432),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C7__A1__8S19471C2__A1__9S19471C12[] = {
  ABISELECT(-200,-148),
  ABISELECT(416,328),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
static  VTT_ENTRY vtt_S19471C12[] = {
  {&(_ZTV9S19471C12[7]),  7,128},
  {&(_tg__ZTV8S19471C2__A__9S19471C12[6]),  6,9},
  {&(_tg__ZTV8S19471C38S19471C2__9S19471C12[5]),  5,5},
  {&(_tg__ZTV8S19471C5__8S19471C38S19471C2__9S19471C12[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C38S19471C2__9S19471C12[6]),  6,9},
  {&(_tg__ZTV8S19471C5__8S19471C2__A__9S19471C12[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C2__A__9S19471C12[6]),  6,9},
  {&(_tg__ZTV8S19471C7__8S19471C2__A__9S19471C12[9]),  9,11},
  {&(_tg__ZTV8S19471C68S19471C7__A1__8S19471C2__A__9S19471C12[3]),  3,6},
  {&(_tg__ZTV9S19471C13__9S19471C12[7]),  7,12},
  {&(_tg__ZTV8S19471C69S19471C13__A2__9S19471C12[3]),  3,6},
  {&(_tg__ZTV8S19471C79S19471C13__A1__9S19471C12[4]),  4,6},
  {&(_tg__ZTV8S19471C88S19471C79S19471C13__A1__9S19471C12[4]),  4,5},
  {&(_tg__ZTV8S19471C5__8S19471C88S19471C79S19471C13__A1__9S19471C12[5]),  5,8},
  {&(_tg__ZTV8S19471C68S19471C79S19471C13__A3__9S19471C12[3]),  3,6},
  {&(_tg__ZTV8S19471C5__8S19471C79S19471C13__A1__9S19471C12[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C79S19471C13__A1__9S19471C12[3]),  3,6},
  {&(_tg__ZTV9S19471C149S19471C13__9S19471C12[4]),  4,7},
  {&(_tg__ZTV8S19471C79S19471C149S19471C13__A2__9S19471C12[4]),  4,6},
  {&(_tg__ZTV8S19471C88S19471C79S19471C149S19471C13__A2__9S19471C12[4]),  4,5},
  {&(_tg__ZTV8S19471C5__8S19471C88S19471C79S19471C149S19471C13__A2__9S19471C12[5]),  5,8},
  {&(_tg__ZTV8S19471C68S19471C79S19471C149S19471C13__A4__9S19471C12[3]),  3,6},
  {&(_tg__ZTV8S19471C5__8S19471C79S19471C149S19471C13__A2__9S19471C12[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C79S19471C149S19471C13__A2__9S19471C12[3]),  3,6},
  {&(_tg__ZTV8S19471C89S19471C149S19471C13__A3__9S19471C12[4]),  4,5},
  {&(_tg__ZTV8S19471C5__8S19471C89S19471C149S19471C13__A3__9S19471C12[5]),  5,8},
  {&(_tg__ZTV8S19471C69S19471C149S19471C13__A5__9S19471C12[3]),  3,6},
  {&(_tg__ZTV8S19471C5__9S19471C149S19471C13__9S19471C12[5]),  5,8},
  {&(_tg__ZTV8S19471C68S19471C7__9S19471C149S19471C13__9S19471C12[3]),  3,6},
  {&(_tg__ZTV8S19471C8__A1__9S19471C149S19471C13__9S19471C12[4]),  4,5},
  {&(_tg__ZTV8S19471C6__A1__9S19471C149S19471C13__9S19471C12[3]),  3,6},
  {&(_tg__ZTV8S19471C2__9S19471C13__9S19471C12[12]),  12,15},
  {&(_tg__ZTV8S19471C5__A1__9S19471C13__9S19471C12[5]),  5,8},
  {&(_tg__ZTV8S19471C6__A1__9S19471C13__9S19471C12[6]),  6,9},
  {&(_tg__ZTV8S19471C7__9S19471C13__9S19471C12[9]),  9,11},
  {&(_tg__ZTV8S19471C68S19471C7__A2__9S19471C13__9S19471C12[3]),  3,6},
  {&(_tg__ZTV8S19471C98S19471C2__9S19471C13__9S19471C12[2]),  2,8},
  {&(_tg__ZTV8S19471C7__A__9S19471C13__9S19471C12[4]),  4,6},
  {&(_tg__ZTV8S19471C68S19471C7__A3__9S19471C13__9S19471C12[3]),  3,6},
  {&(_tg__ZTV9S19471C14__9S19471C13__9S19471C12[4]),  4,7},
  {&(_tg__ZTV8S19471C68S19471C79S19471C14__A4__9S19471C13__9S19471C12[3]),  3,6},
  {&(_tg__ZTV8S19471C89S19471C14__A3__9S19471C13__9S19471C12[4]),  4,5},
  {&(_tg__ZTV8S19471C69S19471C14__A5__9S19471C13__9S19471C12[3]),  3,6},
  {&(_tg__ZTV8S19471C8__A4__9S19471C12[4]),  4,5},
  {&(_tg__ZTV8S19471C5__8S19471C8__A4__9S19471C12[5]),  5,8},
  {&(_ZTV9S19471C12[77]),  77,128},
  {&(_ZTV9S19471C12[85]),  85,128},
  {&(_ZTV9S19471C12[97]),  97,128},
  {&(_ZTV9S19471C12[102]),  102,128},
  {&(_ZTV9S19471C12[25]),  25,128},
  {&(_ZTV9S19471C12[117]),  117,128},
  {&(_ZTV9S19471C12[122]),  122,128},
  {&(_ZTV9S19471C12[34]),  34,128},
  {&(_ZTV9S19471C12[39]),  39,128},
  {&(_ZTV9S19471C12[46]),  46,128},
  {&(_ZTV9S19471C12[52]),  52,128},
  {&(_ZTV9S19471C12[59]),  59,128},
  {&(_ZTV9S19471C12[63]),  63,128},
  {&(_ZTV9S19471C12[70]),  70,128},
  {&(_tg__ZTV8S19471C6__9S19471C12[3]),  3,6},
  {&(_tg__ZTV8S19471C7__9S19471C12[4]),  4,6},
  {&(_tg__ZTV8S19471C88S19471C7__9S19471C12[4]),  4,5},
  {&(_tg__ZTV8S19471C5__8S19471C88S19471C7__9S19471C12[5]),  5,8},
  {&(_tg__ZTV8S19471C68S19471C7__A1__9S19471C12[3]),  3,6},
  {&(_tg__ZTV8S19471C5__8S19471C7__9S19471C12[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C7__9S19471C12[3]),  3,6},
  {&(_tg__ZTV8S19471C2__A1__9S19471C12[6]),  6,9},
  {&(_tg__ZTV8S19471C38S19471C2__A1__9S19471C12[5]),  5,5},
  {&(_tg__ZTV8S19471C5__8S19471C38S19471C2__A1__9S19471C12[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C38S19471C2__A1__9S19471C12[6]),  6,9},
  {&(_tg__ZTV8S19471C5__8S19471C2__A1__9S19471C12[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C2__A1__9S19471C12[6]),  6,9},
  {&(_tg__ZTV8S19471C7__8S19471C2__A1__9S19471C12[9]),  9,11},
  {&(_tg__ZTV8S19471C68S19471C7__A1__8S19471C2__A1__9S19471C12[3]),  3,6},
};
extern VTBL_ENTRY _ZTI9S19471C12[];
extern  VTBL_ENTRY _ZTV9S19471C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19471C12[];
static VTBL_ENTRY alt_thunk_names24[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19471C13D0Ev,_ZTv0_n28_N9S19471C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4768_N9S19471C13D0Ev,_ZThn3648_N9S19471C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19471C13D1Ev,_ZTv0_n28_N9S19471C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4768_N9S19471C13D1Ev,_ZThn3648_N9S19471C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19471C12D0Ev,_ZTv0_n28_N9S19471C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6256_N9S19471C12D0Ev,_ZThn4804_N9S19471C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19471C12D1Ev,_ZTv0_n28_N9S19471C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6256_N9S19471C12D1Ev,_ZThn4804_N9S19471C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19471C12 = {  "S19471C12", // class name
  bases_S19471C12, 43,
  &(vtc_S19471C12[0]), // expected_vtbl_contents
  &(vtt_S19471C12[0]), // expected_vtt_contents
  ABISELECT(7744,5960), // object size
  NSPAIRA(_ZTI9S19471C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19471C12),128, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19471C12),74, //virtual table table var
  31, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names24,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19471C18  : S19471C11 , S19471C7 {
  ::S19471C12 s19471c18f0;
  void *s19471c18f1;
  unsigned int s19471c18f2:1;
  int s19471c18f3;
  int s19471c18f4:30;
  int s19471c18f5;
  virtual  ~S19471C18(); // _ZN9S19471C18D2Ev
  S19471C18(); // tgen
};
//SIG(-1 S19471C18) C1{ BC2{ BC3{ BC4{ m Fi} v1 v2 v3 FC4[3] FC4[2] Fp Fs FC4} BC5{ BC3 VBC4 FD FL FC3 Fp Fs[3]} VBC6{ BC7{ VBC4 VBC3 VBC5 Fp[2] Fi FC5[8] FD[9]} BC4 VBC8{ VBC3 VBC4 BC9{ VBC3 VBC4 v4 FC3 FD Fp[2] FC3} BC5 v5 Fp[2] Fl Fi FC3[5]} BC10{ BC3 vd v6 Fp[7] Fi[2] FL Fi} vd v7 Fi Fp Fi} Fp Fi FC3 Fi Fp} BC8 vd FC11{ VBC5 BC6 BC12{ BC5 VBC6 BC8 BC13{ VBC4 BC8 BC9 BC5 v8 Fi FC14{} Fp[2]} vd Fi Fc[2] Fi FL FC14 Fp[8] Fs[5] FL FC15{ vd m Fc[2] Fi FL Fp[7] FU16{ m Fi:3 Fi Fi Fi FD[8] Fp Fc[5] FD Fc[4] Fi Fp Fc[4] Fp}[4] FC17{ VBC4 VBC18{ BC4 v9 v10 v11 FC4[3] FC4[2] Fp Fs FC4} VBC19{ BC18 VBC4 FD FL FC18 Fp Fs[3]} Fp[2] Fi FC19[8] FD[9]}}} BC9 vd Fc Fi Fi Fi Fi Fp Fc[4] Fi} Fp Fi:1 Fi Fi:30 Fi}


 S19471C18 ::~S19471C18(){ note_dtor("S19471C18", this);}
S19471C18 ::S19471C18(){ note_ctor("S19471C18", this);} // tgen

static void Test_S19471C18()
{
  extern Class_Descriptor cd_S19471C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(679,2092)];
    init_test(&cd_S19471C18, buf);
    S19471C18 *dp, &lv = *(dp=new (buf) S19471C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(10848,8364), "sizeof(S19471C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19471C18)");
    /*is_ambiguous_... S19471C11::S19471C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C11*), ABISELECT(8,4), "S19471C18");
    /*is_ambiguous_... S19471C11::S19471C5 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C11*), 0, "S19471C18");
    /*is_ambiguous_... S19471C11::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*)(S19471C11*), ABISELECT(56,44), "S19471C18");
    /*is_ambiguous_... S19471C11::S19471C6 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C6*)(S19471C11*), ABISELECT(48,40), "S19471C18");
    /*is_ambiguous_... S19471C11::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*)(S19471C11*), ABISELECT(8600,6620), "S19471C18");
    /*is_ambiguous_... S19471C3::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C3*)(S19471C2*), ABISELECT(8600,6620), "S19471C18");
    /*is_ambiguous_... S19471C18::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*), ABISELECT(8600,6620), "S19471C18");
    /*is_ambiguous_... S19471C18::S19471C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C7*), ABISELECT(8600,6620), "S19471C18");
    /*is_ambiguous_... S19471C18::S19471C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C8*)(S19471C7*), ABISELECT(8600,6620), "S19471C18");
    /*is_ambiguous_... S19471C18::S19471C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*)(S19471C7*), ABISELECT(8600,6620), "S19471C18");
    /*is_ambiguous_... S19471C18::S19471C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C7*), ABISELECT(8600,6620), "S19471C18");
    /*is_ambiguous_... S19471C18::S19471C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C8*)(S19471C7*), ABISELECT(8600,6620), "S19471C18");
    /*is_ambiguous_... S19471C18::S19471C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*)(S19471C7*), ABISELECT(8600,6620), "S19471C18");
    /*is_ambiguous_... S19471C11::S19471C6 */ AMB_check_base_class_offset(lv, (S19471C6*)(S19471C11*), ABISELECT(48,40), "S19471C18");
    /*is_ambiguous_... S19471C18::S19471C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*), ABISELECT(10096,7784), "S19471C18");
    /*is_ambiguous_... S19471C3::S19471C5 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C3*)(S19471C2*), ABISELECT(10088,7780), "S19471C18");
    /*is_ambiguous_... S19471C18::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C7*), ABISELECT(10088,7780), "S19471C18");
    /*is_ambiguous_... S19471C18::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C8*)(S19471C7*), ABISELECT(10088,7780), "S19471C18");
    /*is_ambiguous_... S19471C18::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C7*), ABISELECT(10088,7780), "S19471C18");
    /*is_ambiguous_... S19471C18::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C8*)(S19471C7*), ABISELECT(10088,7780), "S19471C18");
    /*is_ambiguous_... S19471C18::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*), ABISELECT(10152,7824), "S19471C18");
    /*is_ambiguous_... S19471C18::S19471C6 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C6*), ABISELECT(10144,7820), "S19471C18");
    check_base_class_offset(lv, (S19471C6*)(S19471C3*)(S19471C2*), ABISELECT(10144,7820), "S19471C18");
    check_base_class_offset(lv, (S19471C3*)(S19471C2*), ABISELECT(8608,6624), "S19471C18");
    /*is_ambiguous_... S19471C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C2*), ABISELECT(9936,7676), "S19471C18");
    /*is_ambiguous_... S19471C18::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C8*)(S19471C7*), ABISELECT(10288,7932), "S19471C18");
    /*is_ambiguous_... S19471C18::S19471C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*)(S19471C7*), ABISELECT(10440,8040), "S19471C18");
    /*is_ambiguous_... S19471C18::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C6*)(S19471C7*), ABISELECT(10432,8036), "S19471C18");
    /*is_ambiguous_... S19471C18::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C6*)(S19471C7*), ABISELECT(10432,8036), "S19471C18");
    check_base_class_offset(lv, (S19471C7*)(S19471C2*), ABISELECT(10288,7932), "S19471C18");
    check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C9*)(S19471C2*), ABISELECT(9952,7684), "S19471C18");
    check_base_class_offset(lv, (S19471C5*)(S19471C9*)(S19471C2*), ABISELECT(9944,7680), "S19471C18");
    check_base_class_offset(lv, (S19471C9*)(S19471C2*), ABISELECT(9944,7680), "S19471C18");
    check_base_class_offset(lv, (S19471C2*)(S19471C11*), ABISELECT(8608,6624), "S19471C18");
    check_base_class_offset(lv, (S19471C11*), 0, "S19471C18");
    /*is_ambiguous_... S19471C18::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C8*)(S19471C7*), ABISELECT(272,208), "S19471C18");
    /*is_ambiguous_... S19471C18::S19471C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*)(S19471C7*), ABISELECT(424,316), "S19471C18");
    /*is_ambiguous_... S19471C18::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C6*)(S19471C7*), ABISELECT(416,312), "S19471C18");
    /*is_ambiguous_... S19471C18::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C6*)(S19471C7*), ABISELECT(416,312), "S19471C18");
    /*is_ambiguous_... S19471C18::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C7*), ABISELECT(272,208), "S19471C18");
    check_field_offset(lv, s19471c18f0, ABISELECT(832,640), "S19471C18.s19471c18f0");
    check_field_offset(lv, s19471c18f1, ABISELECT(8576,6600), "S19471C18.s19471c18f1");
    set_bf_and_test(lv, s19471c18f2, ABISELECT(8584,6604), 0, 1, 1, "S19471C18");
    check_field_offset(lv, s19471c18f3, ABISELECT(8588,6608), "S19471C18.s19471c18f3");
    set_bf_and_test(lv, s19471c18f4, ABISELECT(8592,6612), 0, 30, 1, "S19471C18");
    set_bf_and_test(lv, s19471c18f4, ABISELECT(8592,6612), 0, 30, hide_sll(1LL<<29), "S19471C18");
    check_field_offset(lv, s19471c18f5, ABISELECT(8596,6616), "S19471C18.s19471c18f5");
    test_class_info(&lv, &cd_S19471C18);
    dp->~S19471C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19471C18(Test_S19471C18, "S19471C18", ABISELECT(10848,8364));

#else // __cplusplus

extern void _ZN9S19471C18C1Ev();
extern void _ZN9S19471C18D2Ev();
Name_Map name_map_S19471C18[] = {
  NSPAIR(_ZN9S19471C18C1Ev),
  NSPAIR(_ZN9S19471C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
extern Class_Descriptor cd_S19471C3;
extern VTBL_ENTRY _ZTI8S19471C3[];
extern  VTBL_ENTRY _ZTV8S19471C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C8;
extern VTBL_ENTRY _ZTI8S19471C8[];
extern  VTBL_ENTRY _ZTV8S19471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
extern Class_Descriptor cd_S19471C7;
extern VTBL_ENTRY _ZTI8S19471C7[];
extern  VTBL_ENTRY _ZTV8S19471C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C7[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C9;
extern VTBL_ENTRY _ZTI8S19471C9[];
extern  VTBL_ENTRY _ZTV8S19471C9[];
extern Class_Descriptor cd_S19471C2;
extern VTBL_ENTRY _ZTI8S19471C2[];
extern  VTBL_ENTRY _ZTV8S19471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C2[];
extern Class_Descriptor cd_S19471C11;
extern VTBL_ENTRY _ZTI9S19471C11[];
extern  VTBL_ENTRY _ZTV9S19471C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19471C11[];
extern Class_Descriptor cd_S19471C8;
extern VTBL_ENTRY _ZTI8S19471C8[];
extern  VTBL_ENTRY _ZTV8S19471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
extern Class_Descriptor cd_S19471C7;
extern VTBL_ENTRY _ZTI8S19471C7[];
extern  VTBL_ENTRY _ZTV8S19471C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C7[];
static Base_Class bases_S19471C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S19471C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3216C8_nt,    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
    3, //immediately_derived
  0, 0},
  {&cd_S19471C5,    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
    13, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(8600,6620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19471C6,    ABISELECT(48,40), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(10096,7784), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C5,    ABISELECT(10088,7780), //bcp->offset
    53, //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
    11, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(10152,7824), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C5,    ABISELECT(10144,7820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19471C6,    ABISELECT(10144,7820), //bcp->offset
    61, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19471C3,    ABISELECT(8608,6624), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(9936,7676), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C8,    ABISELECT(10288,7932), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(10440,8040), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C5,    ABISELECT(10432,8036), //bcp->offset
    -1, //bcp->virtual_function_table_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
    16, //immediately_derived
  0, 0},
  {&cd_S19471C6,    ABISELECT(10432,8036), //bcp->offset
    81, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19471C7,    ABISELECT(10288,7932), //bcp->offset
    70, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(9952,7684), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C5,    ABISELECT(9944,7680), //bcp->offset
    -1, //bcp->virtual_function_table_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
    20, //immediately_derived
  0, 0},
  {&cd_S19471C9,    ABISELECT(9944,7680), //bcp->offset
    45, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19471C2,    ABISELECT(8608,6624), //bcp->offset
    30, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19471C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19471C8,    ABISELECT(272,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(424,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
    25, //immediately_derived
  0, 0},
  {&cd_S19471C5,    ABISELECT(416,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
    17, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19471C6,    ABISELECT(416,312), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19471C7,    ABISELECT(272,208), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19471C18[];
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN9S19471C18D1Ev();
extern void _ZN9S19471C18D0Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void ABISELECT(_ZTv0_n56_N9S19471C18D1Ev,_ZTv0_n28_N9S19471C18D1Ev)();
extern void ABISELECT(_ZThn8608_N9S19471C18D1Ev,_ZThn6624_N9S19471C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19471C18D0Ev,_ZTv0_n28_N9S19471C18D0Ev)();
extern void ABISELECT(_ZThn8608_N9S19471C18D0Ev,_ZThn6624_N9S19471C18D0Ev)() __attribute__((weak));
extern void _ZN8S19471C22v8Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N9S19471C18D1Ev,_ZTvn1056_n28_N9S19471C18D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N9S19471C18D0Ev,_ZTvn1056_n28_N9S19471C18D0Ev)();
extern void _ZN8S19471C92v7Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY vtc_S19471C18[] = {
  ABISELECT(10288,7932),
  ABISELECT(10144,7820),
  ABISELECT(10088,7780),
  ABISELECT(8608,6624),
  ABISELECT(8600,6620),
  0,
  (VTBL_ENTRY)&(_ZTI9S19471C18[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  (VTBL_ENTRY)&_ZN9S19471C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19471C18D0Ev,
  ABISELECT(8552,6580),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI9S19471C18[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  ABISELECT(8328,6412),
  ABISELECT(9816,7572),
  ABISELECT(-272,-208),
  (VTBL_ENTRY)&(_ZTI9S19471C18[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
  ABISELECT(8184,6308),
  ABISELECT(-416,-312),
  (VTBL_ENTRY)&(_ZTI9S19471C18[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-8608,-6624),
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  ABISELECT(-8608,-6624),
  (VTBL_ENTRY)&(_ZTI9S19471C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19471C18D1Ev,_ZTv0_n28_N9S19471C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19471C18D0Ev,_ZTv0_n28_N9S19471C18D0Ev),
  (VTBL_ENTRY)&_ZN8S19471C22v8Ev,
  ABISELECT(-9944,-7680),
  (VTBL_ENTRY)&(_ZTI9S19471C18[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19471C18D1Ev,_ZTvn1056_n28_N9S19471C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19471C18D0Ev,_ZTvn1056_n28_N9S19471C18D0Ev),
  (VTBL_ENTRY)&_ZN8S19471C92v7Ev,
  0,
  0,
  0,
  ABISELECT(-10088,-7780),
  (VTBL_ENTRY)&(_ZTI9S19471C18[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-10144,-7820),
  (VTBL_ENTRY)&(_ZTI9S19471C18[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-10288,-7932),
  (VTBL_ENTRY)&(_ZTI9S19471C18[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
  ABISELECT(-1832,-1416),
  ABISELECT(-10432,-8036),
  (VTBL_ENTRY)&(_ZTI9S19471C18[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern VTBL_ENTRY _ZTV9S19471C18[];
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN9S19471C11D1Ev();
extern void _ZN9S19471C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19471C11__9S19471C18[] = {
  ABISELECT(10288,7932),
  ABISELECT(10144,7820),
  ABISELECT(10088,7780),
  ABISELECT(8608,6624),
  ABISELECT(8600,6620),
  0,
  (VTBL_ENTRY)&(_ZTI9S19471C11[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  (VTBL_ENTRY)&_ZN9S19471C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19471C11D0Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C69S19471C11__9S19471C18[] = {
  ABISELECT(8552,6580),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__A__9S19471C11__9S19471C18[] = {
  ABISELECT(8552,6580),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI9S19471C11[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19471C11D1Ev,_ZTv0_n28_N9S19471C11D1Ev)();
extern void ABISELECT(_ZThn8608_N9S19471C11D1Ev,_ZThn6624_N9S19471C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19471C11D0Ev,_ZTv0_n28_N9S19471C11D0Ev)();
extern void ABISELECT(_ZThn8608_N9S19471C11D0Ev,_ZThn6624_N9S19471C11D0Ev)() __attribute__((weak));
extern void _ZN8S19471C22v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C2__9S19471C11__9S19471C18[] = {
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-8608,-6624),
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  ABISELECT(-8608,-6624),
  (VTBL_ENTRY)&(_ZTI9S19471C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19471C11D1Ev,_ZTv0_n28_N9S19471C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19471C11D0Ev,_ZTv0_n28_N9S19471C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19471C22v8Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__A2__9S19471C11__9S19471C18[] = {
  0,
  0,
  0,
  ABISELECT(-10088,-7780),
  (VTBL_ENTRY)&(_ZTI9S19471C11[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__A1__9S19471C11__9S19471C18[] = {
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-10144,-7820),
  (VTBL_ENTRY)&(_ZTI9S19471C11[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C7__9S19471C11__9S19471C18[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-10288,-7932),
  (VTBL_ENTRY)&(_ZTI9S19471C11[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C7__A2__9S19471C11__9S19471C18[] = {
  ABISELECT(-1832,-1416),
  ABISELECT(-10432,-8036),
  (VTBL_ENTRY)&(_ZTI9S19471C11[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N9S19471C11D1Ev,_ZTvn1056_n28_N9S19471C11D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N9S19471C11D0Ev,_ZTvn1056_n28_N9S19471C11D0Ev)();
extern void _ZN8S19471C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C98S19471C2__9S19471C11__9S19471C18[] = {
  ABISELECT(-9944,-7680),
  (VTBL_ENTRY)&(_ZTI9S19471C11[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19471C11D1Ev,_ZTvn1056_n28_N9S19471C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19471C11D0Ev,_ZTvn1056_n28_N9S19471C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19471C92v7Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C7__A__9S19471C18[] = {
  ABISELECT(8328,6412),
  ABISELECT(9816,7572),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C88S19471C7__A1__9S19471C18[] = {
  ABISELECT(8328,6412),
  ABISELECT(9816,7572),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C88S19471C7__A1__9S19471C18[] = {
  0,
  0,
  0,
  ABISELECT(-9816,-7572),
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C7__A3__9S19471C18[] = {
  ABISELECT(8184,6308),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C7__A__9S19471C18[] = {
  0,
  0,
  0,
  ABISELECT(-9816,-7572),
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C7__A__9S19471C18[] = {
  ABISELECT(8184,6308),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C2D1Ev();
extern void _ZN8S19471C2D0Ev();
extern void _ZN8S19471C22v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C2__9S19471C18[] = {
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19471C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19471C22v8Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19471C38S19471C2__9S19471C18[] = {
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C3[0]),
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C38S19471C2__9S19471C18[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1156),
  (VTBL_ENTRY)&(_ZTI8S19471C3[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C38S19471C2__9S19471C18[] = {
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-1536,-1196),
  (VTBL_ENTRY)&(_ZTI8S19471C3[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C2__9S19471C18[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1156),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C2__9S19471C18[] = {
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-1536,-1196),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C7__8S19471C2__9S19471C18[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-1680,-1308),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C7__A1__8S19471C2__9S19471C18[] = {
  ABISELECT(-1832,-1416),
  ABISELECT(-1824,-1412),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__A1__9S19471C18[] = {
  ABISELECT(-1544,-1200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C7__9S19471C18[] = {
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C88S19471C7__9S19471C18[] = {
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C88S19471C7__9S19471C18[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C7__A2__9S19471C18[] = {
  ABISELECT(-1832,-1416),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C7__9S19471C18[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C7__9S19471C18[] = {
  ABISELECT(-1832,-1416),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
static  VTT_ENTRY vtt_S19471C18[] = {
  {&(_ZTV9S19471C18[7]),  7,87},
  {&(_tg__ZTV9S19471C11__9S19471C18[7]),  7,12},
  {&(_tg__ZTV8S19471C69S19471C11__9S19471C18[3]),  3,6},
  {&(_tg__ZTV8S19471C6__A__9S19471C11__9S19471C18[3]),  3,6},
  {&(_tg__ZTV8S19471C2__9S19471C11__9S19471C18[12]),  12,15},
  {&(_tg__ZTV8S19471C5__A2__9S19471C11__9S19471C18[5]),  5,8},
  {&(_tg__ZTV8S19471C6__A1__9S19471C11__9S19471C18[6]),  6,9},
  {&(_tg__ZTV8S19471C7__9S19471C11__9S19471C18[9]),  9,11},
  {&(_tg__ZTV8S19471C68S19471C7__A2__9S19471C11__9S19471C18[3]),  3,6},
  {&(_tg__ZTV8S19471C98S19471C2__9S19471C11__9S19471C18[2]),  2,8},
  {&(_tg__ZTV8S19471C7__A__9S19471C18[4]),  4,6},
  {&(_tg__ZTV8S19471C88S19471C7__A1__9S19471C18[4]),  4,5},
  {&(_tg__ZTV8S19471C5__8S19471C88S19471C7__A1__9S19471C18[5]),  5,8},
  {&(_tg__ZTV8S19471C68S19471C7__A3__9S19471C18[3]),  3,6},
  {&(_tg__ZTV8S19471C5__8S19471C7__A__9S19471C18[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C7__A__9S19471C18[3]),  3,6},
  {&(_ZTV9S19471C18[15]),  15,87},
  {&(_ZTV9S19471C18[42]),  42,87},
  {&(_ZTV9S19471C18[58]),  58,87},
  {&(_ZTV9S19471C18[67]),  67,87},
  {&(_ZTV9S19471C18[79]),  79,87},
  {&(_ZTV9S19471C18[84]),  84,87},
  {&(_ZTV9S19471C18[47]),  47,87},
  {&(_ZTV9S19471C18[22]),  22,87},
  {&(_ZTV9S19471C18[27]),  27,87},
  {&(_tg__ZTV8S19471C2__9S19471C18[6]),  6,9},
  {&(_tg__ZTV8S19471C38S19471C2__9S19471C18[5]),  5,5},
  {&(_tg__ZTV8S19471C5__8S19471C38S19471C2__9S19471C18[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C38S19471C2__9S19471C18[6]),  6,9},
  {&(_tg__ZTV8S19471C5__8S19471C2__9S19471C18[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C2__9S19471C18[6]),  6,9},
  {&(_tg__ZTV8S19471C7__8S19471C2__9S19471C18[9]),  9,11},
  {&(_tg__ZTV8S19471C68S19471C7__A1__8S19471C2__9S19471C18[3]),  3,6},
  {&(_tg__ZTV8S19471C6__A1__9S19471C18[3]),  3,6},
  {&(_tg__ZTV8S19471C7__9S19471C18[4]),  4,6},
  {&(_tg__ZTV8S19471C88S19471C7__9S19471C18[4]),  4,5},
  {&(_tg__ZTV8S19471C5__8S19471C88S19471C7__9S19471C18[5]),  5,8},
  {&(_tg__ZTV8S19471C68S19471C7__A2__9S19471C18[3]),  3,6},
  {&(_tg__ZTV8S19471C5__8S19471C7__9S19471C18[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C7__9S19471C18[3]),  3,6},
};
extern VTBL_ENTRY _ZTI9S19471C18[];
extern  VTBL_ENTRY _ZTV9S19471C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19471C18[];
static VTBL_ENTRY alt_thunk_names25[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19471C11D0Ev,_ZTv0_n28_N9S19471C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8608_N9S19471C11D0Ev,_ZThn6624_N9S19471C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19471C11D1Ev,_ZTv0_n28_N9S19471C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8608_N9S19471C11D1Ev,_ZThn6624_N9S19471C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19471C18D0Ev,_ZTv0_n28_N9S19471C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8608_N9S19471C18D0Ev,_ZThn6624_N9S19471C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19471C18D1Ev,_ZTv0_n28_N9S19471C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8608_N9S19471C18D1Ev,_ZThn6624_N9S19471C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19471C18 = {  "S19471C18", // class name
  bases_S19471C18, 28,
  &(vtc_S19471C18[0]), // expected_vtbl_contents
  &(vtt_S19471C18[0]), // expected_vtt_contents
  ABISELECT(10848,8364), // object size
  NSPAIRA(_ZTI9S19471C18),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19471C18),87, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19471C18),40, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names25,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19471C1  : virtual S19471C2 , virtual S19471C10 , virtual S19471C12 {
  char s19471c1f0;
  void *s19471c1f1;
  void *s19471c1f2;
  void *s19471c1f3;
  __tsi64 s19471c1f4;
  int s19471c1f5;
  void *s19471c1f6;
  ::S19471C18 s19471c1f7;
  virtual  ~S19471C1(); // _ZN8S19471C1D2Ev
  virtual void  v1(); // _ZN8S19471C12v1Ev
  S19471C1(); // tgen
};
//SIG(1 S19471C1) C1{ VBC2{ BC3{ VBC4{ m Fi} VBC5{ BC4 v2 v3 v4 FC4[3] FC4[2] Fp Fs FC4} VBC6{ BC5 VBC4 FD FL FC5 Fp Fs[3]} Fp[2] Fi FC6[8] FD[9]} BC4 VBC7{ VBC5 VBC4 BC8{ VBC5 VBC4 v5 FC5 FD Fp[2] FC5} BC6 v6 Fp[2] Fl Fi FC5[5]} BC9{ BC5 vd v7 Fp[7] Fi[2] FL Fi} vd v8 Fi Fp Fi} VBC10{ VBC11{ BC5 BC6 VBC2 Fp Fi FC5 Fi Fp} vd FD Fi FL[8]} VBC12{ VBC6 BC2 BC13{ BC6 VBC2 BC7 BC14{ VBC4 BC7 BC8 BC6 v9 Fi FC15{} Fp[2]} vd Fi Fc[2] Fi FL FC15 Fp[8] Fs[5] FL FC16{ vd m Fc[2] Fi FL Fp[7] FU17{ m Fi:3 Fi Fi Fi FD[8] Fp Fc[5] FD Fc[4] Fi Fp Fc[4] Fp}[4] FC18{ VBC4 VBC19{ BC4 v10 v11 v12 FC4[3] FC4[2] Fp Fs FC4} VBC20{ BC19 VBC4 FD FL FC19 Fp Fs[3]} Fp[2] Fi FC20[8] FD[9]}}} BC8 vd Fc Fi Fi Fi Fi Fp Fc[4] Fi} vd v1 Fc Fp Fp Fp FL Fi Fp FC21{ BC11 BC7 vd FC12 Fp Fi:1 Fi Fi:30 Fi}}


 S19471C1 ::~S19471C1(){ note_dtor("S19471C1", this);}
void  S19471C1 ::v1(){vfunc_called(this, "_ZN8S19471C12v1Ev");}
S19471C1 ::S19471C1(){ note_ctor("S19471C1", this);} // tgen

static void Test_S19471C1()
{
  extern Class_Descriptor cd_S19471C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1191,3664)];
    init_test(&cd_S19471C1, buf);
    S19471C1 *dp, &lv = *(dp=new (buf) S19471C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(19040,14652), "sizeof(S19471C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19471C1)");
    /*is_ambiguous_... S19471C1::S19471C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C3*)(S19471C2*), ABISELECT(12388,9556), "S19471C1");
    /*is_ambiguous_... S19471C1::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*), ABISELECT(12388,9556), "S19471C1");
    /*is_ambiguous_... S19471C1::S19471C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C7*), ABISELECT(12388,9556), "S19471C1");
    /*is_ambiguous_... S19471C1::S19471C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C8*)(S19471C7*), ABISELECT(12388,9556), "S19471C1");
    /*is_ambiguous_... S19471C1::S19471C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*)(S19471C7*), ABISELECT(12388,9556), "S19471C1");
    /*is_ambiguous_... S19471C11::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*)(S19471C11*), ABISELECT(12388,9556), "S19471C1");
    /*is_ambiguous_... S19471C12::S19471C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C3*)(S19471C2*)(S19471C12*), ABISELECT(12388,9556), "S19471C1");
    /*is_ambiguous_... S19471C13::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*)(S19471C13*)(S19471C12*), ABISELECT(12388,9556), "S19471C1");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C7*)(S19471C13*)(S19471C12*), ABISELECT(12388,9556), "S19471C1");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C8*)(S19471C7*)(S19471C13*)(S19471C12*), ABISELECT(12388,9556), "S19471C1");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*)(S19471C7*)(S19471C13*)(S19471C12*), ABISELECT(12388,9556), "S19471C1");
    /*is_ambiguous_... S19471C14::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C14*)(S19471C13*)(S19471C12*), ABISELECT(12388,9556), "S19471C1");
    /*is_ambiguous_... S19471C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C7*)(S19471C14*)(S19471C13*)(S19471C12*), ABISELECT(12388,9556), "S19471C1");
    /*is_ambiguous_... S19471C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C8*)(S19471C7*)(S19471C14*)(S19471C13*)(S19471C12*), ABISELECT(12388,9556), "S19471C1");
    /*is_ambiguous_... S19471C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*)(S19471C7*)(S19471C14*)(S19471C13*)(S19471C12*), ABISELECT(12388,9556), "S19471C1");
    /*is_ambiguous_... S19471C14::S19471C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C8*)(S19471C14*)(S19471C13*)(S19471C12*), ABISELECT(12388,9556), "S19471C1");
    /*is_ambiguous_... S19471C14::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C6*)(S19471C14*)(S19471C13*)(S19471C12*), ABISELECT(12388,9556), "S19471C1");
    /*is_ambiguous_... S19471C12::S19471C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C8*)(S19471C12*), ABISELECT(12388,9556), "S19471C1");
    /*is_ambiguous_... S19471C1::S19471C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*), ABISELECT(12400,9564), "S19471C1");
    /*is_ambiguous_... S19471C1::S19471C2 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C3*)(S19471C2*), ABISELECT(12392,9560), "S19471C1");
    /*is_ambiguous_... S19471C1::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C7*), ABISELECT(12392,9560), "S19471C1");
    /*is_ambiguous_... S19471C1::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C8*)(S19471C7*), ABISELECT(12392,9560), "S19471C1");
    /*is_ambiguous_... S19471C12::S19471C2 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C3*)(S19471C2*)(S19471C12*), ABISELECT(12392,9560), "S19471C1");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C7*)(S19471C13*)(S19471C12*), ABISELECT(12392,9560), "S19471C1");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C8*)(S19471C7*)(S19471C13*)(S19471C12*), ABISELECT(12392,9560), "S19471C1");
    /*is_ambiguous_... S19471C7::S19471C5 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C7*)(S19471C14*)(S19471C13*)(S19471C12*), ABISELECT(12392,9560), "S19471C1");
    check_base_class_offset(lv, (S19471C5*)(S19471C8*)(S19471C7*)(S19471C14*)(S19471C13*)(S19471C12*), ABISELECT(12392,9560), "S19471C1");
    /*is_ambiguous_... S19471C14::S19471C8 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C8*)(S19471C14*)(S19471C13*)(S19471C12*), ABISELECT(12392,9560), "S19471C1");
    /*is_ambiguous_... S19471C12::S19471C8 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C8*)(S19471C12*), ABISELECT(12392,9560), "S19471C1");
    /*is_ambiguous_... S19471C1::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*), ABISELECT(12456,9604), "S19471C1");
    /*is_ambiguous_... S19471C1::S19471C6 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C6*), ABISELECT(12448,9600), "S19471C1");
    /*is_ambiguous_... S19471C1::S19471C2 */ AMB_check_base_class_offset(lv, (S19471C6*)(S19471C3*)(S19471C2*), ABISELECT(12448,9600), "S19471C1");
    /*is_ambiguous_... S19471C12::S19471C6 */ AMB_check_base_class_offset(lv, (S19471C6*)(S19471C12*), ABISELECT(12448,9600), "S19471C1");
    /*is_ambiguous_... S19471C12::S19471C2 */ AMB_check_base_class_offset(lv, (S19471C6*)(S19471C3*)(S19471C2*)(S19471C12*), ABISELECT(12448,9600), "S19471C1");
    /*is_ambiguous_... S19471C1::S19471C2 */ AMB_check_base_class_offset(lv, (S19471C3*)(S19471C2*), ABISELECT(10912,8400), "S19471C1");
    /*is_ambiguous_... S19471C1::S19471C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C2*), ABISELECT(12240,9452), "S19471C1");
    /*is_ambiguous_... S19471C1::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C8*)(S19471C7*), ABISELECT(12592,9712), "S19471C1");
    /*is_ambiguous_... S19471C1::S19471C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*)(S19471C7*), ABISELECT(12744,9820), "S19471C1");
    /*is_ambiguous_... S19471C1::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C6*)(S19471C7*), ABISELECT(12736,9816), "S19471C1");
    /*is_ambiguous_... S19471C1::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C6*)(S19471C7*), ABISELECT(12736,9816), "S19471C1");
    /*is_ambiguous_... S19471C1::S19471C2 */ AMB_check_base_class_offset(lv, (S19471C7*)(S19471C2*), ABISELECT(12592,9712), "S19471C1");
    /*is_ambiguous_... S19471C12::S19471C2 */ AMB_check_base_class_offset(lv, (S19471C7*)(S19471C2*)(S19471C12*), ABISELECT(12592,9712), "S19471C1");
    /*is_ambiguous_... S19471C1::S19471C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C9*)(S19471C2*), ABISELECT(12256,9460), "S19471C1");
    /*is_ambiguous_... S19471C1::S19471C2 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C9*)(S19471C2*), ABISELECT(12248,9456), "S19471C1");
    /*is_ambiguous_... S19471C1::S19471C2 */ AMB_check_base_class_offset(lv, (S19471C9*)(S19471C2*), ABISELECT(12248,9456), "S19471C1");
    /*is_ambiguous_... S19471C1::S19471C2 */ AMB_check_base_class_offset(lv, (S19471C2*), ABISELECT(10912,8400), "S19471C1");
    check_base_class_offset(lv, (S19471C2*)(S19471C11*), ABISELECT(10912,8400), "S19471C1");
    check_base_class_offset(lv, (S19471C2*)(S19471C13*)(S19471C12*), ABISELECT(10912,8400), "S19471C1");
    /*is_ambiguous_... S19471C11::S19471C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C11*), ABISELECT(13272,10232), "S19471C1");
    /*is_ambiguous_... S19471C11::S19471C5 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C11*), ABISELECT(13264,10228), "S19471C1");
    /*is_ambiguous_... S19471C11::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*)(S19471C11*), ABISELECT(13320,10272), "S19471C1");
    /*is_ambiguous_... S19471C11::S19471C6 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C6*)(S19471C11*), ABISELECT(13312,10268), "S19471C1");
    /*is_ambiguous_... S19471C11::S19471C6 */ AMB_check_base_class_offset(lv, (S19471C6*)(S19471C11*), ABISELECT(13312,10268), "S19471C1");
    check_base_class_offset(lv, (S19471C11*)(S19471C10*), ABISELECT(13264,10228), "S19471C1");
    check_base_class_offset(lv, (S19471C10*), ABISELECT(13152,10144), "S19471C1");
    /*is_ambiguous_... S19471C12::S19471C2 */ AMB_check_base_class_offset(lv, (S19471C3*)(S19471C2*)(S19471C12*), ABISELECT(13536,10436), "S19471C1");
    /*is_ambiguous_... S19471C12::S19471C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C2*)(S19471C12*), ABISELECT(14864,11488), "S19471C1");
    /*is_ambiguous_... S19471C12::S19471C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C9*)(S19471C2*)(S19471C12*), ABISELECT(14880,11496), "S19471C1");
    /*is_ambiguous_... S19471C12::S19471C2 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C9*)(S19471C2*)(S19471C12*), ABISELECT(14872,11492), "S19471C1");
    /*is_ambiguous_... S19471C12::S19471C2 */ AMB_check_base_class_offset(lv, (S19471C9*)(S19471C2*)(S19471C12*), ABISELECT(14872,11492), "S19471C1");
    /*is_ambiguous_... S19471C12::S19471C2 */ AMB_check_base_class_offset(lv, (S19471C2*)(S19471C12*), ABISELECT(13536,10436), "S19471C1");
    /*is_ambiguous_... S19471C13::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*)(S19471C13*)(S19471C12*), ABISELECT(15032,11596), "S19471C1");
    /*is_ambiguous_... S19471C13::S19471C6 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C6*)(S19471C13*)(S19471C12*), ABISELECT(15024,11592), "S19471C1");
    /*is_ambiguous_... S19471C13::S19471C6 */ AMB_check_base_class_offset(lv, (S19471C6*)(S19471C13*)(S19471C12*), ABISELECT(15024,11592), "S19471C1");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C8*)(S19471C7*)(S19471C13*)(S19471C12*), ABISELECT(15168,11704), "S19471C1");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*)(S19471C7*)(S19471C13*)(S19471C12*), ABISELECT(15320,11812), "S19471C1");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C6*)(S19471C7*)(S19471C13*)(S19471C12*), ABISELECT(15312,11808), "S19471C1");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C6*)(S19471C7*)(S19471C13*)(S19471C12*), ABISELECT(15312,11808), "S19471C1");
    /*is_ambiguous_... S19471C13::S19471C7 */ AMB_check_base_class_offset(lv, (S19471C7*)(S19471C13*)(S19471C12*), ABISELECT(15168,11704), "S19471C1");
    check_base_class_offset(lv, (S19471C8*)(S19471C7*)(S19471C14*)(S19471C13*)(S19471C12*), ABISELECT(15728,12136), "S19471C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*)(S19471C7*)(S19471C14*)(S19471C13*)(S19471C12*), ABISELECT(15880,12244), "S19471C1");
    check_base_class_offset(lv, (S19471C5*)(S19471C6*)(S19471C7*)(S19471C14*)(S19471C13*)(S19471C12*), ABISELECT(15872,12240), "S19471C1");
    check_base_class_offset(lv, (S19471C6*)(S19471C7*)(S19471C14*)(S19471C13*)(S19471C12*), ABISELECT(15872,12240), "S19471C1");
    check_base_class_offset(lv, (S19471C7*)(S19471C14*)(S19471C13*)(S19471C12*), ABISELECT(15728,12136), "S19471C1");
    /*is_ambiguous_... S19471C14::S19471C8 */ AMB_check_base_class_offset(lv, (S19471C8*)(S19471C14*)(S19471C13*)(S19471C12*), ABISELECT(16288,12568), "S19471C1");
    /*is_ambiguous_... S19471C14::S19471C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19471C5*)(S19471C6*)(S19471C14*)(S19471C13*)(S19471C12*), ABISELECT(16440,12676), "S19471C1");
    /*is_ambiguous_... S19471C14::S19471C6 */ AMB_check_base_class_offset(lv, (S19471C5*)(S19471C6*)(S19471C14*)(S19471C13*)(S19471C12*), ABISELECT(16432,12672), "S19471C1");
    /*is_ambiguous_... S19471C14::S19471C6 */ AMB_check_base_class_offset(lv, (S19471C6*)(S19471C14*)(S19471C13*)(S19471C12*), ABISELECT(16432,12672), "S19471C1");
    check_base_class_offset(lv, (S19471C14*)(S19471C13*)(S19471C12*), ABISELECT(15728,12136), "S19471C1");
    check_base_class_offset(lv, (S19471C13*)(S19471C12*), ABISELECT(15024,11592), "S19471C1");
    /*is_ambiguous_... S19471C12::S19471C8 */ AMB_check_base_class_offset(lv, (S19471C8*)(S19471C12*), ABISELECT(18848,14516), "S19471C1");
    check_base_class_offset(lv, (S19471C12*), ABISELECT(13536,10436), "S19471C1");
    check_field_offset(lv, s19471c1f0, ABISELECT(8,4), "S19471C1.s19471c1f0");
    check_field_offset(lv, s19471c1f1, ABISELECT(16,8), "S19471C1.s19471c1f1");
    check_field_offset(lv, s19471c1f2, ABISELECT(24,12), "S19471C1.s19471c1f2");
    check_field_offset(lv, s19471c1f3, ABISELECT(32,16), "S19471C1.s19471c1f3");
    check_field_offset(lv, s19471c1f4, ABISELECT(40,20), "S19471C1.s19471c1f4");
    check_field_offset(lv, s19471c1f5, ABISELECT(48,28), "S19471C1.s19471c1f5");
    check_field_offset(lv, s19471c1f6, ABISELECT(56,32), "S19471C1.s19471c1f6");
    check_field_offset(lv, s19471c1f7, ABISELECT(64,36), "S19471C1.s19471c1f7");
    test_class_info(&lv, &cd_S19471C1);
    dp->~S19471C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19471C1(Test_S19471C1, "S19471C1", ABISELECT(19040,14652));

#else // __cplusplus

extern void _ZN8S19471C1C1Ev();
extern void _ZN8S19471C1D2Ev();
Name_Map name_map_S19471C1[] = {
  NSPAIR(_ZN8S19471C1C1Ev),
  NSPAIR(_ZN8S19471C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
extern Class_Descriptor cd_S19471C3;
extern VTBL_ENTRY _ZTI8S19471C3[];
extern  VTBL_ENTRY _ZTV8S19471C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C8;
extern VTBL_ENTRY _ZTI8S19471C8[];
extern  VTBL_ENTRY _ZTV8S19471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
extern Class_Descriptor cd_S19471C7;
extern VTBL_ENTRY _ZTI8S19471C7[];
extern  VTBL_ENTRY _ZTV8S19471C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C7[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C9;
extern VTBL_ENTRY _ZTI8S19471C9[];
extern  VTBL_ENTRY _ZTV8S19471C9[];
extern Class_Descriptor cd_S19471C2;
extern VTBL_ENTRY _ZTI8S19471C2[];
extern  VTBL_ENTRY _ZTV8S19471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
extern Class_Descriptor cd_S19471C11;
extern VTBL_ENTRY _ZTI9S19471C11[];
extern  VTBL_ENTRY _ZTV9S19471C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19471C11[];
extern Class_Descriptor cd_S19471C10;
extern VTBL_ENTRY _ZTI9S19471C10[];
extern  VTBL_ENTRY _ZTV9S19471C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19471C10[];
extern Class_Descriptor cd_S19471C3;
extern VTBL_ENTRY _ZTI8S19471C3[];
extern  VTBL_ENTRY _ZTV8S19471C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C9;
extern VTBL_ENTRY _ZTI8S19471C9[];
extern  VTBL_ENTRY _ZTV8S19471C9[];
extern Class_Descriptor cd_S19471C2;
extern VTBL_ENTRY _ZTI8S19471C2[];
extern  VTBL_ENTRY _ZTV8S19471C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
extern Class_Descriptor cd_S19471C8;
extern VTBL_ENTRY _ZTI8S19471C8[];
extern  VTBL_ENTRY _ZTV8S19471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
extern Class_Descriptor cd_S19471C7;
extern VTBL_ENTRY _ZTI8S19471C7[];
extern  VTBL_ENTRY _ZTV8S19471C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C7[];
extern Class_Descriptor cd_S19471C8;
extern VTBL_ENTRY _ZTI8S19471C8[];
extern  VTBL_ENTRY _ZTV8S19471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
extern Class_Descriptor cd_S19471C7;
extern VTBL_ENTRY _ZTI8S19471C7[];
extern  VTBL_ENTRY _ZTV8S19471C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C7[];
extern Class_Descriptor cd_S19471C8;
extern VTBL_ENTRY _ZTI8S19471C8[];
extern  VTBL_ENTRY _ZTV8S19471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19471C5;
extern VTBL_ENTRY _ZTI8S19471C5[];
extern  VTBL_ENTRY _ZTV8S19471C5[];
extern Class_Descriptor cd_S19471C6;
extern VTBL_ENTRY _ZTI8S19471C6[];
extern  VTBL_ENTRY _ZTV8S19471C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C6[];
extern Class_Descriptor cd_S19471C14;
extern VTBL_ENTRY _ZTI9S19471C14[];
extern  VTBL_ENTRY _ZTV9S19471C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19471C14[];
extern Class_Descriptor cd_S19471C13;
extern VTBL_ENTRY _ZTI9S19471C13[];
extern  VTBL_ENTRY _ZTV9S19471C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19471C13[];
extern Class_Descriptor cd_S19471C8;
extern VTBL_ENTRY _ZTI8S19471C8[];
extern  VTBL_ENTRY _ZTV8S19471C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C8[];
extern Class_Descriptor cd_S19471C12;
extern VTBL_ENTRY _ZTI9S19471C12[];
extern  VTBL_ENTRY _ZTV9S19471C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19471C12[];
static Base_Class bases_S19471C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(12388,9556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3216C8_nt,    ABISELECT(12400,9564), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C5,    ABISELECT(12392,9560), //bcp->offset
    36, //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
    6, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(12456,9604), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C5,    ABISELECT(12448,9600), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C6,    ABISELECT(12448,9600), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19471C3,    ABISELECT(10912,8400), //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
    16, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(12240,9452), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C8,    ABISELECT(12592,9712), //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
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(12744,9820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C5,    ABISELECT(12736,9816), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19471C6,    ABISELECT(12736,9816), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19471C7,    ABISELECT(12592,9712), //bcp->offset
    53, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(12256,9460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C5,    ABISELECT(12248,9456), //bcp->offset
    -1, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S19471C9,    ABISELECT(12248,9456), //bcp->offset
    28, //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
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19471C2,    ABISELECT(10912,8400), //bcp->offset
    13, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(13272,10232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C5,    ABISELECT(13264,10228), //bcp->offset
    -1, //bcp->virtual_function_table_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_S3216C8_nt,    ABISELECT(13320,10272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C5,    ABISELECT(13312,10268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19471C6,    ABISELECT(13312,10268), //bcp->offset
    97, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19471C11,    ABISELECT(13264,10228), //bcp->offset
    81, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19471C10,    ABISELECT(13152,10144), //bcp->offset
    70, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19471C3,    ABISELECT(13536,10436), //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
    17, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(14864,11488), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3216C8_nt,    ABISELECT(14880,11496), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C5,    ABISELECT(14872,11492), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19471C9,    ABISELECT(14872,11492), //bcp->offset
    122, //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
    19, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19471C2,    ABISELECT(13536,10436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(15032,11596), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C5,    ABISELECT(15024,11592), //bcp->offset
    -1, //bcp->virtual_function_table_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
    32, //immediately_derived
  0, 0},
  {&cd_S19471C6,    ABISELECT(15024,11592), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19471C8,    ABISELECT(15168,11704), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(15320,11812), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C5,    ABISELECT(15312,11808), //bcp->offset
    -1, //bcp->virtual_function_table_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
    36, //immediately_derived
  0, 0},
  {&cd_S19471C6,    ABISELECT(15312,11808), //bcp->offset
    148, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19471C7,    ABISELECT(15168,11704), //bcp->offset
    142, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19471C8,    ABISELECT(15728,12136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(15880,12244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19471C5,    ABISELECT(15872,12240), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19471C6,    ABISELECT(15872,12240), //bcp->offset
    161, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S19471C7,    ABISELECT(15728,12136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S19471C8,    ABISELECT(16288,12568), //bcp->offset
    167, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(16440,12676), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S19471C5,    ABISELECT(16432,12672), //bcp->offset
    -1, //bcp->virtual_function_table_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
    46, //immediately_derived
  0, 0},
  {&cd_S19471C6,    ABISELECT(16432,12672), //bcp->offset
    172, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S19471C14,    ABISELECT(15728,12136), //bcp->offset
    154, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19471C13,    ABISELECT(15024,11592), //bcp->offset
    130, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S19471C8,    ABISELECT(18848,14516), //bcp->offset
    178, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S19471C12,    ABISELECT(13536,10436), //bcp->offset
    103, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19471C1[];
extern void _ZN8S19471C1D1Ev();
extern void _ZN8S19471C1D0Ev();
extern void _ZN8S19471C12v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S19471C1D1Ev,_ZTv0_n28_N8S19471C1D1Ev)();
extern void ABISELECT(_ZThn10912_N8S19471C1D1Ev,_ZThn8400_N8S19471C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19471C1D0Ev,_ZTv0_n28_N8S19471C1D0Ev)();
extern void ABISELECT(_ZThn10912_N8S19471C1D0Ev,_ZThn8400_N8S19471C1D0Ev)() __attribute__((weak));
extern void _ZN8S19471C22v8Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N8S19471C1D1Ev,_ZTvn1056_n28_N8S19471C1D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N8S19471C1D0Ev,_ZTvn1056_n28_N8S19471C1D0Ev)();
extern void _ZN8S19471C92v7Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void ABISELECT(_ZTv0_n72_N8S19471C1D1Ev,_ZTv0_n36_N8S19471C1D1Ev)();
extern void ABISELECT(_ZThn13152_N8S19471C1D1Ev,_ZThn10144_N8S19471C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19471C1D0Ev,_ZTv0_n36_N8S19471C1D0Ev)();
extern void ABISELECT(_ZThn13152_N8S19471C1D0Ev,_ZThn10144_N8S19471C1D0Ev)() __attribute__((weak));
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void ABISELECT(_ZTv0_n88_N8S19471C1D1Ev,_ZTv0_n44_N8S19471C1D1Ev)();
extern void ABISELECT(_ZThn13264_N8S19471C1D1Ev,_ZThn10228_N8S19471C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19471C1D0Ev,_ZTv0_n44_N8S19471C1D0Ev)();
extern void ABISELECT(_ZThn13264_N8S19471C1D0Ev,_ZThn10228_N8S19471C1D0Ev)() __attribute__((weak));
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void ABISELECT(_ZTv0_n64_N8S19471C1D1Ev,_ZTv0_n32_N8S19471C1D1Ev)();
extern void ABISELECT(_ZThn13536_N8S19471C1D1Ev,_ZThn10436_N8S19471C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19471C1D0Ev,_ZTv0_n32_N8S19471C1D0Ev)();
extern void ABISELECT(_ZThn13536_N8S19471C1D0Ev,_ZThn10436_N8S19471C1D0Ev)() __attribute__((weak));
extern void _ZN8S19471C22v8Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void ABISELECT(_ZTvn1336_n64_N8S19471C1D1Ev,_ZTvn1056_n32_N8S19471C1D1Ev)();
extern void ABISELECT(_ZTvn1336_n64_N8S19471C1D0Ev,_ZTvn1056_n32_N8S19471C1D0Ev)();
extern void _ZN8S19471C92v7Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void ABISELECT(_ZTvn1488_n64_N8S19471C1D1Ev,_ZTvn1156_n32_N8S19471C1D1Ev)();
extern void ABISELECT(_ZTvn1488_n64_N8S19471C1D0Ev,_ZTvn1156_n32_N8S19471C1D0Ev)();
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
extern void _ZN9S19471C142v9Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN8S19471C82v5Ev();
static  VTBL_ENTRY vtc_S19471C1[] = {
  ABISELECT(13536,10436),
  ABISELECT(13264,10228),
  ABISELECT(13152,10144),
  ABISELECT(12592,9712),
  ABISELECT(12448,9600),
  ABISELECT(12392,9560),
  ABISELECT(12388,9556),
  ABISELECT(10912,8400),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C1[0]),
  (VTBL_ENTRY)&_ZN8S19471C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19471C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19471C12v1Ev,
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-10912,-8400),
  ABISELECT(1680,1312),
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  ABISELECT(-10912,-8400),
  (VTBL_ENTRY)&(_ZTI8S19471C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19471C1D1Ev,_ZTv0_n28_N8S19471C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19471C1D0Ev,_ZTv0_n28_N8S19471C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19471C22v8Ev,
  ABISELECT(-12248,-9456),
  (VTBL_ENTRY)&(_ZTI8S19471C1[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S19471C1D1Ev,_ZTvn1056_n28_N8S19471C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S19471C1D0Ev,_ZTvn1056_n28_N8S19471C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19471C92v7Ev,
  0,
  0,
  0,
  ABISELECT(-12392,-9560),
  (VTBL_ENTRY)&(_ZTI8S19471C1[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(-12448,-9600),
  (VTBL_ENTRY)&(_ZTI8S19471C1[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  ABISELECT(-12592,-9712),
  (VTBL_ENTRY)&(_ZTI8S19471C1[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
  ABISELECT(-348,-260),
  ABISELECT(-12736,-9816),
  (VTBL_ENTRY)&(_ZTI8S19471C1[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  ABISELECT(-13152,-10144),
  ABISELECT(-560,-432),
  ABISELECT(-704,-544),
  ABISELECT(-760,-584),
  ABISELECT(-2240,-1744),
  ABISELECT(-764,-588),
  ABISELECT(112,84),
  ABISELECT(-13152,-10144),
  (VTBL_ENTRY)&(_ZTI8S19471C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19471C1D1Ev,_ZTv0_n36_N8S19471C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19471C1D0Ev,_ZTv0_n36_N8S19471C1D0Ev),
  ABISELECT(-13264,-10228),
  0,
  0,
  0,
  ABISELECT(-672,-516),
  ABISELECT(-816,-628),
  ABISELECT(-872,-668),
  ABISELECT(-2352,-1828),
  ABISELECT(-876,-672),
  ABISELECT(-13264,-10228),
  (VTBL_ENTRY)&(_ZTI8S19471C1[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19471C1D1Ev,_ZTv0_n44_N8S19471C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19471C1D0Ev,_ZTv0_n44_N8S19471C1D0Ev),
  ABISELECT(-924,-712),
  ABISELECT(-13312,-10268),
  (VTBL_ENTRY)&(_ZTI8S19471C1[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  ABISELECT(2192,1700),
  ABISELECT(1632,1268),
  ABISELECT(1632,1268),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-13536,-10436),
  ABISELECT(-2624,-2036),
  ABISELECT(-944,-724),
  ABISELECT(-1088,-836),
  ABISELECT(-1144,-876),
  ABISELECT(-1148,-880),
  ABISELECT(-13536,-10436),
  (VTBL_ENTRY)&(_ZTI8S19471C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19471C1D1Ev,_ZTv0_n32_N8S19471C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19471C1D0Ev,_ZTv0_n32_N8S19471C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19471C22v8Ev,
  ABISELECT(-14872,-11492),
  (VTBL_ENTRY)&(_ZTI8S19471C1[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n64_N8S19471C1D1Ev,_ZTvn1056_n32_N8S19471C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n64_N8S19471C1D0Ev,_ZTvn1056_n32_N8S19471C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19471C92v7Ev,
  ABISELECT(-2432,-1880),
  ABISELECT(-2576,-1992),
  ABISELECT(-2632,-2032),
  ABISELECT(-4112,-3192),
  ABISELECT(-2636,-2036),
  ABISELECT(-15024,-11592),
  (VTBL_ENTRY)&(_ZTI8S19471C1[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1488_n64_N8S19471C1D1Ev,_ZTvn1156_n32_N8S19471C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1488_n64_N8S19471C1D0Ev,_ZTvn1156_n32_N8S19471C1D0Ev),
  ABISELECT(-2780,-2148),
  ABISELECT(-2776,-2144),
  ABISELECT(-15168,-11704),
  (VTBL_ENTRY)&(_ZTI8S19471C1[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
  ABISELECT(-2924,-2252),
  ABISELECT(-15312,-11808),
  (VTBL_ENTRY)&(_ZTI8S19471C1[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  ABISELECT(-3340,-2580),
  ABISELECT(-3336,-2576),
  ABISELECT(-15728,-12136),
  (VTBL_ENTRY)&(_ZTI8S19471C1[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19471C142v9Ev,
  ABISELECT(-3484,-2684),
  ABISELECT(-15872,-12240),
  (VTBL_ENTRY)&(_ZTI8S19471C1[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  ABISELECT(-3900,-3012),
  ABISELECT(-3896,-3008),
  ABISELECT(-16288,-12568),
  (VTBL_ENTRY)&(_ZTI8S19471C1[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  ABISELECT(-4044,-3116),
  ABISELECT(-16432,-12672),
  (VTBL_ENTRY)&(_ZTI8S19471C1[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  ABISELECT(-6460,-4960),
  ABISELECT(-6456,-4956),
  ABISELECT(-18848,-14516),
  (VTBL_ENTRY)&(_ZTI8S19471C1[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
};
extern VTBL_ENTRY _ZTV8S19471C1[];
extern void _ZN8S19471C2D1Ev();
extern void _ZN8S19471C2D0Ev();
extern void _ZN8S19471C22v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C2__8S19471C1[] = {
  ABISELECT(1680,1312),
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19471C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19471C22v8Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19471C38S19471C2__8S19471C1[] = {
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C3[0]),
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C38S19471C2__8S19471C1[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1160),
  (VTBL_ENTRY)&(_ZTI8S19471C3[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C38S19471C2__8S19471C1[] = {
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(-1536,-1200),
  (VTBL_ENTRY)&(_ZTI8S19471C3[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C2__8S19471C1[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1160),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C2__8S19471C1[] = {
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(-1536,-1200),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C7__8S19471C2__8S19471C1[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  ABISELECT(-1680,-1312),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C7__A1__8S19471C2__8S19471C1[] = {
  ABISELECT(-348,-260),
  ABISELECT(-1824,-1416),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C1[] = {
  ABISELECT(-60,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C7__8S19471C1[] = {
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C88S19471C7__8S19471C1[] = {
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C88S19471C7__8S19471C1[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C7__A1__8S19471C1[] = {
  ABISELECT(-348,-260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C7__8S19471C1[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C7__8S19471C1[] = {
  ABISELECT(-348,-260),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN9S19471C10D1Ev();
extern void _ZN9S19471C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19471C10__8S19471C1[] = {
  ABISELECT(-560,-432),
  ABISELECT(-704,-544),
  ABISELECT(-760,-584),
  ABISELECT(-2240,-1744),
  ABISELECT(-764,-588),
  ABISELECT(112,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19471C10[0]),
  (VTBL_ENTRY)&_ZN9S19471C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19471C10D0Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void ABISELECT(_ZTv0_n88_N9S19471C10D1Ev,_ZTv0_n44_N9S19471C10D1Ev)();
extern void ABISELECT(_ZThn112_N9S19471C10D1Ev,_ZThn84_N9S19471C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19471C10D0Ev,_ZTv0_n44_N9S19471C10D0Ev)();
extern void ABISELECT(_ZThn112_N9S19471C10D0Ev,_ZThn84_N9S19471C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19471C11__9S19471C10__8S19471C1[] = {
  ABISELECT(-112,-84),
  0,
  0,
  0,
  ABISELECT(-672,-516),
  ABISELECT(-816,-628),
  ABISELECT(-872,-668),
  ABISELECT(-2352,-1828),
  ABISELECT(-876,-672),
  ABISELECT(-112,-84),
  (VTBL_ENTRY)&(_ZTI9S19471C10[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19471C10D1Ev,_ZTv0_n44_N9S19471C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19471C10D0Ev,_ZTv0_n44_N9S19471C10D0Ev),
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C69S19471C11__9S19471C10__8S19471C1[] = {
  ABISELECT(-924,-712),
  ABISELECT(-160,-124),
  (VTBL_ENTRY)&(_ZTI9S19471C10[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19471C10D1Ev,_ZTv0_n28_N9S19471C10D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S19471C10D0Ev,_ZTv0_n28_N9S19471C10D0Ev)();
extern void _ZN8S19471C22v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C2__9S19471C10__8S19471C1[] = {
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(2240,1744),
  ABISELECT(1680,1312),
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  ABISELECT(2240,1744),
  (VTBL_ENTRY)&(_ZTI9S19471C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19471C10D1Ev,_ZTv0_n28_N9S19471C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19471C10D0Ev,_ZTv0_n28_N9S19471C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19471C22v8Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__A2__9S19471C10__8S19471C1[] = {
  0,
  0,
  0,
  ABISELECT(760,584),
  (VTBL_ENTRY)&(_ZTI9S19471C10[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__A1__9S19471C10__8S19471C1[] = {
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(704,544),
  (VTBL_ENTRY)&(_ZTI9S19471C10[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C7__9S19471C10__8S19471C1[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  ABISELECT(560,432),
  (VTBL_ENTRY)&(_ZTI9S19471C10[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C7__A2__9S19471C10__8S19471C1[] = {
  ABISELECT(-348,-260),
  ABISELECT(416,328),
  (VTBL_ENTRY)&(_ZTI9S19471C10[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N9S19471C10D1Ev,_ZTvn1056_n28_N9S19471C10D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N9S19471C10D0Ev,_ZTvn1056_n28_N9S19471C10D0Ev)();
extern void _ZN8S19471C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C98S19471C2__9S19471C10__8S19471C1[] = {
  ABISELECT(904,688),
  (VTBL_ENTRY)&(_ZTI9S19471C10[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19471C10D1Ev,_ZTvn1056_n28_N9S19471C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19471C10D0Ev,_ZTvn1056_n28_N9S19471C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19471C92v7Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN9S19471C11D1Ev();
extern void _ZN9S19471C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19471C11__8S19471C1[] = {
  ABISELECT(-672,-516),
  ABISELECT(-816,-628),
  ABISELECT(-872,-668),
  ABISELECT(-2352,-1828),
  ABISELECT(-876,-672),
  0,
  (VTBL_ENTRY)&(_ZTI9S19471C11[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  (VTBL_ENTRY)&_ZN9S19471C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19471C11D0Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C69S19471C11__A2__8S19471C1[] = {
  ABISELECT(-924,-712),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__A__9S19471C11__8S19471C1[] = {
  ABISELECT(-924,-712),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI9S19471C11[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19471C11D1Ev,_ZTv0_n28_N9S19471C11D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S19471C11D0Ev,_ZTv0_n28_N9S19471C11D0Ev)();
extern void _ZN8S19471C22v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C2__9S19471C11__8S19471C1[] = {
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(2352,1828),
  ABISELECT(1680,1312),
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  ABISELECT(2352,1828),
  (VTBL_ENTRY)&(_ZTI9S19471C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19471C11D1Ev,_ZTv0_n28_N9S19471C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19471C11D0Ev,_ZTv0_n28_N9S19471C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19471C22v8Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__A2__9S19471C11__8S19471C1[] = {
  0,
  0,
  0,
  ABISELECT(872,668),
  (VTBL_ENTRY)&(_ZTI9S19471C11[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__A1__9S19471C11__8S19471C1[] = {
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(816,628),
  (VTBL_ENTRY)&(_ZTI9S19471C11[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C7__9S19471C11__8S19471C1[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  ABISELECT(672,516),
  (VTBL_ENTRY)&(_ZTI9S19471C11[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C7__A2__9S19471C11__8S19471C1[] = {
  ABISELECT(-348,-260),
  ABISELECT(528,412),
  (VTBL_ENTRY)&(_ZTI9S19471C11[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N9S19471C11D1Ev,_ZTvn1056_n28_N9S19471C11D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N9S19471C11D0Ev,_ZTvn1056_n28_N9S19471C11D0Ev)();
extern void _ZN8S19471C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C98S19471C2__9S19471C11__8S19471C1[] = {
  ABISELECT(1016,772),
  (VTBL_ENTRY)&(_ZTI9S19471C11[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19471C11D1Ev,_ZTvn1056_n28_N9S19471C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19471C11D0Ev,_ZTvn1056_n28_N9S19471C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19471C92v7Ev,
};
extern void _ZN9S19471C12D1Ev();
extern void _ZN9S19471C12D0Ev();
extern void _ZN8S19471C22v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19471C12__8S19471C1[] = {
  ABISELECT(-2624,-2036),
  ABISELECT(-944,-724),
  ABISELECT(-1088,-836),
  ABISELECT(-1144,-876),
  ABISELECT(-1148,-880),
  0,
  (VTBL_ENTRY)&(_ZTI9S19471C12[0]),
  (VTBL_ENTRY)&_ZN9S19471C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19471C12D0Ev,
  (VTBL_ENTRY)&_ZN8S19471C22v8Ev,
};
extern void _ZN8S19471C2D1Ev();
extern void _ZN8S19471C2D0Ev();
extern void _ZN8S19471C22v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C29S19471C12__A1__8S19471C1[] = {
  ABISELECT(-944,-724),
  ABISELECT(-1088,-836),
  ABISELECT(-1144,-876),
  ABISELECT(-1148,-880),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19471C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19471C22v8Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19471C38S19471C29S19471C12__A1__8S19471C1[] = {
  ABISELECT(-1088,-836),
  ABISELECT(-1144,-876),
  ABISELECT(-1148,-880),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C3[0]),
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C38S19471C29S19471C12__A1__8S19471C1[] = {
  0,
  0,
  0,
  ABISELECT(1144,876),
  (VTBL_ENTRY)&(_ZTI8S19471C3[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C38S19471C29S19471C12__A1__8S19471C1[] = {
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(1088,836),
  (VTBL_ENTRY)&(_ZTI8S19471C3[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C29S19471C12__A1__8S19471C1[] = {
  0,
  0,
  0,
  ABISELECT(1144,876),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C29S19471C12__A1__8S19471C1[] = {
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(1088,836),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C7__8S19471C29S19471C12__A1__8S19471C1[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  ABISELECT(944,724),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C7__A1__8S19471C29S19471C12__A1__8S19471C1[] = {
  ABISELECT(-348,-260),
  ABISELECT(800,620),
  (VTBL_ENTRY)&(_ZTI8S19471C2[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void _ZN9S19471C13D1Ev();
extern void _ZN9S19471C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19471C139S19471C12__8S19471C1[] = {
  ABISELECT(-2432,-1880),
  ABISELECT(-2576,-1992),
  ABISELECT(-2632,-2032),
  ABISELECT(-4112,-3192),
  ABISELECT(-2636,-2036),
  0,
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  (VTBL_ENTRY)&_ZN9S19471C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19471C13D0Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C69S19471C139S19471C12__A3__8S19471C1[] = {
  ABISELECT(-2636,-2036),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C79S19471C139S19471C12__A1__8S19471C1[] = {
  ABISELECT(-2780,-2148),
  ABISELECT(-2776,-2144),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C88S19471C79S19471C139S19471C12__A1__8S19471C1[] = {
  ABISELECT(-2780,-2148),
  ABISELECT(-2776,-2144),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C88S19471C79S19471C139S19471C12__A1__8S19471C1[] = {
  0,
  0,
  0,
  ABISELECT(2776,2144),
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C79S19471C139S19471C12__A4__8S19471C1[] = {
  ABISELECT(-2924,-2252),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C79S19471C139S19471C12__A1__8S19471C1[] = {
  0,
  0,
  0,
  ABISELECT(2776,2144),
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C79S19471C139S19471C12__A1__8S19471C1[] = {
  ABISELECT(-2924,-2252),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
extern void _ZN9S19471C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19471C149S19471C139S19471C12__8S19471C1[] = {
  ABISELECT(-3340,-2580),
  ABISELECT(-3336,-2576),
  0,
  (VTBL_ENTRY)&(_ZTI9S19471C14[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19471C142v9Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C79S19471C149S19471C139S19471C12__A2__8S19471C1[] = {
  ABISELECT(-3340,-2580),
  ABISELECT(-3336,-2576),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C88S19471C79S19471C149S19471C139S19471C12__A2__8S19471C1[] = {
  ABISELECT(-3340,-2580),
  ABISELECT(-3336,-2576),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C88S19471C79S19471C149S19471C139S19471C12__A2__8S19471C1[] = {
  0,
  0,
  0,
  ABISELECT(3336,2576),
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C79S19471C149S19471C139S19471C12__A5__8S19471C1[] = {
  ABISELECT(-3484,-2684),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C79S19471C149S19471C139S19471C12__A2__8S19471C1[] = {
  0,
  0,
  0,
  ABISELECT(3336,2576),
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__8S19471C79S19471C149S19471C139S19471C12__A2__8S19471C1[] = {
  ABISELECT(-3484,-2684),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S19471C7[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C89S19471C149S19471C139S19471C12__A3__8S19471C1[] = {
  ABISELECT(-3900,-3012),
  ABISELECT(-3896,-3008),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C89S19471C149S19471C139S19471C12__A3__8S19471C1[] = {
  0,
  0,
  0,
  ABISELECT(3896,3008),
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C69S19471C149S19471C139S19471C12__A6__8S19471C1[] = {
  ABISELECT(-4044,-3116),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C6[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__9S19471C149S19471C139S19471C12__8S19471C1[] = {
  0,
  0,
  0,
  ABISELECT(3336,2576),
  (VTBL_ENTRY)&(_ZTI9S19471C14[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C7__9S19471C149S19471C139S19471C12__8S19471C1[] = {
  ABISELECT(-3484,-2684),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI9S19471C14[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C8__A1__9S19471C149S19471C139S19471C12__8S19471C1[] = {
  ABISELECT(-3900,-3012),
  ABISELECT(-3896,-3008),
  ABISELECT(-560,-432),
  (VTBL_ENTRY)&(_ZTI9S19471C14[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__A1__9S19471C149S19471C139S19471C12__8S19471C1[] = {
  ABISELECT(-4044,-3116),
  ABISELECT(-704,-536),
  (VTBL_ENTRY)&(_ZTI9S19471C14[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19471C13D1Ev,_ZTv0_n28_N9S19471C13D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S19471C13D0Ev,_ZTv0_n28_N9S19471C13D0Ev)();
extern void _ZN8S19471C22v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C2__9S19471C139S19471C12__8S19471C1[] = {
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(4112,3192),
  ABISELECT(1680,1312),
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  ABISELECT(4112,3192),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19471C13D1Ev,_ZTv0_n28_N9S19471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19471C13D0Ev,_ZTv0_n28_N9S19471C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19471C22v8Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__A1__9S19471C139S19471C12__8S19471C1[] = {
  0,
  0,
  0,
  ABISELECT(2632,2032),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__A1__9S19471C139S19471C12__8S19471C1[] = {
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(2576,1992),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C7__9S19471C139S19471C12__8S19471C1[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  ABISELECT(2432,1880),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C7__A2__9S19471C139S19471C12__8S19471C1[] = {
  ABISELECT(-348,-260),
  ABISELECT(2288,1776),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N9S19471C13D1Ev,_ZTvn1056_n28_N9S19471C13D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N9S19471C13D0Ev,_ZTvn1056_n28_N9S19471C13D0Ev)();
extern void _ZN8S19471C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C98S19471C2__9S19471C139S19471C12__8S19471C1[] = {
  ABISELECT(2776,2136),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19471C13D1Ev,_ZTvn1056_n28_N9S19471C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19471C13D0Ev,_ZTvn1056_n28_N9S19471C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19471C92v7Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C7__A__9S19471C139S19471C12__8S19471C1[] = {
  ABISELECT(-2780,-2148),
  ABISELECT(-2776,-2144),
  ABISELECT(-144,-112),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C7__A3__9S19471C139S19471C12__8S19471C1[] = {
  ABISELECT(-2924,-2252),
  ABISELECT(-288,-216),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
extern void _ZN9S19471C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19471C14__9S19471C139S19471C12__8S19471C1[] = {
  ABISELECT(-3340,-2580),
  ABISELECT(-3336,-2576),
  ABISELECT(-704,-544),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19471C142v9Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C79S19471C14__A4__9S19471C139S19471C12__8S19471C1[] = {
  ABISELECT(-3484,-2684),
  ABISELECT(-848,-648),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C89S19471C14__A3__9S19471C139S19471C12__8S19471C1[] = {
  ABISELECT(-3900,-3012),
  ABISELECT(-3896,-3008),
  ABISELECT(-1264,-976),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C69S19471C14__A5__9S19471C139S19471C12__8S19471C1[] = {
  ABISELECT(-4044,-3116),
  ABISELECT(-1408,-1080),
  (VTBL_ENTRY)&(_ZTI9S19471C13[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C89S19471C12__A4__8S19471C1[] = {
  ABISELECT(-6460,-4960),
  ABISELECT(-6456,-4956),
  0,
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__8S19471C89S19471C12__A4__8S19471C1[] = {
  0,
  0,
  0,
  ABISELECT(6456,4956),
  (VTBL_ENTRY)&(_ZTI8S19471C8[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C6__9S19471C12__8S19471C1[] = {
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(1088,836),
  (VTBL_ENTRY)&(_ZTI9S19471C12[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C5__A1__9S19471C12__8S19471C1[] = {
  0,
  0,
  0,
  ABISELECT(1144,876),
  (VTBL_ENTRY)&(_ZTI9S19471C12[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C7__9S19471C12__8S19471C1[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  ABISELECT(944,724),
  (VTBL_ENTRY)&(_ZTI9S19471C12[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C7__A1__9S19471C12__8S19471C1[] = {
  ABISELECT(-348,-260),
  ABISELECT(800,620),
  (VTBL_ENTRY)&(_ZTI9S19471C12[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void ABISELECT(_ZThn1488_N9S19471C12D1Ev,_ZThn1156_N9S19471C12D1Ev)();
extern void ABISELECT(_ZThn1488_N9S19471C12D0Ev,_ZThn1156_N9S19471C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19471C13__9S19471C12__8S19471C1[] = {
  ABISELECT(-2432,-1880),
  ABISELECT(-2576,-1992),
  ABISELECT(-2632,-2032),
  ABISELECT(-4112,-3192),
  ABISELECT(-2636,-2036),
  ABISELECT(-1488,-1156),
  (VTBL_ENTRY)&(_ZTI9S19471C12[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1488_N9S19471C12D1Ev,_ZThn1156_N9S19471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1488_N9S19471C12D0Ev,_ZThn1156_N9S19471C12D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N9S19471C12D1Ev,_ZTv0_n28_N9S19471C12D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S19471C12D0Ev,_ZTv0_n28_N9S19471C12D0Ev)();
extern void _ZN8S19471C22v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C2__A1__9S19471C12__8S19471C1[] = {
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(2624,2036),
  ABISELECT(1680,1312),
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  ABISELECT(2624,2036),
  (VTBL_ENTRY)&(_ZTI9S19471C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19471C12D1Ev,_ZTv0_n28_N9S19471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19471C12D0Ev,_ZTv0_n28_N9S19471C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19471C22v8Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N9S19471C12D1Ev,_ZTvn1056_n28_N9S19471C12D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N9S19471C12D0Ev,_ZTvn1056_n28_N9S19471C12D0Ev)();
extern void _ZN8S19471C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C98S19471C2__A1__9S19471C12__8S19471C1[] = {
  ABISELECT(1288,980),
  (VTBL_ENTRY)&(_ZTI9S19471C12[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19471C12D1Ev,_ZTvn1056_n28_N9S19471C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N9S19471C12D0Ev,_ZTvn1056_n28_N9S19471C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19471C92v7Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C79S19471C13__A1__9S19471C12__8S19471C1[] = {
  ABISELECT(-2780,-2148),
  ABISELECT(-2776,-2144),
  ABISELECT(-1632,-1268),
  (VTBL_ENTRY)&(_ZTI9S19471C12[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C79S19471C13__A3__9S19471C12__8S19471C1[] = {
  ABISELECT(-2924,-2252),
  ABISELECT(-1776,-1372),
  (VTBL_ENTRY)&(_ZTI9S19471C12[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
extern void _ZN8S19471C72v6Ev();
extern void _ZN9S19471C142v9Ev();
static  VTBL_ENTRY _tg__ZTV9S19471C149S19471C13__9S19471C12__8S19471C1[] = {
  ABISELECT(-3340,-2580),
  ABISELECT(-3336,-2576),
  ABISELECT(-2192,-1700),
  (VTBL_ENTRY)&(_ZTI9S19471C12[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19471C72v6Ev,
  (VTBL_ENTRY)&_ZN9S19471C142v9Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C68S19471C79S19471C149S19471C13__A4__9S19471C12__8S19471C1[] = {
  ABISELECT(-3484,-2684),
  ABISELECT(-2336,-1804),
  (VTBL_ENTRY)&(_ZTI9S19471C12[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C89S19471C149S19471C13__A3__9S19471C12__8S19471C1[] = {
  ABISELECT(-3900,-3012),
  ABISELECT(-3896,-3008),
  ABISELECT(-2752,-2132),
  (VTBL_ENTRY)&(_ZTI9S19471C12[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
};
extern void _ZN8S19471C52v2Ev();
extern void _ZN8S19471C52v3Ev();
extern void _ZN8S19471C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C69S19471C149S19471C13__A5__9S19471C12__8S19471C1[] = {
  ABISELECT(-4044,-3116),
  ABISELECT(-2896,-2236),
  (VTBL_ENTRY)&(_ZTI9S19471C12[0]),
  (VTBL_ENTRY)&_ZN8S19471C52v2Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19471C52v4Ev,
};
extern void _ZN8S19471C82v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19471C8__A4__9S19471C12__8S19471C1[] = {
  ABISELECT(-6460,-4960),
  ABISELECT(-6456,-4956),
  ABISELECT(-5312,-4080),
  (VTBL_ENTRY)&(_ZTI9S19471C12[0]),
  (VTBL_ENTRY)&_ZN8S19471C82v5Ev,
};
static  VTT_ENTRY vtt_S19471C1[] = {
  {&(_ZTV8S19471C1[10]),  10,183},
  {&(_ZTV8S19471C1[25]),  25,183},
  {&(_ZTV8S19471C1[41]),  41,183},
  {&(_ZTV8S19471C1[50]),  50,183},
  {&(_ZTV8S19471C1[62]),  62,183},
  {&(_ZTV8S19471C1[67]),  67,183},
  {&(_ZTV8S19471C1[30]),  30,183},
  {&(_ZTV8S19471C1[79]),  79,183},
  {&(_ZTV8S19471C1[92]),  92,183},
  {&(_ZTV8S19471C1[100]),  100,183},
  {&(_ZTV8S19471C1[119]),  119,183},
  {&(_ZTV8S19471C1[124]),  124,183},
  {&(_ZTV8S19471C1[137]),  137,183},
  {&(_ZTV8S19471C1[146]),  146,183},
  {&(_ZTV8S19471C1[151]),  151,183},
  {&(_ZTV8S19471C1[158]),  158,183},
  {&(_ZTV8S19471C1[164]),  164,183},
  {&(_ZTV8S19471C1[171]),  171,183},
  {&(_ZTV8S19471C1[175]),  175,183},
  {&(_ZTV8S19471C1[182]),  182,183},
  {&(_tg__ZTV8S19471C2__8S19471C1[6]),  6,9},
  {&(_tg__ZTV8S19471C38S19471C2__8S19471C1[5]),  5,5},
  {&(_tg__ZTV8S19471C5__8S19471C38S19471C2__8S19471C1[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C38S19471C2__8S19471C1[6]),  6,9},
  {&(_tg__ZTV8S19471C5__8S19471C2__8S19471C1[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C2__8S19471C1[6]),  6,9},
  {&(_tg__ZTV8S19471C7__8S19471C2__8S19471C1[9]),  9,11},
  {&(_tg__ZTV8S19471C68S19471C7__A1__8S19471C2__8S19471C1[3]),  3,6},
  {&(_tg__ZTV8S19471C6__8S19471C1[3]),  3,6},
  {&(_tg__ZTV8S19471C7__8S19471C1[4]),  4,6},
  {&(_tg__ZTV8S19471C88S19471C7__8S19471C1[4]),  4,5},
  {&(_tg__ZTV8S19471C5__8S19471C88S19471C7__8S19471C1[5]),  5,8},
  {&(_tg__ZTV8S19471C68S19471C7__A1__8S19471C1[3]),  3,6},
  {&(_tg__ZTV8S19471C5__8S19471C7__8S19471C1[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C7__8S19471C1[3]),  3,6},
  {&(_tg__ZTV9S19471C10__8S19471C1[8]),  8,10},
  {&(_tg__ZTV9S19471C11__9S19471C10__8S19471C1[11]),  11,16},
  {&(_tg__ZTV8S19471C69S19471C11__9S19471C10__8S19471C1[3]),  3,6},
  {&(_tg__ZTV8S19471C2__9S19471C10__8S19471C1[12]),  12,15},
  {&(_tg__ZTV8S19471C5__A2__9S19471C10__8S19471C1[5]),  5,8},
  {&(_tg__ZTV8S19471C6__A1__9S19471C10__8S19471C1[6]),  6,9},
  {&(_tg__ZTV8S19471C7__9S19471C10__8S19471C1[9]),  9,11},
  {&(_tg__ZTV8S19471C68S19471C7__A2__9S19471C10__8S19471C1[3]),  3,6},
  {&(_tg__ZTV8S19471C98S19471C2__9S19471C10__8S19471C1[2]),  2,8},
  {&(_tg__ZTV9S19471C11__8S19471C1[7]),  7,12},
  {&(_tg__ZTV8S19471C69S19471C11__A2__8S19471C1[3]),  3,6},
  {&(_tg__ZTV8S19471C6__A__9S19471C11__8S19471C1[3]),  3,6},
  {&(_tg__ZTV8S19471C2__9S19471C11__8S19471C1[12]),  12,15},
  {&(_tg__ZTV8S19471C5__A2__9S19471C11__8S19471C1[5]),  5,8},
  {&(_tg__ZTV8S19471C6__A1__9S19471C11__8S19471C1[6]),  6,9},
  {&(_tg__ZTV8S19471C7__9S19471C11__8S19471C1[9]),  9,11},
  {&(_tg__ZTV8S19471C68S19471C7__A2__9S19471C11__8S19471C1[3]),  3,6},
  {&(_tg__ZTV8S19471C98S19471C2__9S19471C11__8S19471C1[2]),  2,8},
  {&(_tg__ZTV9S19471C12__8S19471C1[7]),  7,10},
  {&(_tg__ZTV8S19471C29S19471C12__A1__8S19471C1[6]),  6,9},
  {&(_tg__ZTV8S19471C38S19471C29S19471C12__A1__8S19471C1[5]),  5,5},
  {&(_tg__ZTV8S19471C5__8S19471C38S19471C29S19471C12__A1__8S19471C1[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C38S19471C29S19471C12__A1__8S19471C1[6]),  6,9},
  {&(_tg__ZTV8S19471C5__8S19471C29S19471C12__A1__8S19471C1[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C29S19471C12__A1__8S19471C1[6]),  6,9},
  {&(_tg__ZTV8S19471C7__8S19471C29S19471C12__A1__8S19471C1[9]),  9,11},
  {&(_tg__ZTV8S19471C68S19471C7__A1__8S19471C29S19471C12__A1__8S19471C1[3]),  3,6},
  {&(_tg__ZTV9S19471C139S19471C12__8S19471C1[7]),  7,12},
  {&(_tg__ZTV8S19471C69S19471C139S19471C12__A3__8S19471C1[3]),  3,6},
  {&(_tg__ZTV8S19471C79S19471C139S19471C12__A1__8S19471C1[4]),  4,6},
  {&(_tg__ZTV8S19471C88S19471C79S19471C139S19471C12__A1__8S19471C1[4]),  4,5},
  {&(_tg__ZTV8S19471C5__8S19471C88S19471C79S19471C139S19471C12__A1__8S19471C1[5]),  5,8},
  {&(_tg__ZTV8S19471C68S19471C79S19471C139S19471C12__A4__8S19471C1[3]),  3,6},
  {&(_tg__ZTV8S19471C5__8S19471C79S19471C139S19471C12__A1__8S19471C1[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C79S19471C139S19471C12__A1__8S19471C1[3]),  3,6},
  {&(_tg__ZTV9S19471C149S19471C139S19471C12__8S19471C1[4]),  4,7},
  {&(_tg__ZTV8S19471C79S19471C149S19471C139S19471C12__A2__8S19471C1[4]),  4,6},
  {&(_tg__ZTV8S19471C88S19471C79S19471C149S19471C139S19471C12__A2__8S19471C1[4]),  4,5},
  {&(_tg__ZTV8S19471C5__8S19471C88S19471C79S19471C149S19471C139S19471C12__A2__8S19471C1[5]),  5,8},
  {&(_tg__ZTV8S19471C68S19471C79S19471C149S19471C139S19471C12__A5__8S19471C1[3]),  3,6},
  {&(_tg__ZTV8S19471C5__8S19471C79S19471C149S19471C139S19471C12__A2__8S19471C1[5]),  5,8},
  {&(_tg__ZTV8S19471C6__8S19471C79S19471C149S19471C139S19471C12__A2__8S19471C1[3]),  3,6},
  {&(_tg__ZTV8S19471C89S19471C149S19471C139S19471C12__A3__8S19471C1[4]),  4,5},
  {&(_tg__ZTV8S19471C5__8S19471C89S19471C149S19471C139S19471C12__A3__8S19471C1[5]),  5,8},
  {&(_tg__ZTV8S19471C69S19471C149S19471C139S19471C12__A6__8S19471C1[3]),  3,6},
  {&(_tg__ZTV8S19471C5__9S19471C149S19471C139S19471C12__8S19471C1[5]),  5,8},
  {&(_tg__ZTV8S19471C68S19471C7__9S19471C149S19471C139S19471C12__8S19471C1[3]),  3,6},
  {&(_tg__ZTV8S19471C8__A1__9S19471C149S19471C139S19471C12__8S19471C1[4]),  4,5},
  {&(_tg__ZTV8S19471C6__A1__9S19471C149S19471C139S19471C12__8S19471C1[3]),  3,6},
  {&(_tg__ZTV8S19471C2__9S19471C139S19471C12__8S19471C1[12]),  12,15},
  {&(_tg__ZTV8S19471C5__A1__9S19471C139S19471C12__8S19471C1[5]),  5,8},
  {&(_tg__ZTV8S19471C6__A1__9S19471C139S19471C12__8S19471C1[6]),  6,9},
  {&(_tg__ZTV8S19471C7__9S19471C139S19471C12__8S19471C1[9]),  9,11},
  {&(_tg__ZTV8S19471C68S19471C7__A2__9S19471C139S19471C12__8S19471C1[3]),  3,6},
  {&(_tg__ZTV8S19471C98S19471C2__9S19471C139S19471C12__8S19471C1[2]),  2,8},
  {&(_tg__ZTV8S19471C7__A__9S19471C139S19471C12__8S19471C1[4]),  4,6},
  {&(_tg__ZTV8S19471C68S19471C7__A3__9S19471C139S19471C12__8S19471C1[3]),  3,6},
  {&(_tg__ZTV9S19471C14__9S19471C139S19471C12__8S19471C1[4]),  4,7},
  {&(_tg__ZTV8S19471C68S19471C79S19471C14__A4__9S19471C139S19471C12__8S19471C1[3]),  3,6},
  {&(_tg__ZTV8S19471C89S19471C14__A3__9S19471C139S19471C12__8S19471C1[4]),  4,5},
  {&(_tg__ZTV8S19471C69S19471C14__A5__9S19471C139S19471C12__8S19471C1[3]),  3,6},
  {&(_tg__ZTV8S19471C89S19471C12__A4__8S19471C1[4]),  4,5},
  {&(_tg__ZTV8S19471C5__8S19471C89S19471C12__A4__8S19471C1[5]),  5,8},
  {&(_tg__ZTV8S19471C6__9S19471C12__8S19471C1[6]),  6,9},
  {&(_tg__ZTV8S19471C5__A1__9S19471C12__8S19471C1[5]),  5,8},
  {&(_tg__ZTV8S19471C7__9S19471C12__8S19471C1[9]),  9,11},
  {&(_tg__ZTV8S19471C68S19471C7__A1__9S19471C12__8S19471C1[3]),  3,6},
  {&(_tg__ZTV9S19471C13__9S19471C12__8S19471C1[7]),  7,12},
  {&(_tg__ZTV8S19471C2__A1__9S19471C12__8S19471C1[12]),  12,15},
  {&(_tg__ZTV8S19471C98S19471C2__A1__9S19471C12__8S19471C1[2]),  2,8},
  {&(_tg__ZTV8S19471C79S19471C13__A1__9S19471C12__8S19471C1[4]),  4,6},
  {&(_tg__ZTV8S19471C68S19471C79S19471C13__A3__9S19471C12__8S19471C1[3]),  3,6},
  {&(_tg__ZTV9S19471C149S19471C13__9S19471C12__8S19471C1[4]),  4,7},
  {&(_tg__ZTV8S19471C68S19471C79S19471C149S19471C13__A4__9S19471C12__8S19471C1[3]),  3,6},
  {&(_tg__ZTV8S19471C89S19471C149S19471C13__A3__9S19471C12__8S19471C1[4]),  4,5},
  {&(_tg__ZTV8S19471C69S19471C149S19471C13__A5__9S19471C12__8S19471C1[3]),  3,6},
  {&(_tg__ZTV8S19471C8__A4__9S19471C12__8S19471C1[4]),  4,5},
};
extern VTBL_ENTRY _ZTI8S19471C1[];
extern  VTBL_ENTRY _ZTV8S19471C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19471C1[];
static VTBL_ENTRY alt_thunk_names26[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19471C10D0Ev,_ZTv0_n44_N9S19471C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19471C10D0Ev,_ZThn84_N9S19471C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19471C10D1Ev,_ZTv0_n44_N9S19471C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19471C10D1Ev,_ZThn84_N9S19471C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19471C1D0Ev,_ZTv0_n32_N8S19471C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn13536_N8S19471C1D0Ev,_ZThn10436_N8S19471C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19471C1D1Ev,_ZTv0_n32_N8S19471C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn13536_N8S19471C1D1Ev,_ZThn10436_N8S19471C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19471C1D0Ev,_ZTv0_n44_N8S19471C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn13264_N8S19471C1D0Ev,_ZThn10228_N8S19471C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19471C1D1Ev,_ZTv0_n44_N8S19471C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn13264_N8S19471C1D1Ev,_ZThn10228_N8S19471C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19471C1D0Ev,_ZTv0_n36_N8S19471C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn13152_N8S19471C1D0Ev,_ZThn10144_N8S19471C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19471C1D1Ev,_ZTv0_n36_N8S19471C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn13152_N8S19471C1D1Ev,_ZThn10144_N8S19471C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19471C1D0Ev,_ZTv0_n28_N8S19471C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10912_N8S19471C1D0Ev,_ZThn8400_N8S19471C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19471C1D1Ev,_ZTv0_n28_N8S19471C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10912_N8S19471C1D1Ev,_ZThn8400_N8S19471C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19471C1 = {  "S19471C1", // class name
  bases_S19471C1, 51,
  &(vtc_S19471C1[0]), // expected_vtbl_contents
  &(vtt_S19471C1[0]), // expected_vtt_contents
  ABISELECT(19040,14652), // object size
  NSPAIRA(_ZTI8S19471C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19471C1),183, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19471C1),112, //virtual table table var
  37, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names26,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20468C3  : S3216C8_nt {
  ::S3216C8_nt s20468c3f0[3];
  ::S3216C8_nt s20468c3f1[2];
  void *s20468c3f2;
  short s20468c3f3;
  ::S3216C8_nt s20468c3f4;
  virtual void  v2(); // _ZN8S20468C32v2Ev
  virtual void  v3(); // _ZN8S20468C32v3Ev
  virtual void  v4(); // _ZN8S20468C32v4Ev
  ~S20468C3(); // tgen
  S20468C3(); // tgen
};
//SIG(-1 S20468C3) C1{ BC2{ m Fi} v1 v2 v3 FC2[3] FC2[2] Fp Fs FC2}


void  S20468C3 ::v2(){vfunc_called(this, "_ZN8S20468C32v2Ev");}
void  S20468C3 ::v3(){vfunc_called(this, "_ZN8S20468C32v3Ev");}
void  S20468C3 ::v4(){vfunc_called(this, "_ZN8S20468C32v4Ev");}
S20468C3 ::~S20468C3(){ note_dtor("S20468C3", this);} // tgen
S20468C3 ::S20468C3(){ note_ctor("S20468C3", this);} // tgen

static void Test_S20468C3()
{
  extern Class_Descriptor cd_S20468C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,11)];
    init_test(&cd_S20468C3, buf);
    S20468C3 *dp, &lv = *(dp=new (buf) S20468C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S20468C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20468C3)");
    check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(8,4), "S20468C3");
    check_field_offset(lv, s20468c3f0, ABISELECT(12,8), "S20468C3.s20468c3f0");
    check_field_offset(lv, s20468c3f1, ABISELECT(24,20), "S20468C3.s20468c3f1");
    check_field_offset(lv, s20468c3f2, ABISELECT(32,28), "S20468C3.s20468c3f2");
    check_field_offset(lv, s20468c3f3, ABISELECT(40,32), "S20468C3.s20468c3f3");
    check_field_offset(lv, s20468c3f4, ABISELECT(44,36), "S20468C3.s20468c3f4");
    test_class_info(&lv, &cd_S20468C3);
    dp->~S20468C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20468C3(Test_S20468C3, "S20468C3", ABISELECT(48,40));

#else // __cplusplus

extern void _ZN8S20468C3C1Ev();
extern void _ZN8S20468C3D1Ev();
Name_Map name_map_S20468C3[] = {
  NSPAIR(_ZN8S20468C3C1Ev),
  NSPAIR(_ZN8S20468C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S20468C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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 _ZTI8S20468C3[];
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY vtc_S20468C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C3[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern VTBL_ENTRY _ZTI8S20468C3[];
extern  VTBL_ENTRY _ZTV8S20468C3[];
Class_Descriptor cd_S20468C3 = {  "S20468C3", // class name
  bases_S20468C3, 1,
  &(vtc_S20468C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,40), // object size
  NSPAIRA(_ZTI8S20468C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20468C3),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  S20468C5  : virtual S20468C3 , virtual S3216C8_nt {
  ::S20468C3 s20468c5f0;
  long double s20468c5f1;
  void *s20468c5f2[2];
  ::S20468C3 s20468c5f3;
  virtual void  v5(); // _ZN8S20468C52v5Ev
  ~S20468C5(); // tgen
  S20468C5(); // tgen
};
//SIG(-1 S20468C5) C1{ VBC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC3 v1 FC2 FD Fp[2] FC2}


void  S20468C5 ::v5(){vfunc_called(this, "_ZN8S20468C52v5Ev");}
S20468C5 ::~S20468C5(){ note_dtor("S20468C5", this);} // tgen
S20468C5 ::S20468C5(){ note_ctor("S20468C5", this);} // tgen

static void Test_S20468C5()
{
  extern Class_Descriptor cd_S20468C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,38)];
    init_test(&cd_S20468C5, buf);
    S20468C5 *dp, &lv = *(dp=new (buf) S20468C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,148), "sizeof(S20468C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20468C5)");
    check_base_class_offset(lv, (S3216C8_nt*)(S20468C3*), ABISELECT(152,108), "S20468C5");
    check_base_class_offset(lv, (S20468C3*), ABISELECT(144,104), "S20468C5");
    /*is_ambiguous_... S20468C5::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(192,144), "S20468C5");
    check_field_offset(lv, s20468c5f0, ABISELECT(8,4), "S20468C5.s20468c5f0");
    check_field_offset(lv, s20468c5f1, ABISELECT(64,44), "S20468C5.s20468c5f1");
    check_field_offset(lv, s20468c5f2, ABISELECT(80,56), "S20468C5.s20468c5f2");
    check_field_offset(lv, s20468c5f3, ABISELECT(96,64), "S20468C5.s20468c5f3");
    test_class_info(&lv, &cd_S20468C5);
    dp->~S20468C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20468C5(Test_S20468C5, "S20468C5", ABISELECT(208,148));

#else // __cplusplus

extern void _ZN8S20468C5C1Ev();
extern void _ZN8S20468C5D1Ev();
Name_Map name_map_S20468C5[] = {
  NSPAIR(_ZN8S20468C5C1Ev),
  NSPAIR(_ZN8S20468C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C3;
extern VTBL_ENTRY _ZTI8S20468C3[];
extern  VTBL_ENTRY _ZTV8S20468C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S20468C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(152,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
    1, //immediately_derived
  0, 0},
  {&cd_S20468C3,    ABISELECT(144,104), //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(192,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20468C5[];
extern void _ZN8S20468C52v5Ev();
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY vtc_S20468C5[] = {
  ABISELECT(192,144),
  ABISELECT(144,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C5[0]),
  (VTBL_ENTRY)&_ZN8S20468C52v5Ev,
  0,
  0,
  0,
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20468C5[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern VTBL_ENTRY _ZTV8S20468C5[];
static  VTT_ENTRY vtt_S20468C5[] = {
  {&(_ZTV8S20468C5[4]),  4,13},
  {&(_ZTV8S20468C5[10]),  10,13},
};
extern VTBL_ENTRY _ZTI8S20468C5[];
extern  VTBL_ENTRY _ZTV8S20468C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C5[];
Class_Descriptor cd_S20468C5 = {  "S20468C5", // class name
  bases_S20468C5, 3,
  &(vtc_S20468C5[0]), // expected_vtbl_contents
  &(vtt_S20468C5[0]), // expected_vtt_contents
  ABISELECT(208,148), // object size
  NSPAIRA(_ZTI8S20468C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20468C5),13, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20468C5),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  S20468C6  : S20468C3 , virtual S3216C8_nt {
  long double s20468c6f0;
  __tsi64 s20468c6f1;
  ::S20468C3 s20468c6f2;
  void *s20468c6f3;
  short s20468c6f4[3];
  ~S20468C6(); // tgen
  S20468C6(); // tgen
};
//SIG(-1 S20468C6) C1{ BC2{ BC3{ m Fi} v1 v2 v3 FC3[3] FC3[2] Fp Fs FC3} VBC3 FD FL FC2 Fp Fs[3]}


S20468C6 ::~S20468C6(){ note_dtor("S20468C6", this);} // tgen
S20468C6 ::S20468C6(){ note_ctor("S20468C6", this);} // tgen

static void Test_S20468C6()
{
  extern Class_Descriptor cd_S20468C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,30)];
    init_test(&cd_S20468C6, buf);
    S20468C6 *dp, &lv = *(dp=new (buf) S20468C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,116), "sizeof(S20468C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20468C6)");
    check_base_class_offset(lv, (S3216C8_nt*)(S20468C3*), ABISELECT(8,4), "S20468C6");
    check_base_class_offset(lv, (S20468C3*), 0, "S20468C6");
    /*is_ambiguous_... S20468C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(136,112), "S20468C6");
    check_field_offset(lv, s20468c6f0, ABISELECT(48,40), "S20468C6.s20468c6f0");
    check_field_offset(lv, s20468c6f1, ABISELECT(64,52), "S20468C6.s20468c6f1");
    check_field_offset(lv, s20468c6f2, ABISELECT(72,60), "S20468C6.s20468c6f2");
    check_field_offset(lv, s20468c6f3, ABISELECT(120,100), "S20468C6.s20468c6f3");
    check_field_offset(lv, s20468c6f4, ABISELECT(128,104), "S20468C6.s20468c6f4");
    test_class_info(&lv, &cd_S20468C6);
    dp->~S20468C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20468C6(Test_S20468C6, "S20468C6", ABISELECT(144,116));

#else // __cplusplus

extern void _ZN8S20468C6C1Ev();
extern void _ZN8S20468C6D1Ev();
Name_Map name_map_S20468C6[] = {
  NSPAIR(_ZN8S20468C6C1Ev),
  NSPAIR(_ZN8S20468C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C3;
extern VTBL_ENTRY _ZTI8S20468C3[];
extern  VTBL_ENTRY _ZTV8S20468C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S20468C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S20468C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20468C6[];
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY vtc_S20468C6[] = {
  ABISELECT(136,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C6[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern VTBL_ENTRY _ZTV8S20468C6[];
static  VTT_ENTRY vtt_S20468C6[] = {
  {&(_ZTV8S20468C6[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S20468C6[];
extern  VTBL_ENTRY _ZTV8S20468C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C6[];
Class_Descriptor cd_S20468C6 = {  "S20468C6", // class name
  bases_S20468C6, 3,
  &(vtc_S20468C6[0]), // expected_vtbl_contents
  &(vtt_S20468C6[0]), // expected_vtt_contents
  ABISELECT(144,116), // object size
  NSPAIRA(_ZTI8S20468C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20468C6),6, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20468C6),1, //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  S20468C2  : virtual S20468C3 , virtual S3216C8_nt , S20468C5 , S20468C6 {
  void *s20468c2f0[2];
  long s20468c2f1;
  int s20468c2f2;
  ::S20468C3 s20468c2f3[5];
  virtual void  v6(); // _ZN8S20468C22v6Ev
  ~S20468C2(); // tgen
  S20468C2(); // tgen
};
//SIG(-1 S20468C2) C1{ VBC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC3 BC4{ VBC2 VBC3 v5 FC2 FD Fp[2] FC2} BC5{ BC2 VBC3 FD FL FC2 Fp Fs[3]} v1 Fp[2] Fl Fi FC2[5]}


void  S20468C2 ::v6(){vfunc_called(this, "_ZN8S20468C22v6Ev");}
S20468C2 ::~S20468C2(){ note_dtor("S20468C2", this);} // tgen
S20468C2 ::S20468C2(){ note_ctor("S20468C2", this);} // tgen

static void Test_S20468C2()
{
  extern Class_Descriptor cd_S20468C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(39,120)];
    init_test(&cd_S20468C2, buf);
    S20468C2 *dp, &lv = *(dp=new (buf) S20468C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(608,476), "sizeof(S20468C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20468C2)");
    /*is_ambiguous_... S20468C2::S20468C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C3*), ABISELECT(560,436), "S20468C2");
    /*is_ambiguous_... S20468C2::S20468C3 */ AMB_check_base_class_offset(lv, (S20468C3*), ABISELECT(552,432), "S20468C2");
    check_base_class_offset(lv, (S20468C3*)(S20468C5*), ABISELECT(552,432), "S20468C2");
    /*is_ambiguous_... S20468C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(600,472), "S20468C2");
    /*is_ambiguous_... S20468C5::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C5*), ABISELECT(600,472), "S20468C2");
    /*is_ambiguous_... S20468C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C6*), ABISELECT(600,472), "S20468C2");
    check_base_class_offset(lv, (S20468C5*), 0, "S20468C2");
    check_base_class_offset(lv, (S3216C8_nt*)(S20468C3*)(S20468C6*), ABISELECT(152,108), "S20468C2");
    check_base_class_offset(lv, (S20468C3*)(S20468C6*), ABISELECT(144,104), "S20468C2");
    check_base_class_offset(lv, (S20468C6*), ABISELECT(144,104), "S20468C2");
    check_field_offset(lv, s20468c2f0, ABISELECT(280,216), "S20468C2.s20468c2f0");
    check_field_offset(lv, s20468c2f1, ABISELECT(296,224), "S20468C2.s20468c2f1");
    check_field_offset(lv, s20468c2f2, ABISELECT(304,228), "S20468C2.s20468c2f2");
    check_field_offset(lv, s20468c2f3, ABISELECT(312,232), "S20468C2.s20468c2f3");
    test_class_info(&lv, &cd_S20468C2);
    dp->~S20468C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20468C2(Test_S20468C2, "S20468C2", ABISELECT(608,476));

#else // __cplusplus

extern void _ZN8S20468C2C1Ev();
extern void _ZN8S20468C2D1Ev();
Name_Map name_map_S20468C2[] = {
  NSPAIR(_ZN8S20468C2C1Ev),
  NSPAIR(_ZN8S20468C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C3;
extern VTBL_ENTRY _ZTI8S20468C3[];
extern  VTBL_ENTRY _ZTV8S20468C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C5;
extern VTBL_ENTRY _ZTI8S20468C5[];
extern  VTBL_ENTRY _ZTV8S20468C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C3;
extern VTBL_ENTRY _ZTI8S20468C3[];
extern  VTBL_ENTRY _ZTV8S20468C3[];
extern Class_Descriptor cd_S20468C6;
extern VTBL_ENTRY _ZTI8S20468C6[];
extern  VTBL_ENTRY _ZTV8S20468C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C6[];
static Base_Class bases_S20468C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(560,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
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20468C3,    ABISELECT(552,432), //bcp->offset
    12, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(600,472), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20468C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(152,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20468C3,    ABISELECT(144,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20468C6,    ABISELECT(144,104), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20468C2[];
extern void _ZN8S20468C52v5Ev();
extern void _ZN8S20468C22v6Ev();
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY vtc_S20468C2[] = {
  ABISELECT(600,472),
  ABISELECT(552,432),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C2[0]),
  (VTBL_ENTRY)&_ZN8S20468C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20468C22v6Ev,
  ABISELECT(456,368),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20468C2[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
  0,
  0,
  0,
  ABISELECT(-552,-432),
  (VTBL_ENTRY)&(_ZTI8S20468C2[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern VTBL_ENTRY _ZTV8S20468C2[];
extern void _ZN8S20468C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C5__8S20468C2[] = {
  ABISELECT(600,472),
  ABISELECT(552,432),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C5[0]),
  (VTBL_ENTRY)&_ZN8S20468C52v5Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C3__8S20468C5__8S20468C2[] = {
  0,
  0,
  0,
  ABISELECT(-552,-432),
  (VTBL_ENTRY)&(_ZTI8S20468C5[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C6__8S20468C2[] = {
  ABISELECT(456,368),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C6[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
static  VTT_ENTRY vtt_S20468C2[] = {
  {&(_ZTV8S20468C2[4]),  4,20},
  {&(_tg__ZTV8S20468C5__8S20468C2[4]),  4,5},
  {&(_tg__ZTV8S20468C3__8S20468C5__8S20468C2[5]),  5,8},
  {&(_tg__ZTV8S20468C6__8S20468C2[3]),  3,6},
  {&(_ZTV8S20468C2[17]),  17,20},
  {&(_ZTV8S20468C2[9]),  9,20},
};
extern VTBL_ENTRY _ZTI8S20468C2[];
extern  VTBL_ENTRY _ZTV8S20468C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C2[];
Class_Descriptor cd_S20468C2 = {  "S20468C2", // class name
  bases_S20468C2, 7,
  &(vtc_S20468C2[0]), // expected_vtbl_contents
  &(vtt_S20468C2[0]), // expected_vtt_contents
  ABISELECT(608,476), // object size
  NSPAIRA(_ZTI8S20468C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20468C2),20, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20468C2),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  S20468C10  : virtual S3216C8_nt , virtual S20468C3 , virtual S20468C6 {
  void *s20468c10f0[2];
  int s20468c10f1;
  ::S20468C6 s20468c10f2[8];
  long double s20468c10f3[9];
  ~S20468C10(); // tgen
  S20468C10(); // tgen
};
//SIG(-1 S20468C10) C1{ VBC2{ m Fi} VBC3{ BC2 v1 v2 v3 FC2[3] FC2[2] Fp Fs FC2} VBC4{ BC3 VBC2 FD FL FC3 Fp Fs[3]} Fp[2] Fi FC4[8] FD[9]}


S20468C10 ::~S20468C10(){ note_dtor("S20468C10", this);} // tgen
S20468C10 ::S20468C10(){ note_ctor("S20468C10", this);} // tgen

static void Test_S20468C10()
{
  extern Class_Descriptor cd_S20468C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(97,303)];
    init_test(&cd_S20468C10, buf);
    S20468C10 *dp, &lv = *(dp=new (buf) S20468C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1536,1208), "sizeof(S20468C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20468C10)");
    /*is_ambiguous_... S20468C10::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(1328,1052), "S20468C10");
    /*is_ambiguous_... S20468C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C6*), ABISELECT(1328,1052), "S20468C10");
    /*is_ambiguous_... S20468C10::S20468C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C3*), ABISELECT(1344,1060), "S20468C10");
    /*is_ambiguous_... S20468C10::S20468C3 */ AMB_check_base_class_offset(lv, (S20468C3*), ABISELECT(1336,1056), "S20468C10");
    check_base_class_offset(lv, (S3216C8_nt*)(S20468C3*)(S20468C6*), ABISELECT(1400,1100), "S20468C10");
    check_base_class_offset(lv, (S20468C3*)(S20468C6*), ABISELECT(1392,1096), "S20468C10");
    check_base_class_offset(lv, (S20468C6*), ABISELECT(1392,1096), "S20468C10");
    check_field_offset(lv, s20468c10f0, ABISELECT(8,4), "S20468C10.s20468c10f0");
    check_field_offset(lv, s20468c10f1, ABISELECT(24,12), "S20468C10.s20468c10f1");
    check_field_offset(lv, s20468c10f2, ABISELECT(32,16), "S20468C10.s20468c10f2");
    check_field_offset(lv, s20468c10f3, ABISELECT(1184,944), "S20468C10.s20468c10f3");
    test_class_info(&lv, &cd_S20468C10);
    dp->~S20468C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20468C10(Test_S20468C10, "S20468C10", ABISELECT(1536,1208));

#else // __cplusplus

extern void _ZN9S20468C10C1Ev();
extern void _ZN9S20468C10D1Ev();
Name_Map name_map_S20468C10[] = {
  NSPAIR(_ZN9S20468C10C1Ev),
  NSPAIR(_ZN9S20468C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C3;
extern VTBL_ENTRY _ZTI8S20468C3[];
extern  VTBL_ENTRY _ZTV8S20468C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C3;
extern VTBL_ENTRY _ZTI8S20468C3[];
extern  VTBL_ENTRY _ZTV8S20468C3[];
extern Class_Descriptor cd_S20468C6;
extern VTBL_ENTRY _ZTI8S20468C6[];
extern  VTBL_ENTRY _ZTV8S20468C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C6[];
static Base_Class bases_S20468C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(1328,1052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1344,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20468C3,    ABISELECT(1336,1056), //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1400,1100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20468C3,    ABISELECT(1392,1096), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20468C6,    ABISELECT(1392,1096), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //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 _ZTI9S20468C10[];
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY vtc_S20468C10[] = {
  ABISELECT(1392,1096),
  ABISELECT(1336,1056),
  ABISELECT(1328,1052),
  0,
  (VTBL_ENTRY)&(_ZTI9S20468C10[0]),
  0,
  0,
  0,
  ABISELECT(-1336,-1056),
  (VTBL_ENTRY)&(_ZTI9S20468C10[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
  0,
  0,
  0,
  ABISELECT(-64,-44),
  ABISELECT(-1392,-1096),
  (VTBL_ENTRY)&(_ZTI9S20468C10[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern VTBL_ENTRY _ZTV9S20468C10[];
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C6__9S20468C10[] = {
  ABISELECT(-64,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C6[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
static  VTT_ENTRY vtt_S20468C10[] = {
  {&(_ZTV9S20468C10[5]),  5,22},
  {&(_ZTV9S20468C10[10]),  10,22},
  {&(_ZTV9S20468C10[19]),  19,22},
  {&(_tg__ZTV8S20468C6__9S20468C10[3]),  3,6},
};
extern VTBL_ENTRY _ZTI9S20468C10[];
extern  VTBL_ENTRY _ZTV9S20468C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20468C10[];
Class_Descriptor cd_S20468C10 = {  "S20468C10", // class name
  bases_S20468C10, 6,
  &(vtc_S20468C10[0]), // expected_vtbl_contents
  &(vtt_S20468C10[0]), // expected_vtt_contents
  ABISELECT(1536,1208), // object size
  NSPAIRA(_ZTI9S20468C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20468C10),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20468C10),4, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20468C11  : S20468C3 {
  void *s20468c11f0[7];
  int s20468c11f1[2];
  __tsi64 s20468c11f2;
  int s20468c11f3;
  virtual  ~S20468C11(); // _ZN9S20468C11D1Ev
  virtual void  v7(); // _ZN9S20468C112v7Ev
  S20468C11(); // tgen
};
//SIG(-1 S20468C11) C1{ BC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} vd v1 Fp[7] Fi[2] FL Fi}


 S20468C11 ::~S20468C11(){ note_dtor("S20468C11", this);}
void  S20468C11 ::v7(){vfunc_called(this, "_ZN9S20468C112v7Ev");}
S20468C11 ::S20468C11(){ note_ctor("S20468C11", this);} // tgen

static void Test_S20468C11()
{
  extern Class_Descriptor cd_S20468C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,23)];
    init_test(&cd_S20468C11, buf);
    S20468C11 *dp, &lv = *(dp=new (buf) S20468C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,88), "sizeof(S20468C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20468C11)");
    check_base_class_offset(lv, (S3216C8_nt*)(S20468C3*), ABISELECT(8,4), "S20468C11");
    check_base_class_offset(lv, (S20468C3*), 0, "S20468C11");
    check_field_offset(lv, s20468c11f0, ABISELECT(48,40), "S20468C11.s20468c11f0");
    check_field_offset(lv, s20468c11f1, ABISELECT(104,68), "S20468C11.s20468c11f1");
    check_field_offset(lv, s20468c11f2, ABISELECT(112,76), "S20468C11.s20468c11f2");
    check_field_offset(lv, s20468c11f3, ABISELECT(120,84), "S20468C11.s20468c11f3");
    test_class_info(&lv, &cd_S20468C11);
    dp->~S20468C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20468C11(Test_S20468C11, "S20468C11", ABISELECT(128,88));

#else // __cplusplus

extern void _ZN9S20468C11C1Ev();
extern void _ZN9S20468C11D1Ev();
Name_Map name_map_S20468C11[] = {
  NSPAIR(_ZN9S20468C11C1Ev),
  NSPAIR(_ZN9S20468C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C3;
extern VTBL_ENTRY _ZTI8S20468C3[];
extern  VTBL_ENTRY _ZTV8S20468C3[];
static Base_Class bases_S20468C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S20468C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20468C11[];
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
extern void _ZN9S20468C11D1Ev();
extern void _ZN9S20468C11D0Ev();
extern void _ZN9S20468C112v7Ev();
static  VTBL_ENTRY vtc_S20468C11[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20468C11[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
  (VTBL_ENTRY)&_ZN9S20468C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20468C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20468C112v7Ev,
};
extern VTBL_ENTRY _ZTI9S20468C11[];
extern  VTBL_ENTRY _ZTV9S20468C11[];
Class_Descriptor cd_S20468C11 = {  "S20468C11", // class name
  bases_S20468C11, 2,
  &(vtc_S20468C11[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,88), // object size
  NSPAIRA(_ZTI9S20468C11),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20468C11),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  S20468C9  : S20468C10 , S3216C8_nt , virtual S20468C2 , S20468C11 {
  int s20468c9f0;
  void *s20468c9f1;
  int s20468c9f2;
  virtual  ~S20468C9(); // _ZN8S20468C9D2Ev
  virtual void  v8(); // _ZN8S20468C92v8Ev
  S20468C9(); // tgen
};
//SIG(-1 S20468C9) C1{ BC2{ VBC3{ m Fi} VBC4{ BC3 v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC5{ BC4 VBC3 FD FL FC4 Fp Fs[3]} Fp[2] Fi FC5[8] FD[9]} BC3 VBC6{ VBC4 VBC3 BC7{ VBC4 VBC3 v5 FC4 FD Fp[2] FC4} BC5 v6 Fp[2] Fl Fi FC4[5]} BC8{ BC4 vd v7 Fp[7] Fi[2] FL Fi} vd v1 Fi Fp Fi}


 S20468C9 ::~S20468C9(){ note_dtor("S20468C9", this);}
void  S20468C9 ::v8(){vfunc_called(this, "_ZN8S20468C92v8Ev");}
S20468C9 ::S20468C9(){ note_ctor("S20468C9", this);} // tgen

static void Test_S20468C9()
{
  extern Class_Descriptor cd_S20468C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(141,437)];
    init_test(&cd_S20468C9, buf);
    S20468C9 *dp, &lv = *(dp=new (buf) S20468C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2240,1744), "sizeof(S20468C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20468C9)");
    /*is_ambiguous_... S20468C10::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C10*), ABISELECT(1476,1156), "S20468C9");
    /*is_ambiguous_... S20468C9::S20468C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C6*), ABISELECT(1476,1156), "S20468C9");
    /*is_ambiguous_... S20468C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C2*), ABISELECT(1476,1156), "S20468C9");
    /*is_ambiguous_... S20468C5::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C5*)(S20468C2*), ABISELECT(1476,1156), "S20468C9");
    /*is_ambiguous_... S20468C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C6*)(S20468C2*), ABISELECT(1476,1156), "S20468C9");
    /*is_ambiguous_... S20468C9::S20468C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C3*), ABISELECT(1488,1164), "S20468C9");
    /*is_ambiguous_... S20468C10::S20468C3 */ AMB_check_base_class_offset(lv, (S20468C3*)(S20468C10*), ABISELECT(1480,1160), "S20468C9");
    /*is_ambiguous_... S20468C2::S20468C3 */ AMB_check_base_class_offset(lv, (S20468C3*)(S20468C2*), ABISELECT(1480,1160), "S20468C9");
    check_base_class_offset(lv, (S20468C3*)(S20468C5*)(S20468C2*), ABISELECT(1480,1160), "S20468C9");
    /*is_ambiguous_... S20468C9::S20468C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C3*)(S20468C6*), ABISELECT(1544,1204), "S20468C9");
    /*is_ambiguous_... S20468C9::S20468C6 */ AMB_check_base_class_offset(lv, (S20468C3*)(S20468C6*), ABISELECT(1536,1200), "S20468C9");
    check_base_class_offset(lv, (S20468C6*)(S20468C10*), ABISELECT(1536,1200), "S20468C9");
    check_base_class_offset(lv, (S20468C10*), 0, "S20468C9");
    /*is_ambiguous_... S20468C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(1328,1052), "S20468C9");
    check_base_class_offset(lv, (S20468C5*)(S20468C2*), ABISELECT(1680,1312), "S20468C9");
    check_base_class_offset(lv, (S3216C8_nt*)(S20468C3*)(S20468C6*)(S20468C2*), ABISELECT(1832,1420), "S20468C9");
    check_base_class_offset(lv, (S20468C3*)(S20468C6*)(S20468C2*), ABISELECT(1824,1416), "S20468C9");
    check_base_class_offset(lv, (S20468C6*)(S20468C2*), ABISELECT(1824,1416), "S20468C9");
    check_base_class_offset(lv, (S20468C2*), ABISELECT(1680,1312), "S20468C9");
    check_base_class_offset(lv, (S3216C8_nt*)(S20468C3*)(S20468C11*), ABISELECT(1344,1060), "S20468C9");
    check_base_class_offset(lv, (S20468C3*)(S20468C11*), ABISELECT(1336,1056), "S20468C9");
    check_base_class_offset(lv, (S20468C11*), ABISELECT(1336,1056), "S20468C9");
    check_field_offset(lv, s20468c9f0, ABISELECT(1460,1144), "S20468C9.s20468c9f0");
    check_field_offset(lv, s20468c9f1, ABISELECT(1464,1148), "S20468C9.s20468c9f1");
    check_field_offset(lv, s20468c9f2, ABISELECT(1472,1152), "S20468C9.s20468c9f2");
    test_class_info(&lv, &cd_S20468C9);
    dp->~S20468C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20468C9(Test_S20468C9, "S20468C9", ABISELECT(2240,1744));

#else // __cplusplus

extern void _ZN8S20468C9C1Ev();
extern void _ZN8S20468C9D2Ev();
Name_Map name_map_S20468C9[] = {
  NSPAIR(_ZN8S20468C9C1Ev),
  NSPAIR(_ZN8S20468C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C3;
extern VTBL_ENTRY _ZTI8S20468C3[];
extern  VTBL_ENTRY _ZTV8S20468C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C3;
extern VTBL_ENTRY _ZTI8S20468C3[];
extern  VTBL_ENTRY _ZTV8S20468C3[];
extern Class_Descriptor cd_S20468C6;
extern VTBL_ENTRY _ZTI8S20468C6[];
extern  VTBL_ENTRY _ZTV8S20468C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C6[];
extern Class_Descriptor cd_S20468C10;
extern VTBL_ENTRY _ZTI9S20468C10[];
extern  VTBL_ENTRY _ZTV9S20468C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20468C10[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C5;
extern VTBL_ENTRY _ZTI8S20468C5[];
extern  VTBL_ENTRY _ZTV8S20468C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C3;
extern VTBL_ENTRY _ZTI8S20468C3[];
extern  VTBL_ENTRY _ZTV8S20468C3[];
extern Class_Descriptor cd_S20468C6;
extern VTBL_ENTRY _ZTI8S20468C6[];
extern  VTBL_ENTRY _ZTV8S20468C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C6[];
extern Class_Descriptor cd_S20468C2;
extern VTBL_ENTRY _ZTI8S20468C2[];
extern  VTBL_ENTRY _ZTV8S20468C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C3;
extern VTBL_ENTRY _ZTI8S20468C3[];
extern  VTBL_ENTRY _ZTV8S20468C3[];
extern Class_Descriptor cd_S20468C11;
extern VTBL_ENTRY _ZTI9S20468C11[];
extern  VTBL_ENTRY _ZTV9S20468C11[];
static Base_Class bases_S20468C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(1476,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
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1488,1164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20468C3,    ABISELECT(1480,1160), //bcp->offset
    17, //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
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1544,1204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20468C3,    ABISELECT(1536,1200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20468C6,    ABISELECT(1536,1200), //bcp->offset
    25, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20468C10,    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_S3216C8_nt,    ABISELECT(1328,1052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20468C5,    ABISELECT(1680,1312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1832,1420), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20468C3,    ABISELECT(1824,1416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20468C6,    ABISELECT(1824,1416), //bcp->offset
    45, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20468C2,    ABISELECT(1680,1312), //bcp->offset
    34, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1344,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20468C3,    ABISELECT(1336,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
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20468C11,    ABISELECT(1336,1056), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20468C9[];
extern void _ZN8S20468C9D1Ev();
extern void _ZN8S20468C9D0Ev();
extern void _ZN8S20468C92v8Ev();
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
extern void ABISELECT(_ZThn1336_N8S20468C9D1Ev,_ZThn1056_N8S20468C9D1Ev)();
extern void ABISELECT(_ZThn1336_N8S20468C9D0Ev,_ZThn1056_N8S20468C9D0Ev)();
extern void _ZN9S20468C112v7Ev();
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
extern void _ZN8S20468C52v5Ev();
extern void _ZN8S20468C22v6Ev();
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY vtc_S20468C9[] = {
  ABISELECT(1680,1312),
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C9[0]),
  (VTBL_ENTRY)&_ZN8S20468C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20468C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20468C92v8Ev,
  ABISELECT(-1336,-1056),
  (VTBL_ENTRY)&(_ZTI8S20468C9[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1336_N8S20468C9D1Ev,_ZThn1056_N8S20468C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1336_N8S20468C9D0Ev,_ZThn1056_N8S20468C9D0Ev),
  (VTBL_ENTRY)&_ZN9S20468C112v7Ev,
  0,
  0,
  0,
  ABISELECT(-1480,-1160),
  (VTBL_ENTRY)&(_ZTI8S20468C9[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(-1536,-1200),
  (VTBL_ENTRY)&(_ZTI8S20468C9[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  ABISELECT(-1680,-1312),
  (VTBL_ENTRY)&(_ZTI8S20468C9[0]),
  (VTBL_ENTRY)&_ZN8S20468C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20468C22v6Ev,
  ABISELECT(-348,-260),
  ABISELECT(-1824,-1416),
  (VTBL_ENTRY)&(_ZTI8S20468C9[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern VTBL_ENTRY _ZTV8S20468C9[];
static  VTBL_ENTRY _tg__ZTV9S20468C10__8S20468C9[] = {
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  0,
  (VTBL_ENTRY)&(_ZTI9S20468C10[0]),
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C3__9S20468C10__8S20468C9[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1160),
  (VTBL_ENTRY)&(_ZTI9S20468C10[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C6__9S20468C10__8S20468C9[] = {
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(-1536,-1200),
  (VTBL_ENTRY)&(_ZTI9S20468C10[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C6__8S20468C9[] = {
  ABISELECT(-60,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C6[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C52v5Ev();
extern void _ZN8S20468C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C2__8S20468C9[] = {
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C2[0]),
  (VTBL_ENTRY)&_ZN8S20468C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20468C22v6Ev,
};
extern void _ZN8S20468C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C58S20468C2__8S20468C9[] = {
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C5[0]),
  (VTBL_ENTRY)&_ZN8S20468C52v5Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C3__8S20468C58S20468C2__8S20468C9[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S20468C5[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C68S20468C2__A1__8S20468C9[] = {
  ABISELECT(-348,-260),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C6[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C3__8S20468C2__8S20468C9[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S20468C2[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C6__8S20468C2__8S20468C9[] = {
  ABISELECT(-348,-260),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20468C2[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
static  VTT_ENTRY vtt_S20468C9[] = {
  {&(_ZTV8S20468C9[6]),  6,51},
  {&(_tg__ZTV9S20468C10__8S20468C9[5]),  5,5},
  {&(_tg__ZTV8S20468C3__9S20468C10__8S20468C9[5]),  5,8},
  {&(_tg__ZTV8S20468C6__9S20468C10__8S20468C9[6]),  6,9},
  {&(_ZTV8S20468C9[22]),  22,51},
  {&(_ZTV8S20468C9[31]),  31,51},
  {&(_ZTV8S20468C9[43]),  43,51},
  {&(_ZTV8S20468C9[48]),  48,51},
  {&(_tg__ZTV8S20468C6__8S20468C9[3]),  3,6},
  {&(_tg__ZTV8S20468C2__8S20468C9[4]),  4,6},
  {&(_tg__ZTV8S20468C58S20468C2__8S20468C9[4]),  4,5},
  {&(_tg__ZTV8S20468C3__8S20468C58S20468C2__8S20468C9[5]),  5,8},
  {&(_tg__ZTV8S20468C68S20468C2__A1__8S20468C9[3]),  3,6},
  {&(_tg__ZTV8S20468C3__8S20468C2__8S20468C9[5]),  5,8},
  {&(_tg__ZTV8S20468C6__8S20468C2__8S20468C9[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S20468C9[];
extern  VTBL_ENTRY _ZTV8S20468C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C9[];
Class_Descriptor cd_S20468C9 = {  "S20468C9", // class name
  bases_S20468C9, 16,
  &(vtc_S20468C9[0]), // expected_vtbl_contents
  &(vtt_S20468C9[0]), // expected_vtt_contents
  ABISELECT(2240,1744), // object size
  NSPAIRA(_ZTI8S20468C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20468C9),51, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20468C9),15, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20468C8  : S20468C3 , S20468C6 , virtual S20468C9 {
  void *s20468c8f0;
  int s20468c8f1;
  ::S20468C3 s20468c8f2;
  int s20468c8f3;
  void *s20468c8f4;
  ~S20468C8(); // tgen
  S20468C8(); // tgen
};
//SIG(-1 S20468C8) C1{ BC2{ BC3{ m Fi} v1 v2 v3 FC3[3] FC3[2] Fp Fs FC3} BC4{ BC2 VBC3 FD FL FC2 Fp Fs[3]} VBC5{ BC6{ VBC3 VBC2 VBC4 Fp[2] Fi FC4[8] FD[9]} BC3 VBC7{ VBC2 VBC3 BC8{ VBC2 VBC3 v4 FC2 FD Fp[2] FC2} BC4 v5 Fp[2] Fl Fi FC2[5]} BC9{ BC2 vd v6 Fp[7] Fi[2] FL Fi} vd v7 Fi Fp Fi} Fp Fi FC2 Fi Fp}


S20468C8 ::~S20468C8(){ note_dtor("S20468C8", this);} // tgen
S20468C8 ::S20468C8(){ note_ctor("S20468C8", this);} // tgen

static void Test_S20468C8()
{
  extern Class_Descriptor cd_S20468C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(158,489)];
    init_test(&cd_S20468C8, buf);
    S20468C8 *dp, &lv = *(dp=new (buf) S20468C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2512,1952), "sizeof(S20468C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20468C8)");
    /*is_ambiguous_... S20468C8::S20468C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C3*), ABISELECT(8,4), "S20468C8");
    /*is_ambiguous_... S20468C8::S20468C3 */ AMB_check_base_class_offset(lv, (S20468C3*), 0, "S20468C8");
    /*is_ambiguous_... S20468C8::S20468C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C3*)(S20468C6*), ABISELECT(56,44), "S20468C8");
    /*is_ambiguous_... S20468C8::S20468C6 */ AMB_check_base_class_offset(lv, (S20468C3*)(S20468C6*), ABISELECT(48,40), "S20468C8");
    /*is_ambiguous_... S20468C8::S20468C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C6*), ABISELECT(264,208), "S20468C8");
    /*is_ambiguous_... S20468C10::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C10*)(S20468C9*), ABISELECT(264,208), "S20468C8");
    /*is_ambiguous_... S20468C8::S20468C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C6*), ABISELECT(264,208), "S20468C8");
    /*is_ambiguous_... S20468C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C2*), ABISELECT(264,208), "S20468C8");
    /*is_ambiguous_... S20468C5::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C5*)(S20468C2*), ABISELECT(264,208), "S20468C8");
    /*is_ambiguous_... S20468C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C6*)(S20468C2*), ABISELECT(264,208), "S20468C8");
    /*is_ambiguous_... S20468C8::S20468C6 */ AMB_check_base_class_offset(lv, (S20468C6*), ABISELECT(48,40), "S20468C8");
    /*is_ambiguous_... S20468C8::S20468C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C3*), ABISELECT(1760,1372), "S20468C8");
    /*is_ambiguous_... S20468C10::S20468C3 */ AMB_check_base_class_offset(lv, (S20468C3*)(S20468C10*)(S20468C9*), ABISELECT(1752,1368), "S20468C8");
    /*is_ambiguous_... S20468C2::S20468C3 */ AMB_check_base_class_offset(lv, (S20468C3*)(S20468C2*), ABISELECT(1752,1368), "S20468C8");
    check_base_class_offset(lv, (S20468C3*)(S20468C5*)(S20468C2*), ABISELECT(1752,1368), "S20468C8");
    /*is_ambiguous_... S20468C8::S20468C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C3*)(S20468C6*), ABISELECT(1816,1412), "S20468C8");
    /*is_ambiguous_... S20468C8::S20468C6 */ AMB_check_base_class_offset(lv, (S20468C3*)(S20468C6*), ABISELECT(1808,1408), "S20468C8");
    check_base_class_offset(lv, (S20468C6*)(S20468C10*)(S20468C9*), ABISELECT(1808,1408), "S20468C8");
    check_base_class_offset(lv, (S20468C10*)(S20468C9*), ABISELECT(272,212), "S20468C8");
    /*is_ambiguous_... S20468C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C9*), ABISELECT(1600,1264), "S20468C8");
    check_base_class_offset(lv, (S20468C5*)(S20468C2*), ABISELECT(1952,1520), "S20468C8");
    check_base_class_offset(lv, (S3216C8_nt*)(S20468C3*)(S20468C6*)(S20468C2*), ABISELECT(2104,1628), "S20468C8");
    check_base_class_offset(lv, (S20468C3*)(S20468C6*)(S20468C2*), ABISELECT(2096,1624), "S20468C8");
    check_base_class_offset(lv, (S20468C6*)(S20468C2*), ABISELECT(2096,1624), "S20468C8");
    check_base_class_offset(lv, (S20468C2*)(S20468C9*), ABISELECT(1952,1520), "S20468C8");
    check_base_class_offset(lv, (S3216C8_nt*)(S20468C3*)(S20468C11*)(S20468C9*), ABISELECT(1616,1272), "S20468C8");
    check_base_class_offset(lv, (S20468C3*)(S20468C11*)(S20468C9*), ABISELECT(1608,1268), "S20468C8");
    check_base_class_offset(lv, (S20468C11*)(S20468C9*), ABISELECT(1608,1268), "S20468C8");
    check_base_class_offset(lv, (S20468C9*), ABISELECT(272,212), "S20468C8");
    check_field_offset(lv, s20468c8f0, ABISELECT(184,152), "S20468C8.s20468c8f0");
    check_field_offset(lv, s20468c8f1, ABISELECT(192,156), "S20468C8.s20468c8f1");
    check_field_offset(lv, s20468c8f2, ABISELECT(200,160), "S20468C8.s20468c8f2");
    check_field_offset(lv, s20468c8f3, ABISELECT(248,200), "S20468C8.s20468c8f3");
    check_field_offset(lv, s20468c8f4, ABISELECT(256,204), "S20468C8.s20468c8f4");
    test_class_info(&lv, &cd_S20468C8);
    dp->~S20468C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20468C8(Test_S20468C8, "S20468C8", ABISELECT(2512,1952));

#else // __cplusplus

extern void _ZN8S20468C8C1Ev();
extern void _ZN8S20468C8D1Ev();
Name_Map name_map_S20468C8[] = {
  NSPAIR(_ZN8S20468C8C1Ev),
  NSPAIR(_ZN8S20468C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C3;
extern VTBL_ENTRY _ZTI8S20468C3[];
extern  VTBL_ENTRY _ZTV8S20468C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C3;
extern VTBL_ENTRY _ZTI8S20468C3[];
extern  VTBL_ENTRY _ZTV8S20468C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C6;
extern VTBL_ENTRY _ZTI8S20468C6[];
extern  VTBL_ENTRY _ZTV8S20468C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C3;
extern VTBL_ENTRY _ZTI8S20468C3[];
extern  VTBL_ENTRY _ZTV8S20468C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C3;
extern VTBL_ENTRY _ZTI8S20468C3[];
extern  VTBL_ENTRY _ZTV8S20468C3[];
extern Class_Descriptor cd_S20468C6;
extern VTBL_ENTRY _ZTI8S20468C6[];
extern  VTBL_ENTRY _ZTV8S20468C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C6[];
extern Class_Descriptor cd_S20468C10;
extern VTBL_ENTRY _ZTI9S20468C10[];
extern  VTBL_ENTRY _ZTV9S20468C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20468C10[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C5;
extern VTBL_ENTRY _ZTI8S20468C5[];
extern  VTBL_ENTRY _ZTV8S20468C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C3;
extern VTBL_ENTRY _ZTI8S20468C3[];
extern  VTBL_ENTRY _ZTV8S20468C3[];
extern Class_Descriptor cd_S20468C6;
extern VTBL_ENTRY _ZTI8S20468C6[];
extern  VTBL_ENTRY _ZTV8S20468C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C6[];
extern Class_Descriptor cd_S20468C2;
extern VTBL_ENTRY _ZTI8S20468C2[];
extern  VTBL_ENTRY _ZTV8S20468C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C3;
extern VTBL_ENTRY _ZTI8S20468C3[];
extern  VTBL_ENTRY _ZTV8S20468C3[];
extern Class_Descriptor cd_S20468C11;
extern VTBL_ENTRY _ZTI9S20468C11[];
extern  VTBL_ENTRY _ZTV9S20468C11[];
extern Class_Descriptor cd_S20468C9;
extern VTBL_ENTRY _ZTI8S20468C9[];
extern  VTBL_ENTRY _ZTV8S20468C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C9[];
static Base_Class bases_S20468C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S20468C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3216C8_nt,    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
    3, //immediately_derived
  0, 0},
  {&cd_S20468C3,    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
    13, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(264,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
    5, //immediately_derived
  0, 1},
  {&cd_S20468C6,    ABISELECT(48,40), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(1760,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
    7, //immediately_derived
  0, 0},
  {&cd_S20468C3,    ABISELECT(1752,1368), //bcp->offset
    41, //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
    1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1816,1412), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20468C3,    ABISELECT(1808,1408), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20468C6,    ABISELECT(1808,1408), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20468C10,    ABISELECT(272,212), //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
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1600,1264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20468C5,    ABISELECT(1952,1520), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(2104,1628), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20468C3,    ABISELECT(2096,1624), //bcp->offset
    -1, //bcp->virtual_function_table_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
    16, //immediately_derived
  0, 0},
  {&cd_S20468C6,    ABISELECT(2096,1624), //bcp->offset
    69, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20468C2,    ABISELECT(1952,1520), //bcp->offset
    58, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1616,1272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20468C3,    ABISELECT(1608,1268), //bcp->offset
    -1, //bcp->virtual_function_table_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
    20, //immediately_derived
  0, 0},
  {&cd_S20468C11,    ABISELECT(1608,1268), //bcp->offset
    33, //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
    21, //immediately_derived
  0, 0},
  {&cd_S20468C9,    ABISELECT(272,212), //bcp->offset
    18, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20468C8[];
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
extern void _ZN8S20468C8D1Ev();
extern void _ZN8S20468C8D0Ev();
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
extern void ABISELECT(_ZTv0_n56_N8S20468C8D1Ev,_ZTv0_n28_N8S20468C8D1Ev)();
extern void ABISELECT(_ZThn272_N8S20468C8D1Ev,_ZThn212_N8S20468C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20468C8D0Ev,_ZTv0_n28_N8S20468C8D0Ev)();
extern void ABISELECT(_ZThn272_N8S20468C8D0Ev,_ZThn212_N8S20468C8D0Ev)() __attribute__((weak));
extern void _ZN8S20468C92v8Ev();
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N8S20468C8D1Ev,_ZTvn1056_n28_N8S20468C8D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N8S20468C8D0Ev,_ZTvn1056_n28_N8S20468C8D0Ev)();
extern void _ZN9S20468C112v7Ev();
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
extern void _ZN8S20468C52v5Ev();
extern void _ZN8S20468C22v6Ev();
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY vtc_S20468C8[] = {
  ABISELECT(1952,1520),
  ABISELECT(1808,1408),
  ABISELECT(1752,1368),
  ABISELECT(272,212),
  ABISELECT(264,208),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C8[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20468C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20468C8D0Ev,
  ABISELECT(216,168),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI8S20468C8[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-272,-212),
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  ABISELECT(-272,-212),
  (VTBL_ENTRY)&(_ZTI8S20468C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20468C8D1Ev,_ZTv0_n28_N8S20468C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20468C8D0Ev,_ZTv0_n28_N8S20468C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20468C92v8Ev,
  ABISELECT(-1608,-1268),
  (VTBL_ENTRY)&(_ZTI8S20468C8[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20468C8D1Ev,_ZTvn1056_n28_N8S20468C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20468C8D0Ev,_ZTvn1056_n28_N8S20468C8D0Ev),
  (VTBL_ENTRY)&_ZN9S20468C112v7Ev,
  0,
  0,
  0,
  ABISELECT(-1752,-1368),
  (VTBL_ENTRY)&(_ZTI8S20468C8[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-1808,-1408),
  (VTBL_ENTRY)&(_ZTI8S20468C8[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-1952,-1520),
  (VTBL_ENTRY)&(_ZTI8S20468C8[0]),
  (VTBL_ENTRY)&_ZN8S20468C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20468C22v6Ev,
  ABISELECT(-1832,-1416),
  ABISELECT(-2096,-1624),
  (VTBL_ENTRY)&(_ZTI8S20468C8[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern VTBL_ENTRY _ZTV8S20468C8[];
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C6__A__8S20468C8[] = {
  ABISELECT(216,168),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C6[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C9D1Ev();
extern void _ZN8S20468C9D0Ev();
extern void _ZN8S20468C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C9__8S20468C8[] = {
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C9[0]),
  (VTBL_ENTRY)&_ZN8S20468C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20468C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20468C92v8Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20468C108S20468C9__8S20468C8[] = {
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20468C10[0]),
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C3__9S20468C108S20468C9__8S20468C8[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1156),
  (VTBL_ENTRY)&(_ZTI9S20468C10[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C6__9S20468C108S20468C9__8S20468C8[] = {
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-1536,-1196),
  (VTBL_ENTRY)&(_ZTI9S20468C10[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C3__8S20468C9__8S20468C8[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1156),
  (VTBL_ENTRY)&(_ZTI8S20468C9[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C6__8S20468C9__8S20468C8[] = {
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-1536,-1196),
  (VTBL_ENTRY)&(_ZTI8S20468C9[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C52v5Ev();
extern void _ZN8S20468C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C2__8S20468C9__8S20468C8[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-1680,-1308),
  (VTBL_ENTRY)&(_ZTI8S20468C9[0]),
  (VTBL_ENTRY)&_ZN8S20468C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20468C22v6Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C68S20468C2__A1__8S20468C9__8S20468C8[] = {
  ABISELECT(-1832,-1416),
  ABISELECT(-1824,-1412),
  (VTBL_ENTRY)&(_ZTI8S20468C9[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C6__A1__8S20468C8[] = {
  ABISELECT(-1544,-1200),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C6[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C52v5Ev();
extern void _ZN8S20468C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C2__8S20468C8[] = {
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C2[0]),
  (VTBL_ENTRY)&_ZN8S20468C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20468C22v6Ev,
};
extern void _ZN8S20468C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C58S20468C2__8S20468C8[] = {
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C5[0]),
  (VTBL_ENTRY)&_ZN8S20468C52v5Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C3__8S20468C58S20468C2__8S20468C8[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S20468C5[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C68S20468C2__A2__8S20468C8[] = {
  ABISELECT(-1832,-1416),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C6[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C3__8S20468C2__8S20468C8[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S20468C2[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C6__8S20468C2__8S20468C8[] = {
  ABISELECT(-1832,-1416),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20468C2[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
static  VTT_ENTRY vtt_S20468C8[] = {
  {&(_ZTV8S20468C8[7]),  7,75},
  {&(_tg__ZTV8S20468C6__A__8S20468C8[3]),  3,6},
  {&(_ZTV8S20468C8[15]),  15,75},
  {&(_ZTV8S20468C8[30]),  30,75},
  {&(_ZTV8S20468C8[46]),  46,75},
  {&(_ZTV8S20468C8[55]),  55,75},
  {&(_ZTV8S20468C8[67]),  67,75},
  {&(_ZTV8S20468C8[72]),  72,75},
  {&(_ZTV8S20468C8[35]),  35,75},
  {&(_tg__ZTV8S20468C9__8S20468C8[6]),  6,9},
  {&(_tg__ZTV9S20468C108S20468C9__8S20468C8[5]),  5,5},
  {&(_tg__ZTV8S20468C3__9S20468C108S20468C9__8S20468C8[5]),  5,8},
  {&(_tg__ZTV8S20468C6__9S20468C108S20468C9__8S20468C8[6]),  6,9},
  {&(_tg__ZTV8S20468C3__8S20468C9__8S20468C8[5]),  5,8},
  {&(_tg__ZTV8S20468C6__8S20468C9__8S20468C8[6]),  6,9},
  {&(_tg__ZTV8S20468C2__8S20468C9__8S20468C8[9]),  9,11},
  {&(_tg__ZTV8S20468C68S20468C2__A1__8S20468C9__8S20468C8[3]),  3,6},
  {&(_tg__ZTV8S20468C6__A1__8S20468C8[3]),  3,6},
  {&(_tg__ZTV8S20468C2__8S20468C8[4]),  4,6},
  {&(_tg__ZTV8S20468C58S20468C2__8S20468C8[4]),  4,5},
  {&(_tg__ZTV8S20468C3__8S20468C58S20468C2__8S20468C8[5]),  5,8},
  {&(_tg__ZTV8S20468C68S20468C2__A2__8S20468C8[3]),  3,6},
  {&(_tg__ZTV8S20468C3__8S20468C2__8S20468C8[5]),  5,8},
  {&(_tg__ZTV8S20468C6__8S20468C2__8S20468C8[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S20468C8[];
extern  VTBL_ENTRY _ZTV8S20468C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C8[];
static VTBL_ENTRY alt_thunk_names27[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20468C8D0Ev,_ZTv0_n28_N8S20468C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S20468C8D0Ev,_ZThn212_N8S20468C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20468C8D1Ev,_ZTv0_n28_N8S20468C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S20468C8D1Ev,_ZThn212_N8S20468C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20468C8 = {  "S20468C8", // class name
  bases_S20468C8, 22,
  &(vtc_S20468C8[0]), // expected_vtbl_contents
  &(vtt_S20468C8[0]), // expected_vtt_contents
  ABISELECT(2512,1952), // object size
  NSPAIRA(_ZTI8S20468C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20468C8),75, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20468C8),24, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names27,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20468C7  : S20468C8 , S20468C2 {
  ::S20644C16 s20468c7f0;
  void *s20468c7f1;
  unsigned int s20468c7f2:1;
  int s20468c7f3;
  int s20468c7f4:30;
  int s20468c7f5;
  virtual  ~S20468C7(); // _ZN8S20468C7D2Ev
  S20468C7(); // tgen
};
//SIG(-1 S20468C7) C1{ BC2{ BC3{ BC4{ m Fi} v1 v2 v3 FC4[3] FC4[2] Fp Fs FC4} BC5{ BC3 VBC4 FD FL FC3 Fp Fs[3]} VBC6{ BC7{ VBC4 VBC3 VBC5 Fp[2] Fi FC5[8] FD[9]} BC4 VBC8{ VBC3 VBC4 BC9{ VBC3 VBC4 v4 FC3 FD Fp[2] FC3} BC5 v5 Fp[2] Fl Fi FC3[5]} BC10{ BC3 vd v6 Fp[7] Fi[2] FL Fi} vd v7 Fi Fp Fi} Fp Fi FC3 Fi Fp} BC8 vd FC11{ VBC12{ BC13{ BC4 v8 v9 v10 FC4[3] FC4[2] Fp Fs FC4} VBC4 FD FL FC13 Fp Fs[3]} BC14{ BC15{ VBC4 VBC13 VBC12 Fp[2] Fi FC12[8] FD[9]} BC4 VBC16{ VBC13 VBC4 BC17{ VBC13 VBC4 v11 FC13 FD Fp[2] FC13} BC12 v12 Fp[2] Fl Fi FC13[5]} BC18{ BC13 vd v13 Fp[7] Fi[2] FL Fi} vd v14 Fi Fp Fi} BC19{ BC12 VBC14 BC16 BC20{ VBC4 BC16 BC17 BC12 v15 Fi FC21{} Fp[2]} vd Fi Fc[2] Fi FL FC21 Fp[8] Fs[5] FL FC22{ vd m Fc[2] Fi FL Fp[7] FU23{ m FL:3 Fi Fi Fi FD[8] Fp Fc[5] FD Fc[4] Fi Fp Fc[4] Fp}[4] FC15}} BC17 vd Fc Fi Fi Fi Fi Fp Fc[4] Fi} Fp Fi:1 Fi Fi:30 Fi}


 S20468C7 ::~S20468C7(){ note_dtor("S20468C7", this);}
S20468C7 ::S20468C7(){ note_ctor("S20468C7", this);} // tgen

static void Test_S20468C7()
{
  extern Class_Descriptor cd_S20468C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(679,2092)];
    init_test(&cd_S20468C7, buf);
    S20468C7 *dp, &lv = *(dp=new (buf) S20468C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(10848,8364), "sizeof(S20468C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20468C7)");
    /*is_ambiguous_... S20468C8::S20468C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C3*)(S20468C8*), ABISELECT(8,4), "S20468C7");
    /*is_ambiguous_... S20468C8::S20468C3 */ AMB_check_base_class_offset(lv, (S20468C3*)(S20468C8*), 0, "S20468C7");
    /*is_ambiguous_... S20468C8::S20468C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C3*)(S20468C6*)(S20468C8*), ABISELECT(56,44), "S20468C7");
    /*is_ambiguous_... S20468C8::S20468C6 */ AMB_check_base_class_offset(lv, (S20468C3*)(S20468C6*)(S20468C8*), ABISELECT(48,40), "S20468C7");
    /*is_ambiguous_... S20468C8::S20468C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C6*)(S20468C8*), ABISELECT(8600,6620), "S20468C7");
    /*is_ambiguous_... S20468C10::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C10*)(S20468C9*), ABISELECT(8600,6620), "S20468C7");
    /*is_ambiguous_... S20468C7::S20468C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C6*), ABISELECT(8600,6620), "S20468C7");
    /*is_ambiguous_... S20468C7::S20468C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C2*), ABISELECT(8600,6620), "S20468C7");
    /*is_ambiguous_... S20468C7::S20468C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C5*)(S20468C2*), ABISELECT(8600,6620), "S20468C7");
    /*is_ambiguous_... S20468C7::S20468C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C6*)(S20468C2*), ABISELECT(8600,6620), "S20468C7");
    /*is_ambiguous_... S20468C7::S20468C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C2*), ABISELECT(8600,6620), "S20468C7");
    /*is_ambiguous_... S20468C7::S20468C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C5*)(S20468C2*), ABISELECT(8600,6620), "S20468C7");
    /*is_ambiguous_... S20468C7::S20468C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C6*)(S20468C2*), ABISELECT(8600,6620), "S20468C7");
    /*is_ambiguous_... S20468C8::S20468C6 */ AMB_check_base_class_offset(lv, (S20468C6*)(S20468C8*), ABISELECT(48,40), "S20468C7");
    /*is_ambiguous_... S20468C7::S20468C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C3*), ABISELECT(10096,7784), "S20468C7");
    /*is_ambiguous_... S20468C10::S20468C3 */ AMB_check_base_class_offset(lv, (S20468C3*)(S20468C10*)(S20468C9*), ABISELECT(10088,7780), "S20468C7");
    /*is_ambiguous_... S20468C7::S20468C2 */ AMB_check_base_class_offset(lv, (S20468C3*)(S20468C2*), ABISELECT(10088,7780), "S20468C7");
    /*is_ambiguous_... S20468C7::S20468C2 */ AMB_check_base_class_offset(lv, (S20468C3*)(S20468C5*)(S20468C2*), ABISELECT(10088,7780), "S20468C7");
    /*is_ambiguous_... S20468C7::S20468C2 */ AMB_check_base_class_offset(lv, (S20468C3*)(S20468C2*), ABISELECT(10088,7780), "S20468C7");
    /*is_ambiguous_... S20468C7::S20468C2 */ AMB_check_base_class_offset(lv, (S20468C3*)(S20468C5*)(S20468C2*), ABISELECT(10088,7780), "S20468C7");
    /*is_ambiguous_... S20468C7::S20468C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C3*)(S20468C6*), ABISELECT(10152,7824), "S20468C7");
    /*is_ambiguous_... S20468C7::S20468C6 */ AMB_check_base_class_offset(lv, (S20468C3*)(S20468C6*), ABISELECT(10144,7820), "S20468C7");
    check_base_class_offset(lv, (S20468C6*)(S20468C10*)(S20468C9*), ABISELECT(10144,7820), "S20468C7");
    check_base_class_offset(lv, (S20468C10*)(S20468C9*), ABISELECT(8608,6624), "S20468C7");
    /*is_ambiguous_... S20468C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C9*), ABISELECT(9936,7676), "S20468C7");
    /*is_ambiguous_... S20468C7::S20468C2 */ AMB_check_base_class_offset(lv, (S20468C5*)(S20468C2*), ABISELECT(10288,7932), "S20468C7");
    /*is_ambiguous_... S20468C7::S20468C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C3*)(S20468C6*)(S20468C2*), ABISELECT(10440,8040), "S20468C7");
    /*is_ambiguous_... S20468C7::S20468C2 */ AMB_check_base_class_offset(lv, (S20468C3*)(S20468C6*)(S20468C2*), ABISELECT(10432,8036), "S20468C7");
    /*is_ambiguous_... S20468C7::S20468C2 */ AMB_check_base_class_offset(lv, (S20468C6*)(S20468C2*), ABISELECT(10432,8036), "S20468C7");
    check_base_class_offset(lv, (S20468C2*)(S20468C9*), ABISELECT(10288,7932), "S20468C7");
    check_base_class_offset(lv, (S3216C8_nt*)(S20468C3*)(S20468C11*)(S20468C9*), ABISELECT(9952,7684), "S20468C7");
    check_base_class_offset(lv, (S20468C3*)(S20468C11*)(S20468C9*), ABISELECT(9944,7680), "S20468C7");
    check_base_class_offset(lv, (S20468C11*)(S20468C9*), ABISELECT(9944,7680), "S20468C7");
    check_base_class_offset(lv, (S20468C9*)(S20468C8*), ABISELECT(8608,6624), "S20468C7");
    check_base_class_offset(lv, (S20468C8*), 0, "S20468C7");
    /*is_ambiguous_... S20468C7::S20468C2 */ AMB_check_base_class_offset(lv, (S20468C5*)(S20468C2*), ABISELECT(272,208), "S20468C7");
    /*is_ambiguous_... S20468C7::S20468C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C3*)(S20468C6*)(S20468C2*), ABISELECT(424,316), "S20468C7");
    /*is_ambiguous_... S20468C7::S20468C2 */ AMB_check_base_class_offset(lv, (S20468C3*)(S20468C6*)(S20468C2*), ABISELECT(416,312), "S20468C7");
    /*is_ambiguous_... S20468C7::S20468C2 */ AMB_check_base_class_offset(lv, (S20468C6*)(S20468C2*), ABISELECT(416,312), "S20468C7");
    /*is_ambiguous_... S20468C7::S20468C2 */ AMB_check_base_class_offset(lv, (S20468C2*), ABISELECT(272,208), "S20468C7");
    check_field_offset(lv, s20468c7f0, ABISELECT(832,640), "S20468C7.s20468c7f0");
    check_field_offset(lv, s20468c7f1, ABISELECT(8576,6600), "S20468C7.s20468c7f1");
    set_bf_and_test(lv, s20468c7f2, ABISELECT(8584,6604), 0, 1, 1, "S20468C7");
    check_field_offset(lv, s20468c7f3, ABISELECT(8588,6608), "S20468C7.s20468c7f3");
    set_bf_and_test(lv, s20468c7f4, ABISELECT(8592,6612), 0, 30, 1, "S20468C7");
    set_bf_and_test(lv, s20468c7f4, ABISELECT(8592,6612), 0, 30, hide_sll(1LL<<29), "S20468C7");
    check_field_offset(lv, s20468c7f5, ABISELECT(8596,6616), "S20468C7.s20468c7f5");
    test_class_info(&lv, &cd_S20468C7);
    dp->~S20468C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20468C7(Test_S20468C7, "S20468C7", ABISELECT(10848,8364));

#else // __cplusplus

extern void _ZN8S20468C7C1Ev();
extern void _ZN8S20468C7D2Ev();
Name_Map name_map_S20468C7[] = {
  NSPAIR(_ZN8S20468C7C1Ev),
  NSPAIR(_ZN8S20468C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C3;
extern VTBL_ENTRY _ZTI8S20468C3[];
extern  VTBL_ENTRY _ZTV8S20468C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C3;
extern VTBL_ENTRY _ZTI8S20468C3[];
extern  VTBL_ENTRY _ZTV8S20468C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C6;
extern VTBL_ENTRY _ZTI8S20468C6[];
extern  VTBL_ENTRY _ZTV8S20468C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C3;
extern VTBL_ENTRY _ZTI8S20468C3[];
extern  VTBL_ENTRY _ZTV8S20468C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C3;
extern VTBL_ENTRY _ZTI8S20468C3[];
extern  VTBL_ENTRY _ZTV8S20468C3[];
extern Class_Descriptor cd_S20468C6;
extern VTBL_ENTRY _ZTI8S20468C6[];
extern  VTBL_ENTRY _ZTV8S20468C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C6[];
extern Class_Descriptor cd_S20468C10;
extern VTBL_ENTRY _ZTI9S20468C10[];
extern  VTBL_ENTRY _ZTV9S20468C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20468C10[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C5;
extern VTBL_ENTRY _ZTI8S20468C5[];
extern  VTBL_ENTRY _ZTV8S20468C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C3;
extern VTBL_ENTRY _ZTI8S20468C3[];
extern  VTBL_ENTRY _ZTV8S20468C3[];
extern Class_Descriptor cd_S20468C6;
extern VTBL_ENTRY _ZTI8S20468C6[];
extern  VTBL_ENTRY _ZTV8S20468C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C6[];
extern Class_Descriptor cd_S20468C2;
extern VTBL_ENTRY _ZTI8S20468C2[];
extern  VTBL_ENTRY _ZTV8S20468C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C3;
extern VTBL_ENTRY _ZTI8S20468C3[];
extern  VTBL_ENTRY _ZTV8S20468C3[];
extern Class_Descriptor cd_S20468C11;
extern VTBL_ENTRY _ZTI9S20468C11[];
extern  VTBL_ENTRY _ZTV9S20468C11[];
extern Class_Descriptor cd_S20468C9;
extern VTBL_ENTRY _ZTI8S20468C9[];
extern  VTBL_ENTRY _ZTV8S20468C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C9[];
extern Class_Descriptor cd_S20468C8;
extern VTBL_ENTRY _ZTI8S20468C8[];
extern  VTBL_ENTRY _ZTV8S20468C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C8[];
extern Class_Descriptor cd_S20468C5;
extern VTBL_ENTRY _ZTI8S20468C5[];
extern  VTBL_ENTRY _ZTV8S20468C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C3;
extern VTBL_ENTRY _ZTI8S20468C3[];
extern  VTBL_ENTRY _ZTV8S20468C3[];
extern Class_Descriptor cd_S20468C6;
extern VTBL_ENTRY _ZTI8S20468C6[];
extern  VTBL_ENTRY _ZTV8S20468C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C6[];
extern Class_Descriptor cd_S20468C2;
extern VTBL_ENTRY _ZTI8S20468C2[];
extern  VTBL_ENTRY _ZTV8S20468C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C2[];
static Base_Class bases_S20468C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S20468C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3216C8_nt,    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
    3, //immediately_derived
  0, 0},
  {&cd_S20468C3,    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
    13, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(8600,6620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20468C6,    ABISELECT(48,40), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(10096,7784), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20468C3,    ABISELECT(10088,7780), //bcp->offset
    53, //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
    11, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(10152,7824), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20468C3,    ABISELECT(10144,7820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20468C6,    ABISELECT(10144,7820), //bcp->offset
    61, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20468C10,    ABISELECT(8608,6624), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(9936,7676), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20468C5,    ABISELECT(10288,7932), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(10440,8040), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20468C3,    ABISELECT(10432,8036), //bcp->offset
    -1, //bcp->virtual_function_table_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
    16, //immediately_derived
  0, 0},
  {&cd_S20468C6,    ABISELECT(10432,8036), //bcp->offset
    81, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20468C2,    ABISELECT(10288,7932), //bcp->offset
    70, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(9952,7684), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20468C3,    ABISELECT(9944,7680), //bcp->offset
    -1, //bcp->virtual_function_table_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
    20, //immediately_derived
  0, 0},
  {&cd_S20468C11,    ABISELECT(9944,7680), //bcp->offset
    45, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20468C9,    ABISELECT(8608,6624), //bcp->offset
    30, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S20468C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20468C5,    ABISELECT(272,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(424,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
    25, //immediately_derived
  0, 0},
  {&cd_S20468C3,    ABISELECT(416,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
    17, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20468C6,    ABISELECT(416,312), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20468C2,    ABISELECT(272,208), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20468C7[];
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
extern void _ZN8S20468C7D1Ev();
extern void _ZN8S20468C7D0Ev();
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
extern void _ZN8S20468C52v5Ev();
extern void _ZN8S20468C22v6Ev();
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
extern void ABISELECT(_ZTv0_n56_N8S20468C7D1Ev,_ZTv0_n28_N8S20468C7D1Ev)();
extern void ABISELECT(_ZThn8608_N8S20468C7D1Ev,_ZThn6624_N8S20468C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20468C7D0Ev,_ZTv0_n28_N8S20468C7D0Ev)();
extern void ABISELECT(_ZThn8608_N8S20468C7D0Ev,_ZThn6624_N8S20468C7D0Ev)() __attribute__((weak));
extern void _ZN8S20468C92v8Ev();
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N8S20468C7D1Ev,_ZTvn1056_n28_N8S20468C7D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N8S20468C7D0Ev,_ZTvn1056_n28_N8S20468C7D0Ev)();
extern void _ZN9S20468C112v7Ev();
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
extern void _ZN8S20468C52v5Ev();
extern void _ZN8S20468C22v6Ev();
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY vtc_S20468C7[] = {
  ABISELECT(10288,7932),
  ABISELECT(10144,7820),
  ABISELECT(10088,7780),
  ABISELECT(8608,6624),
  ABISELECT(8600,6620),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C7[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20468C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20468C7D0Ev,
  ABISELECT(8552,6580),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI8S20468C7[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
  ABISELECT(8328,6412),
  ABISELECT(9816,7572),
  ABISELECT(-272,-208),
  (VTBL_ENTRY)&(_ZTI8S20468C7[0]),
  (VTBL_ENTRY)&_ZN8S20468C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20468C22v6Ev,
  ABISELECT(8184,6308),
  ABISELECT(-416,-312),
  (VTBL_ENTRY)&(_ZTI8S20468C7[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-8608,-6624),
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  ABISELECT(-8608,-6624),
  (VTBL_ENTRY)&(_ZTI8S20468C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20468C7D1Ev,_ZTv0_n28_N8S20468C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20468C7D0Ev,_ZTv0_n28_N8S20468C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20468C92v8Ev,
  ABISELECT(-9944,-7680),
  (VTBL_ENTRY)&(_ZTI8S20468C7[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20468C7D1Ev,_ZTvn1056_n28_N8S20468C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20468C7D0Ev,_ZTvn1056_n28_N8S20468C7D0Ev),
  (VTBL_ENTRY)&_ZN9S20468C112v7Ev,
  0,
  0,
  0,
  ABISELECT(-10088,-7780),
  (VTBL_ENTRY)&(_ZTI8S20468C7[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-10144,-7820),
  (VTBL_ENTRY)&(_ZTI8S20468C7[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-10288,-7932),
  (VTBL_ENTRY)&(_ZTI8S20468C7[0]),
  (VTBL_ENTRY)&_ZN8S20468C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20468C22v6Ev,
  ABISELECT(-1832,-1416),
  ABISELECT(-10432,-8036),
  (VTBL_ENTRY)&(_ZTI8S20468C7[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern VTBL_ENTRY _ZTV8S20468C7[];
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
extern void _ZN8S20468C8D1Ev();
extern void _ZN8S20468C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C8__8S20468C7[] = {
  ABISELECT(10288,7932),
  ABISELECT(10144,7820),
  ABISELECT(10088,7780),
  ABISELECT(8608,6624),
  ABISELECT(8600,6620),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C8[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20468C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20468C8D0Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C68S20468C8__8S20468C7[] = {
  ABISELECT(8552,6580),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C6[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C6__A__8S20468C8__8S20468C7[] = {
  ABISELECT(8552,6580),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI8S20468C8[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S20468C8D1Ev,_ZTv0_n28_N8S20468C8D1Ev)();
extern void ABISELECT(_ZThn8608_N8S20468C8D1Ev,_ZThn6624_N8S20468C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20468C8D0Ev,_ZTv0_n28_N8S20468C8D0Ev)();
extern void ABISELECT(_ZThn8608_N8S20468C8D0Ev,_ZThn6624_N8S20468C8D0Ev)() __attribute__((weak));
extern void _ZN8S20468C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C9__8S20468C8__8S20468C7[] = {
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-8608,-6624),
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  ABISELECT(-8608,-6624),
  (VTBL_ENTRY)&(_ZTI8S20468C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20468C8D1Ev,_ZTv0_n28_N8S20468C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20468C8D0Ev,_ZTv0_n28_N8S20468C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20468C92v8Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C3__A2__8S20468C8__8S20468C7[] = {
  0,
  0,
  0,
  ABISELECT(-10088,-7780),
  (VTBL_ENTRY)&(_ZTI8S20468C8[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C6__A1__8S20468C8__8S20468C7[] = {
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-10144,-7820),
  (VTBL_ENTRY)&(_ZTI8S20468C8[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C52v5Ev();
extern void _ZN8S20468C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C2__8S20468C8__8S20468C7[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-10288,-7932),
  (VTBL_ENTRY)&(_ZTI8S20468C8[0]),
  (VTBL_ENTRY)&_ZN8S20468C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20468C22v6Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C68S20468C2__A2__8S20468C8__8S20468C7[] = {
  ABISELECT(-1832,-1416),
  ABISELECT(-10432,-8036),
  (VTBL_ENTRY)&(_ZTI8S20468C8[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N8S20468C8D1Ev,_ZTvn1056_n28_N8S20468C8D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N8S20468C8D0Ev,_ZTvn1056_n28_N8S20468C8D0Ev)();
extern void _ZN9S20468C112v7Ev();
static  VTBL_ENTRY _tg__ZTV9S20468C118S20468C9__8S20468C8__8S20468C7[] = {
  ABISELECT(-9944,-7680),
  (VTBL_ENTRY)&(_ZTI8S20468C8[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20468C8D1Ev,_ZTvn1056_n28_N8S20468C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20468C8D0Ev,_ZTvn1056_n28_N8S20468C8D0Ev),
  (VTBL_ENTRY)&_ZN9S20468C112v7Ev,
};
extern void _ZN8S20468C52v5Ev();
extern void _ZN8S20468C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C2__A__8S20468C7[] = {
  ABISELECT(8328,6412),
  ABISELECT(9816,7572),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C2[0]),
  (VTBL_ENTRY)&_ZN8S20468C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20468C22v6Ev,
};
extern void _ZN8S20468C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C58S20468C2__A1__8S20468C7[] = {
  ABISELECT(8328,6412),
  ABISELECT(9816,7572),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C5[0]),
  (VTBL_ENTRY)&_ZN8S20468C52v5Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C3__8S20468C58S20468C2__A1__8S20468C7[] = {
  0,
  0,
  0,
  ABISELECT(-9816,-7572),
  (VTBL_ENTRY)&(_ZTI8S20468C5[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C68S20468C2__A3__8S20468C7[] = {
  ABISELECT(8184,6308),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C6[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C3__8S20468C2__A__8S20468C7[] = {
  0,
  0,
  0,
  ABISELECT(-9816,-7572),
  (VTBL_ENTRY)&(_ZTI8S20468C2[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C6__8S20468C2__A__8S20468C7[] = {
  ABISELECT(8184,6308),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20468C2[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C9D1Ev();
extern void _ZN8S20468C9D0Ev();
extern void _ZN8S20468C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C9__8S20468C7[] = {
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C9[0]),
  (VTBL_ENTRY)&_ZN8S20468C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20468C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20468C92v8Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20468C108S20468C9__8S20468C7[] = {
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20468C10[0]),
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C3__9S20468C108S20468C9__8S20468C7[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1156),
  (VTBL_ENTRY)&(_ZTI9S20468C10[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C6__9S20468C108S20468C9__8S20468C7[] = {
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-1536,-1196),
  (VTBL_ENTRY)&(_ZTI9S20468C10[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C3__8S20468C9__8S20468C7[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1156),
  (VTBL_ENTRY)&(_ZTI8S20468C9[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C6__8S20468C9__8S20468C7[] = {
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-1536,-1196),
  (VTBL_ENTRY)&(_ZTI8S20468C9[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C52v5Ev();
extern void _ZN8S20468C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C2__8S20468C9__8S20468C7[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-1680,-1308),
  (VTBL_ENTRY)&(_ZTI8S20468C9[0]),
  (VTBL_ENTRY)&_ZN8S20468C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20468C22v6Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C68S20468C2__A1__8S20468C9__8S20468C7[] = {
  ABISELECT(-1832,-1416),
  ABISELECT(-1824,-1412),
  (VTBL_ENTRY)&(_ZTI8S20468C9[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C6__A1__8S20468C7[] = {
  ABISELECT(-1544,-1200),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C6[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C52v5Ev();
extern void _ZN8S20468C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C2__8S20468C7[] = {
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C2[0]),
  (VTBL_ENTRY)&_ZN8S20468C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20468C22v6Ev,
};
extern void _ZN8S20468C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C58S20468C2__8S20468C7[] = {
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C5[0]),
  (VTBL_ENTRY)&_ZN8S20468C52v5Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C3__8S20468C58S20468C2__8S20468C7[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S20468C5[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C68S20468C2__A2__8S20468C7[] = {
  ABISELECT(-1832,-1416),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C6[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C3__8S20468C2__8S20468C7[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S20468C2[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C6__8S20468C2__8S20468C7[] = {
  ABISELECT(-1832,-1416),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20468C2[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
static  VTT_ENTRY vtt_S20468C7[] = {
  {&(_ZTV8S20468C7[7]),  7,87},
  {&(_tg__ZTV8S20468C8__8S20468C7[7]),  7,12},
  {&(_tg__ZTV8S20468C68S20468C8__8S20468C7[3]),  3,6},
  {&(_tg__ZTV8S20468C6__A__8S20468C8__8S20468C7[3]),  3,6},
  {&(_tg__ZTV8S20468C9__8S20468C8__8S20468C7[12]),  12,15},
  {&(_tg__ZTV8S20468C3__A2__8S20468C8__8S20468C7[5]),  5,8},
  {&(_tg__ZTV8S20468C6__A1__8S20468C8__8S20468C7[6]),  6,9},
  {&(_tg__ZTV8S20468C2__8S20468C8__8S20468C7[9]),  9,11},
  {&(_tg__ZTV8S20468C68S20468C2__A2__8S20468C8__8S20468C7[3]),  3,6},
  {&(_tg__ZTV9S20468C118S20468C9__8S20468C8__8S20468C7[2]),  2,8},
  {&(_tg__ZTV8S20468C2__A__8S20468C7[4]),  4,6},
  {&(_tg__ZTV8S20468C58S20468C2__A1__8S20468C7[4]),  4,5},
  {&(_tg__ZTV8S20468C3__8S20468C58S20468C2__A1__8S20468C7[5]),  5,8},
  {&(_tg__ZTV8S20468C68S20468C2__A3__8S20468C7[3]),  3,6},
  {&(_tg__ZTV8S20468C3__8S20468C2__A__8S20468C7[5]),  5,8},
  {&(_tg__ZTV8S20468C6__8S20468C2__A__8S20468C7[3]),  3,6},
  {&(_ZTV8S20468C7[15]),  15,87},
  {&(_ZTV8S20468C7[42]),  42,87},
  {&(_ZTV8S20468C7[58]),  58,87},
  {&(_ZTV8S20468C7[67]),  67,87},
  {&(_ZTV8S20468C7[79]),  79,87},
  {&(_ZTV8S20468C7[84]),  84,87},
  {&(_ZTV8S20468C7[47]),  47,87},
  {&(_ZTV8S20468C7[22]),  22,87},
  {&(_ZTV8S20468C7[27]),  27,87},
  {&(_tg__ZTV8S20468C9__8S20468C7[6]),  6,9},
  {&(_tg__ZTV9S20468C108S20468C9__8S20468C7[5]),  5,5},
  {&(_tg__ZTV8S20468C3__9S20468C108S20468C9__8S20468C7[5]),  5,8},
  {&(_tg__ZTV8S20468C6__9S20468C108S20468C9__8S20468C7[6]),  6,9},
  {&(_tg__ZTV8S20468C3__8S20468C9__8S20468C7[5]),  5,8},
  {&(_tg__ZTV8S20468C6__8S20468C9__8S20468C7[6]),  6,9},
  {&(_tg__ZTV8S20468C2__8S20468C9__8S20468C7[9]),  9,11},
  {&(_tg__ZTV8S20468C68S20468C2__A1__8S20468C9__8S20468C7[3]),  3,6},
  {&(_tg__ZTV8S20468C6__A1__8S20468C7[3]),  3,6},
  {&(_tg__ZTV8S20468C2__8S20468C7[4]),  4,6},
  {&(_tg__ZTV8S20468C58S20468C2__8S20468C7[4]),  4,5},
  {&(_tg__ZTV8S20468C3__8S20468C58S20468C2__8S20468C7[5]),  5,8},
  {&(_tg__ZTV8S20468C68S20468C2__A2__8S20468C7[3]),  3,6},
  {&(_tg__ZTV8S20468C3__8S20468C2__8S20468C7[5]),  5,8},
  {&(_tg__ZTV8S20468C6__8S20468C2__8S20468C7[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S20468C7[];
extern  VTBL_ENTRY _ZTV8S20468C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C7[];
static VTBL_ENTRY alt_thunk_names28[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20468C8D0Ev,_ZTv0_n28_N8S20468C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8608_N8S20468C8D0Ev,_ZThn6624_N8S20468C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20468C8D1Ev,_ZTv0_n28_N8S20468C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8608_N8S20468C8D1Ev,_ZThn6624_N8S20468C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20468C7D0Ev,_ZTv0_n28_N8S20468C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8608_N8S20468C7D0Ev,_ZThn6624_N8S20468C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20468C7D1Ev,_ZTv0_n28_N8S20468C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8608_N8S20468C7D1Ev,_ZThn6624_N8S20468C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20468C7 = {  "S20468C7", // class name
  bases_S20468C7, 28,
  &(vtc_S20468C7[0]), // expected_vtbl_contents
  &(vtt_S20468C7[0]), // expected_vtt_contents
  ABISELECT(10848,8364), // object size
  NSPAIRA(_ZTI8S20468C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20468C7),87, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20468C7),40, //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  S20468C18  {
  int s20468c18f0;
  virtual void  v10(); // _ZN9S20468C183v10Ev
  ~S20468C18(); // tgen
  S20468C18(); // tgen
};
//SIG(-1 S20468C18) C1{ v1 Fi}


void  S20468C18 ::v10(){vfunc_called(this, "_ZN9S20468C183v10Ev");}
S20468C18 ::~S20468C18(){ note_dtor("S20468C18", this);} // tgen
S20468C18 ::S20468C18(){ note_ctor("S20468C18", this);} // tgen

static void Test_S20468C18()
{
  extern Class_Descriptor cd_S20468C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20468C18, buf);
    S20468C18 *dp, &lv = *(dp=new (buf) S20468C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20468C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20468C18)");
    check_field_offset(lv, s20468c18f0, ABISELECT(8,4), "S20468C18.s20468c18f0");
    test_class_info(&lv, &cd_S20468C18);
    dp->~S20468C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20468C18(Test_S20468C18, "S20468C18", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S20468C18C1Ev();
extern void _ZN9S20468C18D1Ev();
Name_Map name_map_S20468C18[] = {
  NSPAIR(_ZN9S20468C18C1Ev),
  NSPAIR(_ZN9S20468C18D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S20468C18[];
extern void _ZN9S20468C183v10Ev();
static  VTBL_ENTRY vtc_S20468C18[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20468C18[0]),
  (VTBL_ENTRY)&_ZN9S20468C183v10Ev,
};
extern VTBL_ENTRY _ZTI9S20468C18[];
extern  VTBL_ENTRY _ZTV9S20468C18[];
Class_Descriptor cd_S20468C18 = {  "S20468C18", // class name
  0,0,//no base classes
  &(vtc_S20468C18[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S20468C18),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S20468C18),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  S20468C1  : virtual S20468C2 , S20468C7 , virtual S20468C5 {
  short s20468c1f0;
  ::S20468C6 s20468c1f1;
  __tsi64 s20468c1f2[8];
  int s20468c1f3;
  ::S20468C18 s20468c1f4;
  long s20468c1f5;
  int s20468c1f6;
  int s20468c1f7;
  long double s20468c1f8;
  int s20468c1f9[4];
  long s20468c1f10;
  virtual void  v1(); // _ZN8S20468C12v1Ev
  ~S20468C1(); // tgen
  S20468C1(); // tgen
};
//SIG(1 S20468C1) C1{ VBC2{ VBC3{ BC4{ m Fi} v2 v3 v4 FC4[3] FC4[2] Fp Fs FC4} VBC4 BC5{ VBC3 VBC4 v5 FC3 FD Fp[2] FC3} BC6{ BC3 VBC4 FD FL FC3 Fp Fs[3]} v6 Fp[2] Fl Fi FC3[5]} BC7{ BC8{ BC3 BC6 VBC9{ BC10{ VBC4 VBC3 VBC6 Fp[2] Fi FC6[8] FD[9]} BC4 VBC2 BC11{ BC3 vd v7 Fp[7] Fi[2] FL Fi} vd v8 Fi Fp Fi} Fp Fi FC3 Fi Fp} BC2 vd FC12{ VBC13{ BC14{ BC4 v9 v10 v11 FC4[3] FC4[2] Fp Fs FC4} VBC4 FD FL FC14 Fp Fs[3]} BC15{ BC16{ VBC4 VBC14 VBC13 Fp[2] Fi FC13[8] FD[9]} BC4 VBC17{ VBC14 VBC4 BC18{ VBC14 VBC4 v12 FC14 FD Fp[2] FC14} BC13 v13 Fp[2] Fl Fi FC14[5]} BC19{ BC14 vd v14 Fp[7] Fi[2] FL Fi} vd v15 Fi Fp Fi} BC20{ BC13 VBC15 BC17 BC21{ VBC4 BC17 BC18 BC13 v16 Fi FC22{} Fp[2]} vd Fi Fc[2] Fi FL FC22 Fp[8] Fs[5] FL FC23{ vd m Fc[2] Fi FL Fp[7] FU24{ m FL:3 Fi Fi Fi FD[8] Fp Fc[5] FD Fc[4] Fi Fp Fc[4] Fp}[4] FC16}} BC18 vd Fc Fi Fi Fi Fi Fp Fc[4] Fi} Fp Fi:1 Fi Fi:30 Fi} VBC5 v1 Fs FC6 FL[8] Fi FC25{ v17 Fi} Fl Fi Fi FD Fi[4] Fl}


void  S20468C1 ::v1(){vfunc_called(this, "_ZN8S20468C12v1Ev");}
S20468C1 ::~S20468C1(){ note_dtor("S20468C1", this);} // tgen
S20468C1 ::S20468C1(){ note_ctor("S20468C1", this);} // tgen

static void Test_S20468C1()
{
  extern Class_Descriptor cd_S20468C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(707,2178)];
    init_test(&cd_S20468C1, buf);
    S20468C1 *dp, &lv = *(dp=new (buf) S20468C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11296,8708), "sizeof(S20468C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20468C1)");
    /*is_ambiguous_... S20468C1::S20468C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C3*), ABISELECT(9472,7296), "S20468C1");
    /*is_ambiguous_... S20468C1::S20468C2 */ AMB_check_base_class_offset(lv, (S20468C3*)(S20468C2*), ABISELECT(9464,7292), "S20468C1");
    /*is_ambiguous_... S20468C1::S20468C2 */ AMB_check_base_class_offset(lv, (S20468C3*)(S20468C5*)(S20468C2*), ABISELECT(9464,7292), "S20468C1");
    /*is_ambiguous_... S20468C10::S20468C3 */ AMB_check_base_class_offset(lv, (S20468C3*)(S20468C10*)(S20468C9*), ABISELECT(9464,7292), "S20468C1");
    /*is_ambiguous_... S20468C7::S20468C2 */ AMB_check_base_class_offset(lv, (S20468C3*)(S20468C2*)(S20468C7*), ABISELECT(9464,7292), "S20468C1");
    /*is_ambiguous_... S20468C7::S20468C2 */ AMB_check_base_class_offset(lv, (S20468C3*)(S20468C5*)(S20468C2*)(S20468C7*), ABISELECT(9464,7292), "S20468C1");
    /*is_ambiguous_... S20468C1::S20468C5 */ AMB_check_base_class_offset(lv, (S20468C3*)(S20468C5*), ABISELECT(9464,7292), "S20468C1");
    /*is_ambiguous_... S20468C1::S20468C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C2*), ABISELECT(9512,7332), "S20468C1");
    /*is_ambiguous_... S20468C1::S20468C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C5*)(S20468C2*), ABISELECT(9512,7332), "S20468C1");
    /*is_ambiguous_... S20468C1::S20468C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C6*)(S20468C2*), ABISELECT(9512,7332), "S20468C1");
    /*is_ambiguous_... S20468C8::S20468C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C6*)(S20468C8*)(S20468C7*), ABISELECT(9512,7332), "S20468C1");
    /*is_ambiguous_... S20468C10::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C10*)(S20468C9*), ABISELECT(9512,7332), "S20468C1");
    /*is_ambiguous_... S20468C1::S20468C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C6*), ABISELECT(9512,7332), "S20468C1");
    /*is_ambiguous_... S20468C7::S20468C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C2*)(S20468C7*), ABISELECT(9512,7332), "S20468C1");
    /*is_ambiguous_... S20468C7::S20468C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C5*)(S20468C2*)(S20468C7*), ABISELECT(9512,7332), "S20468C1");
    /*is_ambiguous_... S20468C7::S20468C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C6*)(S20468C2*)(S20468C7*), ABISELECT(9512,7332), "S20468C1");
    /*is_ambiguous_... S20468C1::S20468C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C5*), ABISELECT(9512,7332), "S20468C1");
    /*is_ambiguous_... S20468C1::S20468C2 */ AMB_check_base_class_offset(lv, (S20468C5*)(S20468C2*), ABISELECT(8912,6860), "S20468C1");
    /*is_ambiguous_... S20468C1::S20468C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C3*)(S20468C6*)(S20468C2*), ABISELECT(9064,6968), "S20468C1");
    /*is_ambiguous_... S20468C1::S20468C2 */ AMB_check_base_class_offset(lv, (S20468C3*)(S20468C6*)(S20468C2*), ABISELECT(9056,6964), "S20468C1");
    /*is_ambiguous_... S20468C1::S20468C2 */ AMB_check_base_class_offset(lv, (S20468C6*)(S20468C2*), ABISELECT(9056,6964), "S20468C1");
    /*is_ambiguous_... S20468C1::S20468C2 */ AMB_check_base_class_offset(lv, (S20468C2*), ABISELECT(8912,6860), "S20468C1");
    check_base_class_offset(lv, (S20468C2*)(S20468C9*), ABISELECT(8912,6860), "S20468C1");
    /*is_ambiguous_... S20468C8::S20468C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C3*)(S20468C8*)(S20468C7*), ABISELECT(8,4), "S20468C1");
    /*is_ambiguous_... S20468C8::S20468C3 */ AMB_check_base_class_offset(lv, (S20468C3*)(S20468C8*)(S20468C7*), 0, "S20468C1");
    /*is_ambiguous_... S20468C8::S20468C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C3*)(S20468C6*)(S20468C8*)(S20468C7*), ABISELECT(56,44), "S20468C1");
    /*is_ambiguous_... S20468C8::S20468C6 */ AMB_check_base_class_offset(lv, (S20468C3*)(S20468C6*)(S20468C8*)(S20468C7*), ABISELECT(48,40), "S20468C1");
    /*is_ambiguous_... S20468C8::S20468C6 */ AMB_check_base_class_offset(lv, (S20468C6*)(S20468C8*)(S20468C7*), ABISELECT(48,40), "S20468C1");
    /*is_ambiguous_... S20468C1::S20468C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C3*)(S20468C6*), ABISELECT(11016,8496), "S20468C1");
    /*is_ambiguous_... S20468C1::S20468C6 */ AMB_check_base_class_offset(lv, (S20468C3*)(S20468C6*), ABISELECT(11008,8492), "S20468C1");
    check_base_class_offset(lv, (S20468C6*)(S20468C10*)(S20468C9*), ABISELECT(11008,8492), "S20468C1");
    check_base_class_offset(lv, (S20468C10*)(S20468C9*), ABISELECT(9520,7336), "S20468C1");
    /*is_ambiguous_... S20468C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C9*), ABISELECT(10848,8388), "S20468C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S20468C3*)(S20468C11*)(S20468C9*), ABISELECT(10864,8396), "S20468C1");
    check_base_class_offset(lv, (S20468C3*)(S20468C11*)(S20468C9*), ABISELECT(10856,8392), "S20468C1");
    check_base_class_offset(lv, (S20468C11*)(S20468C9*), ABISELECT(10856,8392), "S20468C1");
    check_base_class_offset(lv, (S20468C9*)(S20468C8*)(S20468C7*), ABISELECT(9520,7336), "S20468C1");
    check_base_class_offset(lv, (S20468C8*)(S20468C7*), 0, "S20468C1");
    /*is_ambiguous_... S20468C7::S20468C2 */ AMB_check_base_class_offset(lv, (S20468C5*)(S20468C2*)(S20468C7*), ABISELECT(272,208), "S20468C1");
    /*is_ambiguous_... S20468C7::S20468C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20468C3*)(S20468C6*)(S20468C2*)(S20468C7*), ABISELECT(424,316), "S20468C1");
    /*is_ambiguous_... S20468C7::S20468C2 */ AMB_check_base_class_offset(lv, (S20468C3*)(S20468C6*)(S20468C2*)(S20468C7*), ABISELECT(416,312), "S20468C1");
    /*is_ambiguous_... S20468C7::S20468C2 */ AMB_check_base_class_offset(lv, (S20468C6*)(S20468C2*)(S20468C7*), ABISELECT(416,312), "S20468C1");
    /*is_ambiguous_... S20468C7::S20468C2 */ AMB_check_base_class_offset(lv, (S20468C2*)(S20468C7*), ABISELECT(272,208), "S20468C1");
    check_base_class_offset(lv, (S20468C7*), 0, "S20468C1");
    /*is_ambiguous_... S20468C1::S20468C5 */ AMB_check_base_class_offset(lv, (S20468C5*), ABISELECT(11152,8604), "S20468C1");
    check_field_offset(lv, s20468c1f0, ABISELECT(8600,6620), "S20468C1.s20468c1f0");
    check_field_offset(lv, s20468c1f1, ABISELECT(8608,6624), "S20468C1.s20468c1f1");
    check_field_offset(lv, s20468c1f2, ABISELECT(8752,6740), "S20468C1.s20468c1f2");
    check_field_offset(lv, s20468c1f3, ABISELECT(8816,6804), "S20468C1.s20468c1f3");
    check_field_offset(lv, s20468c1f4, ABISELECT(8824,6808), "S20468C1.s20468c1f4");
    check_field_offset(lv, s20468c1f5, ABISELECT(8840,6816), "S20468C1.s20468c1f5");
    check_field_offset(lv, s20468c1f6, ABISELECT(8848,6820), "S20468C1.s20468c1f6");
    check_field_offset(lv, s20468c1f7, ABISELECT(8852,6824), "S20468C1.s20468c1f7");
    check_field_offset(lv, s20468c1f8, ABISELECT(8864,6828), "S20468C1.s20468c1f8");
    check_field_offset(lv, s20468c1f9, ABISELECT(8880,6840), "S20468C1.s20468c1f9");
    check_field_offset(lv, s20468c1f10, ABISELECT(8896,6856), "S20468C1.s20468c1f10");
    test_class_info(&lv, &cd_S20468C1);
    dp->~S20468C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20468C1(Test_S20468C1, "S20468C1", ABISELECT(11296,8708));

#else // __cplusplus

extern void _ZN8S20468C1C1Ev();
extern void _ZN8S20468C1D1Ev();
Name_Map name_map_S20468C1[] = {
  NSPAIR(_ZN8S20468C1C1Ev),
  NSPAIR(_ZN8S20468C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C3;
extern VTBL_ENTRY _ZTI8S20468C3[];
extern  VTBL_ENTRY _ZTV8S20468C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C5;
extern VTBL_ENTRY _ZTI8S20468C5[];
extern  VTBL_ENTRY _ZTV8S20468C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C3;
extern VTBL_ENTRY _ZTI8S20468C3[];
extern  VTBL_ENTRY _ZTV8S20468C3[];
extern Class_Descriptor cd_S20468C6;
extern VTBL_ENTRY _ZTI8S20468C6[];
extern  VTBL_ENTRY _ZTV8S20468C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C6[];
extern Class_Descriptor cd_S20468C2;
extern VTBL_ENTRY _ZTI8S20468C2[];
extern  VTBL_ENTRY _ZTV8S20468C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C3;
extern VTBL_ENTRY _ZTI8S20468C3[];
extern  VTBL_ENTRY _ZTV8S20468C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C3;
extern VTBL_ENTRY _ZTI8S20468C3[];
extern  VTBL_ENTRY _ZTV8S20468C3[];
extern Class_Descriptor cd_S20468C6;
extern VTBL_ENTRY _ZTI8S20468C6[];
extern  VTBL_ENTRY _ZTV8S20468C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C3;
extern VTBL_ENTRY _ZTI8S20468C3[];
extern  VTBL_ENTRY _ZTV8S20468C3[];
extern Class_Descriptor cd_S20468C6;
extern VTBL_ENTRY _ZTI8S20468C6[];
extern  VTBL_ENTRY _ZTV8S20468C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C6[];
extern Class_Descriptor cd_S20468C10;
extern VTBL_ENTRY _ZTI9S20468C10[];
extern  VTBL_ENTRY _ZTV9S20468C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20468C10[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C3;
extern VTBL_ENTRY _ZTI8S20468C3[];
extern  VTBL_ENTRY _ZTV8S20468C3[];
extern Class_Descriptor cd_S20468C11;
extern VTBL_ENTRY _ZTI9S20468C11[];
extern  VTBL_ENTRY _ZTV9S20468C11[];
extern Class_Descriptor cd_S20468C9;
extern VTBL_ENTRY _ZTI8S20468C9[];
extern  VTBL_ENTRY _ZTV8S20468C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C9[];
extern Class_Descriptor cd_S20468C8;
extern VTBL_ENTRY _ZTI8S20468C8[];
extern  VTBL_ENTRY _ZTV8S20468C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C8[];
extern Class_Descriptor cd_S20468C5;
extern VTBL_ENTRY _ZTI8S20468C5[];
extern  VTBL_ENTRY _ZTV8S20468C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20468C3;
extern VTBL_ENTRY _ZTI8S20468C3[];
extern  VTBL_ENTRY _ZTV8S20468C3[];
extern Class_Descriptor cd_S20468C6;
extern VTBL_ENTRY _ZTI8S20468C6[];
extern  VTBL_ENTRY _ZTV8S20468C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C6[];
extern Class_Descriptor cd_S20468C2;
extern VTBL_ENTRY _ZTI8S20468C2[];
extern  VTBL_ENTRY _ZTV8S20468C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C2[];
extern Class_Descriptor cd_S20468C7;
extern VTBL_ENTRY _ZTI8S20468C7[];
extern  VTBL_ENTRY _ZTV8S20468C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C7[];
extern Class_Descriptor cd_S20468C5;
extern VTBL_ENTRY _ZTI8S20468C5[];
extern  VTBL_ENTRY _ZTV8S20468C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C5[];
static Base_Class bases_S20468C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(9472,7296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20468C3,    ABISELECT(9464,7292), //bcp->offset
    49, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(9512,7332), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20468C5,    ABISELECT(8912,6860), //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
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(9064,6968), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20468C3,    ABISELECT(9056,6964), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20468C6,    ABISELECT(9056,6964), //bcp->offset
    43, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20468C2,    ABISELECT(8912,6860), //bcp->offset
    32, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20468C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    22, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    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
    11, //immediately_derived
  0, 0},
  {&cd_S20468C3,    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
    14, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20468C6,    ABISELECT(48,40), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(11016,8496), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20468C3,    ABISELECT(11008,8492), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20468C6,    ABISELECT(11008,8492), //bcp->offset
    80, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20468C10,    ABISELECT(9520,7336), //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
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(10848,8388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3216C8_nt,    ABISELECT(10864,8396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20468C3,    ABISELECT(10856,8392), //bcp->offset
    -1, //bcp->virtual_function_table_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
    20, //immediately_derived
  0, 0},
  {&cd_S20468C11,    ABISELECT(10856,8392), //bcp->offset
    72, //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
    10, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20468C9,    ABISELECT(9520,7336), //bcp->offset
    57, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S20468C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20468C5,    ABISELECT(272,208), //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
    17, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(424,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
    25, //immediately_derived
  0, 0},
  {&cd_S20468C3,    ABISELECT(416,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
    18, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20468C6,    ABISELECT(416,312), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20468C2,    ABISELECT(272,208), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20468C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20468C5,    ABISELECT(11152,8604), //bcp->offset
    89, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20468C1[];
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
extern void _ZN8S20468C1D1Ev();
extern void _ZN8S20468C1D0Ev();
extern void _ZN8S20468C12v1Ev();
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
extern void _ZN8S20468C52v5Ev();
extern void _ZN8S20468C22v6Ev();
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
extern void _ZN8S20468C52v5Ev();
extern void _ZN8S20468C22v6Ev();
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
extern void ABISELECT(_ZTv0_n56_N8S20468C1D1Ev,_ZTv0_n28_N8S20468C1D1Ev)();
extern void ABISELECT(_ZThn9520_N8S20468C1D1Ev,_ZThn7336_N8S20468C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20468C1D0Ev,_ZTv0_n28_N8S20468C1D0Ev)();
extern void ABISELECT(_ZThn9520_N8S20468C1D0Ev,_ZThn7336_N8S20468C1D0Ev)() __attribute__((weak));
extern void _ZN8S20468C92v8Ev();
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N8S20468C1D1Ev,_ZTvn1056_n28_N8S20468C1D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N8S20468C1D0Ev,_ZTvn1056_n28_N8S20468C1D0Ev)();
extern void _ZN9S20468C112v7Ev();
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
extern void _ZN8S20468C52v5Ev();
static  VTBL_ENTRY vtc_S20468C1[] = {
  ABISELECT(11152,8604),
  ABISELECT(8912,6860),
  ABISELECT(11008,8492),
  ABISELECT(9464,7292),
  ABISELECT(9520,7336),
  ABISELECT(9512,7332),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C1[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20468C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20468C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20468C12v1Ev,
  ABISELECT(9464,7292),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI8S20468C1[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
  ABISELECT(9240,7124),
  ABISELECT(9192,7084),
  ABISELECT(-272,-208),
  (VTBL_ENTRY)&(_ZTI8S20468C1[0]),
  (VTBL_ENTRY)&_ZN8S20468C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20468C22v6Ev,
  ABISELECT(9096,7020),
  ABISELECT(-416,-312),
  (VTBL_ENTRY)&(_ZTI8S20468C1[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(600,472),
  ABISELECT(552,432),
  ABISELECT(-8912,-6860),
  (VTBL_ENTRY)&(_ZTI8S20468C1[0]),
  (VTBL_ENTRY)&_ZN8S20468C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20468C22v6Ev,
  ABISELECT(456,368),
  ABISELECT(-9056,-6964),
  (VTBL_ENTRY)&(_ZTI8S20468C1[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
  0,
  0,
  0,
  ABISELECT(-9464,-7292),
  (VTBL_ENTRY)&(_ZTI8S20468C1[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-9520,-7336),
  ABISELECT(-608,-476),
  ABISELECT(1488,1156),
  ABISELECT(-56,-44),
  ABISELECT(-8,-4),
  ABISELECT(-9520,-7336),
  (VTBL_ENTRY)&(_ZTI8S20468C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20468C1D1Ev,_ZTv0_n28_N8S20468C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20468C1D0Ev,_ZTv0_n28_N8S20468C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20468C92v8Ev,
  ABISELECT(-10856,-8392),
  (VTBL_ENTRY)&(_ZTI8S20468C1[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20468C1D1Ev,_ZTvn1056_n28_N8S20468C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20468C1D0Ev,_ZTvn1056_n28_N8S20468C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20468C112v7Ev,
  0,
  0,
  0,
  ABISELECT(-1496,-1160),
  ABISELECT(-11008,-8492),
  (VTBL_ENTRY)&(_ZTI8S20468C1[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
  0,
  ABISELECT(-1640,-1272),
  ABISELECT(-1688,-1312),
  ABISELECT(-11152,-8604),
  (VTBL_ENTRY)&(_ZTI8S20468C1[0]),
  (VTBL_ENTRY)&_ZN8S20468C52v5Ev,
};
extern VTBL_ENTRY _ZTV8S20468C1[];
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
extern void _ZN8S20468C7D1Ev();
extern void _ZN8S20468C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C7__8S20468C1[] = {
  ABISELECT(8912,6860),
  ABISELECT(11008,8492),
  ABISELECT(9464,7292),
  ABISELECT(9520,7336),
  ABISELECT(9512,7332),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C7[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20468C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20468C7D0Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
extern void _ZN8S20468C8D1Ev();
extern void _ZN8S20468C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C88S20468C7__8S20468C1[] = {
  ABISELECT(8912,6860),
  ABISELECT(11008,8492),
  ABISELECT(9464,7292),
  ABISELECT(9520,7336),
  ABISELECT(9512,7332),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C8[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20468C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20468C8D0Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C68S20468C88S20468C7__A1__8S20468C1[] = {
  ABISELECT(9464,7292),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C6[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C6__A__8S20468C88S20468C7__8S20468C1[] = {
  ABISELECT(9464,7292),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI8S20468C8[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S20468C8D1Ev,_ZTv0_n28_N8S20468C8D1Ev)();
extern void ABISELECT(_ZThn9520_N8S20468C8D1Ev,_ZThn7336_N8S20468C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20468C8D0Ev,_ZTv0_n28_N8S20468C8D0Ev)();
extern void ABISELECT(_ZThn9520_N8S20468C8D0Ev,_ZThn7336_N8S20468C8D0Ev)() __attribute__((weak));
extern void _ZN8S20468C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C9__8S20468C88S20468C7__8S20468C1[] = {
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-9520,-7336),
  ABISELECT(-608,-476),
  ABISELECT(1488,1156),
  ABISELECT(-56,-44),
  ABISELECT(-8,-4),
  ABISELECT(-9520,-7336),
  (VTBL_ENTRY)&(_ZTI8S20468C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20468C8D1Ev,_ZTv0_n28_N8S20468C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20468C8D0Ev,_ZTv0_n28_N8S20468C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20468C92v8Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C3__A2__8S20468C88S20468C7__8S20468C1[] = {
  0,
  0,
  0,
  ABISELECT(-9464,-7292),
  (VTBL_ENTRY)&(_ZTI8S20468C8[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C6__A1__8S20468C88S20468C7__8S20468C1[] = {
  0,
  0,
  0,
  ABISELECT(-1496,-1160),
  ABISELECT(-11008,-8492),
  (VTBL_ENTRY)&(_ZTI8S20468C8[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C52v5Ev();
extern void _ZN8S20468C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C2__8S20468C88S20468C7__8S20468C1[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(600,472),
  ABISELECT(552,432),
  ABISELECT(-8912,-6860),
  (VTBL_ENTRY)&(_ZTI8S20468C8[0]),
  (VTBL_ENTRY)&_ZN8S20468C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20468C22v6Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C68S20468C2__A2__8S20468C88S20468C7__8S20468C1[] = {
  ABISELECT(456,368),
  ABISELECT(-9056,-6964),
  (VTBL_ENTRY)&(_ZTI8S20468C8[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N8S20468C8D1Ev,_ZTvn1056_n28_N8S20468C8D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N8S20468C8D0Ev,_ZTvn1056_n28_N8S20468C8D0Ev)();
extern void _ZN9S20468C112v7Ev();
static  VTBL_ENTRY _tg__ZTV9S20468C118S20468C9__8S20468C88S20468C7__8S20468C1[] = {
  ABISELECT(-10856,-8392),
  (VTBL_ENTRY)&(_ZTI8S20468C8[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20468C8D1Ev,_ZTvn1056_n28_N8S20468C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20468C8D0Ev,_ZTvn1056_n28_N8S20468C8D0Ev),
  (VTBL_ENTRY)&_ZN9S20468C112v7Ev,
};
extern void _ZN8S20468C52v5Ev();
extern void _ZN8S20468C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C28S20468C7__A1__8S20468C1[] = {
  ABISELECT(9240,7124),
  ABISELECT(9192,7084),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C2[0]),
  (VTBL_ENTRY)&_ZN8S20468C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20468C22v6Ev,
};
extern void _ZN8S20468C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C58S20468C28S20468C7__A1__8S20468C1[] = {
  ABISELECT(9240,7124),
  ABISELECT(9192,7084),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C5[0]),
  (VTBL_ENTRY)&_ZN8S20468C52v5Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C3__8S20468C58S20468C28S20468C7__A1__8S20468C1[] = {
  0,
  0,
  0,
  ABISELECT(-9192,-7084),
  (VTBL_ENTRY)&(_ZTI8S20468C5[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C68S20468C28S20468C7__A3__8S20468C1[] = {
  ABISELECT(9096,7020),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C6[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C3__8S20468C28S20468C7__A1__8S20468C1[] = {
  0,
  0,
  0,
  ABISELECT(-9192,-7084),
  (VTBL_ENTRY)&(_ZTI8S20468C2[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C6__8S20468C28S20468C7__A1__8S20468C1[] = {
  ABISELECT(9096,7020),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20468C2[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C68S20468C8__8S20468C7__8S20468C1[] = {
  ABISELECT(9464,7292),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI8S20468C7[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S20468C7D1Ev,_ZTv0_n28_N8S20468C7D1Ev)();
extern void ABISELECT(_ZThn9520_N8S20468C7D1Ev,_ZThn7336_N8S20468C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20468C7D0Ev,_ZTv0_n28_N8S20468C7D0Ev)();
extern void ABISELECT(_ZThn9520_N8S20468C7D0Ev,_ZThn7336_N8S20468C7D0Ev)() __attribute__((weak));
extern void _ZN8S20468C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C9__8S20468C7__8S20468C1[] = {
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-9520,-7336),
  ABISELECT(-608,-476),
  ABISELECT(1488,1156),
  ABISELECT(-56,-44),
  ABISELECT(-8,-4),
  ABISELECT(-9520,-7336),
  (VTBL_ENTRY)&(_ZTI8S20468C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20468C7D1Ev,_ZTv0_n28_N8S20468C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20468C7D0Ev,_ZTv0_n28_N8S20468C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20468C92v8Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C3__A2__8S20468C7__8S20468C1[] = {
  0,
  0,
  0,
  ABISELECT(-9464,-7292),
  (VTBL_ENTRY)&(_ZTI8S20468C7[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C6__A1__8S20468C7__8S20468C1[] = {
  0,
  0,
  0,
  ABISELECT(-1496,-1160),
  ABISELECT(-11008,-8492),
  (VTBL_ENTRY)&(_ZTI8S20468C7[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C52v5Ev();
extern void _ZN8S20468C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C2__8S20468C7__8S20468C1[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(600,472),
  ABISELECT(552,432),
  ABISELECT(-8912,-6860),
  (VTBL_ENTRY)&(_ZTI8S20468C7[0]),
  (VTBL_ENTRY)&_ZN8S20468C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20468C22v6Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C68S20468C2__A2__8S20468C7__8S20468C1[] = {
  ABISELECT(456,368),
  ABISELECT(-9056,-6964),
  (VTBL_ENTRY)&(_ZTI8S20468C7[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N8S20468C7D1Ev,_ZTvn1056_n28_N8S20468C7D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N8S20468C7D0Ev,_ZTvn1056_n28_N8S20468C7D0Ev)();
extern void _ZN9S20468C112v7Ev();
static  VTBL_ENTRY _tg__ZTV9S20468C118S20468C9__8S20468C7__8S20468C1[] = {
  ABISELECT(-10856,-8392),
  (VTBL_ENTRY)&(_ZTI8S20468C7[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20468C7D1Ev,_ZTvn1056_n28_N8S20468C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20468C7D0Ev,_ZTvn1056_n28_N8S20468C7D0Ev),
  (VTBL_ENTRY)&_ZN9S20468C112v7Ev,
};
extern void _ZN8S20468C52v5Ev();
extern void _ZN8S20468C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C2__A__8S20468C7__8S20468C1[] = {
  ABISELECT(9240,7124),
  ABISELECT(9192,7084),
  ABISELECT(-272,-208),
  (VTBL_ENTRY)&(_ZTI8S20468C7[0]),
  (VTBL_ENTRY)&_ZN8S20468C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20468C22v6Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C68S20468C2__A3__8S20468C7__8S20468C1[] = {
  ABISELECT(9096,7020),
  ABISELECT(-416,-312),
  (VTBL_ENTRY)&(_ZTI8S20468C7[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C52v5Ev();
extern void _ZN8S20468C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C2__8S20468C1[] = {
  ABISELECT(600,472),
  ABISELECT(552,432),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C2[0]),
  (VTBL_ENTRY)&_ZN8S20468C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20468C22v6Ev,
};
extern void _ZN8S20468C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C58S20468C2__8S20468C1[] = {
  ABISELECT(600,472),
  ABISELECT(552,432),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C5[0]),
  (VTBL_ENTRY)&_ZN8S20468C52v5Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C3__8S20468C58S20468C2__8S20468C1[] = {
  0,
  0,
  0,
  ABISELECT(-552,-432),
  (VTBL_ENTRY)&(_ZTI8S20468C5[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C68S20468C2__8S20468C1[] = {
  ABISELECT(456,368),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C6[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C3__8S20468C2__8S20468C1[] = {
  0,
  0,
  0,
  ABISELECT(-552,-432),
  (VTBL_ENTRY)&(_ZTI8S20468C2[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C6__8S20468C2__8S20468C1[] = {
  ABISELECT(456,368),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20468C2[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C9D1Ev();
extern void _ZN8S20468C9D0Ev();
extern void _ZN8S20468C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C9__8S20468C1[] = {
  ABISELECT(-608,-476),
  ABISELECT(1488,1156),
  ABISELECT(-56,-44),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C9[0]),
  (VTBL_ENTRY)&_ZN8S20468C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20468C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20468C92v8Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20468C108S20468C9__8S20468C1[] = {
  ABISELECT(1488,1156),
  ABISELECT(-56,-44),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20468C10[0]),
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C3__9S20468C108S20468C9__8S20468C1[] = {
  0,
  0,
  0,
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI9S20468C10[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C6__9S20468C108S20468C9__8S20468C1[] = {
  0,
  0,
  0,
  ABISELECT(-1496,-1160),
  ABISELECT(-1488,-1156),
  (VTBL_ENTRY)&(_ZTI9S20468C10[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C3__8S20468C9__8S20468C1[] = {
  0,
  0,
  0,
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI8S20468C9[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C6__8S20468C9__8S20468C1[] = {
  0,
  0,
  0,
  ABISELECT(-1496,-1160),
  ABISELECT(-1488,-1156),
  (VTBL_ENTRY)&(_ZTI8S20468C9[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C52v5Ev();
extern void _ZN8S20468C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C2__8S20468C9__8S20468C1[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(600,472),
  ABISELECT(552,432),
  ABISELECT(608,476),
  (VTBL_ENTRY)&(_ZTI8S20468C9[0]),
  (VTBL_ENTRY)&_ZN8S20468C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20468C22v6Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C68S20468C2__A1__8S20468C9__8S20468C1[] = {
  ABISELECT(456,368),
  ABISELECT(464,372),
  (VTBL_ENTRY)&(_ZTI8S20468C9[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C6__A2__8S20468C1[] = {
  ABISELECT(-1496,-1160),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C6[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
extern void _ZN8S20468C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C5__A2__8S20468C1[] = {
  ABISELECT(-1640,-1272),
  ABISELECT(-1688,-1312),
  0,
  (VTBL_ENTRY)&(_ZTI8S20468C5[0]),
  (VTBL_ENTRY)&_ZN8S20468C52v5Ev,
};
extern void _ZN8S20468C32v2Ev();
extern void _ZN8S20468C32v3Ev();
extern void _ZN8S20468C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20468C3__8S20468C5__A2__8S20468C1[] = {
  0,
  0,
  0,
  ABISELECT(1688,1312),
  (VTBL_ENTRY)&(_ZTI8S20468C5[0]),
  (VTBL_ENTRY)&_ZN8S20468C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20468C32v4Ev,
};
static  VTT_ENTRY vtt_S20468C1[] = {
  {&(_ZTV8S20468C1[8]),  8,95},
  {&(_tg__ZTV8S20468C7__8S20468C1[7]),  7,12},
  {&(_tg__ZTV8S20468C88S20468C7__8S20468C1[7]),  7,12},
  {&(_tg__ZTV8S20468C68S20468C88S20468C7__A1__8S20468C1[3]),  3,6},
  {&(_tg__ZTV8S20468C6__A__8S20468C88S20468C7__8S20468C1[3]),  3,6},
  {&(_tg__ZTV8S20468C9__8S20468C88S20468C7__8S20468C1[12]),  12,15},
  {&(_tg__ZTV8S20468C3__A2__8S20468C88S20468C7__8S20468C1[5]),  5,8},
  {&(_tg__ZTV8S20468C6__A1__8S20468C88S20468C7__8S20468C1[6]),  6,9},
  {&(_tg__ZTV8S20468C2__8S20468C88S20468C7__8S20468C1[9]),  9,11},
  {&(_tg__ZTV8S20468C68S20468C2__A2__8S20468C88S20468C7__8S20468C1[3]),  3,6},
  {&(_tg__ZTV9S20468C118S20468C9__8S20468C88S20468C7__8S20468C1[2]),  2,8},
  {&(_tg__ZTV8S20468C28S20468C7__A1__8S20468C1[4]),  4,6},
  {&(_tg__ZTV8S20468C58S20468C28S20468C7__A1__8S20468C1[4]),  4,5},
  {&(_tg__ZTV8S20468C3__8S20468C58S20468C28S20468C7__A1__8S20468C1[5]),  5,8},
  {&(_tg__ZTV8S20468C68S20468C28S20468C7__A3__8S20468C1[3]),  3,6},
  {&(_tg__ZTV8S20468C3__8S20468C28S20468C7__A1__8S20468C1[5]),  5,8},
  {&(_tg__ZTV8S20468C6__8S20468C28S20468C7__A1__8S20468C1[3]),  3,6},
  {&(_tg__ZTV8S20468C68S20468C8__8S20468C7__8S20468C1[3]),  3,6},
  {&(_tg__ZTV8S20468C9__8S20468C7__8S20468C1[12]),  12,15},
  {&(_tg__ZTV8S20468C3__A2__8S20468C7__8S20468C1[5]),  5,8},
  {&(_tg__ZTV8S20468C6__A1__8S20468C7__8S20468C1[6]),  6,9},
  {&(_tg__ZTV8S20468C2__8S20468C7__8S20468C1[9]),  9,11},
  {&(_tg__ZTV8S20468C68S20468C2__A2__8S20468C7__8S20468C1[3]),  3,6},
  {&(_tg__ZTV9S20468C118S20468C9__8S20468C7__8S20468C1[2]),  2,8},
  {&(_tg__ZTV8S20468C2__A__8S20468C7__8S20468C1[4]),  4,6},
  {&(_tg__ZTV8S20468C68S20468C2__A3__8S20468C7__8S20468C1[3]),  3,6},
  {&(_ZTV8S20468C1[41]),  41,95},
  {&(_ZTV8S20468C1[54]),  54,95},
  {&(_ZTV8S20468C1[46]),  46,95},
  {&(_ZTV8S20468C1[17]),  17,95},
  {&(_ZTV8S20468C1[69]),  69,95},
  {&(_ZTV8S20468C1[86]),  86,95},
  {&(_ZTV8S20468C1[74]),  74,95},
  {&(_ZTV8S20468C1[24]),  24,95},
  {&(_ZTV8S20468C1[29]),  29,95},
  {&(_ZTV8S20468C1[94]),  94,95},
  {&(_tg__ZTV8S20468C2__8S20468C1[4]),  4,6},
  {&(_tg__ZTV8S20468C58S20468C2__8S20468C1[4]),  4,5},
  {&(_tg__ZTV8S20468C3__8S20468C58S20468C2__8S20468C1[5]),  5,8},
  {&(_tg__ZTV8S20468C68S20468C2__8S20468C1[3]),  3,6},
  {&(_tg__ZTV8S20468C3__8S20468C2__8S20468C1[5]),  5,8},
  {&(_tg__ZTV8S20468C6__8S20468C2__8S20468C1[3]),  3,6},
  {&(_tg__ZTV8S20468C9__8S20468C1[6]),  6,9},
  {&(_tg__ZTV9S20468C108S20468C9__8S20468C1[5]),  5,5},
  {&(_tg__ZTV8S20468C3__9S20468C108S20468C9__8S20468C1[5]),  5,8},
  {&(_tg__ZTV8S20468C6__9S20468C108S20468C9__8S20468C1[6]),  6,9},
  {&(_tg__ZTV8S20468C3__8S20468C9__8S20468C1[5]),  5,8},
  {&(_tg__ZTV8S20468C6__8S20468C9__8S20468C1[6]),  6,9},
  {&(_tg__ZTV8S20468C2__8S20468C9__8S20468C1[9]),  9,11},
  {&(_tg__ZTV8S20468C68S20468C2__A1__8S20468C9__8S20468C1[3]),  3,6},
  {&(_tg__ZTV8S20468C6__A2__8S20468C1[3]),  3,6},
  {&(_tg__ZTV8S20468C5__A2__8S20468C1[4]),  4,5},
  {&(_tg__ZTV8S20468C3__8S20468C5__A2__8S20468C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S20468C1[];
extern  VTBL_ENTRY _ZTV8S20468C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20468C1[];
static VTBL_ENTRY alt_thunk_names29[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20468C7D0Ev,_ZTv0_n28_N8S20468C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9520_N8S20468C7D0Ev,_ZThn7336_N8S20468C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20468C7D1Ev,_ZTv0_n28_N8S20468C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9520_N8S20468C7D1Ev,_ZThn7336_N8S20468C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20468C8D0Ev,_ZTv0_n28_N8S20468C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9520_N8S20468C8D0Ev,_ZThn7336_N8S20468C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20468C8D1Ev,_ZTv0_n28_N8S20468C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9520_N8S20468C8D1Ev,_ZThn7336_N8S20468C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20468C1D0Ev,_ZTv0_n28_N8S20468C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9520_N8S20468C1D0Ev,_ZThn7336_N8S20468C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20468C1D1Ev,_ZTv0_n28_N8S20468C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9520_N8S20468C1D1Ev,_ZThn7336_N8S20468C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20468C1 = {  "S20468C1", // class name
  bases_S20468C1, 30,
  &(vtc_S20468C1[0]), // expected_vtbl_contents
  &(vtt_S20468C1[0]), // expected_vtt_contents
  ABISELECT(11296,8708), // object size
  NSPAIRA(_ZTI8S20468C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20468C1),95, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20468C1),53, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names29,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20467C3  : S3216C8_nt {
  ::S3216C8_nt s20467c3f0[3];
  ::S3216C8_nt s20467c3f1[2];
  void *s20467c3f2;
  short s20467c3f3;
  ::S3216C8_nt s20467c3f4;
  virtual void  v2(); // _ZN8S20467C32v2Ev
  virtual void  v3(); // _ZN8S20467C32v3Ev
  virtual void  v4(); // _ZN8S20467C32v4Ev
  ~S20467C3(); // tgen
  S20467C3(); // tgen
};
//SIG(-1 S20467C3) C1{ BC2{ m Fi} v1 v2 v3 FC2[3] FC2[2] Fp Fs FC2}


void  S20467C3 ::v2(){vfunc_called(this, "_ZN8S20467C32v2Ev");}
void  S20467C3 ::v3(){vfunc_called(this, "_ZN8S20467C32v3Ev");}
void  S20467C3 ::v4(){vfunc_called(this, "_ZN8S20467C32v4Ev");}
S20467C3 ::~S20467C3(){ note_dtor("S20467C3", this);} // tgen
S20467C3 ::S20467C3(){ note_ctor("S20467C3", this);} // tgen

static void Test_S20467C3()
{
  extern Class_Descriptor cd_S20467C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,11)];
    init_test(&cd_S20467C3, buf);
    S20467C3 *dp, &lv = *(dp=new (buf) S20467C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S20467C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20467C3)");
    check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(8,4), "S20467C3");
    check_field_offset(lv, s20467c3f0, ABISELECT(12,8), "S20467C3.s20467c3f0");
    check_field_offset(lv, s20467c3f1, ABISELECT(24,20), "S20467C3.s20467c3f1");
    check_field_offset(lv, s20467c3f2, ABISELECT(32,28), "S20467C3.s20467c3f2");
    check_field_offset(lv, s20467c3f3, ABISELECT(40,32), "S20467C3.s20467c3f3");
    check_field_offset(lv, s20467c3f4, ABISELECT(44,36), "S20467C3.s20467c3f4");
    test_class_info(&lv, &cd_S20467C3);
    dp->~S20467C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20467C3(Test_S20467C3, "S20467C3", ABISELECT(48,40));

#else // __cplusplus

extern void _ZN8S20467C3C1Ev();
extern void _ZN8S20467C3D1Ev();
Name_Map name_map_S20467C3[] = {
  NSPAIR(_ZN8S20467C3C1Ev),
  NSPAIR(_ZN8S20467C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S20467C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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 _ZTI8S20467C3[];
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY vtc_S20467C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C3[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern VTBL_ENTRY _ZTI8S20467C3[];
extern  VTBL_ENTRY _ZTV8S20467C3[];
Class_Descriptor cd_S20467C3 = {  "S20467C3", // class name
  bases_S20467C3, 1,
  &(vtc_S20467C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,40), // object size
  NSPAIRA(_ZTI8S20467C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20467C3),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  S20467C5  : virtual S20467C3 , virtual S3216C8_nt {
  ::S20467C3 s20467c5f0;
  long double s20467c5f1;
  void *s20467c5f2[2];
  ::S20467C3 s20467c5f3;
  virtual void  v5(); // _ZN8S20467C52v5Ev
  ~S20467C5(); // tgen
  S20467C5(); // tgen
};
//SIG(-1 S20467C5) C1{ VBC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC3 v1 FC2 FD Fp[2] FC2}


void  S20467C5 ::v5(){vfunc_called(this, "_ZN8S20467C52v5Ev");}
S20467C5 ::~S20467C5(){ note_dtor("S20467C5", this);} // tgen
S20467C5 ::S20467C5(){ note_ctor("S20467C5", this);} // tgen

static void Test_S20467C5()
{
  extern Class_Descriptor cd_S20467C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,38)];
    init_test(&cd_S20467C5, buf);
    S20467C5 *dp, &lv = *(dp=new (buf) S20467C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,148), "sizeof(S20467C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20467C5)");
    check_base_class_offset(lv, (S3216C8_nt*)(S20467C3*), ABISELECT(152,108), "S20467C5");
    check_base_class_offset(lv, (S20467C3*), ABISELECT(144,104), "S20467C5");
    /*is_ambiguous_... S20467C5::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(192,144), "S20467C5");
    check_field_offset(lv, s20467c5f0, ABISELECT(8,4), "S20467C5.s20467c5f0");
    check_field_offset(lv, s20467c5f1, ABISELECT(64,44), "S20467C5.s20467c5f1");
    check_field_offset(lv, s20467c5f2, ABISELECT(80,56), "S20467C5.s20467c5f2");
    check_field_offset(lv, s20467c5f3, ABISELECT(96,64), "S20467C5.s20467c5f3");
    test_class_info(&lv, &cd_S20467C5);
    dp->~S20467C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20467C5(Test_S20467C5, "S20467C5", ABISELECT(208,148));

#else // __cplusplus

extern void _ZN8S20467C5C1Ev();
extern void _ZN8S20467C5D1Ev();
Name_Map name_map_S20467C5[] = {
  NSPAIR(_ZN8S20467C5C1Ev),
  NSPAIR(_ZN8S20467C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C3;
extern VTBL_ENTRY _ZTI8S20467C3[];
extern  VTBL_ENTRY _ZTV8S20467C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S20467C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(152,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
    1, //immediately_derived
  0, 0},
  {&cd_S20467C3,    ABISELECT(144,104), //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(192,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20467C5[];
extern void _ZN8S20467C52v5Ev();
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY vtc_S20467C5[] = {
  ABISELECT(192,144),
  ABISELECT(144,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C5[0]),
  (VTBL_ENTRY)&_ZN8S20467C52v5Ev,
  0,
  0,
  0,
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20467C5[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern VTBL_ENTRY _ZTV8S20467C5[];
static  VTT_ENTRY vtt_S20467C5[] = {
  {&(_ZTV8S20467C5[4]),  4,13},
  {&(_ZTV8S20467C5[10]),  10,13},
};
extern VTBL_ENTRY _ZTI8S20467C5[];
extern  VTBL_ENTRY _ZTV8S20467C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C5[];
Class_Descriptor cd_S20467C5 = {  "S20467C5", // class name
  bases_S20467C5, 3,
  &(vtc_S20467C5[0]), // expected_vtbl_contents
  &(vtt_S20467C5[0]), // expected_vtt_contents
  ABISELECT(208,148), // object size
  NSPAIRA(_ZTI8S20467C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20467C5),13, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20467C5),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  S20467C6  : S20467C3 , virtual S3216C8_nt {
  long double s20467c6f0;
  __tsi64 s20467c6f1;
  ::S20467C3 s20467c6f2;
  void *s20467c6f3;
  short s20467c6f4[3];
  ~S20467C6(); // tgen
  S20467C6(); // tgen
};
//SIG(-1 S20467C6) C1{ BC2{ BC3{ m Fi} v1 v2 v3 FC3[3] FC3[2] Fp Fs FC3} VBC3 FD FL FC2 Fp Fs[3]}


S20467C6 ::~S20467C6(){ note_dtor("S20467C6", this);} // tgen
S20467C6 ::S20467C6(){ note_ctor("S20467C6", this);} // tgen

static void Test_S20467C6()
{
  extern Class_Descriptor cd_S20467C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,30)];
    init_test(&cd_S20467C6, buf);
    S20467C6 *dp, &lv = *(dp=new (buf) S20467C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,116), "sizeof(S20467C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20467C6)");
    check_base_class_offset(lv, (S3216C8_nt*)(S20467C3*), ABISELECT(8,4), "S20467C6");
    check_base_class_offset(lv, (S20467C3*), 0, "S20467C6");
    /*is_ambiguous_... S20467C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(136,112), "S20467C6");
    check_field_offset(lv, s20467c6f0, ABISELECT(48,40), "S20467C6.s20467c6f0");
    check_field_offset(lv, s20467c6f1, ABISELECT(64,52), "S20467C6.s20467c6f1");
    check_field_offset(lv, s20467c6f2, ABISELECT(72,60), "S20467C6.s20467c6f2");
    check_field_offset(lv, s20467c6f3, ABISELECT(120,100), "S20467C6.s20467c6f3");
    check_field_offset(lv, s20467c6f4, ABISELECT(128,104), "S20467C6.s20467c6f4");
    test_class_info(&lv, &cd_S20467C6);
    dp->~S20467C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20467C6(Test_S20467C6, "S20467C6", ABISELECT(144,116));

#else // __cplusplus

extern void _ZN8S20467C6C1Ev();
extern void _ZN8S20467C6D1Ev();
Name_Map name_map_S20467C6[] = {
  NSPAIR(_ZN8S20467C6C1Ev),
  NSPAIR(_ZN8S20467C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C3;
extern VTBL_ENTRY _ZTI8S20467C3[];
extern  VTBL_ENTRY _ZTV8S20467C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S20467C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S20467C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20467C6[];
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY vtc_S20467C6[] = {
  ABISELECT(136,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C6[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern VTBL_ENTRY _ZTV8S20467C6[];
static  VTT_ENTRY vtt_S20467C6[] = {
  {&(_ZTV8S20467C6[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S20467C6[];
extern  VTBL_ENTRY _ZTV8S20467C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C6[];
Class_Descriptor cd_S20467C6 = {  "S20467C6", // class name
  bases_S20467C6, 3,
  &(vtc_S20467C6[0]), // expected_vtbl_contents
  &(vtt_S20467C6[0]), // expected_vtt_contents
  ABISELECT(144,116), // object size
  NSPAIRA(_ZTI8S20467C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20467C6),6, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20467C6),1, //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  S20467C2  : virtual S20467C3 , virtual S3216C8_nt , S20467C5 , S20467C6 {
  void *s20467c2f0[2];
  long s20467c2f1;
  int s20467c2f2;
  ::S20467C3 s20467c2f3[5];
  virtual void  v6(); // _ZN8S20467C22v6Ev
  ~S20467C2(); // tgen
  S20467C2(); // tgen
};
//SIG(-1 S20467C2) C1{ VBC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC3 BC4{ VBC2 VBC3 v5 FC2 FD Fp[2] FC2} BC5{ BC2 VBC3 FD FL FC2 Fp Fs[3]} v1 Fp[2] Fl Fi FC2[5]}


void  S20467C2 ::v6(){vfunc_called(this, "_ZN8S20467C22v6Ev");}
S20467C2 ::~S20467C2(){ note_dtor("S20467C2", this);} // tgen
S20467C2 ::S20467C2(){ note_ctor("S20467C2", this);} // tgen

static void Test_S20467C2()
{
  extern Class_Descriptor cd_S20467C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(39,120)];
    init_test(&cd_S20467C2, buf);
    S20467C2 *dp, &lv = *(dp=new (buf) S20467C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(608,476), "sizeof(S20467C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20467C2)");
    /*is_ambiguous_... S20467C2::S20467C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C3*), ABISELECT(560,436), "S20467C2");
    /*is_ambiguous_... S20467C2::S20467C3 */ AMB_check_base_class_offset(lv, (S20467C3*), ABISELECT(552,432), "S20467C2");
    check_base_class_offset(lv, (S20467C3*)(S20467C5*), ABISELECT(552,432), "S20467C2");
    /*is_ambiguous_... S20467C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(600,472), "S20467C2");
    /*is_ambiguous_... S20467C5::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C5*), ABISELECT(600,472), "S20467C2");
    /*is_ambiguous_... S20467C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C6*), ABISELECT(600,472), "S20467C2");
    check_base_class_offset(lv, (S20467C5*), 0, "S20467C2");
    check_base_class_offset(lv, (S3216C8_nt*)(S20467C3*)(S20467C6*), ABISELECT(152,108), "S20467C2");
    check_base_class_offset(lv, (S20467C3*)(S20467C6*), ABISELECT(144,104), "S20467C2");
    check_base_class_offset(lv, (S20467C6*), ABISELECT(144,104), "S20467C2");
    check_field_offset(lv, s20467c2f0, ABISELECT(280,216), "S20467C2.s20467c2f0");
    check_field_offset(lv, s20467c2f1, ABISELECT(296,224), "S20467C2.s20467c2f1");
    check_field_offset(lv, s20467c2f2, ABISELECT(304,228), "S20467C2.s20467c2f2");
    check_field_offset(lv, s20467c2f3, ABISELECT(312,232), "S20467C2.s20467c2f3");
    test_class_info(&lv, &cd_S20467C2);
    dp->~S20467C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20467C2(Test_S20467C2, "S20467C2", ABISELECT(608,476));

#else // __cplusplus

extern void _ZN8S20467C2C1Ev();
extern void _ZN8S20467C2D1Ev();
Name_Map name_map_S20467C2[] = {
  NSPAIR(_ZN8S20467C2C1Ev),
  NSPAIR(_ZN8S20467C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C3;
extern VTBL_ENTRY _ZTI8S20467C3[];
extern  VTBL_ENTRY _ZTV8S20467C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C5;
extern VTBL_ENTRY _ZTI8S20467C5[];
extern  VTBL_ENTRY _ZTV8S20467C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C3;
extern VTBL_ENTRY _ZTI8S20467C3[];
extern  VTBL_ENTRY _ZTV8S20467C3[];
extern Class_Descriptor cd_S20467C6;
extern VTBL_ENTRY _ZTI8S20467C6[];
extern  VTBL_ENTRY _ZTV8S20467C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C6[];
static Base_Class bases_S20467C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(560,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
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20467C3,    ABISELECT(552,432), //bcp->offset
    12, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(600,472), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20467C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(152,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20467C3,    ABISELECT(144,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20467C6,    ABISELECT(144,104), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20467C2[];
extern void _ZN8S20467C52v5Ev();
extern void _ZN8S20467C22v6Ev();
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY vtc_S20467C2[] = {
  ABISELECT(600,472),
  ABISELECT(552,432),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C2[0]),
  (VTBL_ENTRY)&_ZN8S20467C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20467C22v6Ev,
  ABISELECT(456,368),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20467C2[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
  0,
  0,
  0,
  ABISELECT(-552,-432),
  (VTBL_ENTRY)&(_ZTI8S20467C2[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern VTBL_ENTRY _ZTV8S20467C2[];
extern void _ZN8S20467C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C5__8S20467C2[] = {
  ABISELECT(600,472),
  ABISELECT(552,432),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C5[0]),
  (VTBL_ENTRY)&_ZN8S20467C52v5Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C3__8S20467C5__8S20467C2[] = {
  0,
  0,
  0,
  ABISELECT(-552,-432),
  (VTBL_ENTRY)&(_ZTI8S20467C5[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C6__8S20467C2[] = {
  ABISELECT(456,368),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C6[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
static  VTT_ENTRY vtt_S20467C2[] = {
  {&(_ZTV8S20467C2[4]),  4,20},
  {&(_tg__ZTV8S20467C5__8S20467C2[4]),  4,5},
  {&(_tg__ZTV8S20467C3__8S20467C5__8S20467C2[5]),  5,8},
  {&(_tg__ZTV8S20467C6__8S20467C2[3]),  3,6},
  {&(_ZTV8S20467C2[17]),  17,20},
  {&(_ZTV8S20467C2[9]),  9,20},
};
extern VTBL_ENTRY _ZTI8S20467C2[];
extern  VTBL_ENTRY _ZTV8S20467C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C2[];
Class_Descriptor cd_S20467C2 = {  "S20467C2", // class name
  bases_S20467C2, 7,
  &(vtc_S20467C2[0]), // expected_vtbl_contents
  &(vtt_S20467C2[0]), // expected_vtt_contents
  ABISELECT(608,476), // object size
  NSPAIRA(_ZTI8S20467C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20467C2),20, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20467C2),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  S20467C10  : virtual S3216C8_nt , virtual S20467C3 , virtual S20467C6 {
  void *s20467c10f0[2];
  int s20467c10f1;
  ::S20467C6 s20467c10f2[8];
  long double s20467c10f3[9];
  ~S20467C10(); // tgen
  S20467C10(); // tgen
};
//SIG(-1 S20467C10) C1{ VBC2{ m Fi} VBC3{ BC2 v1 v2 v3 FC2[3] FC2[2] Fp Fs FC2} VBC4{ BC3 VBC2 FD FL FC3 Fp Fs[3]} Fp[2] Fi FC4[8] FD[9]}


S20467C10 ::~S20467C10(){ note_dtor("S20467C10", this);} // tgen
S20467C10 ::S20467C10(){ note_ctor("S20467C10", this);} // tgen

static void Test_S20467C10()
{
  extern Class_Descriptor cd_S20467C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(97,303)];
    init_test(&cd_S20467C10, buf);
    S20467C10 *dp, &lv = *(dp=new (buf) S20467C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1536,1208), "sizeof(S20467C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20467C10)");
    /*is_ambiguous_... S20467C10::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(1328,1052), "S20467C10");
    /*is_ambiguous_... S20467C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C6*), ABISELECT(1328,1052), "S20467C10");
    /*is_ambiguous_... S20467C10::S20467C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C3*), ABISELECT(1344,1060), "S20467C10");
    /*is_ambiguous_... S20467C10::S20467C3 */ AMB_check_base_class_offset(lv, (S20467C3*), ABISELECT(1336,1056), "S20467C10");
    check_base_class_offset(lv, (S3216C8_nt*)(S20467C3*)(S20467C6*), ABISELECT(1400,1100), "S20467C10");
    check_base_class_offset(lv, (S20467C3*)(S20467C6*), ABISELECT(1392,1096), "S20467C10");
    check_base_class_offset(lv, (S20467C6*), ABISELECT(1392,1096), "S20467C10");
    check_field_offset(lv, s20467c10f0, ABISELECT(8,4), "S20467C10.s20467c10f0");
    check_field_offset(lv, s20467c10f1, ABISELECT(24,12), "S20467C10.s20467c10f1");
    check_field_offset(lv, s20467c10f2, ABISELECT(32,16), "S20467C10.s20467c10f2");
    check_field_offset(lv, s20467c10f3, ABISELECT(1184,944), "S20467C10.s20467c10f3");
    test_class_info(&lv, &cd_S20467C10);
    dp->~S20467C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20467C10(Test_S20467C10, "S20467C10", ABISELECT(1536,1208));

#else // __cplusplus

extern void _ZN9S20467C10C1Ev();
extern void _ZN9S20467C10D1Ev();
Name_Map name_map_S20467C10[] = {
  NSPAIR(_ZN9S20467C10C1Ev),
  NSPAIR(_ZN9S20467C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C3;
extern VTBL_ENTRY _ZTI8S20467C3[];
extern  VTBL_ENTRY _ZTV8S20467C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C3;
extern VTBL_ENTRY _ZTI8S20467C3[];
extern  VTBL_ENTRY _ZTV8S20467C3[];
extern Class_Descriptor cd_S20467C6;
extern VTBL_ENTRY _ZTI8S20467C6[];
extern  VTBL_ENTRY _ZTV8S20467C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C6[];
static Base_Class bases_S20467C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(1328,1052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1344,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20467C3,    ABISELECT(1336,1056), //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1400,1100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20467C3,    ABISELECT(1392,1096), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20467C6,    ABISELECT(1392,1096), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //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 _ZTI9S20467C10[];
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY vtc_S20467C10[] = {
  ABISELECT(1392,1096),
  ABISELECT(1336,1056),
  ABISELECT(1328,1052),
  0,
  (VTBL_ENTRY)&(_ZTI9S20467C10[0]),
  0,
  0,
  0,
  ABISELECT(-1336,-1056),
  (VTBL_ENTRY)&(_ZTI9S20467C10[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
  0,
  0,
  0,
  ABISELECT(-64,-44),
  ABISELECT(-1392,-1096),
  (VTBL_ENTRY)&(_ZTI9S20467C10[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern VTBL_ENTRY _ZTV9S20467C10[];
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C6__9S20467C10[] = {
  ABISELECT(-64,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C6[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
static  VTT_ENTRY vtt_S20467C10[] = {
  {&(_ZTV9S20467C10[5]),  5,22},
  {&(_ZTV9S20467C10[10]),  10,22},
  {&(_ZTV9S20467C10[19]),  19,22},
  {&(_tg__ZTV8S20467C6__9S20467C10[3]),  3,6},
};
extern VTBL_ENTRY _ZTI9S20467C10[];
extern  VTBL_ENTRY _ZTV9S20467C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20467C10[];
Class_Descriptor cd_S20467C10 = {  "S20467C10", // class name
  bases_S20467C10, 6,
  &(vtc_S20467C10[0]), // expected_vtbl_contents
  &(vtt_S20467C10[0]), // expected_vtt_contents
  ABISELECT(1536,1208), // object size
  NSPAIRA(_ZTI9S20467C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20467C10),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20467C10),4, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20467C11  : S20467C3 {
  void *s20467c11f0[7];
  int s20467c11f1[2];
  __tsi64 s20467c11f2;
  int s20467c11f3;
  virtual  ~S20467C11(); // _ZN9S20467C11D1Ev
  virtual void  v7(); // _ZN9S20467C112v7Ev
  S20467C11(); // tgen
};
//SIG(-1 S20467C11) C1{ BC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} vd v1 Fp[7] Fi[2] FL Fi}


 S20467C11 ::~S20467C11(){ note_dtor("S20467C11", this);}
void  S20467C11 ::v7(){vfunc_called(this, "_ZN9S20467C112v7Ev");}
S20467C11 ::S20467C11(){ note_ctor("S20467C11", this);} // tgen

static void Test_S20467C11()
{
  extern Class_Descriptor cd_S20467C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,23)];
    init_test(&cd_S20467C11, buf);
    S20467C11 *dp, &lv = *(dp=new (buf) S20467C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,88), "sizeof(S20467C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20467C11)");
    check_base_class_offset(lv, (S3216C8_nt*)(S20467C3*), ABISELECT(8,4), "S20467C11");
    check_base_class_offset(lv, (S20467C3*), 0, "S20467C11");
    check_field_offset(lv, s20467c11f0, ABISELECT(48,40), "S20467C11.s20467c11f0");
    check_field_offset(lv, s20467c11f1, ABISELECT(104,68), "S20467C11.s20467c11f1");
    check_field_offset(lv, s20467c11f2, ABISELECT(112,76), "S20467C11.s20467c11f2");
    check_field_offset(lv, s20467c11f3, ABISELECT(120,84), "S20467C11.s20467c11f3");
    test_class_info(&lv, &cd_S20467C11);
    dp->~S20467C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20467C11(Test_S20467C11, "S20467C11", ABISELECT(128,88));

#else // __cplusplus

extern void _ZN9S20467C11C1Ev();
extern void _ZN9S20467C11D1Ev();
Name_Map name_map_S20467C11[] = {
  NSPAIR(_ZN9S20467C11C1Ev),
  NSPAIR(_ZN9S20467C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C3;
extern VTBL_ENTRY _ZTI8S20467C3[];
extern  VTBL_ENTRY _ZTV8S20467C3[];
static Base_Class bases_S20467C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S20467C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20467C11[];
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
extern void _ZN9S20467C11D1Ev();
extern void _ZN9S20467C11D0Ev();
extern void _ZN9S20467C112v7Ev();
static  VTBL_ENTRY vtc_S20467C11[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20467C11[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
  (VTBL_ENTRY)&_ZN9S20467C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20467C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20467C112v7Ev,
};
extern VTBL_ENTRY _ZTI9S20467C11[];
extern  VTBL_ENTRY _ZTV9S20467C11[];
Class_Descriptor cd_S20467C11 = {  "S20467C11", // class name
  bases_S20467C11, 2,
  &(vtc_S20467C11[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,88), // object size
  NSPAIRA(_ZTI9S20467C11),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20467C11),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  S20467C9  : S20467C10 , S3216C8_nt , virtual S20467C2 , S20467C11 {
  int s20467c9f0;
  void *s20467c9f1;
  int s20467c9f2;
  virtual  ~S20467C9(); // _ZN8S20467C9D2Ev
  virtual void  v8(); // _ZN8S20467C92v8Ev
  S20467C9(); // tgen
};
//SIG(-1 S20467C9) C1{ BC2{ VBC3{ m Fi} VBC4{ BC3 v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC5{ BC4 VBC3 FD FL FC4 Fp Fs[3]} Fp[2] Fi FC5[8] FD[9]} BC3 VBC6{ VBC4 VBC3 BC7{ VBC4 VBC3 v5 FC4 FD Fp[2] FC4} BC5 v6 Fp[2] Fl Fi FC4[5]} BC8{ BC4 vd v7 Fp[7] Fi[2] FL Fi} vd v1 Fi Fp Fi}


 S20467C9 ::~S20467C9(){ note_dtor("S20467C9", this);}
void  S20467C9 ::v8(){vfunc_called(this, "_ZN8S20467C92v8Ev");}
S20467C9 ::S20467C9(){ note_ctor("S20467C9", this);} // tgen

static void Test_S20467C9()
{
  extern Class_Descriptor cd_S20467C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(141,437)];
    init_test(&cd_S20467C9, buf);
    S20467C9 *dp, &lv = *(dp=new (buf) S20467C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2240,1744), "sizeof(S20467C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20467C9)");
    /*is_ambiguous_... S20467C10::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C10*), ABISELECT(1476,1156), "S20467C9");
    /*is_ambiguous_... S20467C9::S20467C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C6*), ABISELECT(1476,1156), "S20467C9");
    /*is_ambiguous_... S20467C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C2*), ABISELECT(1476,1156), "S20467C9");
    /*is_ambiguous_... S20467C5::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C5*)(S20467C2*), ABISELECT(1476,1156), "S20467C9");
    /*is_ambiguous_... S20467C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C6*)(S20467C2*), ABISELECT(1476,1156), "S20467C9");
    /*is_ambiguous_... S20467C9::S20467C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C3*), ABISELECT(1488,1164), "S20467C9");
    /*is_ambiguous_... S20467C10::S20467C3 */ AMB_check_base_class_offset(lv, (S20467C3*)(S20467C10*), ABISELECT(1480,1160), "S20467C9");
    /*is_ambiguous_... S20467C2::S20467C3 */ AMB_check_base_class_offset(lv, (S20467C3*)(S20467C2*), ABISELECT(1480,1160), "S20467C9");
    check_base_class_offset(lv, (S20467C3*)(S20467C5*)(S20467C2*), ABISELECT(1480,1160), "S20467C9");
    /*is_ambiguous_... S20467C9::S20467C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C3*)(S20467C6*), ABISELECT(1544,1204), "S20467C9");
    /*is_ambiguous_... S20467C9::S20467C6 */ AMB_check_base_class_offset(lv, (S20467C3*)(S20467C6*), ABISELECT(1536,1200), "S20467C9");
    check_base_class_offset(lv, (S20467C6*)(S20467C10*), ABISELECT(1536,1200), "S20467C9");
    check_base_class_offset(lv, (S20467C10*), 0, "S20467C9");
    /*is_ambiguous_... S20467C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(1328,1052), "S20467C9");
    check_base_class_offset(lv, (S20467C5*)(S20467C2*), ABISELECT(1680,1312), "S20467C9");
    check_base_class_offset(lv, (S3216C8_nt*)(S20467C3*)(S20467C6*)(S20467C2*), ABISELECT(1832,1420), "S20467C9");
    check_base_class_offset(lv, (S20467C3*)(S20467C6*)(S20467C2*), ABISELECT(1824,1416), "S20467C9");
    check_base_class_offset(lv, (S20467C6*)(S20467C2*), ABISELECT(1824,1416), "S20467C9");
    check_base_class_offset(lv, (S20467C2*), ABISELECT(1680,1312), "S20467C9");
    check_base_class_offset(lv, (S3216C8_nt*)(S20467C3*)(S20467C11*), ABISELECT(1344,1060), "S20467C9");
    check_base_class_offset(lv, (S20467C3*)(S20467C11*), ABISELECT(1336,1056), "S20467C9");
    check_base_class_offset(lv, (S20467C11*), ABISELECT(1336,1056), "S20467C9");
    check_field_offset(lv, s20467c9f0, ABISELECT(1460,1144), "S20467C9.s20467c9f0");
    check_field_offset(lv, s20467c9f1, ABISELECT(1464,1148), "S20467C9.s20467c9f1");
    check_field_offset(lv, s20467c9f2, ABISELECT(1472,1152), "S20467C9.s20467c9f2");
    test_class_info(&lv, &cd_S20467C9);
    dp->~S20467C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20467C9(Test_S20467C9, "S20467C9", ABISELECT(2240,1744));

#else // __cplusplus

extern void _ZN8S20467C9C1Ev();
extern void _ZN8S20467C9D2Ev();
Name_Map name_map_S20467C9[] = {
  NSPAIR(_ZN8S20467C9C1Ev),
  NSPAIR(_ZN8S20467C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C3;
extern VTBL_ENTRY _ZTI8S20467C3[];
extern  VTBL_ENTRY _ZTV8S20467C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C3;
extern VTBL_ENTRY _ZTI8S20467C3[];
extern  VTBL_ENTRY _ZTV8S20467C3[];
extern Class_Descriptor cd_S20467C6;
extern VTBL_ENTRY _ZTI8S20467C6[];
extern  VTBL_ENTRY _ZTV8S20467C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C6[];
extern Class_Descriptor cd_S20467C10;
extern VTBL_ENTRY _ZTI9S20467C10[];
extern  VTBL_ENTRY _ZTV9S20467C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20467C10[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C5;
extern VTBL_ENTRY _ZTI8S20467C5[];
extern  VTBL_ENTRY _ZTV8S20467C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C3;
extern VTBL_ENTRY _ZTI8S20467C3[];
extern  VTBL_ENTRY _ZTV8S20467C3[];
extern Class_Descriptor cd_S20467C6;
extern VTBL_ENTRY _ZTI8S20467C6[];
extern  VTBL_ENTRY _ZTV8S20467C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C6[];
extern Class_Descriptor cd_S20467C2;
extern VTBL_ENTRY _ZTI8S20467C2[];
extern  VTBL_ENTRY _ZTV8S20467C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C3;
extern VTBL_ENTRY _ZTI8S20467C3[];
extern  VTBL_ENTRY _ZTV8S20467C3[];
extern Class_Descriptor cd_S20467C11;
extern VTBL_ENTRY _ZTI9S20467C11[];
extern  VTBL_ENTRY _ZTV9S20467C11[];
static Base_Class bases_S20467C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(1476,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
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1488,1164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20467C3,    ABISELECT(1480,1160), //bcp->offset
    17, //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
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1544,1204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20467C3,    ABISELECT(1536,1200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20467C6,    ABISELECT(1536,1200), //bcp->offset
    25, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20467C10,    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_S3216C8_nt,    ABISELECT(1328,1052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20467C5,    ABISELECT(1680,1312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1832,1420), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20467C3,    ABISELECT(1824,1416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20467C6,    ABISELECT(1824,1416), //bcp->offset
    45, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20467C2,    ABISELECT(1680,1312), //bcp->offset
    34, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1344,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20467C3,    ABISELECT(1336,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
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20467C11,    ABISELECT(1336,1056), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20467C9[];
extern void _ZN8S20467C9D1Ev();
extern void _ZN8S20467C9D0Ev();
extern void _ZN8S20467C92v8Ev();
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
extern void ABISELECT(_ZThn1336_N8S20467C9D1Ev,_ZThn1056_N8S20467C9D1Ev)();
extern void ABISELECT(_ZThn1336_N8S20467C9D0Ev,_ZThn1056_N8S20467C9D0Ev)();
extern void _ZN9S20467C112v7Ev();
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
extern void _ZN8S20467C52v5Ev();
extern void _ZN8S20467C22v6Ev();
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY vtc_S20467C9[] = {
  ABISELECT(1680,1312),
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C9[0]),
  (VTBL_ENTRY)&_ZN8S20467C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20467C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20467C92v8Ev,
  ABISELECT(-1336,-1056),
  (VTBL_ENTRY)&(_ZTI8S20467C9[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1336_N8S20467C9D1Ev,_ZThn1056_N8S20467C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1336_N8S20467C9D0Ev,_ZThn1056_N8S20467C9D0Ev),
  (VTBL_ENTRY)&_ZN9S20467C112v7Ev,
  0,
  0,
  0,
  ABISELECT(-1480,-1160),
  (VTBL_ENTRY)&(_ZTI8S20467C9[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(-1536,-1200),
  (VTBL_ENTRY)&(_ZTI8S20467C9[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  ABISELECT(-1680,-1312),
  (VTBL_ENTRY)&(_ZTI8S20467C9[0]),
  (VTBL_ENTRY)&_ZN8S20467C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20467C22v6Ev,
  ABISELECT(-348,-260),
  ABISELECT(-1824,-1416),
  (VTBL_ENTRY)&(_ZTI8S20467C9[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern VTBL_ENTRY _ZTV8S20467C9[];
static  VTBL_ENTRY _tg__ZTV9S20467C10__8S20467C9[] = {
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  0,
  (VTBL_ENTRY)&(_ZTI9S20467C10[0]),
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C3__9S20467C10__8S20467C9[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1160),
  (VTBL_ENTRY)&(_ZTI9S20467C10[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C6__9S20467C10__8S20467C9[] = {
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(-1536,-1200),
  (VTBL_ENTRY)&(_ZTI9S20467C10[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C6__8S20467C9[] = {
  ABISELECT(-60,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C6[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C52v5Ev();
extern void _ZN8S20467C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C2__8S20467C9[] = {
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C2[0]),
  (VTBL_ENTRY)&_ZN8S20467C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20467C22v6Ev,
};
extern void _ZN8S20467C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C58S20467C2__8S20467C9[] = {
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C5[0]),
  (VTBL_ENTRY)&_ZN8S20467C52v5Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C3__8S20467C58S20467C2__8S20467C9[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S20467C5[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C68S20467C2__A1__8S20467C9[] = {
  ABISELECT(-348,-260),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C6[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C3__8S20467C2__8S20467C9[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S20467C2[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C6__8S20467C2__8S20467C9[] = {
  ABISELECT(-348,-260),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20467C2[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
static  VTT_ENTRY vtt_S20467C9[] = {
  {&(_ZTV8S20467C9[6]),  6,51},
  {&(_tg__ZTV9S20467C10__8S20467C9[5]),  5,5},
  {&(_tg__ZTV8S20467C3__9S20467C10__8S20467C9[5]),  5,8},
  {&(_tg__ZTV8S20467C6__9S20467C10__8S20467C9[6]),  6,9},
  {&(_ZTV8S20467C9[22]),  22,51},
  {&(_ZTV8S20467C9[31]),  31,51},
  {&(_ZTV8S20467C9[43]),  43,51},
  {&(_ZTV8S20467C9[48]),  48,51},
  {&(_tg__ZTV8S20467C6__8S20467C9[3]),  3,6},
  {&(_tg__ZTV8S20467C2__8S20467C9[4]),  4,6},
  {&(_tg__ZTV8S20467C58S20467C2__8S20467C9[4]),  4,5},
  {&(_tg__ZTV8S20467C3__8S20467C58S20467C2__8S20467C9[5]),  5,8},
  {&(_tg__ZTV8S20467C68S20467C2__A1__8S20467C9[3]),  3,6},
  {&(_tg__ZTV8S20467C3__8S20467C2__8S20467C9[5]),  5,8},
  {&(_tg__ZTV8S20467C6__8S20467C2__8S20467C9[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S20467C9[];
extern  VTBL_ENTRY _ZTV8S20467C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C9[];
Class_Descriptor cd_S20467C9 = {  "S20467C9", // class name
  bases_S20467C9, 16,
  &(vtc_S20467C9[0]), // expected_vtbl_contents
  &(vtt_S20467C9[0]), // expected_vtt_contents
  ABISELECT(2240,1744), // object size
  NSPAIRA(_ZTI8S20467C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20467C9),51, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20467C9),15, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20467C8  : S20467C3 , S20467C6 , virtual S20467C9 {
  void *s20467c8f0;
  int s20467c8f1;
  ::S20467C3 s20467c8f2;
  int s20467c8f3;
  void *s20467c8f4;
  ~S20467C8(); // tgen
  S20467C8(); // tgen
};
//SIG(-1 S20467C8) C1{ BC2{ BC3{ m Fi} v1 v2 v3 FC3[3] FC3[2] Fp Fs FC3} BC4{ BC2 VBC3 FD FL FC2 Fp Fs[3]} VBC5{ BC6{ VBC3 VBC2 VBC4 Fp[2] Fi FC4[8] FD[9]} BC3 VBC7{ VBC2 VBC3 BC8{ VBC2 VBC3 v4 FC2 FD Fp[2] FC2} BC4 v5 Fp[2] Fl Fi FC2[5]} BC9{ BC2 vd v6 Fp[7] Fi[2] FL Fi} vd v7 Fi Fp Fi} Fp Fi FC2 Fi Fp}


S20467C8 ::~S20467C8(){ note_dtor("S20467C8", this);} // tgen
S20467C8 ::S20467C8(){ note_ctor("S20467C8", this);} // tgen

static void Test_S20467C8()
{
  extern Class_Descriptor cd_S20467C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(158,489)];
    init_test(&cd_S20467C8, buf);
    S20467C8 *dp, &lv = *(dp=new (buf) S20467C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2512,1952), "sizeof(S20467C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20467C8)");
    /*is_ambiguous_... S20467C8::S20467C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C3*), ABISELECT(8,4), "S20467C8");
    /*is_ambiguous_... S20467C8::S20467C3 */ AMB_check_base_class_offset(lv, (S20467C3*), 0, "S20467C8");
    /*is_ambiguous_... S20467C8::S20467C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C3*)(S20467C6*), ABISELECT(56,44), "S20467C8");
    /*is_ambiguous_... S20467C8::S20467C6 */ AMB_check_base_class_offset(lv, (S20467C3*)(S20467C6*), ABISELECT(48,40), "S20467C8");
    /*is_ambiguous_... S20467C8::S20467C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C6*), ABISELECT(264,208), "S20467C8");
    /*is_ambiguous_... S20467C10::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C10*)(S20467C9*), ABISELECT(264,208), "S20467C8");
    /*is_ambiguous_... S20467C8::S20467C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C6*), ABISELECT(264,208), "S20467C8");
    /*is_ambiguous_... S20467C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C2*), ABISELECT(264,208), "S20467C8");
    /*is_ambiguous_... S20467C5::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C5*)(S20467C2*), ABISELECT(264,208), "S20467C8");
    /*is_ambiguous_... S20467C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C6*)(S20467C2*), ABISELECT(264,208), "S20467C8");
    /*is_ambiguous_... S20467C8::S20467C6 */ AMB_check_base_class_offset(lv, (S20467C6*), ABISELECT(48,40), "S20467C8");
    /*is_ambiguous_... S20467C8::S20467C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C3*), ABISELECT(1760,1372), "S20467C8");
    /*is_ambiguous_... S20467C10::S20467C3 */ AMB_check_base_class_offset(lv, (S20467C3*)(S20467C10*)(S20467C9*), ABISELECT(1752,1368), "S20467C8");
    /*is_ambiguous_... S20467C2::S20467C3 */ AMB_check_base_class_offset(lv, (S20467C3*)(S20467C2*), ABISELECT(1752,1368), "S20467C8");
    check_base_class_offset(lv, (S20467C3*)(S20467C5*)(S20467C2*), ABISELECT(1752,1368), "S20467C8");
    /*is_ambiguous_... S20467C8::S20467C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C3*)(S20467C6*), ABISELECT(1816,1412), "S20467C8");
    /*is_ambiguous_... S20467C8::S20467C6 */ AMB_check_base_class_offset(lv, (S20467C3*)(S20467C6*), ABISELECT(1808,1408), "S20467C8");
    check_base_class_offset(lv, (S20467C6*)(S20467C10*)(S20467C9*), ABISELECT(1808,1408), "S20467C8");
    check_base_class_offset(lv, (S20467C10*)(S20467C9*), ABISELECT(272,212), "S20467C8");
    /*is_ambiguous_... S20467C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C9*), ABISELECT(1600,1264), "S20467C8");
    check_base_class_offset(lv, (S20467C5*)(S20467C2*), ABISELECT(1952,1520), "S20467C8");
    check_base_class_offset(lv, (S3216C8_nt*)(S20467C3*)(S20467C6*)(S20467C2*), ABISELECT(2104,1628), "S20467C8");
    check_base_class_offset(lv, (S20467C3*)(S20467C6*)(S20467C2*), ABISELECT(2096,1624), "S20467C8");
    check_base_class_offset(lv, (S20467C6*)(S20467C2*), ABISELECT(2096,1624), "S20467C8");
    check_base_class_offset(lv, (S20467C2*)(S20467C9*), ABISELECT(1952,1520), "S20467C8");
    check_base_class_offset(lv, (S3216C8_nt*)(S20467C3*)(S20467C11*)(S20467C9*), ABISELECT(1616,1272), "S20467C8");
    check_base_class_offset(lv, (S20467C3*)(S20467C11*)(S20467C9*), ABISELECT(1608,1268), "S20467C8");
    check_base_class_offset(lv, (S20467C11*)(S20467C9*), ABISELECT(1608,1268), "S20467C8");
    check_base_class_offset(lv, (S20467C9*), ABISELECT(272,212), "S20467C8");
    check_field_offset(lv, s20467c8f0, ABISELECT(184,152), "S20467C8.s20467c8f0");
    check_field_offset(lv, s20467c8f1, ABISELECT(192,156), "S20467C8.s20467c8f1");
    check_field_offset(lv, s20467c8f2, ABISELECT(200,160), "S20467C8.s20467c8f2");
    check_field_offset(lv, s20467c8f3, ABISELECT(248,200), "S20467C8.s20467c8f3");
    check_field_offset(lv, s20467c8f4, ABISELECT(256,204), "S20467C8.s20467c8f4");
    test_class_info(&lv, &cd_S20467C8);
    dp->~S20467C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20467C8(Test_S20467C8, "S20467C8", ABISELECT(2512,1952));

#else // __cplusplus

extern void _ZN8S20467C8C1Ev();
extern void _ZN8S20467C8D1Ev();
Name_Map name_map_S20467C8[] = {
  NSPAIR(_ZN8S20467C8C1Ev),
  NSPAIR(_ZN8S20467C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C3;
extern VTBL_ENTRY _ZTI8S20467C3[];
extern  VTBL_ENTRY _ZTV8S20467C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C3;
extern VTBL_ENTRY _ZTI8S20467C3[];
extern  VTBL_ENTRY _ZTV8S20467C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C6;
extern VTBL_ENTRY _ZTI8S20467C6[];
extern  VTBL_ENTRY _ZTV8S20467C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C3;
extern VTBL_ENTRY _ZTI8S20467C3[];
extern  VTBL_ENTRY _ZTV8S20467C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C3;
extern VTBL_ENTRY _ZTI8S20467C3[];
extern  VTBL_ENTRY _ZTV8S20467C3[];
extern Class_Descriptor cd_S20467C6;
extern VTBL_ENTRY _ZTI8S20467C6[];
extern  VTBL_ENTRY _ZTV8S20467C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C6[];
extern Class_Descriptor cd_S20467C10;
extern VTBL_ENTRY _ZTI9S20467C10[];
extern  VTBL_ENTRY _ZTV9S20467C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20467C10[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C5;
extern VTBL_ENTRY _ZTI8S20467C5[];
extern  VTBL_ENTRY _ZTV8S20467C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C3;
extern VTBL_ENTRY _ZTI8S20467C3[];
extern  VTBL_ENTRY _ZTV8S20467C3[];
extern Class_Descriptor cd_S20467C6;
extern VTBL_ENTRY _ZTI8S20467C6[];
extern  VTBL_ENTRY _ZTV8S20467C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C6[];
extern Class_Descriptor cd_S20467C2;
extern VTBL_ENTRY _ZTI8S20467C2[];
extern  VTBL_ENTRY _ZTV8S20467C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C3;
extern VTBL_ENTRY _ZTI8S20467C3[];
extern  VTBL_ENTRY _ZTV8S20467C3[];
extern Class_Descriptor cd_S20467C11;
extern VTBL_ENTRY _ZTI9S20467C11[];
extern  VTBL_ENTRY _ZTV9S20467C11[];
extern Class_Descriptor cd_S20467C9;
extern VTBL_ENTRY _ZTI8S20467C9[];
extern  VTBL_ENTRY _ZTV8S20467C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C9[];
static Base_Class bases_S20467C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S20467C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3216C8_nt,    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
    3, //immediately_derived
  0, 0},
  {&cd_S20467C3,    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
    13, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(264,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
    5, //immediately_derived
  0, 1},
  {&cd_S20467C6,    ABISELECT(48,40), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(1760,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
    7, //immediately_derived
  0, 0},
  {&cd_S20467C3,    ABISELECT(1752,1368), //bcp->offset
    41, //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
    1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1816,1412), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20467C3,    ABISELECT(1808,1408), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20467C6,    ABISELECT(1808,1408), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20467C10,    ABISELECT(272,212), //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
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1600,1264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20467C5,    ABISELECT(1952,1520), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(2104,1628), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20467C3,    ABISELECT(2096,1624), //bcp->offset
    -1, //bcp->virtual_function_table_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
    16, //immediately_derived
  0, 0},
  {&cd_S20467C6,    ABISELECT(2096,1624), //bcp->offset
    69, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20467C2,    ABISELECT(1952,1520), //bcp->offset
    58, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1616,1272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20467C3,    ABISELECT(1608,1268), //bcp->offset
    -1, //bcp->virtual_function_table_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
    20, //immediately_derived
  0, 0},
  {&cd_S20467C11,    ABISELECT(1608,1268), //bcp->offset
    33, //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
    21, //immediately_derived
  0, 0},
  {&cd_S20467C9,    ABISELECT(272,212), //bcp->offset
    18, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20467C8[];
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
extern void _ZN8S20467C8D1Ev();
extern void _ZN8S20467C8D0Ev();
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
extern void ABISELECT(_ZTv0_n56_N8S20467C8D1Ev,_ZTv0_n28_N8S20467C8D1Ev)();
extern void ABISELECT(_ZThn272_N8S20467C8D1Ev,_ZThn212_N8S20467C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20467C8D0Ev,_ZTv0_n28_N8S20467C8D0Ev)();
extern void ABISELECT(_ZThn272_N8S20467C8D0Ev,_ZThn212_N8S20467C8D0Ev)() __attribute__((weak));
extern void _ZN8S20467C92v8Ev();
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N8S20467C8D1Ev,_ZTvn1056_n28_N8S20467C8D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N8S20467C8D0Ev,_ZTvn1056_n28_N8S20467C8D0Ev)();
extern void _ZN9S20467C112v7Ev();
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
extern void _ZN8S20467C52v5Ev();
extern void _ZN8S20467C22v6Ev();
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY vtc_S20467C8[] = {
  ABISELECT(1952,1520),
  ABISELECT(1808,1408),
  ABISELECT(1752,1368),
  ABISELECT(272,212),
  ABISELECT(264,208),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C8[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20467C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20467C8D0Ev,
  ABISELECT(216,168),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI8S20467C8[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-272,-212),
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  ABISELECT(-272,-212),
  (VTBL_ENTRY)&(_ZTI8S20467C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20467C8D1Ev,_ZTv0_n28_N8S20467C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20467C8D0Ev,_ZTv0_n28_N8S20467C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20467C92v8Ev,
  ABISELECT(-1608,-1268),
  (VTBL_ENTRY)&(_ZTI8S20467C8[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20467C8D1Ev,_ZTvn1056_n28_N8S20467C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20467C8D0Ev,_ZTvn1056_n28_N8S20467C8D0Ev),
  (VTBL_ENTRY)&_ZN9S20467C112v7Ev,
  0,
  0,
  0,
  ABISELECT(-1752,-1368),
  (VTBL_ENTRY)&(_ZTI8S20467C8[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-1808,-1408),
  (VTBL_ENTRY)&(_ZTI8S20467C8[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-1952,-1520),
  (VTBL_ENTRY)&(_ZTI8S20467C8[0]),
  (VTBL_ENTRY)&_ZN8S20467C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20467C22v6Ev,
  ABISELECT(-1832,-1416),
  ABISELECT(-2096,-1624),
  (VTBL_ENTRY)&(_ZTI8S20467C8[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern VTBL_ENTRY _ZTV8S20467C8[];
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C6__A__8S20467C8[] = {
  ABISELECT(216,168),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C6[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C9D1Ev();
extern void _ZN8S20467C9D0Ev();
extern void _ZN8S20467C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C9__8S20467C8[] = {
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C9[0]),
  (VTBL_ENTRY)&_ZN8S20467C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20467C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20467C92v8Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20467C108S20467C9__8S20467C8[] = {
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20467C10[0]),
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C3__9S20467C108S20467C9__8S20467C8[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1156),
  (VTBL_ENTRY)&(_ZTI9S20467C10[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C6__9S20467C108S20467C9__8S20467C8[] = {
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-1536,-1196),
  (VTBL_ENTRY)&(_ZTI9S20467C10[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C3__8S20467C9__8S20467C8[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1156),
  (VTBL_ENTRY)&(_ZTI8S20467C9[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C6__8S20467C9__8S20467C8[] = {
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-1536,-1196),
  (VTBL_ENTRY)&(_ZTI8S20467C9[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C52v5Ev();
extern void _ZN8S20467C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C2__8S20467C9__8S20467C8[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-1680,-1308),
  (VTBL_ENTRY)&(_ZTI8S20467C9[0]),
  (VTBL_ENTRY)&_ZN8S20467C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20467C22v6Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C68S20467C2__A1__8S20467C9__8S20467C8[] = {
  ABISELECT(-1832,-1416),
  ABISELECT(-1824,-1412),
  (VTBL_ENTRY)&(_ZTI8S20467C9[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C6__A1__8S20467C8[] = {
  ABISELECT(-1544,-1200),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C6[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C52v5Ev();
extern void _ZN8S20467C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C2__8S20467C8[] = {
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C2[0]),
  (VTBL_ENTRY)&_ZN8S20467C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20467C22v6Ev,
};
extern void _ZN8S20467C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C58S20467C2__8S20467C8[] = {
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C5[0]),
  (VTBL_ENTRY)&_ZN8S20467C52v5Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C3__8S20467C58S20467C2__8S20467C8[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S20467C5[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C68S20467C2__A2__8S20467C8[] = {
  ABISELECT(-1832,-1416),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C6[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C3__8S20467C2__8S20467C8[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S20467C2[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C6__8S20467C2__8S20467C8[] = {
  ABISELECT(-1832,-1416),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20467C2[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
static  VTT_ENTRY vtt_S20467C8[] = {
  {&(_ZTV8S20467C8[7]),  7,75},
  {&(_tg__ZTV8S20467C6__A__8S20467C8[3]),  3,6},
  {&(_ZTV8S20467C8[15]),  15,75},
  {&(_ZTV8S20467C8[30]),  30,75},
  {&(_ZTV8S20467C8[46]),  46,75},
  {&(_ZTV8S20467C8[55]),  55,75},
  {&(_ZTV8S20467C8[67]),  67,75},
  {&(_ZTV8S20467C8[72]),  72,75},
  {&(_ZTV8S20467C8[35]),  35,75},
  {&(_tg__ZTV8S20467C9__8S20467C8[6]),  6,9},
  {&(_tg__ZTV9S20467C108S20467C9__8S20467C8[5]),  5,5},
  {&(_tg__ZTV8S20467C3__9S20467C108S20467C9__8S20467C8[5]),  5,8},
  {&(_tg__ZTV8S20467C6__9S20467C108S20467C9__8S20467C8[6]),  6,9},
  {&(_tg__ZTV8S20467C3__8S20467C9__8S20467C8[5]),  5,8},
  {&(_tg__ZTV8S20467C6__8S20467C9__8S20467C8[6]),  6,9},
  {&(_tg__ZTV8S20467C2__8S20467C9__8S20467C8[9]),  9,11},
  {&(_tg__ZTV8S20467C68S20467C2__A1__8S20467C9__8S20467C8[3]),  3,6},
  {&(_tg__ZTV8S20467C6__A1__8S20467C8[3]),  3,6},
  {&(_tg__ZTV8S20467C2__8S20467C8[4]),  4,6},
  {&(_tg__ZTV8S20467C58S20467C2__8S20467C8[4]),  4,5},
  {&(_tg__ZTV8S20467C3__8S20467C58S20467C2__8S20467C8[5]),  5,8},
  {&(_tg__ZTV8S20467C68S20467C2__A2__8S20467C8[3]),  3,6},
  {&(_tg__ZTV8S20467C3__8S20467C2__8S20467C8[5]),  5,8},
  {&(_tg__ZTV8S20467C6__8S20467C2__8S20467C8[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S20467C8[];
extern  VTBL_ENTRY _ZTV8S20467C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C8[];
static VTBL_ENTRY alt_thunk_names30[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20467C8D0Ev,_ZTv0_n28_N8S20467C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S20467C8D0Ev,_ZThn212_N8S20467C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20467C8D1Ev,_ZTv0_n28_N8S20467C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S20467C8D1Ev,_ZThn212_N8S20467C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20467C8 = {  "S20467C8", // class name
  bases_S20467C8, 22,
  &(vtc_S20467C8[0]), // expected_vtbl_contents
  &(vtt_S20467C8[0]), // expected_vtt_contents
  ABISELECT(2512,1952), // object size
  NSPAIRA(_ZTI8S20467C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20467C8),75, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20467C8),24, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names30,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20467C7  : S20467C8 , S20467C2 {
  ::S20643C16 s20467c7f0;
  void *s20467c7f1;
  unsigned int s20467c7f2:1;
  int s20467c7f3;
  int s20467c7f4:30;
  int s20467c7f5;
  virtual  ~S20467C7(); // _ZN8S20467C7D2Ev
  S20467C7(); // tgen
};
//SIG(-1 S20467C7) C1{ BC2{ BC3{ BC4{ m Fi} v1 v2 v3 FC4[3] FC4[2] Fp Fs FC4} BC5{ BC3 VBC4 FD FL FC3 Fp Fs[3]} VBC6{ BC7{ VBC4 VBC3 VBC5 Fp[2] Fi FC5[8] FD[9]} BC4 VBC8{ VBC3 VBC4 BC9{ VBC3 VBC4 v4 FC3 FD Fp[2] FC3} BC5 v5 Fp[2] Fl Fi FC3[5]} BC10{ BC3 vd v6 Fp[7] Fi[2] FL Fi} vd v7 Fi Fp Fi} Fp Fi FC3 Fi Fp} BC8 vd FC11{ VBC12{ BC13{ BC4 v8 v9 v10 FC4[3] FC4[2] Fp Fs FC4} VBC4 FD FL FC13 Fp Fs[3]} BC14{ BC15{ VBC4 VBC13 VBC12 Fp[2] Fi FC12[8] FD[9]} BC4 VBC16{ VBC13 VBC4 BC17{ VBC13 VBC4 v11 FC13 FD Fp[2] FC13} BC12 v12 Fp[2] Fl Fi FC13[5]} BC18{ BC13 vd v13 Fp[7] Fi[2] FL Fi} vd v14 Fi Fp Fi} BC19{ BC12 VBC14 BC16 BC20{ VBC4 BC16 BC17 BC12 v15 Fi FC21{} Fp[2]} vd Fi Fc[2] Fi FL FC21 Fp[8] Fs[5] FL FC22{ vd m Fc[2] Fi FL Fp[7] FU23{ m Fi:3 Fi Fi Fi FD[8] Fp Fc[5] FD Fc[4] Fi Fp Fc[4] Fp}[4] FC15}} BC17 vd Fc Fi Fi Fi Fi Fp Fc[4] Fi} Fp Fi:1 Fi Fi:30 Fi}


 S20467C7 ::~S20467C7(){ note_dtor("S20467C7", this);}
S20467C7 ::S20467C7(){ note_ctor("S20467C7", this);} // tgen

static void Test_S20467C7()
{
  extern Class_Descriptor cd_S20467C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(679,2092)];
    init_test(&cd_S20467C7, buf);
    S20467C7 *dp, &lv = *(dp=new (buf) S20467C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(10848,8364), "sizeof(S20467C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20467C7)");
    /*is_ambiguous_... S20467C8::S20467C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C3*)(S20467C8*), ABISELECT(8,4), "S20467C7");
    /*is_ambiguous_... S20467C8::S20467C3 */ AMB_check_base_class_offset(lv, (S20467C3*)(S20467C8*), 0, "S20467C7");
    /*is_ambiguous_... S20467C8::S20467C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C3*)(S20467C6*)(S20467C8*), ABISELECT(56,44), "S20467C7");
    /*is_ambiguous_... S20467C8::S20467C6 */ AMB_check_base_class_offset(lv, (S20467C3*)(S20467C6*)(S20467C8*), ABISELECT(48,40), "S20467C7");
    /*is_ambiguous_... S20467C8::S20467C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C6*)(S20467C8*), ABISELECT(8600,6620), "S20467C7");
    /*is_ambiguous_... S20467C10::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C10*)(S20467C9*), ABISELECT(8600,6620), "S20467C7");
    /*is_ambiguous_... S20467C7::S20467C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C6*), ABISELECT(8600,6620), "S20467C7");
    /*is_ambiguous_... S20467C7::S20467C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C2*), ABISELECT(8600,6620), "S20467C7");
    /*is_ambiguous_... S20467C7::S20467C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C5*)(S20467C2*), ABISELECT(8600,6620), "S20467C7");
    /*is_ambiguous_... S20467C7::S20467C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C6*)(S20467C2*), ABISELECT(8600,6620), "S20467C7");
    /*is_ambiguous_... S20467C7::S20467C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C2*), ABISELECT(8600,6620), "S20467C7");
    /*is_ambiguous_... S20467C7::S20467C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C5*)(S20467C2*), ABISELECT(8600,6620), "S20467C7");
    /*is_ambiguous_... S20467C7::S20467C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C6*)(S20467C2*), ABISELECT(8600,6620), "S20467C7");
    /*is_ambiguous_... S20467C8::S20467C6 */ AMB_check_base_class_offset(lv, (S20467C6*)(S20467C8*), ABISELECT(48,40), "S20467C7");
    /*is_ambiguous_... S20467C7::S20467C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C3*), ABISELECT(10096,7784), "S20467C7");
    /*is_ambiguous_... S20467C10::S20467C3 */ AMB_check_base_class_offset(lv, (S20467C3*)(S20467C10*)(S20467C9*), ABISELECT(10088,7780), "S20467C7");
    /*is_ambiguous_... S20467C7::S20467C2 */ AMB_check_base_class_offset(lv, (S20467C3*)(S20467C2*), ABISELECT(10088,7780), "S20467C7");
    /*is_ambiguous_... S20467C7::S20467C2 */ AMB_check_base_class_offset(lv, (S20467C3*)(S20467C5*)(S20467C2*), ABISELECT(10088,7780), "S20467C7");
    /*is_ambiguous_... S20467C7::S20467C2 */ AMB_check_base_class_offset(lv, (S20467C3*)(S20467C2*), ABISELECT(10088,7780), "S20467C7");
    /*is_ambiguous_... S20467C7::S20467C2 */ AMB_check_base_class_offset(lv, (S20467C3*)(S20467C5*)(S20467C2*), ABISELECT(10088,7780), "S20467C7");
    /*is_ambiguous_... S20467C7::S20467C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C3*)(S20467C6*), ABISELECT(10152,7824), "S20467C7");
    /*is_ambiguous_... S20467C7::S20467C6 */ AMB_check_base_class_offset(lv, (S20467C3*)(S20467C6*), ABISELECT(10144,7820), "S20467C7");
    check_base_class_offset(lv, (S20467C6*)(S20467C10*)(S20467C9*), ABISELECT(10144,7820), "S20467C7");
    check_base_class_offset(lv, (S20467C10*)(S20467C9*), ABISELECT(8608,6624), "S20467C7");
    /*is_ambiguous_... S20467C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C9*), ABISELECT(9936,7676), "S20467C7");
    /*is_ambiguous_... S20467C7::S20467C2 */ AMB_check_base_class_offset(lv, (S20467C5*)(S20467C2*), ABISELECT(10288,7932), "S20467C7");
    /*is_ambiguous_... S20467C7::S20467C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C3*)(S20467C6*)(S20467C2*), ABISELECT(10440,8040), "S20467C7");
    /*is_ambiguous_... S20467C7::S20467C2 */ AMB_check_base_class_offset(lv, (S20467C3*)(S20467C6*)(S20467C2*), ABISELECT(10432,8036), "S20467C7");
    /*is_ambiguous_... S20467C7::S20467C2 */ AMB_check_base_class_offset(lv, (S20467C6*)(S20467C2*), ABISELECT(10432,8036), "S20467C7");
    check_base_class_offset(lv, (S20467C2*)(S20467C9*), ABISELECT(10288,7932), "S20467C7");
    check_base_class_offset(lv, (S3216C8_nt*)(S20467C3*)(S20467C11*)(S20467C9*), ABISELECT(9952,7684), "S20467C7");
    check_base_class_offset(lv, (S20467C3*)(S20467C11*)(S20467C9*), ABISELECT(9944,7680), "S20467C7");
    check_base_class_offset(lv, (S20467C11*)(S20467C9*), ABISELECT(9944,7680), "S20467C7");
    check_base_class_offset(lv, (S20467C9*)(S20467C8*), ABISELECT(8608,6624), "S20467C7");
    check_base_class_offset(lv, (S20467C8*), 0, "S20467C7");
    /*is_ambiguous_... S20467C7::S20467C2 */ AMB_check_base_class_offset(lv, (S20467C5*)(S20467C2*), ABISELECT(272,208), "S20467C7");
    /*is_ambiguous_... S20467C7::S20467C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C3*)(S20467C6*)(S20467C2*), ABISELECT(424,316), "S20467C7");
    /*is_ambiguous_... S20467C7::S20467C2 */ AMB_check_base_class_offset(lv, (S20467C3*)(S20467C6*)(S20467C2*), ABISELECT(416,312), "S20467C7");
    /*is_ambiguous_... S20467C7::S20467C2 */ AMB_check_base_class_offset(lv, (S20467C6*)(S20467C2*), ABISELECT(416,312), "S20467C7");
    /*is_ambiguous_... S20467C7::S20467C2 */ AMB_check_base_class_offset(lv, (S20467C2*), ABISELECT(272,208), "S20467C7");
    check_field_offset(lv, s20467c7f0, ABISELECT(832,640), "S20467C7.s20467c7f0");
    check_field_offset(lv, s20467c7f1, ABISELECT(8576,6600), "S20467C7.s20467c7f1");
    set_bf_and_test(lv, s20467c7f2, ABISELECT(8584,6604), 0, 1, 1, "S20467C7");
    check_field_offset(lv, s20467c7f3, ABISELECT(8588,6608), "S20467C7.s20467c7f3");
    set_bf_and_test(lv, s20467c7f4, ABISELECT(8592,6612), 0, 30, 1, "S20467C7");
    set_bf_and_test(lv, s20467c7f4, ABISELECT(8592,6612), 0, 30, hide_sll(1LL<<29), "S20467C7");
    check_field_offset(lv, s20467c7f5, ABISELECT(8596,6616), "S20467C7.s20467c7f5");
    test_class_info(&lv, &cd_S20467C7);
    dp->~S20467C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20467C7(Test_S20467C7, "S20467C7", ABISELECT(10848,8364));

#else // __cplusplus

extern void _ZN8S20467C7C1Ev();
extern void _ZN8S20467C7D2Ev();
Name_Map name_map_S20467C7[] = {
  NSPAIR(_ZN8S20467C7C1Ev),
  NSPAIR(_ZN8S20467C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C3;
extern VTBL_ENTRY _ZTI8S20467C3[];
extern  VTBL_ENTRY _ZTV8S20467C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C3;
extern VTBL_ENTRY _ZTI8S20467C3[];
extern  VTBL_ENTRY _ZTV8S20467C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C6;
extern VTBL_ENTRY _ZTI8S20467C6[];
extern  VTBL_ENTRY _ZTV8S20467C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C3;
extern VTBL_ENTRY _ZTI8S20467C3[];
extern  VTBL_ENTRY _ZTV8S20467C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C3;
extern VTBL_ENTRY _ZTI8S20467C3[];
extern  VTBL_ENTRY _ZTV8S20467C3[];
extern Class_Descriptor cd_S20467C6;
extern VTBL_ENTRY _ZTI8S20467C6[];
extern  VTBL_ENTRY _ZTV8S20467C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C6[];
extern Class_Descriptor cd_S20467C10;
extern VTBL_ENTRY _ZTI9S20467C10[];
extern  VTBL_ENTRY _ZTV9S20467C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20467C10[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C5;
extern VTBL_ENTRY _ZTI8S20467C5[];
extern  VTBL_ENTRY _ZTV8S20467C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C3;
extern VTBL_ENTRY _ZTI8S20467C3[];
extern  VTBL_ENTRY _ZTV8S20467C3[];
extern Class_Descriptor cd_S20467C6;
extern VTBL_ENTRY _ZTI8S20467C6[];
extern  VTBL_ENTRY _ZTV8S20467C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C6[];
extern Class_Descriptor cd_S20467C2;
extern VTBL_ENTRY _ZTI8S20467C2[];
extern  VTBL_ENTRY _ZTV8S20467C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C3;
extern VTBL_ENTRY _ZTI8S20467C3[];
extern  VTBL_ENTRY _ZTV8S20467C3[];
extern Class_Descriptor cd_S20467C11;
extern VTBL_ENTRY _ZTI9S20467C11[];
extern  VTBL_ENTRY _ZTV9S20467C11[];
extern Class_Descriptor cd_S20467C9;
extern VTBL_ENTRY _ZTI8S20467C9[];
extern  VTBL_ENTRY _ZTV8S20467C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C9[];
extern Class_Descriptor cd_S20467C8;
extern VTBL_ENTRY _ZTI8S20467C8[];
extern  VTBL_ENTRY _ZTV8S20467C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C8[];
extern Class_Descriptor cd_S20467C5;
extern VTBL_ENTRY _ZTI8S20467C5[];
extern  VTBL_ENTRY _ZTV8S20467C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C3;
extern VTBL_ENTRY _ZTI8S20467C3[];
extern  VTBL_ENTRY _ZTV8S20467C3[];
extern Class_Descriptor cd_S20467C6;
extern VTBL_ENTRY _ZTI8S20467C6[];
extern  VTBL_ENTRY _ZTV8S20467C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C6[];
extern Class_Descriptor cd_S20467C2;
extern VTBL_ENTRY _ZTI8S20467C2[];
extern  VTBL_ENTRY _ZTV8S20467C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C2[];
static Base_Class bases_S20467C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S20467C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3216C8_nt,    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
    3, //immediately_derived
  0, 0},
  {&cd_S20467C3,    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
    13, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(8600,6620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20467C6,    ABISELECT(48,40), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(10096,7784), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20467C3,    ABISELECT(10088,7780), //bcp->offset
    53, //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
    11, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(10152,7824), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20467C3,    ABISELECT(10144,7820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20467C6,    ABISELECT(10144,7820), //bcp->offset
    61, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20467C10,    ABISELECT(8608,6624), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(9936,7676), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20467C5,    ABISELECT(10288,7932), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(10440,8040), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20467C3,    ABISELECT(10432,8036), //bcp->offset
    -1, //bcp->virtual_function_table_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
    16, //immediately_derived
  0, 0},
  {&cd_S20467C6,    ABISELECT(10432,8036), //bcp->offset
    81, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20467C2,    ABISELECT(10288,7932), //bcp->offset
    70, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(9952,7684), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20467C3,    ABISELECT(9944,7680), //bcp->offset
    -1, //bcp->virtual_function_table_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
    20, //immediately_derived
  0, 0},
  {&cd_S20467C11,    ABISELECT(9944,7680), //bcp->offset
    45, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20467C9,    ABISELECT(8608,6624), //bcp->offset
    30, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S20467C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20467C5,    ABISELECT(272,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(424,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
    25, //immediately_derived
  0, 0},
  {&cd_S20467C3,    ABISELECT(416,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
    17, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20467C6,    ABISELECT(416,312), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20467C2,    ABISELECT(272,208), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20467C7[];
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
extern void _ZN8S20467C7D1Ev();
extern void _ZN8S20467C7D0Ev();
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
extern void _ZN8S20467C52v5Ev();
extern void _ZN8S20467C22v6Ev();
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
extern void ABISELECT(_ZTv0_n56_N8S20467C7D1Ev,_ZTv0_n28_N8S20467C7D1Ev)();
extern void ABISELECT(_ZThn8608_N8S20467C7D1Ev,_ZThn6624_N8S20467C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20467C7D0Ev,_ZTv0_n28_N8S20467C7D0Ev)();
extern void ABISELECT(_ZThn8608_N8S20467C7D0Ev,_ZThn6624_N8S20467C7D0Ev)() __attribute__((weak));
extern void _ZN8S20467C92v8Ev();
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N8S20467C7D1Ev,_ZTvn1056_n28_N8S20467C7D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N8S20467C7D0Ev,_ZTvn1056_n28_N8S20467C7D0Ev)();
extern void _ZN9S20467C112v7Ev();
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
extern void _ZN8S20467C52v5Ev();
extern void _ZN8S20467C22v6Ev();
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY vtc_S20467C7[] = {
  ABISELECT(10288,7932),
  ABISELECT(10144,7820),
  ABISELECT(10088,7780),
  ABISELECT(8608,6624),
  ABISELECT(8600,6620),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C7[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20467C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20467C7D0Ev,
  ABISELECT(8552,6580),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI8S20467C7[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
  ABISELECT(8328,6412),
  ABISELECT(9816,7572),
  ABISELECT(-272,-208),
  (VTBL_ENTRY)&(_ZTI8S20467C7[0]),
  (VTBL_ENTRY)&_ZN8S20467C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20467C22v6Ev,
  ABISELECT(8184,6308),
  ABISELECT(-416,-312),
  (VTBL_ENTRY)&(_ZTI8S20467C7[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-8608,-6624),
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  ABISELECT(-8608,-6624),
  (VTBL_ENTRY)&(_ZTI8S20467C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20467C7D1Ev,_ZTv0_n28_N8S20467C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20467C7D0Ev,_ZTv0_n28_N8S20467C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20467C92v8Ev,
  ABISELECT(-9944,-7680),
  (VTBL_ENTRY)&(_ZTI8S20467C7[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20467C7D1Ev,_ZTvn1056_n28_N8S20467C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20467C7D0Ev,_ZTvn1056_n28_N8S20467C7D0Ev),
  (VTBL_ENTRY)&_ZN9S20467C112v7Ev,
  0,
  0,
  0,
  ABISELECT(-10088,-7780),
  (VTBL_ENTRY)&(_ZTI8S20467C7[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-10144,-7820),
  (VTBL_ENTRY)&(_ZTI8S20467C7[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-10288,-7932),
  (VTBL_ENTRY)&(_ZTI8S20467C7[0]),
  (VTBL_ENTRY)&_ZN8S20467C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20467C22v6Ev,
  ABISELECT(-1832,-1416),
  ABISELECT(-10432,-8036),
  (VTBL_ENTRY)&(_ZTI8S20467C7[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern VTBL_ENTRY _ZTV8S20467C7[];
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
extern void _ZN8S20467C8D1Ev();
extern void _ZN8S20467C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C8__8S20467C7[] = {
  ABISELECT(10288,7932),
  ABISELECT(10144,7820),
  ABISELECT(10088,7780),
  ABISELECT(8608,6624),
  ABISELECT(8600,6620),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C8[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20467C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20467C8D0Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C68S20467C8__8S20467C7[] = {
  ABISELECT(8552,6580),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C6[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C6__A__8S20467C8__8S20467C7[] = {
  ABISELECT(8552,6580),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI8S20467C8[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S20467C8D1Ev,_ZTv0_n28_N8S20467C8D1Ev)();
extern void ABISELECT(_ZThn8608_N8S20467C8D1Ev,_ZThn6624_N8S20467C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20467C8D0Ev,_ZTv0_n28_N8S20467C8D0Ev)();
extern void ABISELECT(_ZThn8608_N8S20467C8D0Ev,_ZThn6624_N8S20467C8D0Ev)() __attribute__((weak));
extern void _ZN8S20467C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C9__8S20467C8__8S20467C7[] = {
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-8608,-6624),
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  ABISELECT(-8608,-6624),
  (VTBL_ENTRY)&(_ZTI8S20467C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20467C8D1Ev,_ZTv0_n28_N8S20467C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20467C8D0Ev,_ZTv0_n28_N8S20467C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20467C92v8Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C3__A2__8S20467C8__8S20467C7[] = {
  0,
  0,
  0,
  ABISELECT(-10088,-7780),
  (VTBL_ENTRY)&(_ZTI8S20467C8[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C6__A1__8S20467C8__8S20467C7[] = {
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-10144,-7820),
  (VTBL_ENTRY)&(_ZTI8S20467C8[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C52v5Ev();
extern void _ZN8S20467C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C2__8S20467C8__8S20467C7[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-10288,-7932),
  (VTBL_ENTRY)&(_ZTI8S20467C8[0]),
  (VTBL_ENTRY)&_ZN8S20467C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20467C22v6Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C68S20467C2__A2__8S20467C8__8S20467C7[] = {
  ABISELECT(-1832,-1416),
  ABISELECT(-10432,-8036),
  (VTBL_ENTRY)&(_ZTI8S20467C8[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N8S20467C8D1Ev,_ZTvn1056_n28_N8S20467C8D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N8S20467C8D0Ev,_ZTvn1056_n28_N8S20467C8D0Ev)();
extern void _ZN9S20467C112v7Ev();
static  VTBL_ENTRY _tg__ZTV9S20467C118S20467C9__8S20467C8__8S20467C7[] = {
  ABISELECT(-9944,-7680),
  (VTBL_ENTRY)&(_ZTI8S20467C8[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20467C8D1Ev,_ZTvn1056_n28_N8S20467C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20467C8D0Ev,_ZTvn1056_n28_N8S20467C8D0Ev),
  (VTBL_ENTRY)&_ZN9S20467C112v7Ev,
};
extern void _ZN8S20467C52v5Ev();
extern void _ZN8S20467C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C2__A__8S20467C7[] = {
  ABISELECT(8328,6412),
  ABISELECT(9816,7572),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C2[0]),
  (VTBL_ENTRY)&_ZN8S20467C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20467C22v6Ev,
};
extern void _ZN8S20467C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C58S20467C2__A1__8S20467C7[] = {
  ABISELECT(8328,6412),
  ABISELECT(9816,7572),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C5[0]),
  (VTBL_ENTRY)&_ZN8S20467C52v5Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C3__8S20467C58S20467C2__A1__8S20467C7[] = {
  0,
  0,
  0,
  ABISELECT(-9816,-7572),
  (VTBL_ENTRY)&(_ZTI8S20467C5[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C68S20467C2__A3__8S20467C7[] = {
  ABISELECT(8184,6308),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C6[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C3__8S20467C2__A__8S20467C7[] = {
  0,
  0,
  0,
  ABISELECT(-9816,-7572),
  (VTBL_ENTRY)&(_ZTI8S20467C2[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C6__8S20467C2__A__8S20467C7[] = {
  ABISELECT(8184,6308),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20467C2[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C9D1Ev();
extern void _ZN8S20467C9D0Ev();
extern void _ZN8S20467C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C9__8S20467C7[] = {
  ABISELECT(1680,1308),
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C9[0]),
  (VTBL_ENTRY)&_ZN8S20467C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20467C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20467C92v8Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20467C108S20467C9__8S20467C7[] = {
  ABISELECT(1536,1196),
  ABISELECT(1480,1156),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20467C10[0]),
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C3__9S20467C108S20467C9__8S20467C7[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1156),
  (VTBL_ENTRY)&(_ZTI9S20467C10[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C6__9S20467C108S20467C9__8S20467C7[] = {
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-1536,-1196),
  (VTBL_ENTRY)&(_ZTI9S20467C10[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C3__8S20467C9__8S20467C7[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1156),
  (VTBL_ENTRY)&(_ZTI8S20467C9[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C6__8S20467C9__8S20467C7[] = {
  0,
  0,
  0,
  ABISELECT(-1544,-1200),
  ABISELECT(-1536,-1196),
  (VTBL_ENTRY)&(_ZTI8S20467C9[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C52v5Ev();
extern void _ZN8S20467C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C2__8S20467C9__8S20467C7[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  ABISELECT(-1680,-1308),
  (VTBL_ENTRY)&(_ZTI8S20467C9[0]),
  (VTBL_ENTRY)&_ZN8S20467C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20467C22v6Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C68S20467C2__A1__8S20467C9__8S20467C7[] = {
  ABISELECT(-1832,-1416),
  ABISELECT(-1824,-1412),
  (VTBL_ENTRY)&(_ZTI8S20467C9[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C6__A1__8S20467C7[] = {
  ABISELECT(-1544,-1200),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C6[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C52v5Ev();
extern void _ZN8S20467C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C2__8S20467C7[] = {
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C2[0]),
  (VTBL_ENTRY)&_ZN8S20467C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20467C22v6Ev,
};
extern void _ZN8S20467C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C58S20467C2__8S20467C7[] = {
  ABISELECT(-1688,-1312),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C5[0]),
  (VTBL_ENTRY)&_ZN8S20467C52v5Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C3__8S20467C58S20467C2__8S20467C7[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S20467C5[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C68S20467C2__A2__8S20467C7[] = {
  ABISELECT(-1832,-1416),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C6[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C3__8S20467C2__8S20467C7[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S20467C2[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C6__8S20467C2__8S20467C7[] = {
  ABISELECT(-1832,-1416),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20467C2[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
static  VTT_ENTRY vtt_S20467C7[] = {
  {&(_ZTV8S20467C7[7]),  7,87},
  {&(_tg__ZTV8S20467C8__8S20467C7[7]),  7,12},
  {&(_tg__ZTV8S20467C68S20467C8__8S20467C7[3]),  3,6},
  {&(_tg__ZTV8S20467C6__A__8S20467C8__8S20467C7[3]),  3,6},
  {&(_tg__ZTV8S20467C9__8S20467C8__8S20467C7[12]),  12,15},
  {&(_tg__ZTV8S20467C3__A2__8S20467C8__8S20467C7[5]),  5,8},
  {&(_tg__ZTV8S20467C6__A1__8S20467C8__8S20467C7[6]),  6,9},
  {&(_tg__ZTV8S20467C2__8S20467C8__8S20467C7[9]),  9,11},
  {&(_tg__ZTV8S20467C68S20467C2__A2__8S20467C8__8S20467C7[3]),  3,6},
  {&(_tg__ZTV9S20467C118S20467C9__8S20467C8__8S20467C7[2]),  2,8},
  {&(_tg__ZTV8S20467C2__A__8S20467C7[4]),  4,6},
  {&(_tg__ZTV8S20467C58S20467C2__A1__8S20467C7[4]),  4,5},
  {&(_tg__ZTV8S20467C3__8S20467C58S20467C2__A1__8S20467C7[5]),  5,8},
  {&(_tg__ZTV8S20467C68S20467C2__A3__8S20467C7[3]),  3,6},
  {&(_tg__ZTV8S20467C3__8S20467C2__A__8S20467C7[5]),  5,8},
  {&(_tg__ZTV8S20467C6__8S20467C2__A__8S20467C7[3]),  3,6},
  {&(_ZTV8S20467C7[15]),  15,87},
  {&(_ZTV8S20467C7[42]),  42,87},
  {&(_ZTV8S20467C7[58]),  58,87},
  {&(_ZTV8S20467C7[67]),  67,87},
  {&(_ZTV8S20467C7[79]),  79,87},
  {&(_ZTV8S20467C7[84]),  84,87},
  {&(_ZTV8S20467C7[47]),  47,87},
  {&(_ZTV8S20467C7[22]),  22,87},
  {&(_ZTV8S20467C7[27]),  27,87},
  {&(_tg__ZTV8S20467C9__8S20467C7[6]),  6,9},
  {&(_tg__ZTV9S20467C108S20467C9__8S20467C7[5]),  5,5},
  {&(_tg__ZTV8S20467C3__9S20467C108S20467C9__8S20467C7[5]),  5,8},
  {&(_tg__ZTV8S20467C6__9S20467C108S20467C9__8S20467C7[6]),  6,9},
  {&(_tg__ZTV8S20467C3__8S20467C9__8S20467C7[5]),  5,8},
  {&(_tg__ZTV8S20467C6__8S20467C9__8S20467C7[6]),  6,9},
  {&(_tg__ZTV8S20467C2__8S20467C9__8S20467C7[9]),  9,11},
  {&(_tg__ZTV8S20467C68S20467C2__A1__8S20467C9__8S20467C7[3]),  3,6},
  {&(_tg__ZTV8S20467C6__A1__8S20467C7[3]),  3,6},
  {&(_tg__ZTV8S20467C2__8S20467C7[4]),  4,6},
  {&(_tg__ZTV8S20467C58S20467C2__8S20467C7[4]),  4,5},
  {&(_tg__ZTV8S20467C3__8S20467C58S20467C2__8S20467C7[5]),  5,8},
  {&(_tg__ZTV8S20467C68S20467C2__A2__8S20467C7[3]),  3,6},
  {&(_tg__ZTV8S20467C3__8S20467C2__8S20467C7[5]),  5,8},
  {&(_tg__ZTV8S20467C6__8S20467C2__8S20467C7[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S20467C7[];
extern  VTBL_ENTRY _ZTV8S20467C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C7[];
static VTBL_ENTRY alt_thunk_names31[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20467C8D0Ev,_ZTv0_n28_N8S20467C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8608_N8S20467C8D0Ev,_ZThn6624_N8S20467C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20467C8D1Ev,_ZTv0_n28_N8S20467C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8608_N8S20467C8D1Ev,_ZThn6624_N8S20467C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20467C7D0Ev,_ZTv0_n28_N8S20467C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8608_N8S20467C7D0Ev,_ZThn6624_N8S20467C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20467C7D1Ev,_ZTv0_n28_N8S20467C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8608_N8S20467C7D1Ev,_ZThn6624_N8S20467C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20467C7 = {  "S20467C7", // class name
  bases_S20467C7, 28,
  &(vtc_S20467C7[0]), // expected_vtbl_contents
  &(vtt_S20467C7[0]), // expected_vtt_contents
  ABISELECT(10848,8364), // object size
  NSPAIRA(_ZTI8S20467C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20467C7),87, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20467C7),40, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names31,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20467C1  : virtual S20467C2 , S20467C7 , virtual S20467C5 {
  short s20467c1f0;
  ::S20467C6 s20467c1f1;
  __tsi64 s20467c1f2[8];
  int s20467c1f3;
  ::S20468C18 s20467c1f4;
  __tsi64 s20467c1f5;
  int s20467c1f6;
  int s20467c1f7;
  long double s20467c1f8;
  int s20467c1f9[4];
  __tsi64 s20467c1f10;
  virtual void  v1(); // _ZN8S20467C12v1Ev
  ~S20467C1(); // tgen
  S20467C1(); // tgen
};
//SIG(1 S20467C1) C1{ VBC2{ VBC3{ BC4{ m Fi} v2 v3 v4 FC4[3] FC4[2] Fp Fs FC4} VBC4 BC5{ VBC3 VBC4 v5 FC3 FD Fp[2] FC3} BC6{ BC3 VBC4 FD FL FC3 Fp Fs[3]} v6 Fp[2] Fl Fi FC3[5]} BC7{ BC8{ BC3 BC6 VBC9{ BC10{ VBC4 VBC3 VBC6 Fp[2] Fi FC6[8] FD[9]} BC4 VBC2 BC11{ BC3 vd v7 Fp[7] Fi[2] FL Fi} vd v8 Fi Fp Fi} Fp Fi FC3 Fi Fp} BC2 vd FC12{ VBC13{ BC14{ BC4 v9 v10 v11 FC4[3] FC4[2] Fp Fs FC4} VBC4 FD FL FC14 Fp Fs[3]} BC15{ BC16{ VBC4 VBC14 VBC13 Fp[2] Fi FC13[8] FD[9]} BC4 VBC17{ VBC14 VBC4 BC18{ VBC14 VBC4 v12 FC14 FD Fp[2] FC14} BC13 v13 Fp[2] Fl Fi FC14[5]} BC19{ BC14 vd v14 Fp[7] Fi[2] FL Fi} vd v15 Fi Fp Fi} BC20{ BC13 VBC15 BC17 BC21{ VBC4 BC17 BC18 BC13 v16 Fi FC22{} Fp[2]} vd Fi Fc[2] Fi FL FC22 Fp[8] Fs[5] FL FC23{ vd m Fc[2] Fi FL Fp[7] FU24{ m Fi:3 Fi Fi Fi FD[8] Fp Fc[5] FD Fc[4] Fi Fp Fc[4] Fp}[4] FC16}} BC18 vd Fc Fi Fi Fi Fi Fp Fc[4] Fi} Fp Fi:1 Fi Fi:30 Fi} VBC5 v1 Fs FC6 FL[8] Fi FC25{ v17 Fi} FL Fi Fi FD Fi[4] FL}


void  S20467C1 ::v1(){vfunc_called(this, "_ZN8S20467C12v1Ev");}
S20467C1 ::~S20467C1(){ note_dtor("S20467C1", this);} // tgen
S20467C1 ::S20467C1(){ note_ctor("S20467C1", this);} // tgen

static void Test_S20467C1()
{
  extern Class_Descriptor cd_S20467C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(707,2180)];
    init_test(&cd_S20467C1, buf);
    S20467C1 *dp, &lv = *(dp=new (buf) S20467C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11296,8716), "sizeof(S20467C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20467C1)");
    /*is_ambiguous_... S20467C1::S20467C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C3*), ABISELECT(9472,7304), "S20467C1");
    /*is_ambiguous_... S20467C1::S20467C2 */ AMB_check_base_class_offset(lv, (S20467C3*)(S20467C2*), ABISELECT(9464,7300), "S20467C1");
    /*is_ambiguous_... S20467C1::S20467C2 */ AMB_check_base_class_offset(lv, (S20467C3*)(S20467C5*)(S20467C2*), ABISELECT(9464,7300), "S20467C1");
    /*is_ambiguous_... S20467C10::S20467C3 */ AMB_check_base_class_offset(lv, (S20467C3*)(S20467C10*)(S20467C9*), ABISELECT(9464,7300), "S20467C1");
    /*is_ambiguous_... S20467C7::S20467C2 */ AMB_check_base_class_offset(lv, (S20467C3*)(S20467C2*)(S20467C7*), ABISELECT(9464,7300), "S20467C1");
    /*is_ambiguous_... S20467C7::S20467C2 */ AMB_check_base_class_offset(lv, (S20467C3*)(S20467C5*)(S20467C2*)(S20467C7*), ABISELECT(9464,7300), "S20467C1");
    /*is_ambiguous_... S20467C1::S20467C5 */ AMB_check_base_class_offset(lv, (S20467C3*)(S20467C5*), ABISELECT(9464,7300), "S20467C1");
    /*is_ambiguous_... S20467C1::S20467C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C2*), ABISELECT(9512,7340), "S20467C1");
    /*is_ambiguous_... S20467C1::S20467C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C5*)(S20467C2*), ABISELECT(9512,7340), "S20467C1");
    /*is_ambiguous_... S20467C1::S20467C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C6*)(S20467C2*), ABISELECT(9512,7340), "S20467C1");
    /*is_ambiguous_... S20467C8::S20467C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C6*)(S20467C8*)(S20467C7*), ABISELECT(9512,7340), "S20467C1");
    /*is_ambiguous_... S20467C10::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C10*)(S20467C9*), ABISELECT(9512,7340), "S20467C1");
    /*is_ambiguous_... S20467C1::S20467C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C6*), ABISELECT(9512,7340), "S20467C1");
    /*is_ambiguous_... S20467C7::S20467C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C2*)(S20467C7*), ABISELECT(9512,7340), "S20467C1");
    /*is_ambiguous_... S20467C7::S20467C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C5*)(S20467C2*)(S20467C7*), ABISELECT(9512,7340), "S20467C1");
    /*is_ambiguous_... S20467C7::S20467C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C6*)(S20467C2*)(S20467C7*), ABISELECT(9512,7340), "S20467C1");
    /*is_ambiguous_... S20467C1::S20467C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C5*), ABISELECT(9512,7340), "S20467C1");
    /*is_ambiguous_... S20467C1::S20467C2 */ AMB_check_base_class_offset(lv, (S20467C5*)(S20467C2*), ABISELECT(8912,6868), "S20467C1");
    /*is_ambiguous_... S20467C1::S20467C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C3*)(S20467C6*)(S20467C2*), ABISELECT(9064,6976), "S20467C1");
    /*is_ambiguous_... S20467C1::S20467C2 */ AMB_check_base_class_offset(lv, (S20467C3*)(S20467C6*)(S20467C2*), ABISELECT(9056,6972), "S20467C1");
    /*is_ambiguous_... S20467C1::S20467C2 */ AMB_check_base_class_offset(lv, (S20467C6*)(S20467C2*), ABISELECT(9056,6972), "S20467C1");
    /*is_ambiguous_... S20467C1::S20467C2 */ AMB_check_base_class_offset(lv, (S20467C2*), ABISELECT(8912,6868), "S20467C1");
    check_base_class_offset(lv, (S20467C2*)(S20467C9*), ABISELECT(8912,6868), "S20467C1");
    /*is_ambiguous_... S20467C8::S20467C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C3*)(S20467C8*)(S20467C7*), ABISELECT(8,4), "S20467C1");
    /*is_ambiguous_... S20467C8::S20467C3 */ AMB_check_base_class_offset(lv, (S20467C3*)(S20467C8*)(S20467C7*), 0, "S20467C1");
    /*is_ambiguous_... S20467C8::S20467C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C3*)(S20467C6*)(S20467C8*)(S20467C7*), ABISELECT(56,44), "S20467C1");
    /*is_ambiguous_... S20467C8::S20467C6 */ AMB_check_base_class_offset(lv, (S20467C3*)(S20467C6*)(S20467C8*)(S20467C7*), ABISELECT(48,40), "S20467C1");
    /*is_ambiguous_... S20467C8::S20467C6 */ AMB_check_base_class_offset(lv, (S20467C6*)(S20467C8*)(S20467C7*), ABISELECT(48,40), "S20467C1");
    /*is_ambiguous_... S20467C1::S20467C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C3*)(S20467C6*), ABISELECT(11016,8504), "S20467C1");
    /*is_ambiguous_... S20467C1::S20467C6 */ AMB_check_base_class_offset(lv, (S20467C3*)(S20467C6*), ABISELECT(11008,8500), "S20467C1");
    check_base_class_offset(lv, (S20467C6*)(S20467C10*)(S20467C9*), ABISELECT(11008,8500), "S20467C1");
    check_base_class_offset(lv, (S20467C10*)(S20467C9*), ABISELECT(9520,7344), "S20467C1");
    /*is_ambiguous_... S20467C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C9*), ABISELECT(10848,8396), "S20467C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S20467C3*)(S20467C11*)(S20467C9*), ABISELECT(10864,8404), "S20467C1");
    check_base_class_offset(lv, (S20467C3*)(S20467C11*)(S20467C9*), ABISELECT(10856,8400), "S20467C1");
    check_base_class_offset(lv, (S20467C11*)(S20467C9*), ABISELECT(10856,8400), "S20467C1");
    check_base_class_offset(lv, (S20467C9*)(S20467C8*)(S20467C7*), ABISELECT(9520,7344), "S20467C1");
    check_base_class_offset(lv, (S20467C8*)(S20467C7*), 0, "S20467C1");
    /*is_ambiguous_... S20467C7::S20467C2 */ AMB_check_base_class_offset(lv, (S20467C5*)(S20467C2*)(S20467C7*), ABISELECT(272,208), "S20467C1");
    /*is_ambiguous_... S20467C7::S20467C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20467C3*)(S20467C6*)(S20467C2*)(S20467C7*), ABISELECT(424,316), "S20467C1");
    /*is_ambiguous_... S20467C7::S20467C2 */ AMB_check_base_class_offset(lv, (S20467C3*)(S20467C6*)(S20467C2*)(S20467C7*), ABISELECT(416,312), "S20467C1");
    /*is_ambiguous_... S20467C7::S20467C2 */ AMB_check_base_class_offset(lv, (S20467C6*)(S20467C2*)(S20467C7*), ABISELECT(416,312), "S20467C1");
    /*is_ambiguous_... S20467C7::S20467C2 */ AMB_check_base_class_offset(lv, (S20467C2*)(S20467C7*), ABISELECT(272,208), "S20467C1");
    check_base_class_offset(lv, (S20467C7*), 0, "S20467C1");
    /*is_ambiguous_... S20467C1::S20467C5 */ AMB_check_base_class_offset(lv, (S20467C5*), ABISELECT(11152,8612), "S20467C1");
    check_field_offset(lv, s20467c1f0, ABISELECT(8600,6620), "S20467C1.s20467c1f0");
    check_field_offset(lv, s20467c1f1, ABISELECT(8608,6624), "S20467C1.s20467c1f1");
    check_field_offset(lv, s20467c1f2, ABISELECT(8752,6740), "S20467C1.s20467c1f2");
    check_field_offset(lv, s20467c1f3, ABISELECT(8816,6804), "S20467C1.s20467c1f3");
    check_field_offset(lv, s20467c1f4, ABISELECT(8824,6808), "S20467C1.s20467c1f4");
    check_field_offset(lv, s20467c1f5, ABISELECT(8840,6816), "S20467C1.s20467c1f5");
    check_field_offset(lv, s20467c1f6, ABISELECT(8848,6824), "S20467C1.s20467c1f6");
    check_field_offset(lv, s20467c1f7, ABISELECT(8852,6828), "S20467C1.s20467c1f7");
    check_field_offset(lv, s20467c1f8, ABISELECT(8864,6832), "S20467C1.s20467c1f8");
    check_field_offset(lv, s20467c1f9, ABISELECT(8880,6844), "S20467C1.s20467c1f9");
    check_field_offset(lv, s20467c1f10, ABISELECT(8896,6860), "S20467C1.s20467c1f10");
    test_class_info(&lv, &cd_S20467C1);
    dp->~S20467C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20467C1(Test_S20467C1, "S20467C1", ABISELECT(11296,8716));

#else // __cplusplus

extern void _ZN8S20467C1C1Ev();
extern void _ZN8S20467C1D1Ev();
Name_Map name_map_S20467C1[] = {
  NSPAIR(_ZN8S20467C1C1Ev),
  NSPAIR(_ZN8S20467C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C3;
extern VTBL_ENTRY _ZTI8S20467C3[];
extern  VTBL_ENTRY _ZTV8S20467C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C5;
extern VTBL_ENTRY _ZTI8S20467C5[];
extern  VTBL_ENTRY _ZTV8S20467C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C3;
extern VTBL_ENTRY _ZTI8S20467C3[];
extern  VTBL_ENTRY _ZTV8S20467C3[];
extern Class_Descriptor cd_S20467C6;
extern VTBL_ENTRY _ZTI8S20467C6[];
extern  VTBL_ENTRY _ZTV8S20467C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C6[];
extern Class_Descriptor cd_S20467C2;
extern VTBL_ENTRY _ZTI8S20467C2[];
extern  VTBL_ENTRY _ZTV8S20467C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C3;
extern VTBL_ENTRY _ZTI8S20467C3[];
extern  VTBL_ENTRY _ZTV8S20467C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C3;
extern VTBL_ENTRY _ZTI8S20467C3[];
extern  VTBL_ENTRY _ZTV8S20467C3[];
extern Class_Descriptor cd_S20467C6;
extern VTBL_ENTRY _ZTI8S20467C6[];
extern  VTBL_ENTRY _ZTV8S20467C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C3;
extern VTBL_ENTRY _ZTI8S20467C3[];
extern  VTBL_ENTRY _ZTV8S20467C3[];
extern Class_Descriptor cd_S20467C6;
extern VTBL_ENTRY _ZTI8S20467C6[];
extern  VTBL_ENTRY _ZTV8S20467C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C6[];
extern Class_Descriptor cd_S20467C10;
extern VTBL_ENTRY _ZTI9S20467C10[];
extern  VTBL_ENTRY _ZTV9S20467C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20467C10[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C3;
extern VTBL_ENTRY _ZTI8S20467C3[];
extern  VTBL_ENTRY _ZTV8S20467C3[];
extern Class_Descriptor cd_S20467C11;
extern VTBL_ENTRY _ZTI9S20467C11[];
extern  VTBL_ENTRY _ZTV9S20467C11[];
extern Class_Descriptor cd_S20467C9;
extern VTBL_ENTRY _ZTI8S20467C9[];
extern  VTBL_ENTRY _ZTV8S20467C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C9[];
extern Class_Descriptor cd_S20467C8;
extern VTBL_ENTRY _ZTI8S20467C8[];
extern  VTBL_ENTRY _ZTV8S20467C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C8[];
extern Class_Descriptor cd_S20467C5;
extern VTBL_ENTRY _ZTI8S20467C5[];
extern  VTBL_ENTRY _ZTV8S20467C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20467C3;
extern VTBL_ENTRY _ZTI8S20467C3[];
extern  VTBL_ENTRY _ZTV8S20467C3[];
extern Class_Descriptor cd_S20467C6;
extern VTBL_ENTRY _ZTI8S20467C6[];
extern  VTBL_ENTRY _ZTV8S20467C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C6[];
extern Class_Descriptor cd_S20467C2;
extern VTBL_ENTRY _ZTI8S20467C2[];
extern  VTBL_ENTRY _ZTV8S20467C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C2[];
extern Class_Descriptor cd_S20467C7;
extern VTBL_ENTRY _ZTI8S20467C7[];
extern  VTBL_ENTRY _ZTV8S20467C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C7[];
extern Class_Descriptor cd_S20467C5;
extern VTBL_ENTRY _ZTI8S20467C5[];
extern  VTBL_ENTRY _ZTV8S20467C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C5[];
static Base_Class bases_S20467C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(9472,7304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20467C3,    ABISELECT(9464,7300), //bcp->offset
    49, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(9512,7340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20467C5,    ABISELECT(8912,6868), //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
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(9064,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
    5, //immediately_derived
  0, 0},
  {&cd_S20467C3,    ABISELECT(9056,6972), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20467C6,    ABISELECT(9056,6972), //bcp->offset
    43, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20467C2,    ABISELECT(8912,6868), //bcp->offset
    32, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20467C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    22, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    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
    11, //immediately_derived
  0, 0},
  {&cd_S20467C3,    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
    14, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20467C6,    ABISELECT(48,40), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(11016,8504), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20467C3,    ABISELECT(11008,8500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20467C6,    ABISELECT(11008,8500), //bcp->offset
    80, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20467C10,    ABISELECT(9520,7344), //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
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(10848,8396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3216C8_nt,    ABISELECT(10864,8404), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20467C3,    ABISELECT(10856,8400), //bcp->offset
    -1, //bcp->virtual_function_table_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
    20, //immediately_derived
  0, 0},
  {&cd_S20467C11,    ABISELECT(10856,8400), //bcp->offset
    72, //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
    10, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20467C9,    ABISELECT(9520,7344), //bcp->offset
    57, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S20467C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20467C5,    ABISELECT(272,208), //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
    17, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(424,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
    25, //immediately_derived
  0, 0},
  {&cd_S20467C3,    ABISELECT(416,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
    18, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20467C6,    ABISELECT(416,312), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20467C2,    ABISELECT(272,208), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20467C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20467C5,    ABISELECT(11152,8612), //bcp->offset
    89, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20467C1[];
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
extern void _ZN8S20467C1D1Ev();
extern void _ZN8S20467C1D0Ev();
extern void _ZN8S20467C12v1Ev();
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
extern void _ZN8S20467C52v5Ev();
extern void _ZN8S20467C22v6Ev();
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
extern void _ZN8S20467C52v5Ev();
extern void _ZN8S20467C22v6Ev();
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
extern void ABISELECT(_ZTv0_n56_N8S20467C1D1Ev,_ZTv0_n28_N8S20467C1D1Ev)();
extern void ABISELECT(_ZThn9520_N8S20467C1D1Ev,_ZThn7344_N8S20467C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20467C1D0Ev,_ZTv0_n28_N8S20467C1D0Ev)();
extern void ABISELECT(_ZThn9520_N8S20467C1D0Ev,_ZThn7344_N8S20467C1D0Ev)() __attribute__((weak));
extern void _ZN8S20467C92v8Ev();
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N8S20467C1D1Ev,_ZTvn1056_n28_N8S20467C1D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N8S20467C1D0Ev,_ZTvn1056_n28_N8S20467C1D0Ev)();
extern void _ZN9S20467C112v7Ev();
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
extern void _ZN8S20467C52v5Ev();
static  VTBL_ENTRY vtc_S20467C1[] = {
  ABISELECT(11152,8612),
  ABISELECT(8912,6868),
  ABISELECT(11008,8500),
  ABISELECT(9464,7300),
  ABISELECT(9520,7344),
  ABISELECT(9512,7340),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C1[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20467C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20467C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20467C12v1Ev,
  ABISELECT(9464,7300),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI8S20467C1[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
  ABISELECT(9240,7132),
  ABISELECT(9192,7092),
  ABISELECT(-272,-208),
  (VTBL_ENTRY)&(_ZTI8S20467C1[0]),
  (VTBL_ENTRY)&_ZN8S20467C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20467C22v6Ev,
  ABISELECT(9096,7028),
  ABISELECT(-416,-312),
  (VTBL_ENTRY)&(_ZTI8S20467C1[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(600,472),
  ABISELECT(552,432),
  ABISELECT(-8912,-6868),
  (VTBL_ENTRY)&(_ZTI8S20467C1[0]),
  (VTBL_ENTRY)&_ZN8S20467C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20467C22v6Ev,
  ABISELECT(456,368),
  ABISELECT(-9056,-6972),
  (VTBL_ENTRY)&(_ZTI8S20467C1[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
  0,
  0,
  0,
  ABISELECT(-9464,-7300),
  (VTBL_ENTRY)&(_ZTI8S20467C1[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-9520,-7344),
  ABISELECT(-608,-476),
  ABISELECT(1488,1156),
  ABISELECT(-56,-44),
  ABISELECT(-8,-4),
  ABISELECT(-9520,-7344),
  (VTBL_ENTRY)&(_ZTI8S20467C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20467C1D1Ev,_ZTv0_n28_N8S20467C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20467C1D0Ev,_ZTv0_n28_N8S20467C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20467C92v8Ev,
  ABISELECT(-10856,-8400),
  (VTBL_ENTRY)&(_ZTI8S20467C1[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20467C1D1Ev,_ZTvn1056_n28_N8S20467C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20467C1D0Ev,_ZTvn1056_n28_N8S20467C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20467C112v7Ev,
  0,
  0,
  0,
  ABISELECT(-1496,-1160),
  ABISELECT(-11008,-8500),
  (VTBL_ENTRY)&(_ZTI8S20467C1[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
  0,
  ABISELECT(-1640,-1272),
  ABISELECT(-1688,-1312),
  ABISELECT(-11152,-8612),
  (VTBL_ENTRY)&(_ZTI8S20467C1[0]),
  (VTBL_ENTRY)&_ZN8S20467C52v5Ev,
};
extern VTBL_ENTRY _ZTV8S20467C1[];
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
extern void _ZN8S20467C7D1Ev();
extern void _ZN8S20467C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C7__8S20467C1[] = {
  ABISELECT(8912,6868),
  ABISELECT(11008,8500),
  ABISELECT(9464,7300),
  ABISELECT(9520,7344),
  ABISELECT(9512,7340),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C7[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20467C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20467C7D0Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
extern void _ZN8S20467C8D1Ev();
extern void _ZN8S20467C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C88S20467C7__8S20467C1[] = {
  ABISELECT(8912,6868),
  ABISELECT(11008,8500),
  ABISELECT(9464,7300),
  ABISELECT(9520,7344),
  ABISELECT(9512,7340),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C8[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20467C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20467C8D0Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C68S20467C88S20467C7__A1__8S20467C1[] = {
  ABISELECT(9464,7300),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C6[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C6__A__8S20467C88S20467C7__8S20467C1[] = {
  ABISELECT(9464,7300),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI8S20467C8[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S20467C8D1Ev,_ZTv0_n28_N8S20467C8D1Ev)();
extern void ABISELECT(_ZThn9520_N8S20467C8D1Ev,_ZThn7344_N8S20467C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20467C8D0Ev,_ZTv0_n28_N8S20467C8D0Ev)();
extern void ABISELECT(_ZThn9520_N8S20467C8D0Ev,_ZThn7344_N8S20467C8D0Ev)() __attribute__((weak));
extern void _ZN8S20467C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C9__8S20467C88S20467C7__8S20467C1[] = {
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-9520,-7344),
  ABISELECT(-608,-476),
  ABISELECT(1488,1156),
  ABISELECT(-56,-44),
  ABISELECT(-8,-4),
  ABISELECT(-9520,-7344),
  (VTBL_ENTRY)&(_ZTI8S20467C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20467C8D1Ev,_ZTv0_n28_N8S20467C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20467C8D0Ev,_ZTv0_n28_N8S20467C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20467C92v8Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C3__A2__8S20467C88S20467C7__8S20467C1[] = {
  0,
  0,
  0,
  ABISELECT(-9464,-7300),
  (VTBL_ENTRY)&(_ZTI8S20467C8[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C6__A1__8S20467C88S20467C7__8S20467C1[] = {
  0,
  0,
  0,
  ABISELECT(-1496,-1160),
  ABISELECT(-11008,-8500),
  (VTBL_ENTRY)&(_ZTI8S20467C8[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C52v5Ev();
extern void _ZN8S20467C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C2__8S20467C88S20467C7__8S20467C1[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(600,472),
  ABISELECT(552,432),
  ABISELECT(-8912,-6868),
  (VTBL_ENTRY)&(_ZTI8S20467C8[0]),
  (VTBL_ENTRY)&_ZN8S20467C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20467C22v6Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C68S20467C2__A2__8S20467C88S20467C7__8S20467C1[] = {
  ABISELECT(456,368),
  ABISELECT(-9056,-6972),
  (VTBL_ENTRY)&(_ZTI8S20467C8[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N8S20467C8D1Ev,_ZTvn1056_n28_N8S20467C8D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N8S20467C8D0Ev,_ZTvn1056_n28_N8S20467C8D0Ev)();
extern void _ZN9S20467C112v7Ev();
static  VTBL_ENTRY _tg__ZTV9S20467C118S20467C9__8S20467C88S20467C7__8S20467C1[] = {
  ABISELECT(-10856,-8400),
  (VTBL_ENTRY)&(_ZTI8S20467C8[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20467C8D1Ev,_ZTvn1056_n28_N8S20467C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20467C8D0Ev,_ZTvn1056_n28_N8S20467C8D0Ev),
  (VTBL_ENTRY)&_ZN9S20467C112v7Ev,
};
extern void _ZN8S20467C52v5Ev();
extern void _ZN8S20467C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C28S20467C7__A1__8S20467C1[] = {
  ABISELECT(9240,7132),
  ABISELECT(9192,7092),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C2[0]),
  (VTBL_ENTRY)&_ZN8S20467C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20467C22v6Ev,
};
extern void _ZN8S20467C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C58S20467C28S20467C7__A1__8S20467C1[] = {
  ABISELECT(9240,7132),
  ABISELECT(9192,7092),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C5[0]),
  (VTBL_ENTRY)&_ZN8S20467C52v5Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C3__8S20467C58S20467C28S20467C7__A1__8S20467C1[] = {
  0,
  0,
  0,
  ABISELECT(-9192,-7092),
  (VTBL_ENTRY)&(_ZTI8S20467C5[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C68S20467C28S20467C7__A3__8S20467C1[] = {
  ABISELECT(9096,7028),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C6[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C3__8S20467C28S20467C7__A1__8S20467C1[] = {
  0,
  0,
  0,
  ABISELECT(-9192,-7092),
  (VTBL_ENTRY)&(_ZTI8S20467C2[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C6__8S20467C28S20467C7__A1__8S20467C1[] = {
  ABISELECT(9096,7028),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20467C2[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C68S20467C8__8S20467C7__8S20467C1[] = {
  ABISELECT(9464,7300),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI8S20467C7[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S20467C7D1Ev,_ZTv0_n28_N8S20467C7D1Ev)();
extern void ABISELECT(_ZThn9520_N8S20467C7D1Ev,_ZThn7344_N8S20467C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20467C7D0Ev,_ZTv0_n28_N8S20467C7D0Ev)();
extern void ABISELECT(_ZThn9520_N8S20467C7D0Ev,_ZThn7344_N8S20467C7D0Ev)() __attribute__((weak));
extern void _ZN8S20467C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C9__8S20467C7__8S20467C1[] = {
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  ABISELECT(1336,1056),
  0,
  ABISELECT(-9520,-7344),
  ABISELECT(-608,-476),
  ABISELECT(1488,1156),
  ABISELECT(-56,-44),
  ABISELECT(-8,-4),
  ABISELECT(-9520,-7344),
  (VTBL_ENTRY)&(_ZTI8S20467C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20467C7D1Ev,_ZTv0_n28_N8S20467C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20467C7D0Ev,_ZTv0_n28_N8S20467C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20467C92v8Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C3__A2__8S20467C7__8S20467C1[] = {
  0,
  0,
  0,
  ABISELECT(-9464,-7300),
  (VTBL_ENTRY)&(_ZTI8S20467C7[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C6__A1__8S20467C7__8S20467C1[] = {
  0,
  0,
  0,
  ABISELECT(-1496,-1160),
  ABISELECT(-11008,-8500),
  (VTBL_ENTRY)&(_ZTI8S20467C7[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C52v5Ev();
extern void _ZN8S20467C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C2__8S20467C7__8S20467C1[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(600,472),
  ABISELECT(552,432),
  ABISELECT(-8912,-6868),
  (VTBL_ENTRY)&(_ZTI8S20467C7[0]),
  (VTBL_ENTRY)&_ZN8S20467C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20467C22v6Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C68S20467C2__A2__8S20467C7__8S20467C1[] = {
  ABISELECT(456,368),
  ABISELECT(-9056,-6972),
  (VTBL_ENTRY)&(_ZTI8S20467C7[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
extern void ABISELECT(_ZTvn1336_n56_N8S20467C7D1Ev,_ZTvn1056_n28_N8S20467C7D1Ev)();
extern void ABISELECT(_ZTvn1336_n56_N8S20467C7D0Ev,_ZTvn1056_n28_N8S20467C7D0Ev)();
extern void _ZN9S20467C112v7Ev();
static  VTBL_ENTRY _tg__ZTV9S20467C118S20467C9__8S20467C7__8S20467C1[] = {
  ABISELECT(-10856,-8400),
  (VTBL_ENTRY)&(_ZTI8S20467C7[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20467C7D1Ev,_ZTvn1056_n28_N8S20467C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1336_n56_N8S20467C7D0Ev,_ZTvn1056_n28_N8S20467C7D0Ev),
  (VTBL_ENTRY)&_ZN9S20467C112v7Ev,
};
extern void _ZN8S20467C52v5Ev();
extern void _ZN8S20467C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C2__A__8S20467C7__8S20467C1[] = {
  ABISELECT(9240,7132),
  ABISELECT(9192,7092),
  ABISELECT(-272,-208),
  (VTBL_ENTRY)&(_ZTI8S20467C7[0]),
  (VTBL_ENTRY)&_ZN8S20467C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20467C22v6Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C68S20467C2__A3__8S20467C7__8S20467C1[] = {
  ABISELECT(9096,7028),
  ABISELECT(-416,-312),
  (VTBL_ENTRY)&(_ZTI8S20467C7[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C52v5Ev();
extern void _ZN8S20467C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C2__8S20467C1[] = {
  ABISELECT(600,472),
  ABISELECT(552,432),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C2[0]),
  (VTBL_ENTRY)&_ZN8S20467C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20467C22v6Ev,
};
extern void _ZN8S20467C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C58S20467C2__8S20467C1[] = {
  ABISELECT(600,472),
  ABISELECT(552,432),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C5[0]),
  (VTBL_ENTRY)&_ZN8S20467C52v5Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C3__8S20467C58S20467C2__8S20467C1[] = {
  0,
  0,
  0,
  ABISELECT(-552,-432),
  (VTBL_ENTRY)&(_ZTI8S20467C5[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C68S20467C2__8S20467C1[] = {
  ABISELECT(456,368),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C6[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C3__8S20467C2__8S20467C1[] = {
  0,
  0,
  0,
  ABISELECT(-552,-432),
  (VTBL_ENTRY)&(_ZTI8S20467C2[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C6__8S20467C2__8S20467C1[] = {
  ABISELECT(456,368),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20467C2[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C9D1Ev();
extern void _ZN8S20467C9D0Ev();
extern void _ZN8S20467C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C9__8S20467C1[] = {
  ABISELECT(-608,-476),
  ABISELECT(1488,1156),
  ABISELECT(-56,-44),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C9[0]),
  (VTBL_ENTRY)&_ZN8S20467C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20467C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20467C92v8Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20467C108S20467C9__8S20467C1[] = {
  ABISELECT(1488,1156),
  ABISELECT(-56,-44),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20467C10[0]),
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C3__9S20467C108S20467C9__8S20467C1[] = {
  0,
  0,
  0,
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI9S20467C10[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C6__9S20467C108S20467C9__8S20467C1[] = {
  0,
  0,
  0,
  ABISELECT(-1496,-1160),
  ABISELECT(-1488,-1156),
  (VTBL_ENTRY)&(_ZTI9S20467C10[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C3__8S20467C9__8S20467C1[] = {
  0,
  0,
  0,
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI8S20467C9[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C6__8S20467C9__8S20467C1[] = {
  0,
  0,
  0,
  ABISELECT(-1496,-1160),
  ABISELECT(-1488,-1156),
  (VTBL_ENTRY)&(_ZTI8S20467C9[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C52v5Ev();
extern void _ZN8S20467C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C2__8S20467C9__8S20467C1[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(600,472),
  ABISELECT(552,432),
  ABISELECT(608,476),
  (VTBL_ENTRY)&(_ZTI8S20467C9[0]),
  (VTBL_ENTRY)&_ZN8S20467C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20467C22v6Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C68S20467C2__A1__8S20467C9__8S20467C1[] = {
  ABISELECT(456,368),
  ABISELECT(464,372),
  (VTBL_ENTRY)&(_ZTI8S20467C9[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C6__A2__8S20467C1[] = {
  ABISELECT(-1496,-1160),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C6[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
extern void _ZN8S20467C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C5__A2__8S20467C1[] = {
  ABISELECT(-1640,-1272),
  ABISELECT(-1688,-1312),
  0,
  (VTBL_ENTRY)&(_ZTI8S20467C5[0]),
  (VTBL_ENTRY)&_ZN8S20467C52v5Ev,
};
extern void _ZN8S20467C32v2Ev();
extern void _ZN8S20467C32v3Ev();
extern void _ZN8S20467C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20467C3__8S20467C5__A2__8S20467C1[] = {
  0,
  0,
  0,
  ABISELECT(1688,1312),
  (VTBL_ENTRY)&(_ZTI8S20467C5[0]),
  (VTBL_ENTRY)&_ZN8S20467C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20467C32v4Ev,
};
static  VTT_ENTRY vtt_S20467C1[] = {
  {&(_ZTV8S20467C1[8]),  8,95},
  {&(_tg__ZTV8S20467C7__8S20467C1[7]),  7,12},
  {&(_tg__ZTV8S20467C88S20467C7__8S20467C1[7]),  7,12},
  {&(_tg__ZTV8S20467C68S20467C88S20467C7__A1__8S20467C1[3]),  3,6},
  {&(_tg__ZTV8S20467C6__A__8S20467C88S20467C7__8S20467C1[3]),  3,6},
  {&(_tg__ZTV8S20467C9__8S20467C88S20467C7__8S20467C1[12]),  12,15},
  {&(_tg__ZTV8S20467C3__A2__8S20467C88S20467C7__8S20467C1[5]),  5,8},
  {&(_tg__ZTV8S20467C6__A1__8S20467C88S20467C7__8S20467C1[6]),  6,9},
  {&(_tg__ZTV8S20467C2__8S20467C88S20467C7__8S20467C1[9]),  9,11},
  {&(_tg__ZTV8S20467C68S20467C2__A2__8S20467C88S20467C7__8S20467C1[3]),  3,6},
  {&(_tg__ZTV9S20467C118S20467C9__8S20467C88S20467C7__8S20467C1[2]),  2,8},
  {&(_tg__ZTV8S20467C28S20467C7__A1__8S20467C1[4]),  4,6},
  {&(_tg__ZTV8S20467C58S20467C28S20467C7__A1__8S20467C1[4]),  4,5},
  {&(_tg__ZTV8S20467C3__8S20467C58S20467C28S20467C7__A1__8S20467C1[5]),  5,8},
  {&(_tg__ZTV8S20467C68S20467C28S20467C7__A3__8S20467C1[3]),  3,6},
  {&(_tg__ZTV8S20467C3__8S20467C28S20467C7__A1__8S20467C1[5]),  5,8},
  {&(_tg__ZTV8S20467C6__8S20467C28S20467C7__A1__8S20467C1[3]),  3,6},
  {&(_tg__ZTV8S20467C68S20467C8__8S20467C7__8S20467C1[3]),  3,6},
  {&(_tg__ZTV8S20467C9__8S20467C7__8S20467C1[12]),  12,15},
  {&(_tg__ZTV8S20467C3__A2__8S20467C7__8S20467C1[5]),  5,8},
  {&(_tg__ZTV8S20467C6__A1__8S20467C7__8S20467C1[6]),  6,9},
  {&(_tg__ZTV8S20467C2__8S20467C7__8S20467C1[9]),  9,11},
  {&(_tg__ZTV8S20467C68S20467C2__A2__8S20467C7__8S20467C1[3]),  3,6},
  {&(_tg__ZTV9S20467C118S20467C9__8S20467C7__8S20467C1[2]),  2,8},
  {&(_tg__ZTV8S20467C2__A__8S20467C7__8S20467C1[4]),  4,6},
  {&(_tg__ZTV8S20467C68S20467C2__A3__8S20467C7__8S20467C1[3]),  3,6},
  {&(_ZTV8S20467C1[41]),  41,95},
  {&(_ZTV8S20467C1[54]),  54,95},
  {&(_ZTV8S20467C1[46]),  46,95},
  {&(_ZTV8S20467C1[17]),  17,95},
  {&(_ZTV8S20467C1[69]),  69,95},
  {&(_ZTV8S20467C1[86]),  86,95},
  {&(_ZTV8S20467C1[74]),  74,95},
  {&(_ZTV8S20467C1[24]),  24,95},
  {&(_ZTV8S20467C1[29]),  29,95},
  {&(_ZTV8S20467C1[94]),  94,95},
  {&(_tg__ZTV8S20467C2__8S20467C1[4]),  4,6},
  {&(_tg__ZTV8S20467C58S20467C2__8S20467C1[4]),  4,5},
  {&(_tg__ZTV8S20467C3__8S20467C58S20467C2__8S20467C1[5]),  5,8},
  {&(_tg__ZTV8S20467C68S20467C2__8S20467C1[3]),  3,6},
  {&(_tg__ZTV8S20467C3__8S20467C2__8S20467C1[5]),  5,8},
  {&(_tg__ZTV8S20467C6__8S20467C2__8S20467C1[3]),  3,6},
  {&(_tg__ZTV8S20467C9__8S20467C1[6]),  6,9},
  {&(_tg__ZTV9S20467C108S20467C9__8S20467C1[5]),  5,5},
  {&(_tg__ZTV8S20467C3__9S20467C108S20467C9__8S20467C1[5]),  5,8},
  {&(_tg__ZTV8S20467C6__9S20467C108S20467C9__8S20467C1[6]),  6,9},
  {&(_tg__ZTV8S20467C3__8S20467C9__8S20467C1[5]),  5,8},
  {&(_tg__ZTV8S20467C6__8S20467C9__8S20467C1[6]),  6,9},
  {&(_tg__ZTV8S20467C2__8S20467C9__8S20467C1[9]),  9,11},
  {&(_tg__ZTV8S20467C68S20467C2__A1__8S20467C9__8S20467C1[3]),  3,6},
  {&(_tg__ZTV8S20467C6__A2__8S20467C1[3]),  3,6},
  {&(_tg__ZTV8S20467C5__A2__8S20467C1[4]),  4,5},
  {&(_tg__ZTV8S20467C3__8S20467C5__A2__8S20467C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S20467C1[];
extern  VTBL_ENTRY _ZTV8S20467C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20467C1[];
static VTBL_ENTRY alt_thunk_names32[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20467C7D0Ev,_ZTv0_n28_N8S20467C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9520_N8S20467C7D0Ev,_ZThn7344_N8S20467C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20467C7D1Ev,_ZTv0_n28_N8S20467C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9520_N8S20467C7D1Ev,_ZThn7344_N8S20467C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20467C8D0Ev,_ZTv0_n28_N8S20467C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9520_N8S20467C8D0Ev,_ZThn7344_N8S20467C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20467C8D1Ev,_ZTv0_n28_N8S20467C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9520_N8S20467C8D1Ev,_ZThn7344_N8S20467C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20467C1D0Ev,_ZTv0_n28_N8S20467C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9520_N8S20467C1D0Ev,_ZThn7344_N8S20467C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20467C1D1Ev,_ZTv0_n28_N8S20467C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9520_N8S20467C1D1Ev,_ZThn7344_N8S20467C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20467C1 = {  "S20467C1", // class name
  bases_S20467C1, 30,
  &(vtc_S20467C1[0]), // expected_vtbl_contents
  &(vtt_S20467C1[0]), // expected_vtt_contents
  ABISELECT(11296,8716), // object size
  NSPAIRA(_ZTI8S20467C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20467C1),95, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20467C1),53, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names32,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S653C5  {
  int s653c5f0;
  __tsi64 s653c5f1;
  void *s653c5f2[4];
  int s653c5f3[2];
  void *s653c5f4;
  ::S3216C4_nt s653c5f5;
  void *s653c5f6[2];
  virtual  ~S653C5(); // _ZN6S653C5D1Ev
  virtual void  v6(); // _ZN6S653C52v6Ev
  virtual void  v7(); // _ZN6S653C52v7Ev
  virtual void  v8(); // _ZN6S653C52v8Ev
  virtual void  v9(); // _ZN6S653C52v9Ev
  virtual void  v10(); // _ZN6S653C53v10Ev
  virtual void  v11(); // _ZN6S653C53v11Ev
  virtual void  v12(); // _ZN6S653C53v12Ev
  virtual void  v13(); // _ZN6S653C53v13Ev
  virtual void  v14(); // _ZN6S653C53v14Ev
  virtual void  v15(); // _ZN6S653C53v15Ev
  virtual void  v16(); // _ZN6S653C53v16Ev
  virtual void  v17(); // _ZN6S653C53v17Ev
  virtual void  v18(); // _ZN6S653C53v18Ev
  virtual void  v19(); // _ZN6S653C53v19Ev
  virtual void  v20(); // _ZN6S653C53v20Ev
  virtual void  v21(); // _ZN6S653C53v21Ev
  virtual void  v22(); // _ZN6S653C53v22Ev
  virtual void  v23(); // _ZN6S653C53v23Ev
  virtual void  v24(); // _ZN6S653C53v24Ev
  virtual void  v25(); // _ZN6S653C53v25Ev
  virtual void  v26(); // _ZN6S653C53v26Ev
  virtual void  v27(); // _ZN6S653C53v27Ev
  virtual void  v28(); // _ZN6S653C53v28Ev
  virtual void  v29(); // _ZN6S653C53v29Ev
  virtual void  v30(); // _ZN6S653C53v30Ev
  virtual void  v31(); // _ZN6S653C53v31Ev
  virtual void  v32(); // _ZN6S653C53v32Ev
  virtual void  v33(); // _ZN6S653C53v33Ev
  virtual void  v34(); // _ZN6S653C53v34Ev
  virtual void  v35(); // _ZN6S653C53v35Ev
  virtual void  v36(); // _ZN6S653C53v36Ev
  virtual void  v37(); // _ZN6S653C53v37Ev
  virtual void  v38(); // _ZN6S653C53v38Ev
  virtual void  v39(); // _ZN6S653C53v39Ev
  virtual void  v40(); // _ZN6S653C53v40Ev
  virtual void  v41(); // _ZN6S653C53v41Ev
  virtual void  v42(); // _ZN6S653C53v42Ev
  virtual void  v43(); // _ZN6S653C53v43Ev
  virtual void  v44(); // _ZN6S653C53v44Ev
  virtual void  v45(); // _ZN6S653C53v45Ev
  virtual void  v46(); // _ZN6S653C53v46Ev
  virtual void  v47(); // _ZN6S653C53v47Ev
  virtual void  v48(); // _ZN6S653C53v48Ev
  virtual void  v49(); // _ZN6S653C53v49Ev
  virtual void  v50(); // _ZN6S653C53v50Ev
  virtual void  v51(); // _ZN6S653C53v51Ev
  virtual void  v52(); // _ZN6S653C53v52Ev
  virtual void  v53(); // _ZN6S653C53v53Ev
  virtual void  v54(); // _ZN6S653C53v54Ev
  virtual void  v55(); // _ZN6S653C53v55Ev
  virtual void  v56(); // _ZN6S653C53v56Ev
  virtual void  v57(); // _ZN6S653C53v57Ev
  virtual void  v58(); // _ZN6S653C53v58Ev
  virtual void  v59(); // _ZN6S653C53v59Ev
  virtual void  v60(); // _ZN6S653C53v60Ev
  virtual void  v61(); // _ZN6S653C53v61Ev
  virtual void  v62(); // _ZN6S653C53v62Ev
  virtual void  v63(); // _ZN6S653C53v63Ev
  virtual void  v64(); // _ZN6S653C53v64Ev
  virtual void  v65(); // _ZN6S653C53v65Ev
  virtual void  v66(); // _ZN6S653C53v66Ev
  virtual void  v67(); // _ZN6S653C53v67Ev
  virtual void  v68(); // _ZN6S653C53v68Ev
  virtual void  v69(); // _ZN6S653C53v69Ev
  S653C5(); // tgen
};
//SIG(-1 S653C5) 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]}


 S653C5 ::~S653C5(){ note_dtor("S653C5", this);}
void  S653C5 ::v6(){vfunc_called(this, "_ZN6S653C52v6Ev");}
void  S653C5 ::v7(){vfunc_called(this, "_ZN6S653C52v7Ev");}
void  S653C5 ::v8(){vfunc_called(this, "_ZN6S653C52v8Ev");}
void  S653C5 ::v9(){vfunc_called(this, "_ZN6S653C52v9Ev");}
void  S653C5 ::v10(){vfunc_called(this, "_ZN6S653C53v10Ev");}
void  S653C5 ::v11(){vfunc_called(this, "_ZN6S653C53v11Ev");}
void  S653C5 ::v12(){vfunc_called(this, "_ZN6S653C53v12Ev");}
void  S653C5 ::v13(){vfunc_called(this, "_ZN6S653C53v13Ev");}
void  S653C5 ::v14(){vfunc_called(this, "_ZN6S653C53v14Ev");}
void  S653C5 ::v15(){vfunc_called(this, "_ZN6S653C53v15Ev");}
void  S653C5 ::v16(){vfunc_called(this, "_ZN6S653C53v16Ev");}
void  S653C5 ::v17(){vfunc_called(this, "_ZN6S653C53v17Ev");}
void  S653C5 ::v18(){vfunc_called(this, "_ZN6S653C53v18Ev");}
void  S653C5 ::v19(){vfunc_called(this, "_ZN6S653C53v19Ev");}
void  S653C5 ::v20(){vfunc_called(this, "_ZN6S653C53v20Ev");}
void  S653C5 ::v21(){vfunc_called(this, "_ZN6S653C53v21Ev");}
void  S653C5 ::v22(){vfunc_called(this, "_ZN6S653C53v22Ev");}
void  S653C5 ::v23(){vfunc_called(this, "_ZN6S653C53v23Ev");}
void  S653C5 ::v24(){vfunc_called(this, "_ZN6S653C53v24Ev");}
void  S653C5 ::v25(){vfunc_called(this, "_ZN6S653C53v25Ev");}
void  S653C5 ::v26(){vfunc_called(this, "_ZN6S653C53v26Ev");}
void  S653C5 ::v27(){vfunc_called(this, "_ZN6S653C53v27Ev");}
void  S653C5 ::v28(){vfunc_called(this, "_ZN6S653C53v28Ev");}
void  S653C5 ::v29(){vfunc_called(this, "_ZN6S653C53v29Ev");}
void  S653C5 ::v30(){vfunc_called(this, "_ZN6S653C53v30Ev");}
void  S653C5 ::v31(){vfunc_called(this, "_ZN6S653C53v31Ev");}
void  S653C5 ::v32(){vfunc_called(this, "_ZN6S653C53v32Ev");}
void  S653C5 ::v33(){vfunc_called(this, "_ZN6S653C53v33Ev");}
void  S653C5 ::v34(){vfunc_called(this, "_ZN6S653C53v34Ev");}
void  S653C5 ::v35(){vfunc_called(this, "_ZN6S653C53v35Ev");}
void  S653C5 ::v36(){vfunc_called(this, "_ZN6S653C53v36Ev");}
void  S653C5 ::v37(){vfunc_called(this, "_ZN6S653C53v37Ev");}
void  S653C5 ::v38(){vfunc_called(this, "_ZN6S653C53v38Ev");}
void  S653C5 ::v39(){vfunc_called(this, "_ZN6S653C53v39Ev");}
void  S653C5 ::v40(){vfunc_called(this, "_ZN6S653C53v40Ev");}
void  S653C5 ::v41(){vfunc_called(this, "_ZN6S653C53v41Ev");}
void  S653C5 ::v42(){vfunc_called(this, "_ZN6S653C53v42Ev");}
void  S653C5 ::v43(){vfunc_called(this, "_ZN6S653C53v43Ev");}
void  S653C5 ::v44(){vfunc_called(this, "_ZN6S653C53v44Ev");}
void  S653C5 ::v45(){vfunc_called(this, "_ZN6S653C53v45Ev");}
void  S653C5 ::v46(){vfunc_called(this, "_ZN6S653C53v46Ev");}
void  S653C5 ::v47(){vfunc_called(this, "_ZN6S653C53v47Ev");}
void  S653C5 ::v48(){vfunc_called(this, "_ZN6S653C53v48Ev");}
void  S653C5 ::v49(){vfunc_called(this, "_ZN6S653C53v49Ev");}
void  S653C5 ::v50(){vfunc_called(this, "_ZN6S653C53v50Ev");}
void  S653C5 ::v51(){vfunc_called(this, "_ZN6S653C53v51Ev");}
void  S653C5 ::v52(){vfunc_called(this, "_ZN6S653C53v52Ev");}
void  S653C5 ::v53(){vfunc_called(this, "_ZN6S653C53v53Ev");}
void  S653C5 ::v54(){vfunc_called(this, "_ZN6S653C53v54Ev");}
void  S653C5 ::v55(){vfunc_called(this, "_ZN6S653C53v55Ev");}
void  S653C5 ::v56(){vfunc_called(this, "_ZN6S653C53v56Ev");}
void  S653C5 ::v57(){vfunc_called(this, "_ZN6S653C53v57Ev");}
void  S653C5 ::v58(){vfunc_called(this, "_ZN6S653C53v58Ev");}
void  S653C5 ::v59(){vfunc_called(this, "_ZN6S653C53v59Ev");}
void  S653C5 ::v60(){vfunc_called(this, "_ZN6S653C53v60Ev");}
void  S653C5 ::v61(){vfunc_called(this, "_ZN6S653C53v61Ev");}
void  S653C5 ::v62(){vfunc_called(this, "_ZN6S653C53v62Ev");}
void  S653C5 ::v63(){vfunc_called(this, "_ZN6S653C53v63Ev");}
void  S653C5 ::v64(){vfunc_called(this, "_ZN6S653C53v64Ev");}
void  S653C5 ::v65(){vfunc_called(this, "_ZN6S653C53v65Ev");}
void  S653C5 ::v66(){vfunc_called(this, "_ZN6S653C53v66Ev");}
void  S653C5 ::v67(){vfunc_called(this, "_ZN6S653C53v67Ev");}
void  S653C5 ::v68(){vfunc_called(this, "_ZN6S653C53v68Ev");}
void  S653C5 ::v69(){vfunc_called(this, "_ZN6S653C53v69Ev");}
S653C5 ::S653C5(){ note_ctor("S653C5", this);} // tgen

static void Test_S653C5()
{
  extern Class_Descriptor cd_S653C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S653C5, buf);
    S653C5 *dp, &lv = *(dp=new (buf) S653C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S653C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S653C5)");
    check_field_offset(lv, s653c5f0, ABISELECT(8,4), "S653C5.s653c5f0");
    check_field_offset(lv, s653c5f1, ABISELECT(16,8), "S653C5.s653c5f1");
    check_field_offset(lv, s653c5f2, ABISELECT(24,16), "S653C5.s653c5f2");
    check_field_offset(lv, s653c5f3, ABISELECT(56,32), "S653C5.s653c5f3");
    check_field_offset(lv, s653c5f4, ABISELECT(64,40), "S653C5.s653c5f4");
    check_field_offset(lv, s653c5f5, ABISELECT(72,44), "S653C5.s653c5f5");
    check_field_offset(lv, s653c5f6, ABISELECT(80,52), "S653C5.s653c5f6");
    test_class_info(&lv, &cd_S653C5);
    dp->~S653C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS653C5(Test_S653C5, "S653C5", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN6S653C5C1Ev();
extern void _ZN6S653C5D1Ev();
Name_Map name_map_S653C5[] = {
  NSPAIR(_ZN6S653C5C1Ev),
  NSPAIR(_ZN6S653C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S653C5[];
extern void _ZN6S653C5D1Ev();
extern void _ZN6S653C5D0Ev();
extern void _ZN6S653C52v6Ev();
extern void _ZN6S653C52v7Ev();
extern void _ZN6S653C52v8Ev();
extern void _ZN6S653C52v9Ev();
extern void _ZN6S653C53v10Ev();
extern void _ZN6S653C53v11Ev();
extern void _ZN6S653C53v12Ev();
extern void _ZN6S653C53v13Ev();
extern void _ZN6S653C53v14Ev();
extern void _ZN6S653C53v15Ev();
extern void _ZN6S653C53v16Ev();
extern void _ZN6S653C53v17Ev();
extern void _ZN6S653C53v18Ev();
extern void _ZN6S653C53v19Ev();
extern void _ZN6S653C53v20Ev();
extern void _ZN6S653C53v21Ev();
extern void _ZN6S653C53v22Ev();
extern void _ZN6S653C53v23Ev();
extern void _ZN6S653C53v24Ev();
extern void _ZN6S653C53v25Ev();
extern void _ZN6S653C53v26Ev();
extern void _ZN6S653C53v27Ev();
extern void _ZN6S653C53v28Ev();
extern void _ZN6S653C53v29Ev();
extern void _ZN6S653C53v30Ev();
extern void _ZN6S653C53v31Ev();
extern void _ZN6S653C53v32Ev();
extern void _ZN6S653C53v33Ev();
extern void _ZN6S653C53v34Ev();
extern void _ZN6S653C53v35Ev();
extern void _ZN6S653C53v36Ev();
extern void _ZN6S653C53v37Ev();
extern void _ZN6S653C53v38Ev();
extern void _ZN6S653C53v39Ev();
extern void _ZN6S653C53v40Ev();
extern void _ZN6S653C53v41Ev();
extern void _ZN6S653C53v42Ev();
extern void _ZN6S653C53v43Ev();
extern void _ZN6S653C53v44Ev();
extern void _ZN6S653C53v45Ev();
extern void _ZN6S653C53v46Ev();
extern void _ZN6S653C53v47Ev();
extern void _ZN6S653C53v48Ev();
extern void _ZN6S653C53v49Ev();
extern void _ZN6S653C53v50Ev();
extern void _ZN6S653C53v51Ev();
extern void _ZN6S653C53v52Ev();
extern void _ZN6S653C53v53Ev();
extern void _ZN6S653C53v54Ev();
extern void _ZN6S653C53v55Ev();
extern void _ZN6S653C53v56Ev();
extern void _ZN6S653C53v57Ev();
extern void _ZN6S653C53v58Ev();
extern void _ZN6S653C53v59Ev();
extern void _ZN6S653C53v60Ev();
extern void _ZN6S653C53v61Ev();
extern void _ZN6S653C53v62Ev();
extern void _ZN6S653C53v63Ev();
extern void _ZN6S653C53v64Ev();
extern void _ZN6S653C53v65Ev();
extern void _ZN6S653C53v66Ev();
extern void _ZN6S653C53v67Ev();
extern void _ZN6S653C53v68Ev();
extern void _ZN6S653C53v69Ev();
static  VTBL_ENTRY vtc_S653C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S653C5[0]),
  (VTBL_ENTRY)&_ZN6S653C5D1Ev,
  (VTBL_ENTRY)&_ZN6S653C5D0Ev,
  (VTBL_ENTRY)&_ZN6S653C52v6Ev,
  (VTBL_ENTRY)&_ZN6S653C52v7Ev,
  (VTBL_ENTRY)&_ZN6S653C52v8Ev,
  (VTBL_ENTRY)&_ZN6S653C52v9Ev,
  (VTBL_ENTRY)&_ZN6S653C53v10Ev,
  (VTBL_ENTRY)&_ZN6S653C53v11Ev,
  (VTBL_ENTRY)&_ZN6S653C53v12Ev,
  (VTBL_ENTRY)&_ZN6S653C53v13Ev,
  (VTBL_ENTRY)&_ZN6S653C53v14Ev,
  (VTBL_ENTRY)&_ZN6S653C53v15Ev,
  (VTBL_ENTRY)&_ZN6S653C53v16Ev,
  (VTBL_ENTRY)&_ZN6S653C53v17Ev,
  (VTBL_ENTRY)&_ZN6S653C53v18Ev,
  (VTBL_ENTRY)&_ZN6S653C53v19Ev,
  (VTBL_ENTRY)&_ZN6S653C53v20Ev,
  (VTBL_ENTRY)&_ZN6S653C53v21Ev,
  (VTBL_ENTRY)&_ZN6S653C53v22Ev,
  (VTBL_ENTRY)&_ZN6S653C53v23Ev,
  (VTBL_ENTRY)&_ZN6S653C53v24Ev,
  (VTBL_ENTRY)&_ZN6S653C53v25Ev,
  (VTBL_ENTRY)&_ZN6S653C53v26Ev,
  (VTBL_ENTRY)&_ZN6S653C53v27Ev,
  (VTBL_ENTRY)&_ZN6S653C53v28Ev,
  (VTBL_ENTRY)&_ZN6S653C53v29Ev,
  (VTBL_ENTRY)&_ZN6S653C53v30Ev,
  (VTBL_ENTRY)&_ZN6S653C53v31Ev,
  (VTBL_ENTRY)&_ZN6S653C53v32Ev,
  (VTBL_ENTRY)&_ZN6S653C53v33Ev,
  (VTBL_ENTRY)&_ZN6S653C53v34Ev,
  (VTBL_ENTRY)&_ZN6S653C53v35Ev,
  (VTBL_ENTRY)&_ZN6S653C53v36Ev,
  (VTBL_ENTRY)&_ZN6S653C53v37Ev,
  (VTBL_ENTRY)&_ZN6S653C53v38Ev,
  (VTBL_ENTRY)&_ZN6S653C53v39Ev,
  (VTBL_ENTRY)&_ZN6S653C53v40Ev,
  (VTBL_ENTRY)&_ZN6S653C53v41Ev,
  (VTBL_ENTRY)&_ZN6S653C53v42Ev,
  (VTBL_ENTRY)&_ZN6S653C53v43Ev,
  (VTBL_ENTRY)&_ZN6S653C53v44Ev,
  (VTBL_ENTRY)&_ZN6S653C53v45Ev,
  (VTBL_ENTRY)&_ZN6S653C53v46Ev,
  (VTBL_ENTRY)&_ZN6S653C53v47Ev,
  (VTBL_ENTRY)&_ZN6S653C53v48Ev,
  (VTBL_ENTRY)&_ZN6S653C53v49Ev,
  (VTBL_ENTRY)&_ZN6S653C53v50Ev,
  (VTBL_ENTRY)&_ZN6S653C53v51Ev,
  (VTBL_ENTRY)&_ZN6S653C53v52Ev,
  (VTBL_ENTRY)&_ZN6S653C53v53Ev,
  (VTBL_ENTRY)&_ZN6S653C53v54Ev,
  (VTBL_ENTRY)&_ZN6S653C53v55Ev,
  (VTBL_ENTRY)&_ZN6S653C53v56Ev,
  (VTBL_ENTRY)&_ZN6S653C53v57Ev,
  (VTBL_ENTRY)&_ZN6S653C53v58Ev,
  (VTBL_ENTRY)&_ZN6S653C53v59Ev,
  (VTBL_ENTRY)&_ZN6S653C53v60Ev,
  (VTBL_ENTRY)&_ZN6S653C53v61Ev,
  (VTBL_ENTRY)&_ZN6S653C53v62Ev,
  (VTBL_ENTRY)&_ZN6S653C53v63Ev,
  (VTBL_ENTRY)&_ZN6S653C53v64Ev,
  (VTBL_ENTRY)&_ZN6S653C53v65Ev,
  (VTBL_ENTRY)&_ZN6S653C53v66Ev,
  (VTBL_ENTRY)&_ZN6S653C53v67Ev,
  (VTBL_ENTRY)&_ZN6S653C53v68Ev,
  (VTBL_ENTRY)&_ZN6S653C53v69Ev,
};
extern VTBL_ENTRY _ZTI6S653C5[];
extern  VTBL_ENTRY _ZTV6S653C5[];
Class_Descriptor cd_S653C5 = {  "S653C5", // class name
  0,0,//no base classes
  &(vtc_S653C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI6S653C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S653C5),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  S653C4  : S653C5 {
  unsigned int s653c4f0:1;
  unsigned int s653c4f1:1;
  unsigned int s653c4f2:1;
  ::S3216C4_nt s653c4f3;
  int s653c4f4[6];
  char s653c4f5;
  virtual  ~S653C4(); // _ZN6S653C4D1Ev
  virtual void  v70(); // _ZN6S653C43v70Ev
  virtual void  v71(); // _ZN6S653C43v71Ev
  virtual void  v72(); // _ZN6S653C43v72Ev
  virtual void  v73(); // _ZN6S653C43v73Ev
  S653C4(); // tgen
};
//SIG(-1 S653C4) C1{ BC2{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 Fi:1 Fi:1 Fi:1 FC3 Fi[6] Fc}


 S653C4 ::~S653C4(){ note_dtor("S653C4", this);}
void  S653C4 ::v70(){vfunc_called(this, "_ZN6S653C43v70Ev");}
void  S653C4 ::v71(){vfunc_called(this, "_ZN6S653C43v71Ev");}
void  S653C4 ::v72(){vfunc_called(this, "_ZN6S653C43v72Ev");}
void  S653C4 ::v73(){vfunc_called(this, "_ZN6S653C43v73Ev");}
S653C4 ::S653C4(){ note_ctor("S653C4", this);} // tgen

static void Test_S653C4()
{
  extern Class_Descriptor cd_S653C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,26)];
    init_test(&cd_S653C4, buf);
    S653C4 *dp, &lv = *(dp=new (buf) S653C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,100), "sizeof(S653C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S653C4)");
    check_base_class_offset(lv, (S653C5*), 0, "S653C4");
    set_bf_and_test(lv, s653c4f0, ABISELECT(96,60), 0, 1, 1, "S653C4");
    set_bf_and_test(lv, s653c4f1, ABISELECT(96,60), 1, 1, 1, "S653C4");
    set_bf_and_test(lv, s653c4f2, ABISELECT(96,60), 2, 1, 1, "S653C4");
    check_field_offset(lv, s653c4f3, ABISELECT(100,64), "S653C4.s653c4f3");
    check_field_offset(lv, s653c4f4, ABISELECT(108,72), "S653C4.s653c4f4");
    check_field_offset(lv, s653c4f5, ABISELECT(132,96), "S653C4.s653c4f5");
    test_class_info(&lv, &cd_S653C4);
    dp->~S653C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS653C4(Test_S653C4, "S653C4", ABISELECT(136,100));

#else // __cplusplus

extern void _ZN6S653C4C1Ev();
extern void _ZN6S653C4D1Ev();
Name_Map name_map_S653C4[] = {
  NSPAIR(_ZN6S653C4C1Ev),
  NSPAIR(_ZN6S653C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S653C5;
extern VTBL_ENTRY _ZTI6S653C5[];
extern  VTBL_ENTRY _ZTV6S653C5[];
static Base_Class bases_S653C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S653C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S653C4[];
extern void _ZN6S653C4D1Ev();
extern void _ZN6S653C4D0Ev();
extern void _ZN6S653C52v6Ev();
extern void _ZN6S653C52v7Ev();
extern void _ZN6S653C52v8Ev();
extern void _ZN6S653C52v9Ev();
extern void _ZN6S653C53v10Ev();
extern void _ZN6S653C53v11Ev();
extern void _ZN6S653C53v12Ev();
extern void _ZN6S653C53v13Ev();
extern void _ZN6S653C53v14Ev();
extern void _ZN6S653C53v15Ev();
extern void _ZN6S653C53v16Ev();
extern void _ZN6S653C53v17Ev();
extern void _ZN6S653C53v18Ev();
extern void _ZN6S653C53v19Ev();
extern void _ZN6S653C53v20Ev();
extern void _ZN6S653C53v21Ev();
extern void _ZN6S653C53v22Ev();
extern void _ZN6S653C53v23Ev();
extern void _ZN6S653C53v24Ev();
extern void _ZN6S653C53v25Ev();
extern void _ZN6S653C53v26Ev();
extern void _ZN6S653C53v27Ev();
extern void _ZN6S653C53v28Ev();
extern void _ZN6S653C53v29Ev();
extern void _ZN6S653C53v30Ev();
extern void _ZN6S653C53v31Ev();
extern void _ZN6S653C53v32Ev();
extern void _ZN6S653C53v33Ev();
extern void _ZN6S653C53v34Ev();
extern void _ZN6S653C53v35Ev();
extern void _ZN6S653C53v36Ev();
extern void _ZN6S653C53v37Ev();
extern void _ZN6S653C53v38Ev();
extern void _ZN6S653C53v39Ev();
extern void _ZN6S653C53v40Ev();
extern void _ZN6S653C53v41Ev();
extern void _ZN6S653C53v42Ev();
extern void _ZN6S653C53v43Ev();
extern void _ZN6S653C53v44Ev();
extern void _ZN6S653C53v45Ev();
extern void _ZN6S653C53v46Ev();
extern void _ZN6S653C53v47Ev();
extern void _ZN6S653C53v48Ev();
extern void _ZN6S653C53v49Ev();
extern void _ZN6S653C53v50Ev();
extern void _ZN6S653C53v51Ev();
extern void _ZN6S653C53v52Ev();
extern void _ZN6S653C53v53Ev();
extern void _ZN6S653C53v54Ev();
extern void _ZN6S653C53v55Ev();
extern void _ZN6S653C53v56Ev();
extern void _ZN6S653C53v57Ev();
extern void _ZN6S653C53v58Ev();
extern void _ZN6S653C53v59Ev();
extern void _ZN6S653C53v60Ev();
extern void _ZN6S653C53v61Ev();
extern void _ZN6S653C53v62Ev();
extern void _ZN6S653C53v63Ev();
extern void _ZN6S653C53v64Ev();
extern void _ZN6S653C53v65Ev();
extern void _ZN6S653C53v66Ev();
extern void _ZN6S653C53v67Ev();
extern void _ZN6S653C53v68Ev();
extern void _ZN6S653C53v69Ev();
extern void _ZN6S653C43v70Ev();
extern void _ZN6S653C43v71Ev();
extern void _ZN6S653C43v72Ev();
extern void _ZN6S653C43v73Ev();
static  VTBL_ENTRY vtc_S653C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S653C4[0]),
  (VTBL_ENTRY)&_ZN6S653C4D1Ev,
  (VTBL_ENTRY)&_ZN6S653C4D0Ev,
  (VTBL_ENTRY)&_ZN6S653C52v6Ev,
  (VTBL_ENTRY)&_ZN6S653C52v7Ev,
  (VTBL_ENTRY)&_ZN6S653C52v8Ev,
  (VTBL_ENTRY)&_ZN6S653C52v9Ev,
  (VTBL_ENTRY)&_ZN6S653C53v10Ev,
  (VTBL_ENTRY)&_ZN6S653C53v11Ev,
  (VTBL_ENTRY)&_ZN6S653C53v12Ev,
  (VTBL_ENTRY)&_ZN6S653C53v13Ev,
  (VTBL_ENTRY)&_ZN6S653C53v14Ev,
  (VTBL_ENTRY)&_ZN6S653C53v15Ev,
  (VTBL_ENTRY)&_ZN6S653C53v16Ev,
  (VTBL_ENTRY)&_ZN6S653C53v17Ev,
  (VTBL_ENTRY)&_ZN6S653C53v18Ev,
  (VTBL_ENTRY)&_ZN6S653C53v19Ev,
  (VTBL_ENTRY)&_ZN6S653C53v20Ev,
  (VTBL_ENTRY)&_ZN6S653C53v21Ev,
  (VTBL_ENTRY)&_ZN6S653C53v22Ev,
  (VTBL_ENTRY)&_ZN6S653C53v23Ev,
  (VTBL_ENTRY)&_ZN6S653C53v24Ev,
  (VTBL_ENTRY)&_ZN6S653C53v25Ev,
  (VTBL_ENTRY)&_ZN6S653C53v26Ev,
  (VTBL_ENTRY)&_ZN6S653C53v27Ev,
  (VTBL_ENTRY)&_ZN6S653C53v28Ev,
  (VTBL_ENTRY)&_ZN6S653C53v29Ev,
  (VTBL_ENTRY)&_ZN6S653C53v30Ev,
  (VTBL_ENTRY)&_ZN6S653C53v31Ev,
  (VTBL_ENTRY)&_ZN6S653C53v32Ev,
  (VTBL_ENTRY)&_ZN6S653C53v33Ev,
  (VTBL_ENTRY)&_ZN6S653C53v34Ev,
  (VTBL_ENTRY)&_ZN6S653C53v35Ev,
  (VTBL_ENTRY)&_ZN6S653C53v36Ev,
  (VTBL_ENTRY)&_ZN6S653C53v37Ev,
  (VTBL_ENTRY)&_ZN6S653C53v38Ev,
  (VTBL_ENTRY)&_ZN6S653C53v39Ev,
  (VTBL_ENTRY)&_ZN6S653C53v40Ev,
  (VTBL_ENTRY)&_ZN6S653C53v41Ev,
  (VTBL_ENTRY)&_ZN6S653C53v42Ev,
  (VTBL_ENTRY)&_ZN6S653C53v43Ev,
  (VTBL_ENTRY)&_ZN6S653C53v44Ev,
  (VTBL_ENTRY)&_ZN6S653C53v45Ev,
  (VTBL_ENTRY)&_ZN6S653C53v46Ev,
  (VTBL_ENTRY)&_ZN6S653C53v47Ev,
  (VTBL_ENTRY)&_ZN6S653C53v48Ev,
  (VTBL_ENTRY)&_ZN6S653C53v49Ev,
  (VTBL_ENTRY)&_ZN6S653C53v50Ev,
  (VTBL_ENTRY)&_ZN6S653C53v51Ev,
  (VTBL_ENTRY)&_ZN6S653C53v52Ev,
  (VTBL_ENTRY)&_ZN6S653C53v53Ev,
  (VTBL_ENTRY)&_ZN6S653C53v54Ev,
  (VTBL_ENTRY)&_ZN6S653C53v55Ev,
  (VTBL_ENTRY)&_ZN6S653C53v56Ev,
  (VTBL_ENTRY)&_ZN6S653C53v57Ev,
  (VTBL_ENTRY)&_ZN6S653C53v58Ev,
  (VTBL_ENTRY)&_ZN6S653C53v59Ev,
  (VTBL_ENTRY)&_ZN6S653C53v60Ev,
  (VTBL_ENTRY)&_ZN6S653C53v61Ev,
  (VTBL_ENTRY)&_ZN6S653C53v62Ev,
  (VTBL_ENTRY)&_ZN6S653C53v63Ev,
  (VTBL_ENTRY)&_ZN6S653C53v64Ev,
  (VTBL_ENTRY)&_ZN6S653C53v65Ev,
  (VTBL_ENTRY)&_ZN6S653C53v66Ev,
  (VTBL_ENTRY)&_ZN6S653C53v67Ev,
  (VTBL_ENTRY)&_ZN6S653C53v68Ev,
  (VTBL_ENTRY)&_ZN6S653C53v69Ev,
  (VTBL_ENTRY)&_ZN6S653C43v70Ev,
  (VTBL_ENTRY)&_ZN6S653C43v71Ev,
  (VTBL_ENTRY)&_ZN6S653C43v72Ev,
  (VTBL_ENTRY)&_ZN6S653C43v73Ev,
};
extern VTBL_ENTRY _ZTI6S653C4[];
extern  VTBL_ENTRY _ZTV6S653C4[];
Class_Descriptor cd_S653C4 = {  "S653C4", // class name
  bases_S653C4, 1,
  &(vtc_S653C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,100), // object size
  NSPAIRA(_ZTI6S653C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S653C4),72, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S653C3  : S653C4 {
  int s653c3f0[4];
  ::S4677C37 s653c3f1;
  char s653c3f2;
  int s653c3f3[2];
  ::S3216C13_nt s653c3f4;
  virtual  ~S653C3(); // _ZN6S653C3D1Ev
  virtual void  v74(); // _ZN6S653C33v74Ev
  virtual void  v75(); // _ZN6S653C33v75Ev
  virtual void  v76(); // _ZN6S653C33v76Ev
  virtual void  v77(); // _ZN6S653C33v77Ev
  virtual void  v78(); // _ZN6S653C33v78Ev
  S653C3(); // tgen
};
//SIG(-1 S653C3) C1{ BC2{ BC3{ 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 FC4{ m Fi[2]} Fp[2]} vd v70 v71 v72 v73 Fi:1 Fi:1 Fi:1 FC4 Fi[6] Fc} vd v1 v2 v3 v4 v5 Fi[4] FC5{ m} Fc Fi[2] FC6{ m Fi[3]}}


 S653C3 ::~S653C3(){ note_dtor("S653C3", this);}
void  S653C3 ::v74(){vfunc_called(this, "_ZN6S653C33v74Ev");}
void  S653C3 ::v75(){vfunc_called(this, "_ZN6S653C33v75Ev");}
void  S653C3 ::v76(){vfunc_called(this, "_ZN6S653C33v76Ev");}
void  S653C3 ::v77(){vfunc_called(this, "_ZN6S653C33v77Ev");}
void  S653C3 ::v78(){vfunc_called(this, "_ZN6S653C33v78Ev");}
S653C3 ::S653C3(){ note_ctor("S653C3", this);} // tgen

static void Test_S653C3()
{
  extern Class_Descriptor cd_S653C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,36)];
    init_test(&cd_S653C3, buf);
    S653C3 *dp, &lv = *(dp=new (buf) S653C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,140), "sizeof(S653C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S653C3)");
    check_base_class_offset(lv, (S653C5*)(S653C4*), 0, "S653C3");
    check_base_class_offset(lv, (S653C4*), 0, "S653C3");
    check_field_offset(lv, s653c3f0, ABISELECT(136,100), "S653C3.s653c3f0");
    check_field_offset(lv, s653c3f1, ABISELECT(152,116), "S653C3.s653c3f1");
    check_field_offset(lv, s653c3f2, ABISELECT(153,117), "S653C3.s653c3f2");
    check_field_offset(lv, s653c3f3, ABISELECT(156,120), "S653C3.s653c3f3");
    check_field_offset(lv, s653c3f4, ABISELECT(164,128), "S653C3.s653c3f4");
    test_class_info(&lv, &cd_S653C3);
    dp->~S653C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS653C3(Test_S653C3, "S653C3", ABISELECT(176,140));

#else // __cplusplus

extern void _ZN6S653C3C1Ev();
extern void _ZN6S653C3D1Ev();
Name_Map name_map_S653C3[] = {
  NSPAIR(_ZN6S653C3C1Ev),
  NSPAIR(_ZN6S653C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S653C5;
extern VTBL_ENTRY _ZTI6S653C5[];
extern  VTBL_ENTRY _ZTV6S653C5[];
extern Class_Descriptor cd_S653C4;
extern VTBL_ENTRY _ZTI6S653C4[];
extern  VTBL_ENTRY _ZTV6S653C4[];
static Base_Class bases_S653C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S653C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S653C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S653C3[];
extern void _ZN6S653C3D1Ev();
extern void _ZN6S653C3D0Ev();
extern void _ZN6S653C52v6Ev();
extern void _ZN6S653C52v7Ev();
extern void _ZN6S653C52v8Ev();
extern void _ZN6S653C52v9Ev();
extern void _ZN6S653C53v10Ev();
extern void _ZN6S653C53v11Ev();
extern void _ZN6S653C53v12Ev();
extern void _ZN6S653C53v13Ev();
extern void _ZN6S653C53v14Ev();
extern void _ZN6S653C53v15Ev();
extern void _ZN6S653C53v16Ev();
extern void _ZN6S653C53v17Ev();
extern void _ZN6S653C53v18Ev();
extern void _ZN6S653C53v19Ev();
extern void _ZN6S653C53v20Ev();
extern void _ZN6S653C53v21Ev();
extern void _ZN6S653C53v22Ev();
extern void _ZN6S653C53v23Ev();
extern void _ZN6S653C53v24Ev();
extern void _ZN6S653C53v25Ev();
extern void _ZN6S653C53v26Ev();
extern void _ZN6S653C53v27Ev();
extern void _ZN6S653C53v28Ev();
extern void _ZN6S653C53v29Ev();
extern void _ZN6S653C53v30Ev();
extern void _ZN6S653C53v31Ev();
extern void _ZN6S653C53v32Ev();
extern void _ZN6S653C53v33Ev();
extern void _ZN6S653C53v34Ev();
extern void _ZN6S653C53v35Ev();
extern void _ZN6S653C53v36Ev();
extern void _ZN6S653C53v37Ev();
extern void _ZN6S653C53v38Ev();
extern void _ZN6S653C53v39Ev();
extern void _ZN6S653C53v40Ev();
extern void _ZN6S653C53v41Ev();
extern void _ZN6S653C53v42Ev();
extern void _ZN6S653C53v43Ev();
extern void _ZN6S653C53v44Ev();
extern void _ZN6S653C53v45Ev();
extern void _ZN6S653C53v46Ev();
extern void _ZN6S653C53v47Ev();
extern void _ZN6S653C53v48Ev();
extern void _ZN6S653C53v49Ev();
extern void _ZN6S653C53v50Ev();
extern void _ZN6S653C53v51Ev();
extern void _ZN6S653C53v52Ev();
extern void _ZN6S653C53v53Ev();
extern void _ZN6S653C53v54Ev();
extern void _ZN6S653C53v55Ev();
extern void _ZN6S653C53v56Ev();
extern void _ZN6S653C53v57Ev();
extern void _ZN6S653C53v58Ev();
extern void _ZN6S653C53v59Ev();
extern void _ZN6S653C53v60Ev();
extern void _ZN6S653C53v61Ev();
extern void _ZN6S653C53v62Ev();
extern void _ZN6S653C53v63Ev();
extern void _ZN6S653C53v64Ev();
extern void _ZN6S653C53v65Ev();
extern void _ZN6S653C53v66Ev();
extern void _ZN6S653C53v67Ev();
extern void _ZN6S653C53v68Ev();
extern void _ZN6S653C53v69Ev();
extern void _ZN6S653C43v70Ev();
extern void _ZN6S653C43v71Ev();
extern void _ZN6S653C43v72Ev();
extern void _ZN6S653C43v73Ev();
extern void _ZN6S653C33v74Ev();
extern void _ZN6S653C33v75Ev();
extern void _ZN6S653C33v76Ev();
extern void _ZN6S653C33v77Ev();
extern void _ZN6S653C33v78Ev();
static  VTBL_ENTRY vtc_S653C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S653C3[0]),
  (VTBL_ENTRY)&_ZN6S653C3D1Ev,
  (VTBL_ENTRY)&_ZN6S653C3D0Ev,
  (VTBL_ENTRY)&_ZN6S653C52v6Ev,
  (VTBL_ENTRY)&_ZN6S653C52v7Ev,
  (VTBL_ENTRY)&_ZN6S653C52v8Ev,
  (VTBL_ENTRY)&_ZN6S653C52v9Ev,
  (VTBL_ENTRY)&_ZN6S653C53v10Ev,
  (VTBL_ENTRY)&_ZN6S653C53v11Ev,
  (VTBL_ENTRY)&_ZN6S653C53v12Ev,
  (VTBL_ENTRY)&_ZN6S653C53v13Ev,
  (VTBL_ENTRY)&_ZN6S653C53v14Ev,
  (VTBL_ENTRY)&_ZN6S653C53v15Ev,
  (VTBL_ENTRY)&_ZN6S653C53v16Ev,
  (VTBL_ENTRY)&_ZN6S653C53v17Ev,
  (VTBL_ENTRY)&_ZN6S653C53v18Ev,
  (VTBL_ENTRY)&_ZN6S653C53v19Ev,
  (VTBL_ENTRY)&_ZN6S653C53v20Ev,
  (VTBL_ENTRY)&_ZN6S653C53v21Ev,
  (VTBL_ENTRY)&_ZN6S653C53v22Ev,
  (VTBL_ENTRY)&_ZN6S653C53v23Ev,
  (VTBL_ENTRY)&_ZN6S653C53v24Ev,
  (VTBL_ENTRY)&_ZN6S653C53v25Ev,
  (VTBL_ENTRY)&_ZN6S653C53v26Ev,
  (VTBL_ENTRY)&_ZN6S653C53v27Ev,
  (VTBL_ENTRY)&_ZN6S653C53v28Ev,
  (VTBL_ENTRY)&_ZN6S653C53v29Ev,
  (VTBL_ENTRY)&_ZN6S653C53v30Ev,
  (VTBL_ENTRY)&_ZN6S653C53v31Ev,
  (VTBL_ENTRY)&_ZN6S653C53v32Ev,
  (VTBL_ENTRY)&_ZN6S653C53v33Ev,
  (VTBL_ENTRY)&_ZN6S653C53v34Ev,
  (VTBL_ENTRY)&_ZN6S653C53v35Ev,
  (VTBL_ENTRY)&_ZN6S653C53v36Ev,
  (VTBL_ENTRY)&_ZN6S653C53v37Ev,
  (VTBL_ENTRY)&_ZN6S653C53v38Ev,
  (VTBL_ENTRY)&_ZN6S653C53v39Ev,
  (VTBL_ENTRY)&_ZN6S653C53v40Ev,
  (VTBL_ENTRY)&_ZN6S653C53v41Ev,
  (VTBL_ENTRY)&_ZN6S653C53v42Ev,
  (VTBL_ENTRY)&_ZN6S653C53v43Ev,
  (VTBL_ENTRY)&_ZN6S653C53v44Ev,
  (VTBL_ENTRY)&_ZN6S653C53v45Ev,
  (VTBL_ENTRY)&_ZN6S653C53v46Ev,
  (VTBL_ENTRY)&_ZN6S653C53v47Ev,
  (VTBL_ENTRY)&_ZN6S653C53v48Ev,
  (VTBL_ENTRY)&_ZN6S653C53v49Ev,
  (VTBL_ENTRY)&_ZN6S653C53v50Ev,
  (VTBL_ENTRY)&_ZN6S653C53v51Ev,
  (VTBL_ENTRY)&_ZN6S653C53v52Ev,
  (VTBL_ENTRY)&_ZN6S653C53v53Ev,
  (VTBL_ENTRY)&_ZN6S653C53v54Ev,
  (VTBL_ENTRY)&_ZN6S653C53v55Ev,
  (VTBL_ENTRY)&_ZN6S653C53v56Ev,
  (VTBL_ENTRY)&_ZN6S653C53v57Ev,
  (VTBL_ENTRY)&_ZN6S653C53v58Ev,
  (VTBL_ENTRY)&_ZN6S653C53v59Ev,
  (VTBL_ENTRY)&_ZN6S653C53v60Ev,
  (VTBL_ENTRY)&_ZN6S653C53v61Ev,
  (VTBL_ENTRY)&_ZN6S653C53v62Ev,
  (VTBL_ENTRY)&_ZN6S653C53v63Ev,
  (VTBL_ENTRY)&_ZN6S653C53v64Ev,
  (VTBL_ENTRY)&_ZN6S653C53v65Ev,
  (VTBL_ENTRY)&_ZN6S653C53v66Ev,
  (VTBL_ENTRY)&_ZN6S653C53v67Ev,
  (VTBL_ENTRY)&_ZN6S653C53v68Ev,
  (VTBL_ENTRY)&_ZN6S653C53v69Ev,
  (VTBL_ENTRY)&_ZN6S653C43v70Ev,
  (VTBL_ENTRY)&_ZN6S653C43v71Ev,
  (VTBL_ENTRY)&_ZN6S653C43v72Ev,
  (VTBL_ENTRY)&_ZN6S653C43v73Ev,
  (VTBL_ENTRY)&_ZN6S653C33v74Ev,
  (VTBL_ENTRY)&_ZN6S653C33v75Ev,
  (VTBL_ENTRY)&_ZN6S653C33v76Ev,
  (VTBL_ENTRY)&_ZN6S653C33v77Ev,
  (VTBL_ENTRY)&_ZN6S653C33v78Ev,
};
extern VTBL_ENTRY _ZTI6S653C3[];
extern  VTBL_ENTRY _ZTV6S653C3[];
Class_Descriptor cd_S653C3 = {  "S653C3", // class name
  bases_S653C3, 2,
  &(vtc_S653C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,140), // object size
  NSPAIRA(_ZTI6S653C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S653C3),77, //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  S653C2  : S653C3 {
  int s653c2f0;
  virtual  ~S653C2(); // _ZN6S653C2D1Ev
  virtual void  v79(); // _ZN6S653C23v79Ev
  virtual void  v80(); // _ZN6S653C23v80Ev
  virtual void  v81(); // _ZN6S653C23v81Ev
  virtual void  v82(); // _ZN6S653C23v82Ev
  S653C2(); // tgen
};
//SIG(-1 S653C2) 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 Fi:1 Fi:1 Fi:1 FC5 Fi[6] Fc} vd v73 v74 v75 v76 v77 Fi[4] FC6{ m} Fc Fi[2] FC7{ m Fi[3]}} vd v1 v2 v3 v4 Fi}


 S653C2 ::~S653C2(){ note_dtor("S653C2", this);}
void  S653C2 ::v79(){vfunc_called(this, "_ZN6S653C23v79Ev");}
void  S653C2 ::v80(){vfunc_called(this, "_ZN6S653C23v80Ev");}
void  S653C2 ::v81(){vfunc_called(this, "_ZN6S653C23v81Ev");}
void  S653C2 ::v82(){vfunc_called(this, "_ZN6S653C23v82Ev");}
S653C2 ::S653C2(){ note_ctor("S653C2", this);} // tgen

static void Test_S653C2()
{
  extern Class_Descriptor cd_S653C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,37)];
    init_test(&cd_S653C2, buf);
    S653C2 *dp, &lv = *(dp=new (buf) S653C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,144), "sizeof(S653C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S653C2)");
    check_base_class_offset(lv, (S653C5*)(S653C4*)(S653C3*), 0, "S653C2");
    check_base_class_offset(lv, (S653C4*)(S653C3*), 0, "S653C2");
    check_base_class_offset(lv, (S653C3*), 0, "S653C2");
    check_field_offset(lv, s653c2f0, ABISELECT(176,140), "S653C2.s653c2f0");
    test_class_info(&lv, &cd_S653C2);
    dp->~S653C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS653C2(Test_S653C2, "S653C2", ABISELECT(184,144));

#else // __cplusplus

extern void _ZN6S653C2C1Ev();
extern void _ZN6S653C2D1Ev();
Name_Map name_map_S653C2[] = {
  NSPAIR(_ZN6S653C2C1Ev),
  NSPAIR(_ZN6S653C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S653C5;
extern VTBL_ENTRY _ZTI6S653C5[];
extern  VTBL_ENTRY _ZTV6S653C5[];
extern Class_Descriptor cd_S653C4;
extern VTBL_ENTRY _ZTI6S653C4[];
extern  VTBL_ENTRY _ZTV6S653C4[];
extern Class_Descriptor cd_S653C3;
extern VTBL_ENTRY _ZTI6S653C3[];
extern  VTBL_ENTRY _ZTV6S653C3[];
static Base_Class bases_S653C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S653C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S653C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S653C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S653C2[];
extern void _ZN6S653C2D1Ev();
extern void _ZN6S653C2D0Ev();
extern void _ZN6S653C52v6Ev();
extern void _ZN6S653C52v7Ev();
extern void _ZN6S653C52v8Ev();
extern void _ZN6S653C52v9Ev();
extern void _ZN6S653C53v10Ev();
extern void _ZN6S653C53v11Ev();
extern void _ZN6S653C53v12Ev();
extern void _ZN6S653C53v13Ev();
extern void _ZN6S653C53v14Ev();
extern void _ZN6S653C53v15Ev();
extern void _ZN6S653C53v16Ev();
extern void _ZN6S653C53v17Ev();
extern void _ZN6S653C53v18Ev();
extern void _ZN6S653C53v19Ev();
extern void _ZN6S653C53v20Ev();
extern void _ZN6S653C53v21Ev();
extern void _ZN6S653C53v22Ev();
extern void _ZN6S653C53v23Ev();
extern void _ZN6S653C53v24Ev();
extern void _ZN6S653C53v25Ev();
extern void _ZN6S653C53v26Ev();
extern void _ZN6S653C53v27Ev();
extern void _ZN6S653C53v28Ev();
extern void _ZN6S653C53v29Ev();
extern void _ZN6S653C53v30Ev();
extern void _ZN6S653C53v31Ev();
extern void _ZN6S653C53v32Ev();
extern void _ZN6S653C53v33Ev();
extern void _ZN6S653C53v34Ev();
extern void _ZN6S653C53v35Ev();
extern void _ZN6S653C53v36Ev();
extern void _ZN6S653C53v37Ev();
extern void _ZN6S653C53v38Ev();
extern void _ZN6S653C53v39Ev();
extern void _ZN6S653C53v40Ev();
extern void _ZN6S653C53v41Ev();
extern void _ZN6S653C53v42Ev();
extern void _ZN6S653C53v43Ev();
extern void _ZN6S653C53v44Ev();
extern void _ZN6S653C53v45Ev();
extern void _ZN6S653C53v46Ev();
extern void _ZN6S653C53v47Ev();
extern void _ZN6S653C53v48Ev();
extern void _ZN6S653C53v49Ev();
extern void _ZN6S653C53v50Ev();
extern void _ZN6S653C53v51Ev();
extern void _ZN6S653C53v52Ev();
extern void _ZN6S653C53v53Ev();
extern void _ZN6S653C53v54Ev();
extern void _ZN6S653C53v55Ev();
extern void _ZN6S653C53v56Ev();
extern void _ZN6S653C53v57Ev();
extern void _ZN6S653C53v58Ev();
extern void _ZN6S653C53v59Ev();
extern void _ZN6S653C53v60Ev();
extern void _ZN6S653C53v61Ev();
extern void _ZN6S653C53v62Ev();
extern void _ZN6S653C53v63Ev();
extern void _ZN6S653C53v64Ev();
extern void _ZN6S653C53v65Ev();
extern void _ZN6S653C53v66Ev();
extern void _ZN6S653C53v67Ev();
extern void _ZN6S653C53v68Ev();
extern void _ZN6S653C53v69Ev();
extern void _ZN6S653C43v70Ev();
extern void _ZN6S653C43v71Ev();
extern void _ZN6S653C43v72Ev();
extern void _ZN6S653C43v73Ev();
extern void _ZN6S653C33v74Ev();
extern void _ZN6S653C33v75Ev();
extern void _ZN6S653C33v76Ev();
extern void _ZN6S653C33v77Ev();
extern void _ZN6S653C33v78Ev();
extern void _ZN6S653C23v79Ev();
extern void _ZN6S653C23v80Ev();
extern void _ZN6S653C23v81Ev();
extern void _ZN6S653C23v82Ev();
static  VTBL_ENTRY vtc_S653C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S653C2[0]),
  (VTBL_ENTRY)&_ZN6S653C2D1Ev,
  (VTBL_ENTRY)&_ZN6S653C2D0Ev,
  (VTBL_ENTRY)&_ZN6S653C52v6Ev,
  (VTBL_ENTRY)&_ZN6S653C52v7Ev,
  (VTBL_ENTRY)&_ZN6S653C52v8Ev,
  (VTBL_ENTRY)&_ZN6S653C52v9Ev,
  (VTBL_ENTRY)&_ZN6S653C53v10Ev,
  (VTBL_ENTRY)&_ZN6S653C53v11Ev,
  (VTBL_ENTRY)&_ZN6S653C53v12Ev,
  (VTBL_ENTRY)&_ZN6S653C53v13Ev,
  (VTBL_ENTRY)&_ZN6S653C53v14Ev,
  (VTBL_ENTRY)&_ZN6S653C53v15Ev,
  (VTBL_ENTRY)&_ZN6S653C53v16Ev,
  (VTBL_ENTRY)&_ZN6S653C53v17Ev,
  (VTBL_ENTRY)&_ZN6S653C53v18Ev,
  (VTBL_ENTRY)&_ZN6S653C53v19Ev,
  (VTBL_ENTRY)&_ZN6S653C53v20Ev,
  (VTBL_ENTRY)&_ZN6S653C53v21Ev,
  (VTBL_ENTRY)&_ZN6S653C53v22Ev,
  (VTBL_ENTRY)&_ZN6S653C53v23Ev,
  (VTBL_ENTRY)&_ZN6S653C53v24Ev,
  (VTBL_ENTRY)&_ZN6S653C53v25Ev,
  (VTBL_ENTRY)&_ZN6S653C53v26Ev,
  (VTBL_ENTRY)&_ZN6S653C53v27Ev,
  (VTBL_ENTRY)&_ZN6S653C53v28Ev,
  (VTBL_ENTRY)&_ZN6S653C53v29Ev,
  (VTBL_ENTRY)&_ZN6S653C53v30Ev,
  (VTBL_ENTRY)&_ZN6S653C53v31Ev,
  (VTBL_ENTRY)&_ZN6S653C53v32Ev,
  (VTBL_ENTRY)&_ZN6S653C53v33Ev,
  (VTBL_ENTRY)&_ZN6S653C53v34Ev,
  (VTBL_ENTRY)&_ZN6S653C53v35Ev,
  (VTBL_ENTRY)&_ZN6S653C53v36Ev,
  (VTBL_ENTRY)&_ZN6S653C53v37Ev,
  (VTBL_ENTRY)&_ZN6S653C53v38Ev,
  (VTBL_ENTRY)&_ZN6S653C53v39Ev,
  (VTBL_ENTRY)&_ZN6S653C53v40Ev,
  (VTBL_ENTRY)&_ZN6S653C53v41Ev,
  (VTBL_ENTRY)&_ZN6S653C53v42Ev,
  (VTBL_ENTRY)&_ZN6S653C53v43Ev,
  (VTBL_ENTRY)&_ZN6S653C53v44Ev,
  (VTBL_ENTRY)&_ZN6S653C53v45Ev,
  (VTBL_ENTRY)&_ZN6S653C53v46Ev,
  (VTBL_ENTRY)&_ZN6S653C53v47Ev,
  (VTBL_ENTRY)&_ZN6S653C53v48Ev,
  (VTBL_ENTRY)&_ZN6S653C53v49Ev,
  (VTBL_ENTRY)&_ZN6S653C53v50Ev,
  (VTBL_ENTRY)&_ZN6S653C53v51Ev,
  (VTBL_ENTRY)&_ZN6S653C53v52Ev,
  (VTBL_ENTRY)&_ZN6S653C53v53Ev,
  (VTBL_ENTRY)&_ZN6S653C53v54Ev,
  (VTBL_ENTRY)&_ZN6S653C53v55Ev,
  (VTBL_ENTRY)&_ZN6S653C53v56Ev,
  (VTBL_ENTRY)&_ZN6S653C53v57Ev,
  (VTBL_ENTRY)&_ZN6S653C53v58Ev,
  (VTBL_ENTRY)&_ZN6S653C53v59Ev,
  (VTBL_ENTRY)&_ZN6S653C53v60Ev,
  (VTBL_ENTRY)&_ZN6S653C53v61Ev,
  (VTBL_ENTRY)&_ZN6S653C53v62Ev,
  (VTBL_ENTRY)&_ZN6S653C53v63Ev,
  (VTBL_ENTRY)&_ZN6S653C53v64Ev,
  (VTBL_ENTRY)&_ZN6S653C53v65Ev,
  (VTBL_ENTRY)&_ZN6S653C53v66Ev,
  (VTBL_ENTRY)&_ZN6S653C53v67Ev,
  (VTBL_ENTRY)&_ZN6S653C53v68Ev,
  (VTBL_ENTRY)&_ZN6S653C53v69Ev,
  (VTBL_ENTRY)&_ZN6S653C43v70Ev,
  (VTBL_ENTRY)&_ZN6S653C43v71Ev,
  (VTBL_ENTRY)&_ZN6S653C43v72Ev,
  (VTBL_ENTRY)&_ZN6S653C43v73Ev,
  (VTBL_ENTRY)&_ZN6S653C33v74Ev,
  (VTBL_ENTRY)&_ZN6S653C33v75Ev,
  (VTBL_ENTRY)&_ZN6S653C33v76Ev,
  (VTBL_ENTRY)&_ZN6S653C33v77Ev,
  (VTBL_ENTRY)&_ZN6S653C33v78Ev,
  (VTBL_ENTRY)&_ZN6S653C23v79Ev,
  (VTBL_ENTRY)&_ZN6S653C23v80Ev,
  (VTBL_ENTRY)&_ZN6S653C23v81Ev,
  (VTBL_ENTRY)&_ZN6S653C23v82Ev,
};
extern VTBL_ENTRY _ZTI6S653C2[];
extern  VTBL_ENTRY _ZTV6S653C2[];
Class_Descriptor cd_S653C2 = {  "S653C2", // class name
  bases_S653C2, 3,
  &(vtc_S653C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(184,144), // object size
  NSPAIRA(_ZTI6S653C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S653C2),81, //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  S653C1  : S653C2 {
  ::S3216C13_nt s653c1f0;
  ::S3216C13_nt s653c1f1;
  ::S3216C13_nt s653c1f2;
  int s653c1f3;
  virtual  ~S653C1(); // _ZN6S653C1D1Ev
  virtual void  v1(); // _ZN6S653C12v1Ev
  virtual void  v2(); // _ZN6S653C12v2Ev
  virtual void  v3(); // _ZN6S653C12v3Ev
  virtual void  v4(); // _ZN6S653C12v4Ev
  virtual void  v5(); // _ZN6S653C12v5Ev
  S653C1(); // tgen
};
//SIG(1 S653C1) C1{ BC2{ BC3{ BC4{ BC5{ 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 FC6{ m Fi[2]} Fp[2]} vd v70 v71 v72 v73 Fi:1 Fi:1 Fi:1 FC6 Fi[6] Fc} vd v74 v75 v76 v77 v78 Fi[4] FC7{ m} Fc Fi[2] FC8{ m Fi[3]}} vd v79 v80 v81 v82 Fi} vd v1 v2 v3 v4 v5 FC8 FC8 FC8 Fi}


 S653C1 ::~S653C1(){ note_dtor("S653C1", this);}
void  S653C1 ::v1(){vfunc_called(this, "_ZN6S653C12v1Ev");}
void  S653C1 ::v2(){vfunc_called(this, "_ZN6S653C12v2Ev");}
void  S653C1 ::v3(){vfunc_called(this, "_ZN6S653C12v3Ev");}
void  S653C1 ::v4(){vfunc_called(this, "_ZN6S653C12v4Ev");}
void  S653C1 ::v5(){vfunc_called(this, "_ZN6S653C12v5Ev");}
S653C1 ::S653C1(){ note_ctor("S653C1", this);} // tgen

static void Test_S653C1()
{
  extern Class_Descriptor cd_S653C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(29,47)];
    init_test(&cd_S653C1, buf);
    S653C1 *dp, &lv = *(dp=new (buf) S653C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,184), "sizeof(S653C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S653C1)");
    check_base_class_offset(lv, (S653C5*)(S653C4*)(S653C3*)(S653C2*), 0, "S653C1");
    check_base_class_offset(lv, (S653C4*)(S653C3*)(S653C2*), 0, "S653C1");
    check_base_class_offset(lv, (S653C3*)(S653C2*), 0, "S653C1");
    check_base_class_offset(lv, (S653C2*), 0, "S653C1");
    check_field_offset(lv, s653c1f0, ABISELECT(180,144), "S653C1.s653c1f0");
    check_field_offset(lv, s653c1f1, ABISELECT(192,156), "S653C1.s653c1f1");
    check_field_offset(lv, s653c1f2, ABISELECT(204,168), "S653C1.s653c1f2");
    check_field_offset(lv, s653c1f3, ABISELECT(216,180), "S653C1.s653c1f3");
    test_class_info(&lv, &cd_S653C1);
    dp->~S653C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS653C1(Test_S653C1, "S653C1", ABISELECT(224,184));

#else // __cplusplus

extern void _ZN6S653C1C1Ev();
extern void _ZN6S653C1D1Ev();
Name_Map name_map_S653C1[] = {
  NSPAIR(_ZN6S653C1C1Ev),
  NSPAIR(_ZN6S653C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S653C5;
extern VTBL_ENTRY _ZTI6S653C5[];
extern  VTBL_ENTRY _ZTV6S653C5[];
extern Class_Descriptor cd_S653C4;
extern VTBL_ENTRY _ZTI6S653C4[];
extern  VTBL_ENTRY _ZTV6S653C4[];
extern Class_Descriptor cd_S653C3;
extern VTBL_ENTRY _ZTI6S653C3[];
extern  VTBL_ENTRY _ZTV6S653C3[];
extern Class_Descriptor cd_S653C2;
extern VTBL_ENTRY _ZTI6S653C2[];
extern  VTBL_ENTRY _ZTV6S653C2[];
static Base_Class bases_S653C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S653C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S653C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S653C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S653C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S653C1[];
extern void _ZN6S653C1D1Ev();
extern void _ZN6S653C1D0Ev();
extern void _ZN6S653C52v6Ev();
extern void _ZN6S653C52v7Ev();
extern void _ZN6S653C52v8Ev();
extern void _ZN6S653C52v9Ev();
extern void _ZN6S653C53v10Ev();
extern void _ZN6S653C53v11Ev();
extern void _ZN6S653C53v12Ev();
extern void _ZN6S653C53v13Ev();
extern void _ZN6S653C53v14Ev();
extern void _ZN6S653C53v15Ev();
extern void _ZN6S653C53v16Ev();
extern void _ZN6S653C53v17Ev();
extern void _ZN6S653C53v18Ev();
extern void _ZN6S653C53v19Ev();
extern void _ZN6S653C53v20Ev();
extern void _ZN6S653C53v21Ev();
extern void _ZN6S653C53v22Ev();
extern void _ZN6S653C53v23Ev();
extern void _ZN6S653C53v24Ev();
extern void _ZN6S653C53v25Ev();
extern void _ZN6S653C53v26Ev();
extern void _ZN6S653C53v27Ev();
extern void _ZN6S653C53v28Ev();
extern void _ZN6S653C53v29Ev();
extern void _ZN6S653C53v30Ev();
extern void _ZN6S653C53v31Ev();
extern void _ZN6S653C53v32Ev();
extern void _ZN6S653C53v33Ev();
extern void _ZN6S653C53v34Ev();
extern void _ZN6S653C53v35Ev();
extern void _ZN6S653C53v36Ev();
extern void _ZN6S653C53v37Ev();
extern void _ZN6S653C53v38Ev();
extern void _ZN6S653C53v39Ev();
extern void _ZN6S653C53v40Ev();
extern void _ZN6S653C53v41Ev();
extern void _ZN6S653C53v42Ev();
extern void _ZN6S653C53v43Ev();
extern void _ZN6S653C53v44Ev();
extern void _ZN6S653C53v45Ev();
extern void _ZN6S653C53v46Ev();
extern void _ZN6S653C53v47Ev();
extern void _ZN6S653C53v48Ev();
extern void _ZN6S653C53v49Ev();
extern void _ZN6S653C53v50Ev();
extern void _ZN6S653C53v51Ev();
extern void _ZN6S653C53v52Ev();
extern void _ZN6S653C53v53Ev();
extern void _ZN6S653C53v54Ev();
extern void _ZN6S653C53v55Ev();
extern void _ZN6S653C53v56Ev();
extern void _ZN6S653C53v57Ev();
extern void _ZN6S653C53v58Ev();
extern void _ZN6S653C53v59Ev();
extern void _ZN6S653C53v60Ev();
extern void _ZN6S653C53v61Ev();
extern void _ZN6S653C53v62Ev();
extern void _ZN6S653C53v63Ev();
extern void _ZN6S653C53v64Ev();
extern void _ZN6S653C53v65Ev();
extern void _ZN6S653C53v66Ev();
extern void _ZN6S653C53v67Ev();
extern void _ZN6S653C53v68Ev();
extern void _ZN6S653C53v69Ev();
extern void _ZN6S653C43v70Ev();
extern void _ZN6S653C43v71Ev();
extern void _ZN6S653C43v72Ev();
extern void _ZN6S653C43v73Ev();
extern void _ZN6S653C33v74Ev();
extern void _ZN6S653C33v75Ev();
extern void _ZN6S653C33v76Ev();
extern void _ZN6S653C33v77Ev();
extern void _ZN6S653C33v78Ev();
extern void _ZN6S653C23v79Ev();
extern void _ZN6S653C23v80Ev();
extern void _ZN6S653C23v81Ev();
extern void _ZN6S653C23v82Ev();
extern void _ZN6S653C12v1Ev();
extern void _ZN6S653C12v2Ev();
extern void _ZN6S653C12v3Ev();
extern void _ZN6S653C12v4Ev();
extern void _ZN6S653C12v5Ev();
static  VTBL_ENTRY vtc_S653C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S653C1[0]),
  (VTBL_ENTRY)&_ZN6S653C1D1Ev,
  (VTBL_ENTRY)&_ZN6S653C1D0Ev,
  (VTBL_ENTRY)&_ZN6S653C52v6Ev,
  (VTBL_ENTRY)&_ZN6S653C52v7Ev,
  (VTBL_ENTRY)&_ZN6S653C52v8Ev,
  (VTBL_ENTRY)&_ZN6S653C52v9Ev,
  (VTBL_ENTRY)&_ZN6S653C53v10Ev,
  (VTBL_ENTRY)&_ZN6S653C53v11Ev,
  (VTBL_ENTRY)&_ZN6S653C53v12Ev,
  (VTBL_ENTRY)&_ZN6S653C53v13Ev,
  (VTBL_ENTRY)&_ZN6S653C53v14Ev,
  (VTBL_ENTRY)&_ZN6S653C53v15Ev,
  (VTBL_ENTRY)&_ZN6S653C53v16Ev,
  (VTBL_ENTRY)&_ZN6S653C53v17Ev,
  (VTBL_ENTRY)&_ZN6S653C53v18Ev,
  (VTBL_ENTRY)&_ZN6S653C53v19Ev,
  (VTBL_ENTRY)&_ZN6S653C53v20Ev,
  (VTBL_ENTRY)&_ZN6S653C53v21Ev,
  (VTBL_ENTRY)&_ZN6S653C53v22Ev,
  (VTBL_ENTRY)&_ZN6S653C53v23Ev,
  (VTBL_ENTRY)&_ZN6S653C53v24Ev,
  (VTBL_ENTRY)&_ZN6S653C53v25Ev,
  (VTBL_ENTRY)&_ZN6S653C53v26Ev,
  (VTBL_ENTRY)&_ZN6S653C53v27Ev,
  (VTBL_ENTRY)&_ZN6S653C53v28Ev,
  (VTBL_ENTRY)&_ZN6S653C53v29Ev,
  (VTBL_ENTRY)&_ZN6S653C53v30Ev,
  (VTBL_ENTRY)&_ZN6S653C53v31Ev,
  (VTBL_ENTRY)&_ZN6S653C53v32Ev,
  (VTBL_ENTRY)&_ZN6S653C53v33Ev,
  (VTBL_ENTRY)&_ZN6S653C53v34Ev,
  (VTBL_ENTRY)&_ZN6S653C53v35Ev,
  (VTBL_ENTRY)&_ZN6S653C53v36Ev,
  (VTBL_ENTRY)&_ZN6S653C53v37Ev,
  (VTBL_ENTRY)&_ZN6S653C53v38Ev,
  (VTBL_ENTRY)&_ZN6S653C53v39Ev,
  (VTBL_ENTRY)&_ZN6S653C53v40Ev,
  (VTBL_ENTRY)&_ZN6S653C53v41Ev,
  (VTBL_ENTRY)&_ZN6S653C53v42Ev,
  (VTBL_ENTRY)&_ZN6S653C53v43Ev,
  (VTBL_ENTRY)&_ZN6S653C53v44Ev,
  (VTBL_ENTRY)&_ZN6S653C53v45Ev,
  (VTBL_ENTRY)&_ZN6S653C53v46Ev,
  (VTBL_ENTRY)&_ZN6S653C53v47Ev,
  (VTBL_ENTRY)&_ZN6S653C53v48Ev,
  (VTBL_ENTRY)&_ZN6S653C53v49Ev,
  (VTBL_ENTRY)&_ZN6S653C53v50Ev,
  (VTBL_ENTRY)&_ZN6S653C53v51Ev,
  (VTBL_ENTRY)&_ZN6S653C53v52Ev,
  (VTBL_ENTRY)&_ZN6S653C53v53Ev,
  (VTBL_ENTRY)&_ZN6S653C53v54Ev,
  (VTBL_ENTRY)&_ZN6S653C53v55Ev,
  (VTBL_ENTRY)&_ZN6S653C53v56Ev,
  (VTBL_ENTRY)&_ZN6S653C53v57Ev,
  (VTBL_ENTRY)&_ZN6S653C53v58Ev,
  (VTBL_ENTRY)&_ZN6S653C53v59Ev,
  (VTBL_ENTRY)&_ZN6S653C53v60Ev,
  (VTBL_ENTRY)&_ZN6S653C53v61Ev,
  (VTBL_ENTRY)&_ZN6S653C53v62Ev,
  (VTBL_ENTRY)&_ZN6S653C53v63Ev,
  (VTBL_ENTRY)&_ZN6S653C53v64Ev,
  (VTBL_ENTRY)&_ZN6S653C53v65Ev,
  (VTBL_ENTRY)&_ZN6S653C53v66Ev,
  (VTBL_ENTRY)&_ZN6S653C53v67Ev,
  (VTBL_ENTRY)&_ZN6S653C53v68Ev,
  (VTBL_ENTRY)&_ZN6S653C53v69Ev,
  (VTBL_ENTRY)&_ZN6S653C43v70Ev,
  (VTBL_ENTRY)&_ZN6S653C43v71Ev,
  (VTBL_ENTRY)&_ZN6S653C43v72Ev,
  (VTBL_ENTRY)&_ZN6S653C43v73Ev,
  (VTBL_ENTRY)&_ZN6S653C33v74Ev,
  (VTBL_ENTRY)&_ZN6S653C33v75Ev,
  (VTBL_ENTRY)&_ZN6S653C33v76Ev,
  (VTBL_ENTRY)&_ZN6S653C33v77Ev,
  (VTBL_ENTRY)&_ZN6S653C33v78Ev,
  (VTBL_ENTRY)&_ZN6S653C23v79Ev,
  (VTBL_ENTRY)&_ZN6S653C23v80Ev,
  (VTBL_ENTRY)&_ZN6S653C23v81Ev,
  (VTBL_ENTRY)&_ZN6S653C23v82Ev,
  (VTBL_ENTRY)&_ZN6S653C12v1Ev,
  (VTBL_ENTRY)&_ZN6S653C12v2Ev,
  (VTBL_ENTRY)&_ZN6S653C12v3Ev,
  (VTBL_ENTRY)&_ZN6S653C12v4Ev,
  (VTBL_ENTRY)&_ZN6S653C12v5Ev,
};
extern VTBL_ENTRY _ZTI6S653C1[];
extern  VTBL_ENTRY _ZTV6S653C1[];
Class_Descriptor cd_S653C1 = {  "S653C1", // class name
  bases_S653C1, 4,
  &(vtc_S653C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,184), // object size
  NSPAIRA(_ZTI6S653C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S653C1),86, //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  S20466C3  : S3216C8_nt {
  ::S3216C8_nt s20466c3f0[3];
  ::S3216C8_nt s20466c3f1[2];
  void *s20466c3f2;
  short s20466c3f3;
  ::S3216C8_nt s20466c3f4;
  virtual void  v1(); // _ZN8S20466C32v1Ev
  virtual void  v2(); // _ZN8S20466C32v2Ev
  virtual void  v3(); // _ZN8S20466C32v3Ev
  ~S20466C3(); // tgen
  S20466C3(); // tgen
};
//SIG(-1 S20466C3) C1{ BC2{ m Fi} v1 v2 v3 FC2[3] FC2[2] Fp Fs FC2}


void  S20466C3 ::v1(){vfunc_called(this, "_ZN8S20466C32v1Ev");}
void  S20466C3 ::v2(){vfunc_called(this, "_ZN8S20466C32v2Ev");}
void  S20466C3 ::v3(){vfunc_called(this, "_ZN8S20466C32v3Ev");}
S20466C3 ::~S20466C3(){ note_dtor("S20466C3", this);} // tgen
S20466C3 ::S20466C3(){ note_ctor("S20466C3", this);} // tgen

static void Test_S20466C3()
{
  extern Class_Descriptor cd_S20466C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,11)];
    init_test(&cd_S20466C3, buf);
    S20466C3 *dp, &lv = *(dp=new (buf) S20466C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S20466C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20466C3)");
    check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(8,4), "S20466C3");
    check_field_offset(lv, s20466c3f0, ABISELECT(12,8), "S20466C3.s20466c3f0");
    check_field_offset(lv, s20466c3f1, ABISELECT(24,20), "S20466C3.s20466c3f1");
    check_field_offset(lv, s20466c3f2, ABISELECT(32,28), "S20466C3.s20466c3f2");
    check_field_offset(lv, s20466c3f3, ABISELECT(40,32), "S20466C3.s20466c3f3");
    check_field_offset(lv, s20466c3f4, ABISELECT(44,36), "S20466C3.s20466c3f4");
    test_class_info(&lv, &cd_S20466C3);
    dp->~S20466C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20466C3(Test_S20466C3, "S20466C3", ABISELECT(48,40));

#else // __cplusplus

extern void _ZN8S20466C3C1Ev();
extern void _ZN8S20466C3D1Ev();
Name_Map name_map_S20466C3[] = {
  NSPAIR(_ZN8S20466C3C1Ev),
  NSPAIR(_ZN8S20466C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S20466C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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 _ZTI8S20466C3[];
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY vtc_S20466C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C3[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern VTBL_ENTRY _ZTI8S20466C3[];
extern  VTBL_ENTRY _ZTV8S20466C3[];
Class_Descriptor cd_S20466C3 = {  "S20466C3", // class name
  bases_S20466C3, 1,
  &(vtc_S20466C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,40), // object size
  NSPAIRA(_ZTI8S20466C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20466C3),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  S20466C2  : virtual S20466C3 , virtual S3216C8_nt {
  ::S20466C3 s20466c2f0;
  long double s20466c2f1;
  void *s20466c2f2[2];
  ::S20466C3 s20466c2f3;
  virtual void  v4(); // _ZN8S20466C22v4Ev
  ~S20466C2(); // tgen
  S20466C2(); // tgen
};
//SIG(-1 S20466C2) C1{ VBC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC3 v1 FC2 FD Fp[2] FC2}


void  S20466C2 ::v4(){vfunc_called(this, "_ZN8S20466C22v4Ev");}
S20466C2 ::~S20466C2(){ note_dtor("S20466C2", this);} // tgen
S20466C2 ::S20466C2(){ note_ctor("S20466C2", this);} // tgen

static void Test_S20466C2()
{
  extern Class_Descriptor cd_S20466C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,38)];
    init_test(&cd_S20466C2, buf);
    S20466C2 *dp, &lv = *(dp=new (buf) S20466C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,148), "sizeof(S20466C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20466C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S20466C3*), ABISELECT(152,108), "S20466C2");
    check_base_class_offset(lv, (S20466C3*), ABISELECT(144,104), "S20466C2");
    /*is_ambiguous_... S20466C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(192,144), "S20466C2");
    check_field_offset(lv, s20466c2f0, ABISELECT(8,4), "S20466C2.s20466c2f0");
    check_field_offset(lv, s20466c2f1, ABISELECT(64,44), "S20466C2.s20466c2f1");
    check_field_offset(lv, s20466c2f2, ABISELECT(80,56), "S20466C2.s20466c2f2");
    check_field_offset(lv, s20466c2f3, ABISELECT(96,64), "S20466C2.s20466c2f3");
    test_class_info(&lv, &cd_S20466C2);
    dp->~S20466C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20466C2(Test_S20466C2, "S20466C2", ABISELECT(208,148));

#else // __cplusplus

extern void _ZN8S20466C2C1Ev();
extern void _ZN8S20466C2D1Ev();
Name_Map name_map_S20466C2[] = {
  NSPAIR(_ZN8S20466C2C1Ev),
  NSPAIR(_ZN8S20466C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20466C3;
extern VTBL_ENTRY _ZTI8S20466C3[];
extern  VTBL_ENTRY _ZTV8S20466C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S20466C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(152,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
    1, //immediately_derived
  0, 0},
  {&cd_S20466C3,    ABISELECT(144,104), //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(192,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20466C2[];
extern void _ZN8S20466C22v4Ev();
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY vtc_S20466C2[] = {
  ABISELECT(192,144),
  ABISELECT(144,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C2[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
  0,
  0,
  0,
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20466C2[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern VTBL_ENTRY _ZTV8S20466C2[];
static  VTT_ENTRY vtt_S20466C2[] = {
  {&(_ZTV8S20466C2[4]),  4,13},
  {&(_ZTV8S20466C2[10]),  10,13},
};
extern VTBL_ENTRY _ZTI8S20466C2[];
extern  VTBL_ENTRY _ZTV8S20466C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C2[];
Class_Descriptor cd_S20466C2 = {  "S20466C2", // class name
  bases_S20466C2, 3,
  &(vtc_S20466C2[0]), // expected_vtbl_contents
  &(vtt_S20466C2[0]), // expected_vtt_contents
  ABISELECT(208,148), // object size
  NSPAIRA(_ZTI8S20466C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20466C2),13, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20466C2),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  S20466C6  {
  void *s20466c6f0[7];
  ::S20466C2 s20466c6f1;
  long double s20466c6f2;
  int s20466c6f3;
  __tsi64 s20466c6f4;
  void *s20466c6f5;
  ::S20466C2 s20466c6f6;
  void *s20466c6f7[5];
  int s20466c6f8[8];
  void *s20466c6f9;
  virtual void  v5(); // _ZN8S20466C62v5Ev
  ~S20466C6(); // tgen
  S20466C6(); // tgen
};
//SIG(-1 S20466C6) C1{ v1 Fp[7] FC2{ VBC3{ BC4{ m Fi} v3 v4 v5 FC4[3] FC4[2] Fp Fs FC4} VBC4 v2 FC3 FD Fp[2] FC3} FD Fi FL Fp FC2 Fp[5] Fi[8] Fp}


void  S20466C6 ::v5(){vfunc_called(this, "_ZN8S20466C62v5Ev");}
S20466C6 ::~S20466C6(){ note_dtor("S20466C6", this);} // tgen
S20466C6 ::S20466C6(){ note_ctor("S20466C6", this);} // tgen

static void Test_S20466C6()
{
  extern Class_Descriptor cd_S20466C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(39,104)];
    init_test(&cd_S20466C6, buf);
    S20466C6 *dp, &lv = *(dp=new (buf) S20466C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(608,412), "sizeof(S20466C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20466C6)");
    check_field_offset(lv, s20466c6f0, ABISELECT(8,4), "S20466C6.s20466c6f0");
    check_field_offset(lv, s20466c6f1, ABISELECT(64,32), "S20466C6.s20466c6f1");
    check_field_offset(lv, s20466c6f2, ABISELECT(272,180), "S20466C6.s20466c6f2");
    check_field_offset(lv, s20466c6f3, ABISELECT(288,192), "S20466C6.s20466c6f3");
    check_field_offset(lv, s20466c6f4, ABISELECT(296,196), "S20466C6.s20466c6f4");
    check_field_offset(lv, s20466c6f5, ABISELECT(304,204), "S20466C6.s20466c6f5");
    check_field_offset(lv, s20466c6f6, ABISELECT(320,208), "S20466C6.s20466c6f6");
    check_field_offset(lv, s20466c6f7, ABISELECT(528,356), "S20466C6.s20466c6f7");
    check_field_offset(lv, s20466c6f8, ABISELECT(568,376), "S20466C6.s20466c6f8");
    check_field_offset(lv, s20466c6f9, ABISELECT(600,408), "S20466C6.s20466c6f9");
    test_class_info(&lv, &cd_S20466C6);
    dp->~S20466C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20466C6(Test_S20466C6, "S20466C6", ABISELECT(608,412));

#else // __cplusplus

extern void _ZN8S20466C6C1Ev();
extern void _ZN8S20466C6D1Ev();
Name_Map name_map_S20466C6[] = {
  NSPAIR(_ZN8S20466C6C1Ev),
  NSPAIR(_ZN8S20466C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20466C6[];
extern void _ZN8S20466C62v5Ev();
static  VTBL_ENTRY vtc_S20466C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C6[0]),
  (VTBL_ENTRY)&_ZN8S20466C62v5Ev,
};
extern VTBL_ENTRY _ZTI8S20466C6[];
extern  VTBL_ENTRY _ZTV8S20466C6[];
Class_Descriptor cd_S20466C6 = {  "S20466C6", // class name
  0,0,//no base classes
  &(vtc_S20466C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(608,412), // object size
  NSPAIRA(_ZTI8S20466C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20466C6),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  S20466C7  : S20466C3 , virtual S3216C8_nt {
  long double s20466c7f0;
  __tsi64 s20466c7f1;
  ::S20466C3 s20466c7f2;
  void *s20466c7f3;
  short s20466c7f4[3];
  ~S20466C7(); // tgen
  S20466C7(); // tgen
};
//SIG(-1 S20466C7) C1{ BC2{ BC3{ m Fi} v1 v2 v3 FC3[3] FC3[2] Fp Fs FC3} VBC3 FD FL FC2 Fp Fs[3]}


S20466C7 ::~S20466C7(){ note_dtor("S20466C7", this);} // tgen
S20466C7 ::S20466C7(){ note_ctor("S20466C7", this);} // tgen

static void Test_S20466C7()
{
  extern Class_Descriptor cd_S20466C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,30)];
    init_test(&cd_S20466C7, buf);
    S20466C7 *dp, &lv = *(dp=new (buf) S20466C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,116), "sizeof(S20466C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20466C7)");
    check_base_class_offset(lv, (S3216C8_nt*)(S20466C3*), ABISELECT(8,4), "S20466C7");
    check_base_class_offset(lv, (S20466C3*), 0, "S20466C7");
    /*is_ambiguous_... S20466C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(136,112), "S20466C7");
    check_field_offset(lv, s20466c7f0, ABISELECT(48,40), "S20466C7.s20466c7f0");
    check_field_offset(lv, s20466c7f1, ABISELECT(64,52), "S20466C7.s20466c7f1");
    check_field_offset(lv, s20466c7f2, ABISELECT(72,60), "S20466C7.s20466c7f2");
    check_field_offset(lv, s20466c7f3, ABISELECT(120,100), "S20466C7.s20466c7f3");
    check_field_offset(lv, s20466c7f4, ABISELECT(128,104), "S20466C7.s20466c7f4");
    test_class_info(&lv, &cd_S20466C7);
    dp->~S20466C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20466C7(Test_S20466C7, "S20466C7", ABISELECT(144,116));

#else // __cplusplus

extern void _ZN8S20466C7C1Ev();
extern void _ZN8S20466C7D1Ev();
Name_Map name_map_S20466C7[] = {
  NSPAIR(_ZN8S20466C7C1Ev),
  NSPAIR(_ZN8S20466C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20466C3;
extern VTBL_ENTRY _ZTI8S20466C3[];
extern  VTBL_ENTRY _ZTV8S20466C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S20466C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S20466C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20466C7[];
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY vtc_S20466C7[] = {
  ABISELECT(136,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C7[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern VTBL_ENTRY _ZTV8S20466C7[];
static  VTT_ENTRY vtt_S20466C7[] = {
  {&(_ZTV8S20466C7[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S20466C7[];
extern  VTBL_ENTRY _ZTV8S20466C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C7[];
Class_Descriptor cd_S20466C7 = {  "S20466C7", // class name
  bases_S20466C7, 3,
  &(vtc_S20466C7[0]), // expected_vtbl_contents
  &(vtt_S20466C7[0]), // expected_vtt_contents
  ABISELECT(144,116), // object size
  NSPAIRA(_ZTI8S20466C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20466C7),6, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20466C7),1, //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  S20466C9  : virtual S20466C3 , virtual S3216C8_nt , S20466C2 , S20466C7 {
  void *s20466c9f0[2];
  long s20466c9f1;
  int s20466c9f2;
  ::S20466C3 s20466c9f3[5];
  virtual void  v6(); // _ZN8S20466C92v6Ev
  ~S20466C9(); // tgen
  S20466C9(); // tgen
};
//SIG(-1 S20466C9) C1{ VBC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC3 BC4{ VBC2 VBC3 v5 FC2 FD Fp[2] FC2} BC5{ BC2 VBC3 FD FL FC2 Fp Fs[3]} v1 Fp[2] Fl Fi FC2[5]}


void  S20466C9 ::v6(){vfunc_called(this, "_ZN8S20466C92v6Ev");}
S20466C9 ::~S20466C9(){ note_dtor("S20466C9", this);} // tgen
S20466C9 ::S20466C9(){ note_ctor("S20466C9", this);} // tgen

static void Test_S20466C9()
{
  extern Class_Descriptor cd_S20466C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(39,120)];
    init_test(&cd_S20466C9, buf);
    S20466C9 *dp, &lv = *(dp=new (buf) S20466C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(608,476), "sizeof(S20466C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20466C9)");
    /*is_ambiguous_... S20466C9::S20466C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C3*), ABISELECT(560,436), "S20466C9");
    /*is_ambiguous_... S20466C9::S20466C3 */ AMB_check_base_class_offset(lv, (S20466C3*), ABISELECT(552,432), "S20466C9");
    check_base_class_offset(lv, (S20466C3*)(S20466C2*), ABISELECT(552,432), "S20466C9");
    /*is_ambiguous_... S20466C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(600,472), "S20466C9");
    /*is_ambiguous_... S20466C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C2*), ABISELECT(600,472), "S20466C9");
    /*is_ambiguous_... S20466C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C7*), ABISELECT(600,472), "S20466C9");
    check_base_class_offset(lv, (S20466C2*), 0, "S20466C9");
    check_base_class_offset(lv, (S3216C8_nt*)(S20466C3*)(S20466C7*), ABISELECT(152,108), "S20466C9");
    check_base_class_offset(lv, (S20466C3*)(S20466C7*), ABISELECT(144,104), "S20466C9");
    check_base_class_offset(lv, (S20466C7*), ABISELECT(144,104), "S20466C9");
    check_field_offset(lv, s20466c9f0, ABISELECT(280,216), "S20466C9.s20466c9f0");
    check_field_offset(lv, s20466c9f1, ABISELECT(296,224), "S20466C9.s20466c9f1");
    check_field_offset(lv, s20466c9f2, ABISELECT(304,228), "S20466C9.s20466c9f2");
    check_field_offset(lv, s20466c9f3, ABISELECT(312,232), "S20466C9.s20466c9f3");
    test_class_info(&lv, &cd_S20466C9);
    dp->~S20466C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20466C9(Test_S20466C9, "S20466C9", ABISELECT(608,476));

#else // __cplusplus

extern void _ZN8S20466C9C1Ev();
extern void _ZN8S20466C9D1Ev();
Name_Map name_map_S20466C9[] = {
  NSPAIR(_ZN8S20466C9C1Ev),
  NSPAIR(_ZN8S20466C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20466C3;
extern VTBL_ENTRY _ZTI8S20466C3[];
extern  VTBL_ENTRY _ZTV8S20466C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20466C2;
extern VTBL_ENTRY _ZTI8S20466C2[];
extern  VTBL_ENTRY _ZTV8S20466C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20466C3;
extern VTBL_ENTRY _ZTI8S20466C3[];
extern  VTBL_ENTRY _ZTV8S20466C3[];
extern Class_Descriptor cd_S20466C7;
extern VTBL_ENTRY _ZTI8S20466C7[];
extern  VTBL_ENTRY _ZTV8S20466C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C7[];
static Base_Class bases_S20466C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(560,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
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20466C3,    ABISELECT(552,432), //bcp->offset
    12, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(600,472), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20466C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(152,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20466C3,    ABISELECT(144,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20466C7,    ABISELECT(144,104), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20466C9[];
extern void _ZN8S20466C22v4Ev();
extern void _ZN8S20466C92v6Ev();
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY vtc_S20466C9[] = {
  ABISELECT(600,472),
  ABISELECT(552,432),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C9[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20466C92v6Ev,
  ABISELECT(456,368),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20466C9[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
  0,
  0,
  0,
  ABISELECT(-552,-432),
  (VTBL_ENTRY)&(_ZTI8S20466C9[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern VTBL_ENTRY _ZTV8S20466C9[];
extern void _ZN8S20466C22v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C2__8S20466C9[] = {
  ABISELECT(600,472),
  ABISELECT(552,432),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C2[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C3__8S20466C2__8S20466C9[] = {
  0,
  0,
  0,
  ABISELECT(-552,-432),
  (VTBL_ENTRY)&(_ZTI8S20466C2[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C7__8S20466C9[] = {
  ABISELECT(456,368),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C7[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
static  VTT_ENTRY vtt_S20466C9[] = {
  {&(_ZTV8S20466C9[4]),  4,20},
  {&(_tg__ZTV8S20466C2__8S20466C9[4]),  4,5},
  {&(_tg__ZTV8S20466C3__8S20466C2__8S20466C9[5]),  5,8},
  {&(_tg__ZTV8S20466C7__8S20466C9[3]),  3,6},
  {&(_ZTV8S20466C9[17]),  17,20},
  {&(_ZTV8S20466C9[9]),  9,20},
};
extern VTBL_ENTRY _ZTI8S20466C9[];
extern  VTBL_ENTRY _ZTV8S20466C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C9[];
Class_Descriptor cd_S20466C9 = {  "S20466C9", // class name
  bases_S20466C9, 7,
  &(vtc_S20466C9[0]), // expected_vtbl_contents
  &(vtt_S20466C9[0]), // expected_vtt_contents
  ABISELECT(608,476), // object size
  NSPAIRA(_ZTI8S20466C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20466C9),20, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20466C9),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  S20466C8  : virtual S3216C8_nt , S20466C9 , S20466C2 , S20466C7 {
  int s20466c8f0;
  ::S20643C15_nt s20466c8f1;
  void *s20466c8f2[2];
  virtual void  v7(); // _ZN8S20466C82v7Ev
  ~S20466C8(); // tgen
  S20466C8(); // tgen
};
//SIG(-1 S20466C8) C1{ VBC2{ m Fi} BC3{ VBC4{ BC2 v2 v3 v4 FC2[3] FC2[2] Fp Fs FC2} VBC2 BC5{ VBC4 VBC2 v5 FC4 FD Fp[2] FC4} BC6{ BC4 VBC2 FD FL FC4 Fp Fs[3]} v6 Fp[2] Fl Fi FC4[5]} BC5 BC6 v1 Fi FC7{} Fp[2]}


void  S20466C8 ::v7(){vfunc_called(this, "_ZN8S20466C82v7Ev");}
S20466C8 ::~S20466C8(){ note_dtor("S20466C8", this);} // tgen
S20466C8 ::S20466C8(){ note_ctor("S20466C8", this);} // tgen

static void Test_S20466C8()
{
  extern Class_Descriptor cd_S20466C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(59,178)];
    init_test(&cd_S20466C8, buf);
    S20466C8 *dp, &lv = *(dp=new (buf) S20466C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(928,708), "sizeof(S20466C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20466C8)");
    /*is_ambiguous_... S20466C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(864,664), "S20466C8");
    /*is_ambiguous_... S20466C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C9*), ABISELECT(864,664), "S20466C8");
    /*is_ambiguous_... S20466C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C2*)(S20466C9*), ABISELECT(864,664), "S20466C8");
    /*is_ambiguous_... S20466C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C7*)(S20466C9*), ABISELECT(864,664), "S20466C8");
    /*is_ambiguous_... S20466C8::S20466C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C2*), ABISELECT(864,664), "S20466C8");
    /*is_ambiguous_... S20466C8::S20466C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C7*), ABISELECT(864,664), "S20466C8");
    /*is_ambiguous_... S20466C8::S20466C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C3*), ABISELECT(880,672), "S20466C8");
    /*is_ambiguous_... S20466C9::S20466C3 */ AMB_check_base_class_offset(lv, (S20466C3*)(S20466C9*), ABISELECT(872,668), "S20466C8");
    check_base_class_offset(lv, (S20466C3*)(S20466C2*)(S20466C9*), ABISELECT(872,668), "S20466C8");
    /*is_ambiguous_... S20466C8::S20466C2 */ AMB_check_base_class_offset(lv, (S20466C3*)(S20466C2*), ABISELECT(872,668), "S20466C8");
    check_base_class_offset(lv, (S20466C2*)(S20466C9*), 0, "S20466C8");
    check_base_class_offset(lv, (S3216C8_nt*)(S20466C3*)(S20466C7*)(S20466C9*), ABISELECT(152,108), "S20466C8");
    check_base_class_offset(lv, (S20466C3*)(S20466C7*)(S20466C9*), ABISELECT(144,104), "S20466C8");
    check_base_class_offset(lv, (S20466C7*)(S20466C9*), ABISELECT(144,104), "S20466C8");
    check_base_class_offset(lv, (S20466C9*), 0, "S20466C8");
    /*is_ambiguous_... S20466C8::S20466C2 */ AMB_check_base_class_offset(lv, (S20466C2*), ABISELECT(560,432), "S20466C8");
    /*is_ambiguous_... S20466C8::S20466C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C3*)(S20466C7*), ABISELECT(712,540), "S20466C8");
    /*is_ambiguous_... S20466C8::S20466C7 */ AMB_check_base_class_offset(lv, (S20466C3*)(S20466C7*), ABISELECT(704,536), "S20466C8");
    /*is_ambiguous_... S20466C8::S20466C7 */ AMB_check_base_class_offset(lv, (S20466C7*), ABISELECT(704,536), "S20466C8");
    check_field_offset(lv, s20466c8f0, ABISELECT(840,648), "S20466C8.s20466c8f0");
    check_field_offset(lv, s20466c8f1, ABISELECT(844,652), "S20466C8.s20466c8f1");
    check_field_offset(lv, s20466c8f2, ABISELECT(848,656), "S20466C8.s20466c8f2");
    test_class_info(&lv, &cd_S20466C8);
    dp->~S20466C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20466C8(Test_S20466C8, "S20466C8", ABISELECT(928,708));

#else // __cplusplus

extern void _ZN8S20466C8C1Ev();
extern void _ZN8S20466C8D1Ev();
Name_Map name_map_S20466C8[] = {
  NSPAIR(_ZN8S20466C8C1Ev),
  NSPAIR(_ZN8S20466C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20466C3;
extern VTBL_ENTRY _ZTI8S20466C3[];
extern  VTBL_ENTRY _ZTV8S20466C3[];
extern Class_Descriptor cd_S20466C2;
extern VTBL_ENTRY _ZTI8S20466C2[];
extern  VTBL_ENTRY _ZTV8S20466C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20466C3;
extern VTBL_ENTRY _ZTI8S20466C3[];
extern  VTBL_ENTRY _ZTV8S20466C3[];
extern Class_Descriptor cd_S20466C7;
extern VTBL_ENTRY _ZTI8S20466C7[];
extern  VTBL_ENTRY _ZTV8S20466C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C7[];
extern Class_Descriptor cd_S20466C9;
extern VTBL_ENTRY _ZTI8S20466C9[];
extern  VTBL_ENTRY _ZTV8S20466C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C9[];
extern Class_Descriptor cd_S20466C2;
extern VTBL_ENTRY _ZTI8S20466C2[];
extern  VTBL_ENTRY _ZTV8S20466C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20466C3;
extern VTBL_ENTRY _ZTI8S20466C3[];
extern  VTBL_ENTRY _ZTV8S20466C3[];
extern Class_Descriptor cd_S20466C7;
extern VTBL_ENTRY _ZTI8S20466C7[];
extern  VTBL_ENTRY _ZTV8S20466C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C7[];
static Base_Class bases_S20466C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(864,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
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(880,672), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20466C3,    ABISELECT(872,668), //bcp->offset
    24, //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
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20466C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(152,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20466C3,    ABISELECT(144,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20466C7,    ABISELECT(144,104), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20466C9,    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_S20466C2,    ABISELECT(560,432), //bcp->offset
    13, //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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(712,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
    10, //immediately_derived
  0, 0},
  {&cd_S20466C3,    ABISELECT(704,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
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20466C7,    ABISELECT(704,536), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20466C8[];
extern void _ZN8S20466C22v4Ev();
extern void _ZN8S20466C92v6Ev();
extern void _ZN8S20466C82v7Ev();
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
extern void _ZN8S20466C22v4Ev();
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY vtc_S20466C8[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C8[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20466C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20466C82v7Ev,
  ABISELECT(720,560),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20466C8[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
  ABISELECT(304,232),
  ABISELECT(312,236),
  ABISELECT(-560,-432),
  (VTBL_ENTRY)&(_ZTI8S20466C8[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
  ABISELECT(160,128),
  ABISELECT(-704,-536),
  (VTBL_ENTRY)&(_ZTI8S20466C8[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI8S20466C8[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern VTBL_ENTRY _ZTV8S20466C8[];
extern void _ZN8S20466C22v4Ev();
extern void _ZN8S20466C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C9__8S20466C8[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C9[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20466C92v6Ev,
};
extern void _ZN8S20466C22v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C28S20466C9__8S20466C8[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C2[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C3__8S20466C28S20466C9__8S20466C8[] = {
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI8S20466C2[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C78S20466C9__8S20466C8[] = {
  ABISELECT(720,560),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C7[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C3__8S20466C9__8S20466C8[] = {
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI8S20466C9[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C7__8S20466C9__8S20466C8[] = {
  ABISELECT(720,560),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20466C9[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C22v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C2__A1__8S20466C8[] = {
  ABISELECT(304,232),
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C2[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C3__8S20466C2__A1__8S20466C8[] = {
  0,
  0,
  0,
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S20466C2[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C7__A1__8S20466C8[] = {
  ABISELECT(160,128),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C7[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
static  VTT_ENTRY vtt_S20466C8[] = {
  {&(_ZTV8S20466C8[4]),  4,32},
  {&(_tg__ZTV8S20466C9__8S20466C8[4]),  4,6},
  {&(_tg__ZTV8S20466C28S20466C9__8S20466C8[4]),  4,5},
  {&(_tg__ZTV8S20466C3__8S20466C28S20466C9__8S20466C8[5]),  5,8},
  {&(_tg__ZTV8S20466C78S20466C9__8S20466C8[3]),  3,6},
  {&(_tg__ZTV8S20466C3__8S20466C9__8S20466C8[5]),  5,8},
  {&(_tg__ZTV8S20466C7__8S20466C9__8S20466C8[3]),  3,6},
  {&(_tg__ZTV8S20466C2__A1__8S20466C8[4]),  4,5},
  {&(_tg__ZTV8S20466C3__8S20466C2__A1__8S20466C8[5]),  5,8},
  {&(_tg__ZTV8S20466C7__A1__8S20466C8[3]),  3,6},
  {&(_ZTV8S20466C8[29]),  29,32},
  {&(_ZTV8S20466C8[10]),  10,32},
  {&(_ZTV8S20466C8[17]),  17,32},
  {&(_ZTV8S20466C8[21]),  21,32},
};
extern VTBL_ENTRY _ZTI8S20466C8[];
extern  VTBL_ENTRY _ZTV8S20466C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C8[];
Class_Descriptor cd_S20466C8 = {  "S20466C8", // class name
  bases_S20466C8, 12,
  &(vtc_S20466C8[0]), // expected_vtbl_contents
  &(vtt_S20466C8[0]), // expected_vtt_contents
  ABISELECT(928,708), // object size
  NSPAIRA(_ZTI8S20466C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20466C8),32, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20466C8),14, //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  S20466C5  : S20466C6 , S20466C7 , S20466C8 {
  virtual  ~S20466C5(); // _ZN8S20466C5D2Ev
  S20466C5(); // tgen
};
//SIG(-1 S20466C5) C1{ BC2{ v1 Fp[7] FC3{ VBC4{ BC5{ m Fi} v2 v3 v4 FC5[3] FC5[2] Fp Fs FC5} VBC5 v5 FC4 FD Fp[2] FC4} FD Fi FL Fp FC3 Fp[5] Fi[8] Fp} BC6{ BC4 VBC5 FD FL FC4 Fp Fs[3]} BC7{ VBC5 BC8{ VBC4 VBC5 BC3 BC6 v6 Fp[2] Fl Fi FC4[5]} BC3 BC6 v7 Fi FC9{} Fp[2]} vd}


 S20466C5 ::~S20466C5(){ note_dtor("S20466C5", this);}
S20466C5 ::S20466C5(){ note_ctor("S20466C5", this);} // tgen

static void Test_S20466C5()
{
  extern Class_Descriptor cd_S20466C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(106,309)];
    init_test(&cd_S20466C5, buf);
    S20466C5 *dp, &lv = *(dp=new (buf) S20466C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1680,1232), "sizeof(S20466C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20466C5)");
    check_base_class_offset(lv, (S20466C6*), 0, "S20466C5");
    /*is_ambiguous_... S20466C5::S20466C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C3*)(S20466C7*), ABISELECT(616,416), "S20466C5");
    /*is_ambiguous_... S20466C5::S20466C7 */ AMB_check_base_class_offset(lv, (S20466C3*)(S20466C7*), ABISELECT(608,412), "S20466C5");
    /*is_ambiguous_... S20466C5::S20466C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C7*), ABISELECT(1616,1188), "S20466C5");
    /*is_ambiguous_... S20466C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C8*), ABISELECT(1616,1188), "S20466C5");
    /*is_ambiguous_... S20466C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C9*)(S20466C8*), ABISELECT(1616,1188), "S20466C5");
    /*is_ambiguous_... S20466C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C2*)(S20466C9*)(S20466C8*), ABISELECT(1616,1188), "S20466C5");
    /*is_ambiguous_... S20466C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C7*)(S20466C9*)(S20466C8*), ABISELECT(1616,1188), "S20466C5");
    /*is_ambiguous_... S20466C8::S20466C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C2*)(S20466C8*), ABISELECT(1616,1188), "S20466C5");
    /*is_ambiguous_... S20466C8::S20466C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C7*)(S20466C8*), ABISELECT(1616,1188), "S20466C5");
    /*is_ambiguous_... S20466C5::S20466C7 */ AMB_check_base_class_offset(lv, (S20466C7*), ABISELECT(608,412), "S20466C5");
    /*is_ambiguous_... S20466C5::S20466C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C3*), ABISELECT(1632,1196), "S20466C5");
    /*is_ambiguous_... S20466C9::S20466C3 */ AMB_check_base_class_offset(lv, (S20466C3*)(S20466C9*)(S20466C8*), ABISELECT(1624,1192), "S20466C5");
    check_base_class_offset(lv, (S20466C3*)(S20466C2*)(S20466C9*)(S20466C8*), ABISELECT(1624,1192), "S20466C5");
    /*is_ambiguous_... S20466C8::S20466C2 */ AMB_check_base_class_offset(lv, (S20466C3*)(S20466C2*)(S20466C8*), ABISELECT(1624,1192), "S20466C5");
    check_base_class_offset(lv, (S20466C2*)(S20466C9*)(S20466C8*), ABISELECT(752,524), "S20466C5");
    check_base_class_offset(lv, (S3216C8_nt*)(S20466C3*)(S20466C7*)(S20466C9*)(S20466C8*), ABISELECT(904,632), "S20466C5");
    check_base_class_offset(lv, (S20466C3*)(S20466C7*)(S20466C9*)(S20466C8*), ABISELECT(896,628), "S20466C5");
    check_base_class_offset(lv, (S20466C7*)(S20466C9*)(S20466C8*), ABISELECT(896,628), "S20466C5");
    check_base_class_offset(lv, (S20466C9*)(S20466C8*), ABISELECT(752,524), "S20466C5");
    /*is_ambiguous_... S20466C8::S20466C2 */ AMB_check_base_class_offset(lv, (S20466C2*)(S20466C8*), ABISELECT(1312,956), "S20466C5");
    /*is_ambiguous_... S20466C8::S20466C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C3*)(S20466C7*)(S20466C8*), ABISELECT(1464,1064), "S20466C5");
    /*is_ambiguous_... S20466C8::S20466C7 */ AMB_check_base_class_offset(lv, (S20466C3*)(S20466C7*)(S20466C8*), ABISELECT(1456,1060), "S20466C5");
    /*is_ambiguous_... S20466C8::S20466C7 */ AMB_check_base_class_offset(lv, (S20466C7*)(S20466C8*), ABISELECT(1456,1060), "S20466C5");
    check_base_class_offset(lv, (S20466C8*), ABISELECT(752,524), "S20466C5");
    test_class_info(&lv, &cd_S20466C5);
    dp->~S20466C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20466C5(Test_S20466C5, "S20466C5", ABISELECT(1680,1232));

#else // __cplusplus

extern void _ZN8S20466C5C1Ev();
extern void _ZN8S20466C5D2Ev();
Name_Map name_map_S20466C5[] = {
  NSPAIR(_ZN8S20466C5C1Ev),
  NSPAIR(_ZN8S20466C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20466C6;
extern VTBL_ENTRY _ZTI8S20466C6[];
extern  VTBL_ENTRY _ZTV8S20466C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20466C3;
extern VTBL_ENTRY _ZTI8S20466C3[];
extern  VTBL_ENTRY _ZTV8S20466C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20466C7;
extern VTBL_ENTRY _ZTI8S20466C7[];
extern  VTBL_ENTRY _ZTV8S20466C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C7[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20466C3;
extern VTBL_ENTRY _ZTI8S20466C3[];
extern  VTBL_ENTRY _ZTV8S20466C3[];
extern Class_Descriptor cd_S20466C2;
extern VTBL_ENTRY _ZTI8S20466C2[];
extern  VTBL_ENTRY _ZTV8S20466C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20466C3;
extern VTBL_ENTRY _ZTI8S20466C3[];
extern  VTBL_ENTRY _ZTV8S20466C3[];
extern Class_Descriptor cd_S20466C7;
extern VTBL_ENTRY _ZTI8S20466C7[];
extern  VTBL_ENTRY _ZTV8S20466C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C7[];
extern Class_Descriptor cd_S20466C9;
extern VTBL_ENTRY _ZTI8S20466C9[];
extern  VTBL_ENTRY _ZTV8S20466C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C9[];
extern Class_Descriptor cd_S20466C2;
extern VTBL_ENTRY _ZTI8S20466C2[];
extern  VTBL_ENTRY _ZTV8S20466C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20466C3;
extern VTBL_ENTRY _ZTI8S20466C3[];
extern  VTBL_ENTRY _ZTV8S20466C3[];
extern Class_Descriptor cd_S20466C7;
extern VTBL_ENTRY _ZTI8S20466C7[];
extern  VTBL_ENTRY _ZTV8S20466C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C7[];
extern Class_Descriptor cd_S20466C8;
extern VTBL_ENTRY _ZTI8S20466C8[];
extern  VTBL_ENTRY _ZTV8S20466C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C8[];
static Base_Class bases_S20466C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20466C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3216C8_nt,    ABISELECT(616,416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20466C3,    ABISELECT(608,412), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3216C8_nt,    ABISELECT(1616,1188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20466C7,    ABISELECT(608,412), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(1632,1196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20466C3,    ABISELECT(1624,1192), //bcp->offset
    37, //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
    7, //immediately_derived
  0, 1},
  {&cd_S20466C2,    ABISELECT(752,524), //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
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(904,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
    9, //immediately_derived
  0, 0},
  {&cd_S20466C3,    ABISELECT(896,628), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20466C7,    ABISELECT(896,628), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20466C9,    ABISELECT(752,524), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20466C2,    ABISELECT(1312,956), //bcp->offset
    26, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1464,1064), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20466C3,    ABISELECT(1456,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20466C7,    ABISELECT(1456,1060), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20466C8,    ABISELECT(752,524), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20466C5[];
extern void _ZN8S20466C62v5Ev();
extern void _ZN8S20466C5D1Ev();
extern void _ZN8S20466C5D0Ev();
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
extern void _ZN8S20466C22v4Ev();
extern void _ZN8S20466C92v6Ev();
extern void _ZN8S20466C82v7Ev();
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
extern void _ZN8S20466C22v4Ev();
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY vtc_S20466C5[] = {
  ABISELECT(1624,1192),
  ABISELECT(1616,1188),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C5[0]),
  (VTBL_ENTRY)&_ZN8S20466C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20466C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20466C5D0Ev,
  ABISELECT(1008,776),
  ABISELECT(-608,-412),
  (VTBL_ENTRY)&(_ZTI8S20466C5[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
  ABISELECT(864,664),
  ABISELECT(872,668),
  ABISELECT(-752,-524),
  (VTBL_ENTRY)&(_ZTI8S20466C5[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20466C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20466C82v7Ev,
  ABISELECT(720,560),
  ABISELECT(-896,-628),
  (VTBL_ENTRY)&(_ZTI8S20466C5[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
  ABISELECT(304,232),
  ABISELECT(312,236),
  ABISELECT(-1312,-956),
  (VTBL_ENTRY)&(_ZTI8S20466C5[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
  ABISELECT(160,128),
  ABISELECT(-1456,-1060),
  (VTBL_ENTRY)&(_ZTI8S20466C5[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
  0,
  0,
  0,
  ABISELECT(-1624,-1192),
  (VTBL_ENTRY)&(_ZTI8S20466C5[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern VTBL_ENTRY _ZTV8S20466C5[];
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C7__8S20466C5[] = {
  ABISELECT(1008,776),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C7[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C22v4Ev();
extern void _ZN8S20466C92v6Ev();
extern void _ZN8S20466C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C8__8S20466C5[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C8[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20466C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20466C82v7Ev,
};
extern void _ZN8S20466C22v4Ev();
extern void _ZN8S20466C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C98S20466C8__8S20466C5[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C9[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20466C92v6Ev,
};
extern void _ZN8S20466C22v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C28S20466C98S20466C8__8S20466C5[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C2[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C3__8S20466C28S20466C98S20466C8__8S20466C5[] = {
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI8S20466C2[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C78S20466C98S20466C8__A1__8S20466C5[] = {
  ABISELECT(720,560),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C7[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C3__8S20466C98S20466C8__8S20466C5[] = {
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI8S20466C9[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C7__8S20466C98S20466C8__8S20466C5[] = {
  ABISELECT(720,560),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20466C9[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C22v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C28S20466C8__A1__8S20466C5[] = {
  ABISELECT(304,232),
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C2[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C3__8S20466C28S20466C8__A1__8S20466C5[] = {
  0,
  0,
  0,
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S20466C2[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C78S20466C8__A2__8S20466C5[] = {
  ABISELECT(160,128),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C7[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C3__8S20466C8__8S20466C5[] = {
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI8S20466C8[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C78S20466C9__8S20466C8__8S20466C5[] = {
  ABISELECT(720,560),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20466C8[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C22v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C2__A1__8S20466C8__8S20466C5[] = {
  ABISELECT(304,232),
  ABISELECT(312,236),
  ABISELECT(-560,-432),
  (VTBL_ENTRY)&(_ZTI8S20466C8[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C7__A1__8S20466C8__8S20466C5[] = {
  ABISELECT(160,128),
  ABISELECT(-704,-536),
  (VTBL_ENTRY)&(_ZTI8S20466C8[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
static  VTT_ENTRY vtt_S20466C5[] = {
  {&(_ZTV8S20466C5[4]),  4,45},
  {&(_tg__ZTV8S20466C7__8S20466C5[3]),  3,6},
  {&(_tg__ZTV8S20466C8__8S20466C5[4]),  4,7},
  {&(_tg__ZTV8S20466C98S20466C8__8S20466C5[4]),  4,6},
  {&(_tg__ZTV8S20466C28S20466C98S20466C8__8S20466C5[4]),  4,5},
  {&(_tg__ZTV8S20466C3__8S20466C28S20466C98S20466C8__8S20466C5[5]),  5,8},
  {&(_tg__ZTV8S20466C78S20466C98S20466C8__A1__8S20466C5[3]),  3,6},
  {&(_tg__ZTV8S20466C3__8S20466C98S20466C8__8S20466C5[5]),  5,8},
  {&(_tg__ZTV8S20466C7__8S20466C98S20466C8__8S20466C5[3]),  3,6},
  {&(_tg__ZTV8S20466C28S20466C8__A1__8S20466C5[4]),  4,5},
  {&(_tg__ZTV8S20466C3__8S20466C28S20466C8__A1__8S20466C5[5]),  5,8},
  {&(_tg__ZTV8S20466C78S20466C8__A2__8S20466C5[3]),  3,6},
  {&(_tg__ZTV8S20466C3__8S20466C8__8S20466C5[5]),  5,8},
  {&(_tg__ZTV8S20466C78S20466C9__8S20466C8__8S20466C5[3]),  3,6},
  {&(_tg__ZTV8S20466C2__A1__8S20466C8__8S20466C5[4]),  4,5},
  {&(_tg__ZTV8S20466C7__A1__8S20466C8__8S20466C5[3]),  3,6},
  {&(_ZTV8S20466C5[10]),  10,45},
  {&(_ZTV8S20466C5[17]),  17,45},
  {&(_ZTV8S20466C5[42]),  42,45},
  {&(_ZTV8S20466C5[23]),  23,45},
  {&(_ZTV8S20466C5[30]),  30,45},
  {&(_ZTV8S20466C5[34]),  34,45},
};
extern VTBL_ENTRY _ZTI8S20466C5[];
extern  VTBL_ENTRY _ZTV8S20466C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C5[];
Class_Descriptor cd_S20466C5 = {  "S20466C5", // class name
  bases_S20466C5, 17,
  &(vtc_S20466C5[0]), // expected_vtbl_contents
  &(vtt_S20466C5[0]), // expected_vtt_contents
  ABISELECT(1680,1232), // object size
  NSPAIRA(_ZTI8S20466C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20466C5),45, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20466C5),22, //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  S20466C11  {
  int s20466c11f0;
  ::S20466C6 s20466c11f1;
  __tsi64 s20466c11f2;
  int s20466c11f3;
  ::S20644C4 s20466c11f4;
  int s20466c11f5[2];
  virtual void  v8(); // _ZN9S20466C112v8Ev
  ~S20466C11(); // tgen
  S20466C11(); // tgen
};
//SIG(-1 S20466C11) C1{ v1 Fi FC2{ v2 Fp[7] FC3{ VBC4{ BC5{ m Fi} v4 v5 v6 FC5[3] FC5[2] Fp Fs FC5} VBC5 v3 FC4 FD Fp[2] FC4} FD Fi FL Fp FC3 Fp[5] Fi[8] Fp} FL Fi FC6{ VBC7{ BC8{ BC5 v8 v9 v10 FC5[3] FC5[2] Fp Fs FC5} VBC5 FD FL FC8 Fp Fs[3]} BC9{ BC8 vd v11 Fp[7] Fi[2] FL Fi} VBC8 BC10{ VBC8 VBC5 BC11{ VBC8 VBC5 v12 FC8 FD Fp[2] FC8} BC7 v13 Fp[2] Fl Fi FC8[5]} BC11 v7 Fi[2] FD FC11[10] Fi} Fi[2]}


void  S20466C11 ::v8(){vfunc_called(this, "_ZN9S20466C112v8Ev");}
S20466C11 ::~S20466C11(){ note_dtor("S20466C11", this);} // tgen
S20466C11 ::S20466C11(){ note_ctor("S20466C11", this);} // tgen

static void Test_S20466C11()
{
  extern Class_Descriptor cd_S20466C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(239,682)];
    init_test(&cd_S20466C11, buf);
    S20466C11 *dp, &lv = *(dp=new (buf) S20466C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3808,2724), "sizeof(S20466C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20466C11)");
    check_field_offset(lv, s20466c11f0, ABISELECT(8,4), "S20466C11.s20466c11f0");
    check_field_offset(lv, s20466c11f1, ABISELECT(16,8), "S20466C11.s20466c11f1");
    check_field_offset(lv, s20466c11f2, ABISELECT(624,420), "S20466C11.s20466c11f2");
    check_field_offset(lv, s20466c11f3, ABISELECT(632,428), "S20466C11.s20466c11f3");
    check_field_offset(lv, s20466c11f4, ABISELECT(640,432), "S20466C11.s20466c11f4");
    check_field_offset(lv, s20466c11f5, ABISELECT(3792,2716), "S20466C11.s20466c11f5");
    test_class_info(&lv, &cd_S20466C11);
    dp->~S20466C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20466C11(Test_S20466C11, "S20466C11", ABISELECT(3808,2724));

#else // __cplusplus

extern void _ZN9S20466C11C1Ev();
extern void _ZN9S20466C11D1Ev();
Name_Map name_map_S20466C11[] = {
  NSPAIR(_ZN9S20466C11C1Ev),
  NSPAIR(_ZN9S20466C11D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S20466C11[];
extern void _ZN9S20466C112v8Ev();
static  VTBL_ENTRY vtc_S20466C11[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20466C11[0]),
  (VTBL_ENTRY)&_ZN9S20466C112v8Ev,
};
extern VTBL_ENTRY _ZTI9S20466C11[];
extern  VTBL_ENTRY _ZTV9S20466C11[];
Class_Descriptor cd_S20466C11 = {  "S20466C11", // class name
  0,0,//no base classes
  &(vtc_S20466C11[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(3808,2724), // object size
  NSPAIRA(_ZTI9S20466C11),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S20466C11),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  S20466C15  : virtual S3216C8_nt , virtual S20466C3 , virtual S20466C7 {
  void *s20466c15f0[2];
  int s20466c15f1;
  ::S20466C7 s20466c15f2[8];
  long double s20466c15f3[9];
  ~S20466C15(); // tgen
  S20466C15(); // tgen
};
//SIG(-1 S20466C15) C1{ VBC2{ m Fi} VBC3{ BC2 v1 v2 v3 FC2[3] FC2[2] Fp Fs FC2} VBC4{ BC3 VBC2 FD FL FC3 Fp Fs[3]} Fp[2] Fi FC4[8] FD[9]}


S20466C15 ::~S20466C15(){ note_dtor("S20466C15", this);} // tgen
S20466C15 ::S20466C15(){ note_ctor("S20466C15", this);} // tgen

static void Test_S20466C15()
{
  extern Class_Descriptor cd_S20466C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(97,303)];
    init_test(&cd_S20466C15, buf);
    S20466C15 *dp, &lv = *(dp=new (buf) S20466C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1536,1208), "sizeof(S20466C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20466C15)");
    /*is_ambiguous_... S20466C15::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(1328,1052), "S20466C15");
    /*is_ambiguous_... S20466C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C7*), ABISELECT(1328,1052), "S20466C15");
    /*is_ambiguous_... S20466C15::S20466C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C3*), ABISELECT(1344,1060), "S20466C15");
    /*is_ambiguous_... S20466C15::S20466C3 */ AMB_check_base_class_offset(lv, (S20466C3*), ABISELECT(1336,1056), "S20466C15");
    check_base_class_offset(lv, (S3216C8_nt*)(S20466C3*)(S20466C7*), ABISELECT(1400,1100), "S20466C15");
    check_base_class_offset(lv, (S20466C3*)(S20466C7*), ABISELECT(1392,1096), "S20466C15");
    check_base_class_offset(lv, (S20466C7*), ABISELECT(1392,1096), "S20466C15");
    check_field_offset(lv, s20466c15f0, ABISELECT(8,4), "S20466C15.s20466c15f0");
    check_field_offset(lv, s20466c15f1, ABISELECT(24,12), "S20466C15.s20466c15f1");
    check_field_offset(lv, s20466c15f2, ABISELECT(32,16), "S20466C15.s20466c15f2");
    check_field_offset(lv, s20466c15f3, ABISELECT(1184,944), "S20466C15.s20466c15f3");
    test_class_info(&lv, &cd_S20466C15);
    dp->~S20466C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20466C15(Test_S20466C15, "S20466C15", ABISELECT(1536,1208));

#else // __cplusplus

extern void _ZN9S20466C15C1Ev();
extern void _ZN9S20466C15D1Ev();
Name_Map name_map_S20466C15[] = {
  NSPAIR(_ZN9S20466C15C1Ev),
  NSPAIR(_ZN9S20466C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20466C3;
extern VTBL_ENTRY _ZTI8S20466C3[];
extern  VTBL_ENTRY _ZTV8S20466C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20466C3;
extern VTBL_ENTRY _ZTI8S20466C3[];
extern  VTBL_ENTRY _ZTV8S20466C3[];
extern Class_Descriptor cd_S20466C7;
extern VTBL_ENTRY _ZTI8S20466C7[];
extern  VTBL_ENTRY _ZTV8S20466C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C7[];
static Base_Class bases_S20466C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(1328,1052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1344,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20466C3,    ABISELECT(1336,1056), //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1400,1100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20466C3,    ABISELECT(1392,1096), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20466C7,    ABISELECT(1392,1096), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //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 _ZTI9S20466C15[];
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY vtc_S20466C15[] = {
  ABISELECT(1392,1096),
  ABISELECT(1336,1056),
  ABISELECT(1328,1052),
  0,
  (VTBL_ENTRY)&(_ZTI9S20466C15[0]),
  0,
  0,
  0,
  ABISELECT(-1336,-1056),
  (VTBL_ENTRY)&(_ZTI9S20466C15[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
  0,
  0,
  0,
  ABISELECT(-64,-44),
  ABISELECT(-1392,-1096),
  (VTBL_ENTRY)&(_ZTI9S20466C15[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern VTBL_ENTRY _ZTV9S20466C15[];
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C7__9S20466C15[] = {
  ABISELECT(-64,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C7[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
static  VTT_ENTRY vtt_S20466C15[] = {
  {&(_ZTV9S20466C15[5]),  5,22},
  {&(_ZTV9S20466C15[10]),  10,22},
  {&(_ZTV9S20466C15[19]),  19,22},
  {&(_tg__ZTV8S20466C7__9S20466C15[3]),  3,6},
};
extern VTBL_ENTRY _ZTI9S20466C15[];
extern  VTBL_ENTRY _ZTV9S20466C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20466C15[];
Class_Descriptor cd_S20466C15 = {  "S20466C15", // class name
  bases_S20466C15, 6,
  &(vtc_S20466C15[0]), // expected_vtbl_contents
  &(vtt_S20466C15[0]), // expected_vtt_contents
  ABISELECT(1536,1208), // object size
  NSPAIRA(_ZTI9S20466C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20466C15),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20466C15),4, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20466C13  : S20466C3 {
  void *s20466c13f0[7];
  int s20466c13f1[2];
  __tsi64 s20466c13f2;
  int s20466c13f3;
  virtual  ~S20466C13(); // _ZN9S20466C13D1Ev
  virtual void  v9(); // _ZN9S20466C132v9Ev
  S20466C13(); // tgen
};
//SIG(-1 S20466C13) C1{ BC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} vd v1 Fp[7] Fi[2] FL Fi}


 S20466C13 ::~S20466C13(){ note_dtor("S20466C13", this);}
void  S20466C13 ::v9(){vfunc_called(this, "_ZN9S20466C132v9Ev");}
S20466C13 ::S20466C13(){ note_ctor("S20466C13", this);} // tgen

static void Test_S20466C13()
{
  extern Class_Descriptor cd_S20466C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,23)];
    init_test(&cd_S20466C13, buf);
    S20466C13 *dp, &lv = *(dp=new (buf) S20466C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,88), "sizeof(S20466C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20466C13)");
    check_base_class_offset(lv, (S3216C8_nt*)(S20466C3*), ABISELECT(8,4), "S20466C13");
    check_base_class_offset(lv, (S20466C3*), 0, "S20466C13");
    check_field_offset(lv, s20466c13f0, ABISELECT(48,40), "S20466C13.s20466c13f0");
    check_field_offset(lv, s20466c13f1, ABISELECT(104,68), "S20466C13.s20466c13f1");
    check_field_offset(lv, s20466c13f2, ABISELECT(112,76), "S20466C13.s20466c13f2");
    check_field_offset(lv, s20466c13f3, ABISELECT(120,84), "S20466C13.s20466c13f3");
    test_class_info(&lv, &cd_S20466C13);
    dp->~S20466C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20466C13(Test_S20466C13, "S20466C13", ABISELECT(128,88));

#else // __cplusplus

extern void _ZN9S20466C13C1Ev();
extern void _ZN9S20466C13D1Ev();
Name_Map name_map_S20466C13[] = {
  NSPAIR(_ZN9S20466C13C1Ev),
  NSPAIR(_ZN9S20466C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20466C3;
extern VTBL_ENTRY _ZTI8S20466C3[];
extern  VTBL_ENTRY _ZTV8S20466C3[];
static Base_Class bases_S20466C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S20466C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20466C13[];
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
extern void _ZN9S20466C13D1Ev();
extern void _ZN9S20466C13D0Ev();
extern void _ZN9S20466C132v9Ev();
static  VTBL_ENTRY vtc_S20466C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20466C13[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
  (VTBL_ENTRY)&_ZN9S20466C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20466C13D0Ev,
  (VTBL_ENTRY)&_ZN9S20466C132v9Ev,
};
extern VTBL_ENTRY _ZTI9S20466C13[];
extern  VTBL_ENTRY _ZTV9S20466C13[];
Class_Descriptor cd_S20466C13 = {  "S20466C13", // class name
  bases_S20466C13, 2,
  &(vtc_S20466C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,88), // object size
  NSPAIRA(_ZTI9S20466C13),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20466C13),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  S20466C14  : S20466C15 , S3216C8_nt , virtual S20466C9 , S20466C13 {
  int s20466c14f0;
  void *s20466c14f1;
  int s20466c14f2;
  virtual  ~S20466C14(); // _ZN9S20466C14D2Ev
  virtual void  v10(); // _ZN9S20466C143v10Ev
  S20466C14(); // tgen
};
//SIG(-1 S20466C14) C1{ BC2{ VBC3{ m Fi} VBC4{ BC3 v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC5{ BC4 VBC3 FD FL FC4 Fp Fs[3]} Fp[2] Fi FC5[8] FD[9]} BC3 VBC6{ VBC4 VBC3 BC7{ VBC4 VBC3 v5 FC4 FD Fp[2] FC4} BC5 v6 Fp[2] Fl Fi FC4[5]} BC8{ BC4 vd v7 Fp[7] Fi[2] FL Fi} vd v1 Fi Fp Fi}


 S20466C14 ::~S20466C14(){ note_dtor("S20466C14", this);}
void  S20466C14 ::v10(){vfunc_called(this, "_ZN9S20466C143v10Ev");}
S20466C14 ::S20466C14(){ note_ctor("S20466C14", this);} // tgen

static void Test_S20466C14()
{
  extern Class_Descriptor cd_S20466C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(141,437)];
    init_test(&cd_S20466C14, buf);
    S20466C14 *dp, &lv = *(dp=new (buf) S20466C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2240,1744), "sizeof(S20466C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20466C14)");
    /*is_ambiguous_... S20466C15::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C15*), ABISELECT(1476,1156), "S20466C14");
    /*is_ambiguous_... S20466C14::S20466C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C7*), ABISELECT(1476,1156), "S20466C14");
    /*is_ambiguous_... S20466C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C9*), ABISELECT(1476,1156), "S20466C14");
    /*is_ambiguous_... S20466C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C2*)(S20466C9*), ABISELECT(1476,1156), "S20466C14");
    /*is_ambiguous_... S20466C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C7*)(S20466C9*), ABISELECT(1476,1156), "S20466C14");
    /*is_ambiguous_... S20466C14::S20466C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C3*), ABISELECT(1488,1164), "S20466C14");
    /*is_ambiguous_... S20466C15::S20466C3 */ AMB_check_base_class_offset(lv, (S20466C3*)(S20466C15*), ABISELECT(1480,1160), "S20466C14");
    /*is_ambiguous_... S20466C9::S20466C3 */ AMB_check_base_class_offset(lv, (S20466C3*)(S20466C9*), ABISELECT(1480,1160), "S20466C14");
    check_base_class_offset(lv, (S20466C3*)(S20466C2*)(S20466C9*), ABISELECT(1480,1160), "S20466C14");
    /*is_ambiguous_... S20466C14::S20466C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C3*)(S20466C7*), ABISELECT(1544,1204), "S20466C14");
    /*is_ambiguous_... S20466C14::S20466C7 */ AMB_check_base_class_offset(lv, (S20466C3*)(S20466C7*), ABISELECT(1536,1200), "S20466C14");
    check_base_class_offset(lv, (S20466C7*)(S20466C15*), ABISELECT(1536,1200), "S20466C14");
    check_base_class_offset(lv, (S20466C15*), 0, "S20466C14");
    /*is_ambiguous_... S20466C14::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(1328,1052), "S20466C14");
    check_base_class_offset(lv, (S20466C2*)(S20466C9*), ABISELECT(1680,1312), "S20466C14");
    check_base_class_offset(lv, (S3216C8_nt*)(S20466C3*)(S20466C7*)(S20466C9*), ABISELECT(1832,1420), "S20466C14");
    check_base_class_offset(lv, (S20466C3*)(S20466C7*)(S20466C9*), ABISELECT(1824,1416), "S20466C14");
    check_base_class_offset(lv, (S20466C7*)(S20466C9*), ABISELECT(1824,1416), "S20466C14");
    check_base_class_offset(lv, (S20466C9*), ABISELECT(1680,1312), "S20466C14");
    check_base_class_offset(lv, (S3216C8_nt*)(S20466C3*)(S20466C13*), ABISELECT(1344,1060), "S20466C14");
    check_base_class_offset(lv, (S20466C3*)(S20466C13*), ABISELECT(1336,1056), "S20466C14");
    check_base_class_offset(lv, (S20466C13*), ABISELECT(1336,1056), "S20466C14");
    check_field_offset(lv, s20466c14f0, ABISELECT(1460,1144), "S20466C14.s20466c14f0");
    check_field_offset(lv, s20466c14f1, ABISELECT(1464,1148), "S20466C14.s20466c14f1");
    check_field_offset(lv, s20466c14f2, ABISELECT(1472,1152), "S20466C14.s20466c14f2");
    test_class_info(&lv, &cd_S20466C14);
    dp->~S20466C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20466C14(Test_S20466C14, "S20466C14", ABISELECT(2240,1744));

#else // __cplusplus

extern void _ZN9S20466C14C1Ev();
extern void _ZN9S20466C14D2Ev();
Name_Map name_map_S20466C14[] = {
  NSPAIR(_ZN9S20466C14C1Ev),
  NSPAIR(_ZN9S20466C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20466C3;
extern VTBL_ENTRY _ZTI8S20466C3[];
extern  VTBL_ENTRY _ZTV8S20466C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20466C3;
extern VTBL_ENTRY _ZTI8S20466C3[];
extern  VTBL_ENTRY _ZTV8S20466C3[];
extern Class_Descriptor cd_S20466C7;
extern VTBL_ENTRY _ZTI8S20466C7[];
extern  VTBL_ENTRY _ZTV8S20466C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C7[];
extern Class_Descriptor cd_S20466C15;
extern VTBL_ENTRY _ZTI9S20466C15[];
extern  VTBL_ENTRY _ZTV9S20466C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20466C15[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20466C2;
extern VTBL_ENTRY _ZTI8S20466C2[];
extern  VTBL_ENTRY _ZTV8S20466C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20466C3;
extern VTBL_ENTRY _ZTI8S20466C3[];
extern  VTBL_ENTRY _ZTV8S20466C3[];
extern Class_Descriptor cd_S20466C7;
extern VTBL_ENTRY _ZTI8S20466C7[];
extern  VTBL_ENTRY _ZTV8S20466C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C7[];
extern Class_Descriptor cd_S20466C9;
extern VTBL_ENTRY _ZTI8S20466C9[];
extern  VTBL_ENTRY _ZTV8S20466C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20466C3;
extern VTBL_ENTRY _ZTI8S20466C3[];
extern  VTBL_ENTRY _ZTV8S20466C3[];
extern Class_Descriptor cd_S20466C13;
extern VTBL_ENTRY _ZTI9S20466C13[];
extern  VTBL_ENTRY _ZTV9S20466C13[];
static Base_Class bases_S20466C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(1476,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
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1488,1164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20466C3,    ABISELECT(1480,1160), //bcp->offset
    17, //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
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1544,1204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20466C3,    ABISELECT(1536,1200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20466C7,    ABISELECT(1536,1200), //bcp->offset
    25, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20466C15,    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_S3216C8_nt,    ABISELECT(1328,1052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20466C2,    ABISELECT(1680,1312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1832,1420), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20466C3,    ABISELECT(1824,1416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20466C7,    ABISELECT(1824,1416), //bcp->offset
    45, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20466C9,    ABISELECT(1680,1312), //bcp->offset
    34, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1344,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20466C3,    ABISELECT(1336,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
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20466C13,    ABISELECT(1336,1056), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20466C14[];
extern void _ZN9S20466C14D1Ev();
extern void _ZN9S20466C14D0Ev();
extern void _ZN9S20466C143v10Ev();
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
extern void ABISELECT(_ZThn1336_N9S20466C14D1Ev,_ZThn1056_N9S20466C14D1Ev)();
extern void ABISELECT(_ZThn1336_N9S20466C14D0Ev,_ZThn1056_N9S20466C14D0Ev)();
extern void _ZN9S20466C132v9Ev();
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
extern void _ZN8S20466C22v4Ev();
extern void _ZN8S20466C92v6Ev();
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY vtc_S20466C14[] = {
  ABISELECT(1680,1312),
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  0,
  (VTBL_ENTRY)&(_ZTI9S20466C14[0]),
  (VTBL_ENTRY)&_ZN9S20466C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20466C14D0Ev,
  (VTBL_ENTRY)&_ZN9S20466C143v10Ev,
  ABISELECT(-1336,-1056),
  (VTBL_ENTRY)&(_ZTI9S20466C14[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1336_N9S20466C14D1Ev,_ZThn1056_N9S20466C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1336_N9S20466C14D0Ev,_ZThn1056_N9S20466C14D0Ev),
  (VTBL_ENTRY)&_ZN9S20466C132v9Ev,
  0,
  0,
  0,
  ABISELECT(-1480,-1160),
  (VTBL_ENTRY)&(_ZTI9S20466C14[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(-1536,-1200),
  (VTBL_ENTRY)&(_ZTI9S20466C14[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  ABISELECT(-1680,-1312),
  (VTBL_ENTRY)&(_ZTI9S20466C14[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20466C92v6Ev,
  ABISELECT(-348,-260),
  ABISELECT(-1824,-1416),
  (VTBL_ENTRY)&(_ZTI9S20466C14[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern VTBL_ENTRY _ZTV9S20466C14[];
static  VTBL_ENTRY _tg__ZTV9S20466C15__9S20466C14[] = {
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  0,
  (VTBL_ENTRY)&(_ZTI9S20466C15[0]),
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C3__9S20466C15__9S20466C14[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1160),
  (VTBL_ENTRY)&(_ZTI9S20466C15[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C7__9S20466C15__9S20466C14[] = {
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(-1536,-1200),
  (VTBL_ENTRY)&(_ZTI9S20466C15[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C7__9S20466C14[] = {
  ABISELECT(-60,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C7[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C22v4Ev();
extern void _ZN8S20466C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C9__9S20466C14[] = {
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C9[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20466C92v6Ev,
};
extern void _ZN8S20466C22v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C28S20466C9__9S20466C14[] = {
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C2[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C3__8S20466C28S20466C9__9S20466C14[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S20466C2[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C78S20466C9__A1__9S20466C14[] = {
  ABISELECT(-348,-260),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C7[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C3__8S20466C9__9S20466C14[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S20466C9[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C7__8S20466C9__9S20466C14[] = {
  ABISELECT(-348,-260),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20466C9[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
static  VTT_ENTRY vtt_S20466C14[] = {
  {&(_ZTV9S20466C14[6]),  6,51},
  {&(_tg__ZTV9S20466C15__9S20466C14[5]),  5,5},
  {&(_tg__ZTV8S20466C3__9S20466C15__9S20466C14[5]),  5,8},
  {&(_tg__ZTV8S20466C7__9S20466C15__9S20466C14[6]),  6,9},
  {&(_ZTV9S20466C14[22]),  22,51},
  {&(_ZTV9S20466C14[31]),  31,51},
  {&(_ZTV9S20466C14[43]),  43,51},
  {&(_ZTV9S20466C14[48]),  48,51},
  {&(_tg__ZTV8S20466C7__9S20466C14[3]),  3,6},
  {&(_tg__ZTV8S20466C9__9S20466C14[4]),  4,6},
  {&(_tg__ZTV8S20466C28S20466C9__9S20466C14[4]),  4,5},
  {&(_tg__ZTV8S20466C3__8S20466C28S20466C9__9S20466C14[5]),  5,8},
  {&(_tg__ZTV8S20466C78S20466C9__A1__9S20466C14[3]),  3,6},
  {&(_tg__ZTV8S20466C3__8S20466C9__9S20466C14[5]),  5,8},
  {&(_tg__ZTV8S20466C7__8S20466C9__9S20466C14[3]),  3,6},
};
extern VTBL_ENTRY _ZTI9S20466C14[];
extern  VTBL_ENTRY _ZTV9S20466C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20466C14[];
Class_Descriptor cd_S20466C14 = {  "S20466C14", // class name
  bases_S20466C14, 16,
  &(vtc_S20466C14[0]), // expected_vtbl_contents
  &(vtt_S20466C14[0]), // expected_vtt_contents
  ABISELECT(2240,1744), // object size
  NSPAIRA(_ZTI9S20466C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20466C14),51, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20466C14),15, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20466C1  : virtual S20466C2 , S20466C5 , S20466C11 , S20466C14 , virtual S20466C15 {
  int s20466c1f0[2];
  void *s20466c1f1;
  __tsi64 s20466c1f2;
  void *s20466c1f3;
  long double s20466c1f4;
  int s20466c1f5;
  ::S20466C3 s20466c1f6;
  void *s20466c1f7;
  virtual  ~S20466C1(); // _ZN8S20466C1D2Ev
  S20466C1(); // tgen
};
//SIG(1 S20466C1) C1{ VBC2{ VBC3{ BC4{ m Fi} v1 v2 v3 FC4[3] FC4[2] Fp Fs FC4} VBC4 v4 FC3 FD Fp[2] FC3} BC5{ BC6{ v5 Fp[7] FC2 FD Fi FL Fp FC2 Fp[5] Fi[8] Fp} BC7{ BC3 VBC4 FD FL FC3 Fp Fs[3]} BC8{ VBC4 BC9{ VBC3 VBC4 BC2 BC7 v6 Fp[2] Fl Fi FC3[5]} BC2 BC7 v7 Fi FC10{} Fp[2]} vd} BC11{ v8 Fi FC6 FL Fi FC12{ VBC13{ BC14{ BC4 v12 v13 v14 FC4[3] FC4[2] Fp Fs FC4} VBC4 FD FL FC14 Fp Fs[3]} BC15{ BC14 vd v15 Fp[7] Fi[2] FL Fi} VBC14 BC16{ VBC14 VBC4 BC17{ VBC14 VBC4 v16 FC14 FD Fp[2] FC14} BC13 v17 Fp[2] Fl Fi FC14[5]} BC17 v11 Fi[2] FD FC17[10] Fi} Fi[2]} BC18{ BC19{ VBC4 VBC3 VBC7 Fp[2] Fi FC7[8] FD[9]} BC4 VBC9 BC20{ BC3 vd v9 Fp[7] Fi[2] FL Fi} vd v10 Fi Fp Fi} VBC19 vd Fi[2] Fp FL Fp FD Fi FC3 Fp}


 S20466C1 ::~S20466C1(){ note_dtor("S20466C1", this);}
S20466C1 ::S20466C1(){ note_ctor("S20466C1", this);} // tgen

static void Test_S20466C1()
{
  extern Class_Descriptor cd_S20466C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(580,1725)];
    init_test(&cd_S20466C1, buf);
    S20466C1 *dp, &lv = *(dp=new (buf) S20466C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(9264,6896), "sizeof(S20466C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20466C1)");
    /*is_ambiguous_... S20466C1::S20466C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C3*), ABISELECT(7176,5260), "S20466C1");
    /*is_ambiguous_... S20466C1::S20466C2 */ AMB_check_base_class_offset(lv, (S20466C3*)(S20466C2*), ABISELECT(7168,5256), "S20466C1");
    /*is_ambiguous_... S20466C9::S20466C3 */ AMB_check_base_class_offset(lv, (S20466C3*)(S20466C9*)(S20466C8*)(S20466C5*), ABISELECT(7168,5256), "S20466C1");
    check_base_class_offset(lv, (S20466C3*)(S20466C2*)(S20466C9*)(S20466C8*)(S20466C5*), ABISELECT(7168,5256), "S20466C1");
    /*is_ambiguous_... S20466C8::S20466C2 */ AMB_check_base_class_offset(lv, (S20466C3*)(S20466C2*)(S20466C8*)(S20466C5*), ABISELECT(7168,5256), "S20466C1");
    /*is_ambiguous_... S20466C15::S20466C3 */ AMB_check_base_class_offset(lv, (S20466C3*)(S20466C15*)(S20466C14*), ABISELECT(7168,5256), "S20466C1");
    /*is_ambiguous_... S20466C1::S20466C9 */ AMB_check_base_class_offset(lv, (S20466C3*)(S20466C9*), ABISELECT(7168,5256), "S20466C1");
    /*is_ambiguous_... S20466C1::S20466C9 */ AMB_check_base_class_offset(lv, (S20466C3*)(S20466C2*)(S20466C9*), ABISELECT(7168,5256), "S20466C1");
    /*is_ambiguous_... S20466C1::S20466C15 */ AMB_check_base_class_offset(lv, (S20466C3*)(S20466C15*), ABISELECT(7168,5256), "S20466C1");
    /*is_ambiguous_... S20466C1::S20466C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C2*), ABISELECT(7216,5296), "S20466C1");
    /*is_ambiguous_... S20466C5::S20466C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C7*)(S20466C5*), ABISELECT(7216,5296), "S20466C1");
    /*is_ambiguous_... S20466C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C8*)(S20466C5*), ABISELECT(7216,5296), "S20466C1");
    /*is_ambiguous_... S20466C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C9*)(S20466C8*)(S20466C5*), ABISELECT(7216,5296), "S20466C1");
    /*is_ambiguous_... S20466C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C2*)(S20466C9*)(S20466C8*)(S20466C5*), ABISELECT(7216,5296), "S20466C1");
    /*is_ambiguous_... S20466C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C7*)(S20466C9*)(S20466C8*)(S20466C5*), ABISELECT(7216,5296), "S20466C1");
    /*is_ambiguous_... S20466C8::S20466C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C2*)(S20466C8*)(S20466C5*), ABISELECT(7216,5296), "S20466C1");
    /*is_ambiguous_... S20466C8::S20466C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C7*)(S20466C8*)(S20466C5*), ABISELECT(7216,5296), "S20466C1");
    /*is_ambiguous_... S20466C15::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C15*)(S20466C14*), ABISELECT(7216,5296), "S20466C1");
    /*is_ambiguous_... S20466C1::S20466C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C7*), ABISELECT(7216,5296), "S20466C1");
    /*is_ambiguous_... S20466C1::S20466C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C9*), ABISELECT(7216,5296), "S20466C1");
    /*is_ambiguous_... S20466C1::S20466C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C2*)(S20466C9*), ABISELECT(7216,5296), "S20466C1");
    /*is_ambiguous_... S20466C1::S20466C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C7*)(S20466C9*), ABISELECT(7216,5296), "S20466C1");
    /*is_ambiguous_... S20466C1::S20466C15 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C15*), ABISELECT(7216,5296), "S20466C1");
    /*is_ambiguous_... S20466C1::S20466C2 */ AMB_check_base_class_offset(lv, (S20466C2*), ABISELECT(7024,5152), "S20466C1");
    check_base_class_offset(lv, (S20466C6*)(S20466C5*), 0, "S20466C1");
    /*is_ambiguous_... S20466C5::S20466C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C3*)(S20466C7*)(S20466C5*), ABISELECT(616,416), "S20466C1");
    /*is_ambiguous_... S20466C5::S20466C7 */ AMB_check_base_class_offset(lv, (S20466C3*)(S20466C7*)(S20466C5*), ABISELECT(608,412), "S20466C1");
    /*is_ambiguous_... S20466C5::S20466C7 */ AMB_check_base_class_offset(lv, (S20466C7*)(S20466C5*), ABISELECT(608,412), "S20466C1");
    check_base_class_offset(lv, (S20466C2*)(S20466C9*)(S20466C8*)(S20466C5*), ABISELECT(752,524), "S20466C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S20466C3*)(S20466C7*)(S20466C9*)(S20466C8*)(S20466C5*), ABISELECT(904,632), "S20466C1");
    check_base_class_offset(lv, (S20466C3*)(S20466C7*)(S20466C9*)(S20466C8*)(S20466C5*), ABISELECT(896,628), "S20466C1");
    check_base_class_offset(lv, (S20466C7*)(S20466C9*)(S20466C8*)(S20466C5*), ABISELECT(896,628), "S20466C1");
    check_base_class_offset(lv, (S20466C9*)(S20466C8*)(S20466C5*), ABISELECT(752,524), "S20466C1");
    /*is_ambiguous_... S20466C8::S20466C2 */ AMB_check_base_class_offset(lv, (S20466C2*)(S20466C8*)(S20466C5*), ABISELECT(1312,956), "S20466C1");
    /*is_ambiguous_... S20466C8::S20466C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C3*)(S20466C7*)(S20466C8*)(S20466C5*), ABISELECT(1464,1064), "S20466C1");
    /*is_ambiguous_... S20466C8::S20466C7 */ AMB_check_base_class_offset(lv, (S20466C3*)(S20466C7*)(S20466C8*)(S20466C5*), ABISELECT(1456,1060), "S20466C1");
    /*is_ambiguous_... S20466C8::S20466C7 */ AMB_check_base_class_offset(lv, (S20466C7*)(S20466C8*)(S20466C5*), ABISELECT(1456,1060), "S20466C1");
    check_base_class_offset(lv, (S20466C8*)(S20466C5*), ABISELECT(752,524), "S20466C1");
    check_base_class_offset(lv, (S20466C5*), 0, "S20466C1");
    check_base_class_offset(lv, (S20466C11*), ABISELECT(1616,1188), "S20466C1");
    /*is_ambiguous_... S20466C1::S20466C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C3*)(S20466C7*), ABISELECT(7240,5304), "S20466C1");
    /*is_ambiguous_... S20466C1::S20466C7 */ AMB_check_base_class_offset(lv, (S20466C3*)(S20466C7*), ABISELECT(7232,5300), "S20466C1");
    check_base_class_offset(lv, (S20466C7*)(S20466C15*)(S20466C14*), ABISELECT(7232,5300), "S20466C1");
    /*is_ambiguous_... S20466C1::S20466C15 */ AMB_check_base_class_offset(lv, (S20466C7*)(S20466C15*), ABISELECT(7232,5300), "S20466C1");
    check_base_class_offset(lv, (S20466C15*)(S20466C14*), ABISELECT(5424,3912), "S20466C1");
    /*is_ambiguous_... S20466C14::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C14*), ABISELECT(6752,4964), "S20466C1");
    /*is_ambiguous_... S20466C1::S20466C9 */ AMB_check_base_class_offset(lv, (S20466C2*)(S20466C9*), ABISELECT(7376,5412), "S20466C1");
    /*is_ambiguous_... S20466C1::S20466C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20466C3*)(S20466C7*)(S20466C9*), ABISELECT(7528,5520), "S20466C1");
    /*is_ambiguous_... S20466C1::S20466C9 */ AMB_check_base_class_offset(lv, (S20466C3*)(S20466C7*)(S20466C9*), ABISELECT(7520,5516), "S20466C1");
    /*is_ambiguous_... S20466C1::S20466C9 */ AMB_check_base_class_offset(lv, (S20466C7*)(S20466C9*), ABISELECT(7520,5516), "S20466C1");
    check_base_class_offset(lv, (S20466C9*)(S20466C14*), ABISELECT(7376,5412), "S20466C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S20466C3*)(S20466C13*)(S20466C14*), ABISELECT(6768,4972), "S20466C1");
    check_base_class_offset(lv, (S20466C3*)(S20466C13*)(S20466C14*), ABISELECT(6760,4968), "S20466C1");
    check_base_class_offset(lv, (S20466C13*)(S20466C14*), ABISELECT(6760,4968), "S20466C1");
    check_base_class_offset(lv, (S20466C14*), ABISELECT(5424,3912), "S20466C1");
    /*is_ambiguous_... S20466C1::S20466C15 */ AMB_check_base_class_offset(lv, (S20466C15*), ABISELECT(7936,5844), "S20466C1");
    check_field_offset(lv, s20466c1f0, ABISELECT(6900,5068), "S20466C1.s20466c1f0");
    check_field_offset(lv, s20466c1f1, ABISELECT(6912,5076), "S20466C1.s20466c1f1");
    check_field_offset(lv, s20466c1f2, ABISELECT(6920,5080), "S20466C1.s20466c1f2");
    check_field_offset(lv, s20466c1f3, ABISELECT(6928,5088), "S20466C1.s20466c1f3");
    check_field_offset(lv, s20466c1f4, ABISELECT(6944,5092), "S20466C1.s20466c1f4");
    check_field_offset(lv, s20466c1f5, ABISELECT(6960,5104), "S20466C1.s20466c1f5");
    check_field_offset(lv, s20466c1f6, ABISELECT(6968,5108), "S20466C1.s20466c1f6");
    check_field_offset(lv, s20466c1f7, ABISELECT(7016,5148), "S20466C1.s20466c1f7");
    test_class_info(&lv, &cd_S20466C1);
    dp->~S20466C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20466C1(Test_S20466C1, "S20466C1", ABISELECT(9264,6896));

#else // __cplusplus

extern void _ZN8S20466C1C1Ev();
extern void _ZN8S20466C1D2Ev();
Name_Map name_map_S20466C1[] = {
  NSPAIR(_ZN8S20466C1C1Ev),
  NSPAIR(_ZN8S20466C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20466C3;
extern VTBL_ENTRY _ZTI8S20466C3[];
extern  VTBL_ENTRY _ZTV8S20466C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20466C2;
extern VTBL_ENTRY _ZTI8S20466C2[];
extern  VTBL_ENTRY _ZTV8S20466C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C2[];
extern Class_Descriptor cd_S20466C6;
extern VTBL_ENTRY _ZTI8S20466C6[];
extern  VTBL_ENTRY _ZTV8S20466C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20466C3;
extern VTBL_ENTRY _ZTI8S20466C3[];
extern  VTBL_ENTRY _ZTV8S20466C3[];
extern Class_Descriptor cd_S20466C7;
extern VTBL_ENTRY _ZTI8S20466C7[];
extern  VTBL_ENTRY _ZTV8S20466C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C7[];
extern Class_Descriptor cd_S20466C2;
extern VTBL_ENTRY _ZTI8S20466C2[];
extern  VTBL_ENTRY _ZTV8S20466C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20466C3;
extern VTBL_ENTRY _ZTI8S20466C3[];
extern  VTBL_ENTRY _ZTV8S20466C3[];
extern Class_Descriptor cd_S20466C7;
extern VTBL_ENTRY _ZTI8S20466C7[];
extern  VTBL_ENTRY _ZTV8S20466C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C7[];
extern Class_Descriptor cd_S20466C9;
extern VTBL_ENTRY _ZTI8S20466C9[];
extern  VTBL_ENTRY _ZTV8S20466C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C9[];
extern Class_Descriptor cd_S20466C2;
extern VTBL_ENTRY _ZTI8S20466C2[];
extern  VTBL_ENTRY _ZTV8S20466C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20466C3;
extern VTBL_ENTRY _ZTI8S20466C3[];
extern  VTBL_ENTRY _ZTV8S20466C3[];
extern Class_Descriptor cd_S20466C7;
extern VTBL_ENTRY _ZTI8S20466C7[];
extern  VTBL_ENTRY _ZTV8S20466C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C7[];
extern Class_Descriptor cd_S20466C8;
extern VTBL_ENTRY _ZTI8S20466C8[];
extern  VTBL_ENTRY _ZTV8S20466C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C8[];
extern Class_Descriptor cd_S20466C5;
extern VTBL_ENTRY _ZTI8S20466C5[];
extern  VTBL_ENTRY _ZTV8S20466C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C5[];
extern Class_Descriptor cd_S20466C11;
extern VTBL_ENTRY _ZTI9S20466C11[];
extern  VTBL_ENTRY _ZTV9S20466C11[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20466C3;
extern VTBL_ENTRY _ZTI8S20466C3[];
extern  VTBL_ENTRY _ZTV8S20466C3[];
extern Class_Descriptor cd_S20466C7;
extern VTBL_ENTRY _ZTI8S20466C7[];
extern  VTBL_ENTRY _ZTV8S20466C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C7[];
extern Class_Descriptor cd_S20466C15;
extern VTBL_ENTRY _ZTI9S20466C15[];
extern  VTBL_ENTRY _ZTV9S20466C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20466C15[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20466C2;
extern VTBL_ENTRY _ZTI8S20466C2[];
extern  VTBL_ENTRY _ZTV8S20466C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20466C3;
extern VTBL_ENTRY _ZTI8S20466C3[];
extern  VTBL_ENTRY _ZTV8S20466C3[];
extern Class_Descriptor cd_S20466C7;
extern VTBL_ENTRY _ZTI8S20466C7[];
extern  VTBL_ENTRY _ZTV8S20466C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C7[];
extern Class_Descriptor cd_S20466C9;
extern VTBL_ENTRY _ZTI8S20466C9[];
extern  VTBL_ENTRY _ZTV8S20466C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20466C3;
extern VTBL_ENTRY _ZTI8S20466C3[];
extern  VTBL_ENTRY _ZTV8S20466C3[];
extern Class_Descriptor cd_S20466C13;
extern VTBL_ENTRY _ZTI9S20466C13[];
extern  VTBL_ENTRY _ZTV9S20466C13[];
extern Class_Descriptor cd_S20466C14;
extern VTBL_ENTRY _ZTI9S20466C14[];
extern  VTBL_ENTRY _ZTV9S20466C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20466C14[];
extern Class_Descriptor cd_S20466C15;
extern VTBL_ENTRY _ZTI9S20466C15[];
extern  VTBL_ENTRY _ZTV9S20466C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20466C15[];
static Base_Class bases_S20466C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(7176,5260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20466C3,    ABISELECT(7168,5256), //bcp->offset
    67, //bcp->virtual_function_table_offset
    5, //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
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(7216,5296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20466C2,    ABISELECT(7024,5152), //bcp->offset
    61, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20466C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    18, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(616,416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20466C3,    ABISELECT(608,412), //bcp->offset
    -1, //bcp->virtual_function_table_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
    7, //immediately_derived
  0, 0},
  {&cd_S20466C7,    ABISELECT(608,412), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20466C2,    ABISELECT(752,524), //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
    13, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(904,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
    10, //immediately_derived
  0, 0},
  {&cd_S20466C3,    ABISELECT(896,628), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20466C7,    ABISELECT(896,628), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20466C9,    ABISELECT(752,524), //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
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20466C2,    ABISELECT(1312,956), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1464,1064), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20466C3,    ABISELECT(1456,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20466C7,    ABISELECT(1456,1060), //bcp->offset
    35, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20466C8,    ABISELECT(752,524), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20466C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20466C11,    ABISELECT(1616,1188), //bcp->offset
    41, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(7240,5304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20466C3,    ABISELECT(7232,5300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20466C7,    ABISELECT(7232,5300), //bcp->offset
    75, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20466C15,    ABISELECT(5424,3912), //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
    23, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(6752,4964), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20466C2,    ABISELECT(7376,5412), //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
    5, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(7528,5520), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20466C3,    ABISELECT(7520,5516), //bcp->offset
    -1, //bcp->virtual_function_table_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
    28, //immediately_derived
  0, 0},
  {&cd_S20466C7,    ABISELECT(7520,5516), //bcp->offset
    95, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20466C9,    ABISELECT(7376,5412), //bcp->offset
    84, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(6768,4972), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20466C3,    ABISELECT(6760,4968), //bcp->offset
    -1, //bcp->virtual_function_table_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
    32, //immediately_derived
  0, 0},
  {&cd_S20466C13,    ABISELECT(6760,4968), //bcp->offset
    53, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20466C14,    ABISELECT(5424,3912), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20466C15,    ABISELECT(7936,5844), //bcp->offset
    101, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20466C1[];
extern void _ZN8S20466C62v5Ev();
extern void _ZN8S20466C1D1Ev();
extern void _ZN8S20466C1D0Ev();
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
extern void _ZN8S20466C22v4Ev();
extern void _ZN8S20466C92v6Ev();
extern void _ZN8S20466C82v7Ev();
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
extern void _ZN8S20466C22v4Ev();
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
extern void _ZN9S20466C112v8Ev();
extern void ABISELECT(_ZThn5424_N8S20466C1D1Ev,_ZThn3912_N8S20466C1D1Ev)();
extern void ABISELECT(_ZThn5424_N8S20466C1D0Ev,_ZThn3912_N8S20466C1D0Ev)();
extern void _ZN9S20466C143v10Ev();
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
extern void ABISELECT(_ZThn6760_N8S20466C1D1Ev,_ZThn4968_N8S20466C1D1Ev)();
extern void ABISELECT(_ZThn6760_N8S20466C1D0Ev,_ZThn4968_N8S20466C1D0Ev)();
extern void _ZN9S20466C132v9Ev();
extern void _ZN8S20466C22v4Ev();
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
extern void _ZN8S20466C22v4Ev();
extern void _ZN8S20466C92v6Ev();
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY vtc_S20466C1[] = {
  ABISELECT(7936,5844),
  ABISELECT(7376,5412),
  ABISELECT(7232,5300),
  ABISELECT(7024,5152),
  ABISELECT(7168,5256),
  ABISELECT(7216,5296),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C1[0]),
  (VTBL_ENTRY)&_ZN8S20466C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20466C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20466C1D0Ev,
  ABISELECT(6608,4884),
  ABISELECT(-608,-412),
  (VTBL_ENTRY)&(_ZTI8S20466C1[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
  ABISELECT(6464,4772),
  ABISELECT(6416,4732),
  ABISELECT(-752,-524),
  (VTBL_ENTRY)&(_ZTI8S20466C1[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20466C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20466C82v7Ev,
  ABISELECT(6320,4668),
  ABISELECT(-896,-628),
  (VTBL_ENTRY)&(_ZTI8S20466C1[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
  ABISELECT(5904,4340),
  ABISELECT(5856,4300),
  ABISELECT(-1312,-956),
  (VTBL_ENTRY)&(_ZTI8S20466C1[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
  ABISELECT(5760,4236),
  ABISELECT(-1456,-1060),
  (VTBL_ENTRY)&(_ZTI8S20466C1[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
  ABISELECT(-1616,-1188),
  (VTBL_ENTRY)&(_ZTI8S20466C1[0]),
  (VTBL_ENTRY)&_ZN9S20466C112v8Ev,
  ABISELECT(1952,1500),
  ABISELECT(1808,1388),
  ABISELECT(1744,1344),
  ABISELECT(1792,1384),
  ABISELECT(-5424,-3912),
  (VTBL_ENTRY)&(_ZTI8S20466C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn5424_N8S20466C1D1Ev,_ZThn3912_N8S20466C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn5424_N8S20466C1D0Ev,_ZThn3912_N8S20466C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20466C143v10Ev,
  ABISELECT(-6760,-4968),
  (VTBL_ENTRY)&(_ZTI8S20466C1[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn6760_N8S20466C1D1Ev,_ZThn4968_N8S20466C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn6760_N8S20466C1D0Ev,_ZThn4968_N8S20466C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20466C132v9Ev,
  0,
  ABISELECT(192,144),
  ABISELECT(144,104),
  ABISELECT(-7024,-5152),
  (VTBL_ENTRY)&(_ZTI8S20466C1[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
  0,
  0,
  0,
  ABISELECT(-7168,-5256),
  (VTBL_ENTRY)&(_ZTI8S20466C1[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
  0,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7232,-5300),
  (VTBL_ENTRY)&(_ZTI8S20466C1[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-160,-116),
  ABISELECT(-208,-156),
  ABISELECT(-7376,-5412),
  (VTBL_ENTRY)&(_ZTI8S20466C1[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20466C92v6Ev,
  ABISELECT(-304,-220),
  ABISELECT(-7520,-5516),
  (VTBL_ENTRY)&(_ZTI8S20466C1[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
  ABISELECT(-704,-544),
  ABISELECT(-768,-588),
  ABISELECT(-720,-548),
  ABISELECT(-7936,-5844),
  (VTBL_ENTRY)&(_ZTI8S20466C1[0]),
};
extern VTBL_ENTRY _ZTV8S20466C1[];
extern void _ZN8S20466C62v5Ev();
extern void _ZN8S20466C5D1Ev();
extern void _ZN8S20466C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C5__8S20466C1[] = {
  ABISELECT(7168,5256),
  ABISELECT(7216,5296),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C5[0]),
  (VTBL_ENTRY)&_ZN8S20466C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20466C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20466C5D0Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C78S20466C5__8S20466C1[] = {
  ABISELECT(6608,4884),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C7[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C22v4Ev();
extern void _ZN8S20466C92v6Ev();
extern void _ZN8S20466C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C88S20466C5__8S20466C1[] = {
  ABISELECT(6464,4772),
  ABISELECT(6416,4732),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C8[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20466C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20466C82v7Ev,
};
extern void _ZN8S20466C22v4Ev();
extern void _ZN8S20466C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C98S20466C88S20466C5__8S20466C1[] = {
  ABISELECT(6464,4772),
  ABISELECT(6416,4732),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C9[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20466C92v6Ev,
};
extern void _ZN8S20466C22v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C28S20466C98S20466C88S20466C5__A1__8S20466C1[] = {
  ABISELECT(6464,4772),
  ABISELECT(6416,4732),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C2[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C3__8S20466C28S20466C98S20466C88S20466C5__A1__8S20466C1[] = {
  0,
  0,
  0,
  ABISELECT(-6416,-4732),
  (VTBL_ENTRY)&(_ZTI8S20466C2[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C78S20466C98S20466C88S20466C5__A1__8S20466C1[] = {
  ABISELECT(6320,4668),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C7[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C3__8S20466C98S20466C88S20466C5__8S20466C1[] = {
  0,
  0,
  0,
  ABISELECT(-6416,-4732),
  (VTBL_ENTRY)&(_ZTI8S20466C9[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C7__8S20466C98S20466C88S20466C5__8S20466C1[] = {
  ABISELECT(6320,4668),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20466C9[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C22v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C28S20466C88S20466C5__A2__8S20466C1[] = {
  ABISELECT(5904,4340),
  ABISELECT(5856,4300),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C2[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C3__8S20466C28S20466C88S20466C5__A2__8S20466C1[] = {
  0,
  0,
  0,
  ABISELECT(-5856,-4300),
  (VTBL_ENTRY)&(_ZTI8S20466C2[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C78S20466C88S20466C5__A2__8S20466C1[] = {
  ABISELECT(5760,4236),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C7[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C3__8S20466C88S20466C5__8S20466C1[] = {
  0,
  0,
  0,
  ABISELECT(-6416,-4732),
  (VTBL_ENTRY)&(_ZTI8S20466C8[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C78S20466C9__8S20466C88S20466C5__8S20466C1[] = {
  ABISELECT(6320,4668),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20466C8[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C22v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C2__A1__8S20466C88S20466C5__8S20466C1[] = {
  ABISELECT(5904,4340),
  ABISELECT(5856,4300),
  ABISELECT(-560,-432),
  (VTBL_ENTRY)&(_ZTI8S20466C8[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C7__A1__8S20466C88S20466C5__8S20466C1[] = {
  ABISELECT(5760,4236),
  ABISELECT(-704,-536),
  (VTBL_ENTRY)&(_ZTI8S20466C8[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C7__8S20466C5__8S20466C1[] = {
  ABISELECT(6608,4884),
  ABISELECT(-608,-412),
  (VTBL_ENTRY)&(_ZTI8S20466C5[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C22v4Ev();
extern void _ZN8S20466C92v6Ev();
extern void _ZN8S20466C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C8__8S20466C5__8S20466C1[] = {
  ABISELECT(6464,4772),
  ABISELECT(6416,4732),
  ABISELECT(-752,-524),
  (VTBL_ENTRY)&(_ZTI8S20466C5[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20466C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20466C82v7Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C3__A1__8S20466C5__8S20466C1[] = {
  0,
  0,
  0,
  ABISELECT(-7168,-5256),
  (VTBL_ENTRY)&(_ZTI8S20466C5[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C78S20466C98S20466C8__A1__8S20466C5__8S20466C1[] = {
  ABISELECT(6320,4668),
  ABISELECT(-896,-628),
  (VTBL_ENTRY)&(_ZTI8S20466C5[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C22v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C28S20466C8__A1__8S20466C5__8S20466C1[] = {
  ABISELECT(5904,4340),
  ABISELECT(5856,4300),
  ABISELECT(-1312,-956),
  (VTBL_ENTRY)&(_ZTI8S20466C5[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C78S20466C8__A2__8S20466C5__8S20466C1[] = {
  ABISELECT(5760,4236),
  ABISELECT(-1456,-1060),
  (VTBL_ENTRY)&(_ZTI8S20466C5[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN9S20466C14D1Ev();
extern void _ZN9S20466C14D0Ev();
extern void _ZN9S20466C143v10Ev();
static  VTBL_ENTRY _tg__ZTV9S20466C14__8S20466C1[] = {
  ABISELECT(1952,1500),
  ABISELECT(1808,1388),
  ABISELECT(1744,1344),
  ABISELECT(1792,1384),
  0,
  (VTBL_ENTRY)&(_ZTI9S20466C14[0]),
  (VTBL_ENTRY)&_ZN9S20466C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20466C14D0Ev,
  (VTBL_ENTRY)&_ZN9S20466C143v10Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20466C159S20466C14__8S20466C1[] = {
  ABISELECT(1808,1388),
  ABISELECT(1744,1344),
  ABISELECT(1792,1384),
  0,
  (VTBL_ENTRY)&(_ZTI9S20466C15[0]),
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C3__9S20466C159S20466C14__8S20466C1[] = {
  0,
  0,
  0,
  ABISELECT(-1744,-1344),
  (VTBL_ENTRY)&(_ZTI9S20466C15[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C7__9S20466C159S20466C14__8S20466C1[] = {
  0,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-1808,-1388),
  (VTBL_ENTRY)&(_ZTI9S20466C15[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C3__9S20466C14__8S20466C1[] = {
  0,
  0,
  0,
  ABISELECT(-1744,-1344),
  (VTBL_ENTRY)&(_ZTI9S20466C14[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C7__9S20466C14__8S20466C1[] = {
  0,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-1808,-1388),
  (VTBL_ENTRY)&(_ZTI9S20466C14[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C22v4Ev();
extern void _ZN8S20466C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C9__9S20466C14__8S20466C1[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-160,-116),
  ABISELECT(-208,-156),
  ABISELECT(-1952,-1500),
  (VTBL_ENTRY)&(_ZTI9S20466C14[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20466C92v6Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C78S20466C9__A1__9S20466C14__8S20466C1[] = {
  ABISELECT(-304,-220),
  ABISELECT(-2096,-1604),
  (VTBL_ENTRY)&(_ZTI9S20466C14[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C22v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C2__8S20466C1[] = {
  ABISELECT(192,144),
  ABISELECT(144,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C2[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C3__8S20466C2__8S20466C1[] = {
  0,
  0,
  0,
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20466C2[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C7__A3__8S20466C1[] = {
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C7[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C22v4Ev();
extern void _ZN8S20466C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C9__A1__8S20466C1[] = {
  ABISELECT(-160,-116),
  ABISELECT(-208,-156),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C9[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20466C92v6Ev,
};
extern void _ZN8S20466C22v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C28S20466C9__A3__8S20466C1[] = {
  ABISELECT(-160,-116),
  ABISELECT(-208,-156),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C2[0]),
  (VTBL_ENTRY)&_ZN8S20466C22v4Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C3__8S20466C28S20466C9__A3__8S20466C1[] = {
  0,
  0,
  0,
  ABISELECT(208,156),
  (VTBL_ENTRY)&(_ZTI8S20466C2[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C78S20466C9__A4__8S20466C1[] = {
  ABISELECT(-304,-220),
  0,
  (VTBL_ENTRY)&(_ZTI8S20466C7[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C3__8S20466C9__A1__8S20466C1[] = {
  0,
  0,
  0,
  ABISELECT(208,156),
  (VTBL_ENTRY)&(_ZTI8S20466C9[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C7__8S20466C9__A1__8S20466C1[] = {
  ABISELECT(-304,-220),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20466C9[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20466C15__A1__8S20466C1[] = {
  ABISELECT(-704,-544),
  ABISELECT(-768,-588),
  ABISELECT(-720,-548),
  0,
  (VTBL_ENTRY)&(_ZTI9S20466C15[0]),
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C3__9S20466C15__A1__8S20466C1[] = {
  0,
  0,
  0,
  ABISELECT(768,588),
  (VTBL_ENTRY)&(_ZTI9S20466C15[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
extern void _ZN8S20466C32v1Ev();
extern void _ZN8S20466C32v2Ev();
extern void _ZN8S20466C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20466C7__9S20466C15__A1__8S20466C1[] = {
  0,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(704,544),
  (VTBL_ENTRY)&(_ZTI9S20466C15[0]),
  (VTBL_ENTRY)&_ZN8S20466C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20466C32v3Ev,
};
static  VTT_ENTRY vtt_S20466C1[] = {
  {&(_ZTV8S20466C1[8]),  8,106},
  {&(_tg__ZTV8S20466C5__8S20466C1[4]),  4,7},
  {&(_tg__ZTV8S20466C78S20466C5__8S20466C1[3]),  3,6},
  {&(_tg__ZTV8S20466C88S20466C5__8S20466C1[4]),  4,7},
  {&(_tg__ZTV8S20466C98S20466C88S20466C5__8S20466C1[4]),  4,6},
  {&(_tg__ZTV8S20466C28S20466C98S20466C88S20466C5__A1__8S20466C1[4]),  4,5},
  {&(_tg__ZTV8S20466C3__8S20466C28S20466C98S20466C88S20466C5__A1__8S20466C1[5]),  5,8},
  {&(_tg__ZTV8S20466C78S20466C98S20466C88S20466C5__A1__8S20466C1[3]),  3,6},
  {&(_tg__ZTV8S20466C3__8S20466C98S20466C88S20466C5__8S20466C1[5]),  5,8},
  {&(_tg__ZTV8S20466C7__8S20466C98S20466C88S20466C5__8S20466C1[3]),  3,6},
  {&(_tg__ZTV8S20466C28S20466C88S20466C5__A2__8S20466C1[4]),  4,5},
  {&(_tg__ZTV8S20466C3__8S20466C28S20466C88S20466C5__A2__8S20466C1[5]),  5,8},
  {&(_tg__ZTV8S20466C78S20466C88S20466C5__A2__8S20466C1[3]),  3,6},
  {&(_tg__ZTV8S20466C3__8S20466C88S20466C5__8S20466C1[5]),  5,8},
  {&(_tg__ZTV8S20466C78S20466C9__8S20466C88S20466C5__8S20466C1[3]),  3,6},
  {&(_tg__ZTV8S20466C2__A1__8S20466C88S20466C5__8S20466C1[4]),  4,5},
  {&(_tg__ZTV8S20466C7__A1__8S20466C88S20466C5__8S20466C1[3]),  3,6},
  {&(_tg__ZTV8S20466C7__8S20466C5__8S20466C1[3]),  3,6},
  {&(_tg__ZTV8S20466C8__8S20466C5__8S20466C1[4]),  4,7},
  {&(_tg__ZTV8S20466C3__A1__8S20466C5__8S20466C1[5]),  5,8},
  {&(_tg__ZTV8S20466C78S20466C98S20466C8__A1__8S20466C5__8S20466C1[3]),  3,6},
  {&(_tg__ZTV8S20466C28S20466C8__A1__8S20466C5__8S20466C1[4]),  4,5},
  {&(_tg__ZTV8S20466C78S20466C8__A2__8S20466C5__8S20466C1[3]),  3,6},
  {&(_tg__ZTV9S20466C14__8S20466C1[6]),  6,9},
  {&(_tg__ZTV9S20466C159S20466C14__8S20466C1[5]),  5,5},
  {&(_tg__ZTV8S20466C3__9S20466C159S20466C14__8S20466C1[5]),  5,8},
  {&(_tg__ZTV8S20466C7__9S20466C159S20466C14__8S20466C1[6]),  6,9},
  {&(_tg__ZTV8S20466C3__9S20466C14__8S20466C1[5]),  5,8},
  {&(_tg__ZTV8S20466C7__9S20466C14__8S20466C1[6]),  6,9},
  {&(_tg__ZTV8S20466C9__9S20466C14__8S20466C1[9]),  9,11},
  {&(_tg__ZTV8S20466C78S20466C9__A1__9S20466C14__8S20466C1[3]),  3,6},
  {&(_ZTV8S20466C1[66]),  66,106},
  {&(_ZTV8S20466C1[72]),  72,106},
  {&(_ZTV8S20466C1[14]),  14,106},
  {&(_ZTV8S20466C1[21]),  21,106},
  {&(_ZTV8S20466C1[27]),  27,106},
  {&(_ZTV8S20466C1[34]),  34,106},
  {&(_ZTV8S20466C1[38]),  38,106},
  {&(_ZTV8S20466C1[50]),  50,106},
  {&(_ZTV8S20466C1[81]),  81,106},
  {&(_ZTV8S20466C1[93]),  93,106},
  {&(_ZTV8S20466C1[98]),  98,106},
  {&(_ZTV8S20466C1[106]),  106,106},
  {&(_tg__ZTV8S20466C2__8S20466C1[4]),  4,5},
  {&(_tg__ZTV8S20466C3__8S20466C2__8S20466C1[5]),  5,8},
  {&(_tg__ZTV8S20466C7__A3__8S20466C1[3]),  3,6},
  {&(_tg__ZTV8S20466C9__A1__8S20466C1[4]),  4,6},
  {&(_tg__ZTV8S20466C28S20466C9__A3__8S20466C1[4]),  4,5},
  {&(_tg__ZTV8S20466C3__8S20466C28S20466C9__A3__8S20466C1[5]),  5,8},
  {&(_tg__ZTV8S20466C78S20466C9__A4__8S20466C1[3]),  3,6},
  {&(_tg__ZTV8S20466C3__8S20466C9__A1__8S20466C1[5]),  5,8},
  {&(_tg__ZTV8S20466C7__8S20466C9__A1__8S20466C1[3]),  3,6},
  {&(_tg__ZTV9S20466C15__A1__8S20466C1[5]),  5,5},
  {&(_tg__ZTV8S20466C3__9S20466C15__A1__8S20466C1[5]),  5,8},
  {&(_tg__ZTV8S20466C7__9S20466C15__A1__8S20466C1[6]),  6,9},
};
extern VTBL_ENTRY _ZTI8S20466C1[];
extern  VTBL_ENTRY _ZTV8S20466C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20466C1[];
Class_Descriptor cd_S20466C1 = {  "S20466C1", // class name
  bases_S20466C1, 35,
  &(vtc_S20466C1[0]), // expected_vtbl_contents
  &(vtt_S20466C1[0]), // expected_vtt_contents
  ABISELECT(9264,6896), // object size
  NSPAIRA(_ZTI8S20466C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20466C1),106, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20466C1),55, //virtual table table var
  26, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20465C3  : S3216C8_nt {
  ::S3216C8_nt s20465c3f0[3];
  ::S3216C8_nt s20465c3f1[2];
  void *s20465c3f2;
  short s20465c3f3;
  ::S3216C8_nt s20465c3f4;
  virtual void  v1(); // _ZN8S20465C32v1Ev
  virtual void  v2(); // _ZN8S20465C32v2Ev
  virtual void  v3(); // _ZN8S20465C32v3Ev
  ~S20465C3(); // tgen
  S20465C3(); // tgen
};
//SIG(-1 S20465C3) C1{ BC2{ m Fi} v1 v2 v3 FC2[3] FC2[2] Fp Fs FC2}


void  S20465C3 ::v1(){vfunc_called(this, "_ZN8S20465C32v1Ev");}
void  S20465C3 ::v2(){vfunc_called(this, "_ZN8S20465C32v2Ev");}
void  S20465C3 ::v3(){vfunc_called(this, "_ZN8S20465C32v3Ev");}
S20465C3 ::~S20465C3(){ note_dtor("S20465C3", this);} // tgen
S20465C3 ::S20465C3(){ note_ctor("S20465C3", this);} // tgen

static void Test_S20465C3()
{
  extern Class_Descriptor cd_S20465C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,11)];
    init_test(&cd_S20465C3, buf);
    S20465C3 *dp, &lv = *(dp=new (buf) S20465C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S20465C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20465C3)");
    check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(8,4), "S20465C3");
    check_field_offset(lv, s20465c3f0, ABISELECT(12,8), "S20465C3.s20465c3f0");
    check_field_offset(lv, s20465c3f1, ABISELECT(24,20), "S20465C3.s20465c3f1");
    check_field_offset(lv, s20465c3f2, ABISELECT(32,28), "S20465C3.s20465c3f2");
    check_field_offset(lv, s20465c3f3, ABISELECT(40,32), "S20465C3.s20465c3f3");
    check_field_offset(lv, s20465c3f4, ABISELECT(44,36), "S20465C3.s20465c3f4");
    test_class_info(&lv, &cd_S20465C3);
    dp->~S20465C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20465C3(Test_S20465C3, "S20465C3", ABISELECT(48,40));

#else // __cplusplus

extern void _ZN8S20465C3C1Ev();
extern void _ZN8S20465C3D1Ev();
Name_Map name_map_S20465C3[] = {
  NSPAIR(_ZN8S20465C3C1Ev),
  NSPAIR(_ZN8S20465C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S20465C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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 _ZTI8S20465C3[];
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY vtc_S20465C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C3[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern VTBL_ENTRY _ZTI8S20465C3[];
extern  VTBL_ENTRY _ZTV8S20465C3[];
Class_Descriptor cd_S20465C3 = {  "S20465C3", // class name
  bases_S20465C3, 1,
  &(vtc_S20465C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,40), // object size
  NSPAIRA(_ZTI8S20465C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20465C3),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  S20465C2  : virtual S20465C3 , virtual S3216C8_nt {
  ::S20465C3 s20465c2f0;
  long double s20465c2f1;
  void *s20465c2f2[2];
  ::S20465C3 s20465c2f3;
  virtual void  v4(); // _ZN8S20465C22v4Ev
  ~S20465C2(); // tgen
  S20465C2(); // tgen
};
//SIG(-1 S20465C2) C1{ VBC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC3 v1 FC2 FD Fp[2] FC2}


void  S20465C2 ::v4(){vfunc_called(this, "_ZN8S20465C22v4Ev");}
S20465C2 ::~S20465C2(){ note_dtor("S20465C2", this);} // tgen
S20465C2 ::S20465C2(){ note_ctor("S20465C2", this);} // tgen

static void Test_S20465C2()
{
  extern Class_Descriptor cd_S20465C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,38)];
    init_test(&cd_S20465C2, buf);
    S20465C2 *dp, &lv = *(dp=new (buf) S20465C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,148), "sizeof(S20465C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20465C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S20465C3*), ABISELECT(152,108), "S20465C2");
    check_base_class_offset(lv, (S20465C3*), ABISELECT(144,104), "S20465C2");
    /*is_ambiguous_... S20465C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(192,144), "S20465C2");
    check_field_offset(lv, s20465c2f0, ABISELECT(8,4), "S20465C2.s20465c2f0");
    check_field_offset(lv, s20465c2f1, ABISELECT(64,44), "S20465C2.s20465c2f1");
    check_field_offset(lv, s20465c2f2, ABISELECT(80,56), "S20465C2.s20465c2f2");
    check_field_offset(lv, s20465c2f3, ABISELECT(96,64), "S20465C2.s20465c2f3");
    test_class_info(&lv, &cd_S20465C2);
    dp->~S20465C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20465C2(Test_S20465C2, "S20465C2", ABISELECT(208,148));

#else // __cplusplus

extern void _ZN8S20465C2C1Ev();
extern void _ZN8S20465C2D1Ev();
Name_Map name_map_S20465C2[] = {
  NSPAIR(_ZN8S20465C2C1Ev),
  NSPAIR(_ZN8S20465C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20465C3;
extern VTBL_ENTRY _ZTI8S20465C3[];
extern  VTBL_ENTRY _ZTV8S20465C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S20465C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(152,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
    1, //immediately_derived
  0, 0},
  {&cd_S20465C3,    ABISELECT(144,104), //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(192,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20465C2[];
extern void _ZN8S20465C22v4Ev();
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY vtc_S20465C2[] = {
  ABISELECT(192,144),
  ABISELECT(144,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C2[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
  0,
  0,
  0,
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20465C2[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern VTBL_ENTRY _ZTV8S20465C2[];
static  VTT_ENTRY vtt_S20465C2[] = {
  {&(_ZTV8S20465C2[4]),  4,13},
  {&(_ZTV8S20465C2[10]),  10,13},
};
extern VTBL_ENTRY _ZTI8S20465C2[];
extern  VTBL_ENTRY _ZTV8S20465C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C2[];
Class_Descriptor cd_S20465C2 = {  "S20465C2", // class name
  bases_S20465C2, 3,
  &(vtc_S20465C2[0]), // expected_vtbl_contents
  &(vtt_S20465C2[0]), // expected_vtt_contents
  ABISELECT(208,148), // object size
  NSPAIRA(_ZTI8S20465C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20465C2),13, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20465C2),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  S20465C6  {
  void *s20465c6f0[7];
  ::S20465C2 s20465c6f1;
  long double s20465c6f2;
  int s20465c6f3;
  __tsi64 s20465c6f4;
  void *s20465c6f5;
  ::S20465C2 s20465c6f6;
  void *s20465c6f7[5];
  int s20465c6f8[8];
  void *s20465c6f9;
  virtual void  v5(); // _ZN8S20465C62v5Ev
  ~S20465C6(); // tgen
  S20465C6(); // tgen
};
//SIG(-1 S20465C6) C1{ v1 Fp[7] FC2{ VBC3{ BC4{ m Fi} v3 v4 v5 FC4[3] FC4[2] Fp Fs FC4} VBC4 v2 FC3 FD Fp[2] FC3} FD Fi FL Fp FC2 Fp[5] Fi[8] Fp}


void  S20465C6 ::v5(){vfunc_called(this, "_ZN8S20465C62v5Ev");}
S20465C6 ::~S20465C6(){ note_dtor("S20465C6", this);} // tgen
S20465C6 ::S20465C6(){ note_ctor("S20465C6", this);} // tgen

static void Test_S20465C6()
{
  extern Class_Descriptor cd_S20465C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(39,104)];
    init_test(&cd_S20465C6, buf);
    S20465C6 *dp, &lv = *(dp=new (buf) S20465C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(608,412), "sizeof(S20465C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20465C6)");
    check_field_offset(lv, s20465c6f0, ABISELECT(8,4), "S20465C6.s20465c6f0");
    check_field_offset(lv, s20465c6f1, ABISELECT(64,32), "S20465C6.s20465c6f1");
    check_field_offset(lv, s20465c6f2, ABISELECT(272,180), "S20465C6.s20465c6f2");
    check_field_offset(lv, s20465c6f3, ABISELECT(288,192), "S20465C6.s20465c6f3");
    check_field_offset(lv, s20465c6f4, ABISELECT(296,196), "S20465C6.s20465c6f4");
    check_field_offset(lv, s20465c6f5, ABISELECT(304,204), "S20465C6.s20465c6f5");
    check_field_offset(lv, s20465c6f6, ABISELECT(320,208), "S20465C6.s20465c6f6");
    check_field_offset(lv, s20465c6f7, ABISELECT(528,356), "S20465C6.s20465c6f7");
    check_field_offset(lv, s20465c6f8, ABISELECT(568,376), "S20465C6.s20465c6f8");
    check_field_offset(lv, s20465c6f9, ABISELECT(600,408), "S20465C6.s20465c6f9");
    test_class_info(&lv, &cd_S20465C6);
    dp->~S20465C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20465C6(Test_S20465C6, "S20465C6", ABISELECT(608,412));

#else // __cplusplus

extern void _ZN8S20465C6C1Ev();
extern void _ZN8S20465C6D1Ev();
Name_Map name_map_S20465C6[] = {
  NSPAIR(_ZN8S20465C6C1Ev),
  NSPAIR(_ZN8S20465C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20465C6[];
extern void _ZN8S20465C62v5Ev();
static  VTBL_ENTRY vtc_S20465C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C6[0]),
  (VTBL_ENTRY)&_ZN8S20465C62v5Ev,
};
extern VTBL_ENTRY _ZTI8S20465C6[];
extern  VTBL_ENTRY _ZTV8S20465C6[];
Class_Descriptor cd_S20465C6 = {  "S20465C6", // class name
  0,0,//no base classes
  &(vtc_S20465C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(608,412), // object size
  NSPAIRA(_ZTI8S20465C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20465C6),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  S20465C7  : S20465C3 , virtual S3216C8_nt {
  long double s20465c7f0;
  __tsi64 s20465c7f1;
  ::S20465C3 s20465c7f2;
  void *s20465c7f3;
  short s20465c7f4[3];
  ~S20465C7(); // tgen
  S20465C7(); // tgen
};
//SIG(-1 S20465C7) C1{ BC2{ BC3{ m Fi} v1 v2 v3 FC3[3] FC3[2] Fp Fs FC3} VBC3 FD FL FC2 Fp Fs[3]}


S20465C7 ::~S20465C7(){ note_dtor("S20465C7", this);} // tgen
S20465C7 ::S20465C7(){ note_ctor("S20465C7", this);} // tgen

static void Test_S20465C7()
{
  extern Class_Descriptor cd_S20465C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,30)];
    init_test(&cd_S20465C7, buf);
    S20465C7 *dp, &lv = *(dp=new (buf) S20465C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,116), "sizeof(S20465C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20465C7)");
    check_base_class_offset(lv, (S3216C8_nt*)(S20465C3*), ABISELECT(8,4), "S20465C7");
    check_base_class_offset(lv, (S20465C3*), 0, "S20465C7");
    /*is_ambiguous_... S20465C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(136,112), "S20465C7");
    check_field_offset(lv, s20465c7f0, ABISELECT(48,40), "S20465C7.s20465c7f0");
    check_field_offset(lv, s20465c7f1, ABISELECT(64,52), "S20465C7.s20465c7f1");
    check_field_offset(lv, s20465c7f2, ABISELECT(72,60), "S20465C7.s20465c7f2");
    check_field_offset(lv, s20465c7f3, ABISELECT(120,100), "S20465C7.s20465c7f3");
    check_field_offset(lv, s20465c7f4, ABISELECT(128,104), "S20465C7.s20465c7f4");
    test_class_info(&lv, &cd_S20465C7);
    dp->~S20465C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20465C7(Test_S20465C7, "S20465C7", ABISELECT(144,116));

#else // __cplusplus

extern void _ZN8S20465C7C1Ev();
extern void _ZN8S20465C7D1Ev();
Name_Map name_map_S20465C7[] = {
  NSPAIR(_ZN8S20465C7C1Ev),
  NSPAIR(_ZN8S20465C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20465C3;
extern VTBL_ENTRY _ZTI8S20465C3[];
extern  VTBL_ENTRY _ZTV8S20465C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S20465C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S20465C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20465C7[];
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY vtc_S20465C7[] = {
  ABISELECT(136,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C7[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern VTBL_ENTRY _ZTV8S20465C7[];
static  VTT_ENTRY vtt_S20465C7[] = {
  {&(_ZTV8S20465C7[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S20465C7[];
extern  VTBL_ENTRY _ZTV8S20465C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C7[];
Class_Descriptor cd_S20465C7 = {  "S20465C7", // class name
  bases_S20465C7, 3,
  &(vtc_S20465C7[0]), // expected_vtbl_contents
  &(vtt_S20465C7[0]), // expected_vtt_contents
  ABISELECT(144,116), // object size
  NSPAIRA(_ZTI8S20465C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20465C7),6, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20465C7),1, //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  S20465C9  : virtual S20465C3 , virtual S3216C8_nt , S20465C2 , S20465C7 {
  void *s20465c9f0[2];
  long s20465c9f1;
  int s20465c9f2;
  ::S20465C3 s20465c9f3[5];
  virtual void  v6(); // _ZN8S20465C92v6Ev
  ~S20465C9(); // tgen
  S20465C9(); // tgen
};
//SIG(-1 S20465C9) C1{ VBC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC3 BC4{ VBC2 VBC3 v5 FC2 FD Fp[2] FC2} BC5{ BC2 VBC3 FD FL FC2 Fp Fs[3]} v1 Fp[2] Fl Fi FC2[5]}


void  S20465C9 ::v6(){vfunc_called(this, "_ZN8S20465C92v6Ev");}
S20465C9 ::~S20465C9(){ note_dtor("S20465C9", this);} // tgen
S20465C9 ::S20465C9(){ note_ctor("S20465C9", this);} // tgen

static void Test_S20465C9()
{
  extern Class_Descriptor cd_S20465C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(39,120)];
    init_test(&cd_S20465C9, buf);
    S20465C9 *dp, &lv = *(dp=new (buf) S20465C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(608,476), "sizeof(S20465C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20465C9)");
    /*is_ambiguous_... S20465C9::S20465C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C3*), ABISELECT(560,436), "S20465C9");
    /*is_ambiguous_... S20465C9::S20465C3 */ AMB_check_base_class_offset(lv, (S20465C3*), ABISELECT(552,432), "S20465C9");
    check_base_class_offset(lv, (S20465C3*)(S20465C2*), ABISELECT(552,432), "S20465C9");
    /*is_ambiguous_... S20465C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(600,472), "S20465C9");
    /*is_ambiguous_... S20465C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C2*), ABISELECT(600,472), "S20465C9");
    /*is_ambiguous_... S20465C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C7*), ABISELECT(600,472), "S20465C9");
    check_base_class_offset(lv, (S20465C2*), 0, "S20465C9");
    check_base_class_offset(lv, (S3216C8_nt*)(S20465C3*)(S20465C7*), ABISELECT(152,108), "S20465C9");
    check_base_class_offset(lv, (S20465C3*)(S20465C7*), ABISELECT(144,104), "S20465C9");
    check_base_class_offset(lv, (S20465C7*), ABISELECT(144,104), "S20465C9");
    check_field_offset(lv, s20465c9f0, ABISELECT(280,216), "S20465C9.s20465c9f0");
    check_field_offset(lv, s20465c9f1, ABISELECT(296,224), "S20465C9.s20465c9f1");
    check_field_offset(lv, s20465c9f2, ABISELECT(304,228), "S20465C9.s20465c9f2");
    check_field_offset(lv, s20465c9f3, ABISELECT(312,232), "S20465C9.s20465c9f3");
    test_class_info(&lv, &cd_S20465C9);
    dp->~S20465C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20465C9(Test_S20465C9, "S20465C9", ABISELECT(608,476));

#else // __cplusplus

extern void _ZN8S20465C9C1Ev();
extern void _ZN8S20465C9D1Ev();
Name_Map name_map_S20465C9[] = {
  NSPAIR(_ZN8S20465C9C1Ev),
  NSPAIR(_ZN8S20465C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20465C3;
extern VTBL_ENTRY _ZTI8S20465C3[];
extern  VTBL_ENTRY _ZTV8S20465C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20465C2;
extern VTBL_ENTRY _ZTI8S20465C2[];
extern  VTBL_ENTRY _ZTV8S20465C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20465C3;
extern VTBL_ENTRY _ZTI8S20465C3[];
extern  VTBL_ENTRY _ZTV8S20465C3[];
extern Class_Descriptor cd_S20465C7;
extern VTBL_ENTRY _ZTI8S20465C7[];
extern  VTBL_ENTRY _ZTV8S20465C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C7[];
static Base_Class bases_S20465C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(560,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
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20465C3,    ABISELECT(552,432), //bcp->offset
    12, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(600,472), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20465C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(152,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20465C3,    ABISELECT(144,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20465C7,    ABISELECT(144,104), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20465C9[];
extern void _ZN8S20465C22v4Ev();
extern void _ZN8S20465C92v6Ev();
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY vtc_S20465C9[] = {
  ABISELECT(600,472),
  ABISELECT(552,432),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C9[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20465C92v6Ev,
  ABISELECT(456,368),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20465C9[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
  0,
  0,
  0,
  ABISELECT(-552,-432),
  (VTBL_ENTRY)&(_ZTI8S20465C9[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern VTBL_ENTRY _ZTV8S20465C9[];
extern void _ZN8S20465C22v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C2__8S20465C9[] = {
  ABISELECT(600,472),
  ABISELECT(552,432),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C2[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C3__8S20465C2__8S20465C9[] = {
  0,
  0,
  0,
  ABISELECT(-552,-432),
  (VTBL_ENTRY)&(_ZTI8S20465C2[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C7__8S20465C9[] = {
  ABISELECT(456,368),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C7[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
static  VTT_ENTRY vtt_S20465C9[] = {
  {&(_ZTV8S20465C9[4]),  4,20},
  {&(_tg__ZTV8S20465C2__8S20465C9[4]),  4,5},
  {&(_tg__ZTV8S20465C3__8S20465C2__8S20465C9[5]),  5,8},
  {&(_tg__ZTV8S20465C7__8S20465C9[3]),  3,6},
  {&(_ZTV8S20465C9[17]),  17,20},
  {&(_ZTV8S20465C9[9]),  9,20},
};
extern VTBL_ENTRY _ZTI8S20465C9[];
extern  VTBL_ENTRY _ZTV8S20465C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C9[];
Class_Descriptor cd_S20465C9 = {  "S20465C9", // class name
  bases_S20465C9, 7,
  &(vtc_S20465C9[0]), // expected_vtbl_contents
  &(vtt_S20465C9[0]), // expected_vtt_contents
  ABISELECT(608,476), // object size
  NSPAIRA(_ZTI8S20465C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20465C9),20, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20465C9),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  S20465C8  : virtual S3216C8_nt , S20465C9 , S20465C2 , S20465C7 {
  int s20465c8f0;
  ::S20643C15_nt s20465c8f1;
  void *s20465c8f2[2];
  virtual void  v7(); // _ZN8S20465C82v7Ev
  ~S20465C8(); // tgen
  S20465C8(); // tgen
};
//SIG(-1 S20465C8) C1{ VBC2{ m Fi} BC3{ VBC4{ BC2 v2 v3 v4 FC2[3] FC2[2] Fp Fs FC2} VBC2 BC5{ VBC4 VBC2 v5 FC4 FD Fp[2] FC4} BC6{ BC4 VBC2 FD FL FC4 Fp Fs[3]} v6 Fp[2] Fl Fi FC4[5]} BC5 BC6 v1 Fi FC7{} Fp[2]}


void  S20465C8 ::v7(){vfunc_called(this, "_ZN8S20465C82v7Ev");}
S20465C8 ::~S20465C8(){ note_dtor("S20465C8", this);} // tgen
S20465C8 ::S20465C8(){ note_ctor("S20465C8", this);} // tgen

static void Test_S20465C8()
{
  extern Class_Descriptor cd_S20465C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(59,178)];
    init_test(&cd_S20465C8, buf);
    S20465C8 *dp, &lv = *(dp=new (buf) S20465C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(928,708), "sizeof(S20465C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20465C8)");
    /*is_ambiguous_... S20465C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(864,664), "S20465C8");
    /*is_ambiguous_... S20465C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C9*), ABISELECT(864,664), "S20465C8");
    /*is_ambiguous_... S20465C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C2*)(S20465C9*), ABISELECT(864,664), "S20465C8");
    /*is_ambiguous_... S20465C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C7*)(S20465C9*), ABISELECT(864,664), "S20465C8");
    /*is_ambiguous_... S20465C8::S20465C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C2*), ABISELECT(864,664), "S20465C8");
    /*is_ambiguous_... S20465C8::S20465C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C7*), ABISELECT(864,664), "S20465C8");
    /*is_ambiguous_... S20465C8::S20465C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C3*), ABISELECT(880,672), "S20465C8");
    /*is_ambiguous_... S20465C9::S20465C3 */ AMB_check_base_class_offset(lv, (S20465C3*)(S20465C9*), ABISELECT(872,668), "S20465C8");
    check_base_class_offset(lv, (S20465C3*)(S20465C2*)(S20465C9*), ABISELECT(872,668), "S20465C8");
    /*is_ambiguous_... S20465C8::S20465C2 */ AMB_check_base_class_offset(lv, (S20465C3*)(S20465C2*), ABISELECT(872,668), "S20465C8");
    check_base_class_offset(lv, (S20465C2*)(S20465C9*), 0, "S20465C8");
    check_base_class_offset(lv, (S3216C8_nt*)(S20465C3*)(S20465C7*)(S20465C9*), ABISELECT(152,108), "S20465C8");
    check_base_class_offset(lv, (S20465C3*)(S20465C7*)(S20465C9*), ABISELECT(144,104), "S20465C8");
    check_base_class_offset(lv, (S20465C7*)(S20465C9*), ABISELECT(144,104), "S20465C8");
    check_base_class_offset(lv, (S20465C9*), 0, "S20465C8");
    /*is_ambiguous_... S20465C8::S20465C2 */ AMB_check_base_class_offset(lv, (S20465C2*), ABISELECT(560,432), "S20465C8");
    /*is_ambiguous_... S20465C8::S20465C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C3*)(S20465C7*), ABISELECT(712,540), "S20465C8");
    /*is_ambiguous_... S20465C8::S20465C7 */ AMB_check_base_class_offset(lv, (S20465C3*)(S20465C7*), ABISELECT(704,536), "S20465C8");
    /*is_ambiguous_... S20465C8::S20465C7 */ AMB_check_base_class_offset(lv, (S20465C7*), ABISELECT(704,536), "S20465C8");
    check_field_offset(lv, s20465c8f0, ABISELECT(840,648), "S20465C8.s20465c8f0");
    check_field_offset(lv, s20465c8f1, ABISELECT(844,652), "S20465C8.s20465c8f1");
    check_field_offset(lv, s20465c8f2, ABISELECT(848,656), "S20465C8.s20465c8f2");
    test_class_info(&lv, &cd_S20465C8);
    dp->~S20465C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20465C8(Test_S20465C8, "S20465C8", ABISELECT(928,708));

#else // __cplusplus

extern void _ZN8S20465C8C1Ev();
extern void _ZN8S20465C8D1Ev();
Name_Map name_map_S20465C8[] = {
  NSPAIR(_ZN8S20465C8C1Ev),
  NSPAIR(_ZN8S20465C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20465C3;
extern VTBL_ENTRY _ZTI8S20465C3[];
extern  VTBL_ENTRY _ZTV8S20465C3[];
extern Class_Descriptor cd_S20465C2;
extern VTBL_ENTRY _ZTI8S20465C2[];
extern  VTBL_ENTRY _ZTV8S20465C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20465C3;
extern VTBL_ENTRY _ZTI8S20465C3[];
extern  VTBL_ENTRY _ZTV8S20465C3[];
extern Class_Descriptor cd_S20465C7;
extern VTBL_ENTRY _ZTI8S20465C7[];
extern  VTBL_ENTRY _ZTV8S20465C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C7[];
extern Class_Descriptor cd_S20465C9;
extern VTBL_ENTRY _ZTI8S20465C9[];
extern  VTBL_ENTRY _ZTV8S20465C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C9[];
extern Class_Descriptor cd_S20465C2;
extern VTBL_ENTRY _ZTI8S20465C2[];
extern  VTBL_ENTRY _ZTV8S20465C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20465C3;
extern VTBL_ENTRY _ZTI8S20465C3[];
extern  VTBL_ENTRY _ZTV8S20465C3[];
extern Class_Descriptor cd_S20465C7;
extern VTBL_ENTRY _ZTI8S20465C7[];
extern  VTBL_ENTRY _ZTV8S20465C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C7[];
static Base_Class bases_S20465C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(864,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
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(880,672), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20465C3,    ABISELECT(872,668), //bcp->offset
    24, //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
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20465C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(152,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20465C3,    ABISELECT(144,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20465C7,    ABISELECT(144,104), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20465C9,    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_S20465C2,    ABISELECT(560,432), //bcp->offset
    13, //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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(712,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
    10, //immediately_derived
  0, 0},
  {&cd_S20465C3,    ABISELECT(704,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
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20465C7,    ABISELECT(704,536), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20465C8[];
extern void _ZN8S20465C22v4Ev();
extern void _ZN8S20465C92v6Ev();
extern void _ZN8S20465C82v7Ev();
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
extern void _ZN8S20465C22v4Ev();
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY vtc_S20465C8[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C8[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20465C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20465C82v7Ev,
  ABISELECT(720,560),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20465C8[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
  ABISELECT(304,232),
  ABISELECT(312,236),
  ABISELECT(-560,-432),
  (VTBL_ENTRY)&(_ZTI8S20465C8[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
  ABISELECT(160,128),
  ABISELECT(-704,-536),
  (VTBL_ENTRY)&(_ZTI8S20465C8[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI8S20465C8[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern VTBL_ENTRY _ZTV8S20465C8[];
extern void _ZN8S20465C22v4Ev();
extern void _ZN8S20465C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C9__8S20465C8[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C9[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20465C92v6Ev,
};
extern void _ZN8S20465C22v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C28S20465C9__8S20465C8[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C2[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C3__8S20465C28S20465C9__8S20465C8[] = {
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI8S20465C2[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C78S20465C9__8S20465C8[] = {
  ABISELECT(720,560),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C7[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C3__8S20465C9__8S20465C8[] = {
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI8S20465C9[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C7__8S20465C9__8S20465C8[] = {
  ABISELECT(720,560),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20465C9[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C22v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C2__A1__8S20465C8[] = {
  ABISELECT(304,232),
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C2[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C3__8S20465C2__A1__8S20465C8[] = {
  0,
  0,
  0,
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S20465C2[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C7__A1__8S20465C8[] = {
  ABISELECT(160,128),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C7[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
static  VTT_ENTRY vtt_S20465C8[] = {
  {&(_ZTV8S20465C8[4]),  4,32},
  {&(_tg__ZTV8S20465C9__8S20465C8[4]),  4,6},
  {&(_tg__ZTV8S20465C28S20465C9__8S20465C8[4]),  4,5},
  {&(_tg__ZTV8S20465C3__8S20465C28S20465C9__8S20465C8[5]),  5,8},
  {&(_tg__ZTV8S20465C78S20465C9__8S20465C8[3]),  3,6},
  {&(_tg__ZTV8S20465C3__8S20465C9__8S20465C8[5]),  5,8},
  {&(_tg__ZTV8S20465C7__8S20465C9__8S20465C8[3]),  3,6},
  {&(_tg__ZTV8S20465C2__A1__8S20465C8[4]),  4,5},
  {&(_tg__ZTV8S20465C3__8S20465C2__A1__8S20465C8[5]),  5,8},
  {&(_tg__ZTV8S20465C7__A1__8S20465C8[3]),  3,6},
  {&(_ZTV8S20465C8[29]),  29,32},
  {&(_ZTV8S20465C8[10]),  10,32},
  {&(_ZTV8S20465C8[17]),  17,32},
  {&(_ZTV8S20465C8[21]),  21,32},
};
extern VTBL_ENTRY _ZTI8S20465C8[];
extern  VTBL_ENTRY _ZTV8S20465C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C8[];
Class_Descriptor cd_S20465C8 = {  "S20465C8", // class name
  bases_S20465C8, 12,
  &(vtc_S20465C8[0]), // expected_vtbl_contents
  &(vtt_S20465C8[0]), // expected_vtt_contents
  ABISELECT(928,708), // object size
  NSPAIRA(_ZTI8S20465C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20465C8),32, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20465C8),14, //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  S20465C5  : S20465C6 , S20465C7 , S20465C8 {
  virtual  ~S20465C5(); // _ZN8S20465C5D2Ev
  S20465C5(); // tgen
};
//SIG(-1 S20465C5) C1{ BC2{ v1 Fp[7] FC3{ VBC4{ BC5{ m Fi} v2 v3 v4 FC5[3] FC5[2] Fp Fs FC5} VBC5 v5 FC4 FD Fp[2] FC4} FD Fi FL Fp FC3 Fp[5] Fi[8] Fp} BC6{ BC4 VBC5 FD FL FC4 Fp Fs[3]} BC7{ VBC5 BC8{ VBC4 VBC5 BC3 BC6 v6 Fp[2] Fl Fi FC4[5]} BC3 BC6 v7 Fi FC9{} Fp[2]} vd}


 S20465C5 ::~S20465C5(){ note_dtor("S20465C5", this);}
S20465C5 ::S20465C5(){ note_ctor("S20465C5", this);} // tgen

static void Test_S20465C5()
{
  extern Class_Descriptor cd_S20465C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(106,309)];
    init_test(&cd_S20465C5, buf);
    S20465C5 *dp, &lv = *(dp=new (buf) S20465C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1680,1232), "sizeof(S20465C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20465C5)");
    check_base_class_offset(lv, (S20465C6*), 0, "S20465C5");
    /*is_ambiguous_... S20465C5::S20465C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C3*)(S20465C7*), ABISELECT(616,416), "S20465C5");
    /*is_ambiguous_... S20465C5::S20465C7 */ AMB_check_base_class_offset(lv, (S20465C3*)(S20465C7*), ABISELECT(608,412), "S20465C5");
    /*is_ambiguous_... S20465C5::S20465C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C7*), ABISELECT(1616,1188), "S20465C5");
    /*is_ambiguous_... S20465C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C8*), ABISELECT(1616,1188), "S20465C5");
    /*is_ambiguous_... S20465C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C9*)(S20465C8*), ABISELECT(1616,1188), "S20465C5");
    /*is_ambiguous_... S20465C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C2*)(S20465C9*)(S20465C8*), ABISELECT(1616,1188), "S20465C5");
    /*is_ambiguous_... S20465C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C7*)(S20465C9*)(S20465C8*), ABISELECT(1616,1188), "S20465C5");
    /*is_ambiguous_... S20465C8::S20465C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C2*)(S20465C8*), ABISELECT(1616,1188), "S20465C5");
    /*is_ambiguous_... S20465C8::S20465C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C7*)(S20465C8*), ABISELECT(1616,1188), "S20465C5");
    /*is_ambiguous_... S20465C5::S20465C7 */ AMB_check_base_class_offset(lv, (S20465C7*), ABISELECT(608,412), "S20465C5");
    /*is_ambiguous_... S20465C5::S20465C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C3*), ABISELECT(1632,1196), "S20465C5");
    /*is_ambiguous_... S20465C9::S20465C3 */ AMB_check_base_class_offset(lv, (S20465C3*)(S20465C9*)(S20465C8*), ABISELECT(1624,1192), "S20465C5");
    check_base_class_offset(lv, (S20465C3*)(S20465C2*)(S20465C9*)(S20465C8*), ABISELECT(1624,1192), "S20465C5");
    /*is_ambiguous_... S20465C8::S20465C2 */ AMB_check_base_class_offset(lv, (S20465C3*)(S20465C2*)(S20465C8*), ABISELECT(1624,1192), "S20465C5");
    check_base_class_offset(lv, (S20465C2*)(S20465C9*)(S20465C8*), ABISELECT(752,524), "S20465C5");
    check_base_class_offset(lv, (S3216C8_nt*)(S20465C3*)(S20465C7*)(S20465C9*)(S20465C8*), ABISELECT(904,632), "S20465C5");
    check_base_class_offset(lv, (S20465C3*)(S20465C7*)(S20465C9*)(S20465C8*), ABISELECT(896,628), "S20465C5");
    check_base_class_offset(lv, (S20465C7*)(S20465C9*)(S20465C8*), ABISELECT(896,628), "S20465C5");
    check_base_class_offset(lv, (S20465C9*)(S20465C8*), ABISELECT(752,524), "S20465C5");
    /*is_ambiguous_... S20465C8::S20465C2 */ AMB_check_base_class_offset(lv, (S20465C2*)(S20465C8*), ABISELECT(1312,956), "S20465C5");
    /*is_ambiguous_... S20465C8::S20465C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C3*)(S20465C7*)(S20465C8*), ABISELECT(1464,1064), "S20465C5");
    /*is_ambiguous_... S20465C8::S20465C7 */ AMB_check_base_class_offset(lv, (S20465C3*)(S20465C7*)(S20465C8*), ABISELECT(1456,1060), "S20465C5");
    /*is_ambiguous_... S20465C8::S20465C7 */ AMB_check_base_class_offset(lv, (S20465C7*)(S20465C8*), ABISELECT(1456,1060), "S20465C5");
    check_base_class_offset(lv, (S20465C8*), ABISELECT(752,524), "S20465C5");
    test_class_info(&lv, &cd_S20465C5);
    dp->~S20465C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20465C5(Test_S20465C5, "S20465C5", ABISELECT(1680,1232));

#else // __cplusplus

extern void _ZN8S20465C5C1Ev();
extern void _ZN8S20465C5D2Ev();
Name_Map name_map_S20465C5[] = {
  NSPAIR(_ZN8S20465C5C1Ev),
  NSPAIR(_ZN8S20465C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20465C6;
extern VTBL_ENTRY _ZTI8S20465C6[];
extern  VTBL_ENTRY _ZTV8S20465C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20465C3;
extern VTBL_ENTRY _ZTI8S20465C3[];
extern  VTBL_ENTRY _ZTV8S20465C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20465C7;
extern VTBL_ENTRY _ZTI8S20465C7[];
extern  VTBL_ENTRY _ZTV8S20465C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C7[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20465C3;
extern VTBL_ENTRY _ZTI8S20465C3[];
extern  VTBL_ENTRY _ZTV8S20465C3[];
extern Class_Descriptor cd_S20465C2;
extern VTBL_ENTRY _ZTI8S20465C2[];
extern  VTBL_ENTRY _ZTV8S20465C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20465C3;
extern VTBL_ENTRY _ZTI8S20465C3[];
extern  VTBL_ENTRY _ZTV8S20465C3[];
extern Class_Descriptor cd_S20465C7;
extern VTBL_ENTRY _ZTI8S20465C7[];
extern  VTBL_ENTRY _ZTV8S20465C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C7[];
extern Class_Descriptor cd_S20465C9;
extern VTBL_ENTRY _ZTI8S20465C9[];
extern  VTBL_ENTRY _ZTV8S20465C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C9[];
extern Class_Descriptor cd_S20465C2;
extern VTBL_ENTRY _ZTI8S20465C2[];
extern  VTBL_ENTRY _ZTV8S20465C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20465C3;
extern VTBL_ENTRY _ZTI8S20465C3[];
extern  VTBL_ENTRY _ZTV8S20465C3[];
extern Class_Descriptor cd_S20465C7;
extern VTBL_ENTRY _ZTI8S20465C7[];
extern  VTBL_ENTRY _ZTV8S20465C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C7[];
extern Class_Descriptor cd_S20465C8;
extern VTBL_ENTRY _ZTI8S20465C8[];
extern  VTBL_ENTRY _ZTV8S20465C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C8[];
static Base_Class bases_S20465C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20465C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3216C8_nt,    ABISELECT(616,416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20465C3,    ABISELECT(608,412), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3216C8_nt,    ABISELECT(1616,1188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20465C7,    ABISELECT(608,412), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(1632,1196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20465C3,    ABISELECT(1624,1192), //bcp->offset
    37, //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
    7, //immediately_derived
  0, 1},
  {&cd_S20465C2,    ABISELECT(752,524), //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
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(904,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
    9, //immediately_derived
  0, 0},
  {&cd_S20465C3,    ABISELECT(896,628), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20465C7,    ABISELECT(896,628), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20465C9,    ABISELECT(752,524), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20465C2,    ABISELECT(1312,956), //bcp->offset
    26, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1464,1064), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20465C3,    ABISELECT(1456,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20465C7,    ABISELECT(1456,1060), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20465C8,    ABISELECT(752,524), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20465C5[];
extern void _ZN8S20465C62v5Ev();
extern void _ZN8S20465C5D1Ev();
extern void _ZN8S20465C5D0Ev();
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
extern void _ZN8S20465C22v4Ev();
extern void _ZN8S20465C92v6Ev();
extern void _ZN8S20465C82v7Ev();
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
extern void _ZN8S20465C22v4Ev();
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY vtc_S20465C5[] = {
  ABISELECT(1624,1192),
  ABISELECT(1616,1188),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C5[0]),
  (VTBL_ENTRY)&_ZN8S20465C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20465C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20465C5D0Ev,
  ABISELECT(1008,776),
  ABISELECT(-608,-412),
  (VTBL_ENTRY)&(_ZTI8S20465C5[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
  ABISELECT(864,664),
  ABISELECT(872,668),
  ABISELECT(-752,-524),
  (VTBL_ENTRY)&(_ZTI8S20465C5[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20465C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20465C82v7Ev,
  ABISELECT(720,560),
  ABISELECT(-896,-628),
  (VTBL_ENTRY)&(_ZTI8S20465C5[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
  ABISELECT(304,232),
  ABISELECT(312,236),
  ABISELECT(-1312,-956),
  (VTBL_ENTRY)&(_ZTI8S20465C5[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
  ABISELECT(160,128),
  ABISELECT(-1456,-1060),
  (VTBL_ENTRY)&(_ZTI8S20465C5[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
  0,
  0,
  0,
  ABISELECT(-1624,-1192),
  (VTBL_ENTRY)&(_ZTI8S20465C5[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern VTBL_ENTRY _ZTV8S20465C5[];
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C7__8S20465C5[] = {
  ABISELECT(1008,776),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C7[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C22v4Ev();
extern void _ZN8S20465C92v6Ev();
extern void _ZN8S20465C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C8__8S20465C5[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C8[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20465C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20465C82v7Ev,
};
extern void _ZN8S20465C22v4Ev();
extern void _ZN8S20465C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C98S20465C8__8S20465C5[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C9[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20465C92v6Ev,
};
extern void _ZN8S20465C22v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C28S20465C98S20465C8__8S20465C5[] = {
  ABISELECT(864,664),
  ABISELECT(872,668),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C2[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C3__8S20465C28S20465C98S20465C8__8S20465C5[] = {
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI8S20465C2[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C78S20465C98S20465C8__A1__8S20465C5[] = {
  ABISELECT(720,560),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C7[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C3__8S20465C98S20465C8__8S20465C5[] = {
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI8S20465C9[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C7__8S20465C98S20465C8__8S20465C5[] = {
  ABISELECT(720,560),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20465C9[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C22v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C28S20465C8__A1__8S20465C5[] = {
  ABISELECT(304,232),
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C2[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C3__8S20465C28S20465C8__A1__8S20465C5[] = {
  0,
  0,
  0,
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S20465C2[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C78S20465C8__A2__8S20465C5[] = {
  ABISELECT(160,128),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C7[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C3__8S20465C8__8S20465C5[] = {
  0,
  0,
  0,
  ABISELECT(-872,-668),
  (VTBL_ENTRY)&(_ZTI8S20465C8[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C78S20465C9__8S20465C8__8S20465C5[] = {
  ABISELECT(720,560),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20465C8[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C22v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C2__A1__8S20465C8__8S20465C5[] = {
  ABISELECT(304,232),
  ABISELECT(312,236),
  ABISELECT(-560,-432),
  (VTBL_ENTRY)&(_ZTI8S20465C8[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C7__A1__8S20465C8__8S20465C5[] = {
  ABISELECT(160,128),
  ABISELECT(-704,-536),
  (VTBL_ENTRY)&(_ZTI8S20465C8[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
static  VTT_ENTRY vtt_S20465C5[] = {
  {&(_ZTV8S20465C5[4]),  4,45},
  {&(_tg__ZTV8S20465C7__8S20465C5[3]),  3,6},
  {&(_tg__ZTV8S20465C8__8S20465C5[4]),  4,7},
  {&(_tg__ZTV8S20465C98S20465C8__8S20465C5[4]),  4,6},
  {&(_tg__ZTV8S20465C28S20465C98S20465C8__8S20465C5[4]),  4,5},
  {&(_tg__ZTV8S20465C3__8S20465C28S20465C98S20465C8__8S20465C5[5]),  5,8},
  {&(_tg__ZTV8S20465C78S20465C98S20465C8__A1__8S20465C5[3]),  3,6},
  {&(_tg__ZTV8S20465C3__8S20465C98S20465C8__8S20465C5[5]),  5,8},
  {&(_tg__ZTV8S20465C7__8S20465C98S20465C8__8S20465C5[3]),  3,6},
  {&(_tg__ZTV8S20465C28S20465C8__A1__8S20465C5[4]),  4,5},
  {&(_tg__ZTV8S20465C3__8S20465C28S20465C8__A1__8S20465C5[5]),  5,8},
  {&(_tg__ZTV8S20465C78S20465C8__A2__8S20465C5[3]),  3,6},
  {&(_tg__ZTV8S20465C3__8S20465C8__8S20465C5[5]),  5,8},
  {&(_tg__ZTV8S20465C78S20465C9__8S20465C8__8S20465C5[3]),  3,6},
  {&(_tg__ZTV8S20465C2__A1__8S20465C8__8S20465C5[4]),  4,5},
  {&(_tg__ZTV8S20465C7__A1__8S20465C8__8S20465C5[3]),  3,6},
  {&(_ZTV8S20465C5[10]),  10,45},
  {&(_ZTV8S20465C5[17]),  17,45},
  {&(_ZTV8S20465C5[42]),  42,45},
  {&(_ZTV8S20465C5[23]),  23,45},
  {&(_ZTV8S20465C5[30]),  30,45},
  {&(_ZTV8S20465C5[34]),  34,45},
};
extern VTBL_ENTRY _ZTI8S20465C5[];
extern  VTBL_ENTRY _ZTV8S20465C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C5[];
Class_Descriptor cd_S20465C5 = {  "S20465C5", // class name
  bases_S20465C5, 17,
  &(vtc_S20465C5[0]), // expected_vtbl_contents
  &(vtt_S20465C5[0]), // expected_vtt_contents
  ABISELECT(1680,1232), // object size
  NSPAIRA(_ZTI8S20465C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20465C5),45, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20465C5),22, //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  S20465C11  {
  int s20465c11f0;
  ::S20465C6 s20465c11f1;
  __tsi64 s20465c11f2;
  int s20465c11f3;
  ::S20644C4 s20465c11f4;
  int s20465c11f5[2];
  virtual void  v8(); // _ZN9S20465C112v8Ev
  ~S20465C11(); // tgen
  S20465C11(); // tgen
};
//SIG(-1 S20465C11) C1{ v1 Fi FC2{ v2 Fp[7] FC3{ VBC4{ BC5{ m Fi} v4 v5 v6 FC5[3] FC5[2] Fp Fs FC5} VBC5 v3 FC4 FD Fp[2] FC4} FD Fi FL Fp FC3 Fp[5] Fi[8] Fp} FL Fi FC6{ VBC7{ BC8{ BC5 v8 v9 v10 FC5[3] FC5[2] Fp Fs FC5} VBC5 FD FL FC8 Fp Fs[3]} BC9{ BC8 vd v11 Fp[7] Fi[2] FL Fi} VBC8 BC10{ VBC8 VBC5 BC11{ VBC8 VBC5 v12 FC8 FD Fp[2] FC8} BC7 v13 Fp[2] Fl Fi FC8[5]} BC11 v7 Fi[2] FD FC11[10] Fi} Fi[2]}


void  S20465C11 ::v8(){vfunc_called(this, "_ZN9S20465C112v8Ev");}
S20465C11 ::~S20465C11(){ note_dtor("S20465C11", this);} // tgen
S20465C11 ::S20465C11(){ note_ctor("S20465C11", this);} // tgen

static void Test_S20465C11()
{
  extern Class_Descriptor cd_S20465C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(239,682)];
    init_test(&cd_S20465C11, buf);
    S20465C11 *dp, &lv = *(dp=new (buf) S20465C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3808,2724), "sizeof(S20465C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20465C11)");
    check_field_offset(lv, s20465c11f0, ABISELECT(8,4), "S20465C11.s20465c11f0");
    check_field_offset(lv, s20465c11f1, ABISELECT(16,8), "S20465C11.s20465c11f1");
    check_field_offset(lv, s20465c11f2, ABISELECT(624,420), "S20465C11.s20465c11f2");
    check_field_offset(lv, s20465c11f3, ABISELECT(632,428), "S20465C11.s20465c11f3");
    check_field_offset(lv, s20465c11f4, ABISELECT(640,432), "S20465C11.s20465c11f4");
    check_field_offset(lv, s20465c11f5, ABISELECT(3792,2716), "S20465C11.s20465c11f5");
    test_class_info(&lv, &cd_S20465C11);
    dp->~S20465C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20465C11(Test_S20465C11, "S20465C11", ABISELECT(3808,2724));

#else // __cplusplus

extern void _ZN9S20465C11C1Ev();
extern void _ZN9S20465C11D1Ev();
Name_Map name_map_S20465C11[] = {
  NSPAIR(_ZN9S20465C11C1Ev),
  NSPAIR(_ZN9S20465C11D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S20465C11[];
extern void _ZN9S20465C112v8Ev();
static  VTBL_ENTRY vtc_S20465C11[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20465C11[0]),
  (VTBL_ENTRY)&_ZN9S20465C112v8Ev,
};
extern VTBL_ENTRY _ZTI9S20465C11[];
extern  VTBL_ENTRY _ZTV9S20465C11[];
Class_Descriptor cd_S20465C11 = {  "S20465C11", // class name
  0,0,//no base classes
  &(vtc_S20465C11[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(3808,2724), // object size
  NSPAIRA(_ZTI9S20465C11),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S20465C11),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  S20465C15  : virtual S3216C8_nt , virtual S20465C3 , virtual S20465C7 {
  void *s20465c15f0[2];
  int s20465c15f1;
  ::S20465C7 s20465c15f2[8];
  long double s20465c15f3[9];
  ~S20465C15(); // tgen
  S20465C15(); // tgen
};
//SIG(-1 S20465C15) C1{ VBC2{ m Fi} VBC3{ BC2 v1 v2 v3 FC2[3] FC2[2] Fp Fs FC2} VBC4{ BC3 VBC2 FD FL FC3 Fp Fs[3]} Fp[2] Fi FC4[8] FD[9]}


S20465C15 ::~S20465C15(){ note_dtor("S20465C15", this);} // tgen
S20465C15 ::S20465C15(){ note_ctor("S20465C15", this);} // tgen

static void Test_S20465C15()
{
  extern Class_Descriptor cd_S20465C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(97,303)];
    init_test(&cd_S20465C15, buf);
    S20465C15 *dp, &lv = *(dp=new (buf) S20465C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1536,1208), "sizeof(S20465C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20465C15)");
    /*is_ambiguous_... S20465C15::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(1328,1052), "S20465C15");
    /*is_ambiguous_... S20465C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C7*), ABISELECT(1328,1052), "S20465C15");
    /*is_ambiguous_... S20465C15::S20465C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C3*), ABISELECT(1344,1060), "S20465C15");
    /*is_ambiguous_... S20465C15::S20465C3 */ AMB_check_base_class_offset(lv, (S20465C3*), ABISELECT(1336,1056), "S20465C15");
    check_base_class_offset(lv, (S3216C8_nt*)(S20465C3*)(S20465C7*), ABISELECT(1400,1100), "S20465C15");
    check_base_class_offset(lv, (S20465C3*)(S20465C7*), ABISELECT(1392,1096), "S20465C15");
    check_base_class_offset(lv, (S20465C7*), ABISELECT(1392,1096), "S20465C15");
    check_field_offset(lv, s20465c15f0, ABISELECT(8,4), "S20465C15.s20465c15f0");
    check_field_offset(lv, s20465c15f1, ABISELECT(24,12), "S20465C15.s20465c15f1");
    check_field_offset(lv, s20465c15f2, ABISELECT(32,16), "S20465C15.s20465c15f2");
    check_field_offset(lv, s20465c15f3, ABISELECT(1184,944), "S20465C15.s20465c15f3");
    test_class_info(&lv, &cd_S20465C15);
    dp->~S20465C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20465C15(Test_S20465C15, "S20465C15", ABISELECT(1536,1208));

#else // __cplusplus

extern void _ZN9S20465C15C1Ev();
extern void _ZN9S20465C15D1Ev();
Name_Map name_map_S20465C15[] = {
  NSPAIR(_ZN9S20465C15C1Ev),
  NSPAIR(_ZN9S20465C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20465C3;
extern VTBL_ENTRY _ZTI8S20465C3[];
extern  VTBL_ENTRY _ZTV8S20465C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20465C3;
extern VTBL_ENTRY _ZTI8S20465C3[];
extern  VTBL_ENTRY _ZTV8S20465C3[];
extern Class_Descriptor cd_S20465C7;
extern VTBL_ENTRY _ZTI8S20465C7[];
extern  VTBL_ENTRY _ZTV8S20465C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C7[];
static Base_Class bases_S20465C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(1328,1052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1344,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20465C3,    ABISELECT(1336,1056), //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1400,1100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20465C3,    ABISELECT(1392,1096), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20465C7,    ABISELECT(1392,1096), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //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 _ZTI9S20465C15[];
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY vtc_S20465C15[] = {
  ABISELECT(1392,1096),
  ABISELECT(1336,1056),
  ABISELECT(1328,1052),
  0,
  (VTBL_ENTRY)&(_ZTI9S20465C15[0]),
  0,
  0,
  0,
  ABISELECT(-1336,-1056),
  (VTBL_ENTRY)&(_ZTI9S20465C15[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
  0,
  0,
  0,
  ABISELECT(-64,-44),
  ABISELECT(-1392,-1096),
  (VTBL_ENTRY)&(_ZTI9S20465C15[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern VTBL_ENTRY _ZTV9S20465C15[];
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C7__9S20465C15[] = {
  ABISELECT(-64,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C7[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
static  VTT_ENTRY vtt_S20465C15[] = {
  {&(_ZTV9S20465C15[5]),  5,22},
  {&(_ZTV9S20465C15[10]),  10,22},
  {&(_ZTV9S20465C15[19]),  19,22},
  {&(_tg__ZTV8S20465C7__9S20465C15[3]),  3,6},
};
extern VTBL_ENTRY _ZTI9S20465C15[];
extern  VTBL_ENTRY _ZTV9S20465C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20465C15[];
Class_Descriptor cd_S20465C15 = {  "S20465C15", // class name
  bases_S20465C15, 6,
  &(vtc_S20465C15[0]), // expected_vtbl_contents
  &(vtt_S20465C15[0]), // expected_vtt_contents
  ABISELECT(1536,1208), // object size
  NSPAIRA(_ZTI9S20465C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20465C15),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20465C15),4, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20465C13  : S20465C3 {
  void *s20465c13f0[7];
  int s20465c13f1[2];
  __tsi64 s20465c13f2;
  int s20465c13f3;
  virtual  ~S20465C13(); // _ZN9S20465C13D1Ev
  virtual void  v9(); // _ZN9S20465C132v9Ev
  S20465C13(); // tgen
};
//SIG(-1 S20465C13) C1{ BC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} vd v1 Fp[7] Fi[2] FL Fi}


 S20465C13 ::~S20465C13(){ note_dtor("S20465C13", this);}
void  S20465C13 ::v9(){vfunc_called(this, "_ZN9S20465C132v9Ev");}
S20465C13 ::S20465C13(){ note_ctor("S20465C13", this);} // tgen

static void Test_S20465C13()
{
  extern Class_Descriptor cd_S20465C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,23)];
    init_test(&cd_S20465C13, buf);
    S20465C13 *dp, &lv = *(dp=new (buf) S20465C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,88), "sizeof(S20465C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20465C13)");
    check_base_class_offset(lv, (S3216C8_nt*)(S20465C3*), ABISELECT(8,4), "S20465C13");
    check_base_class_offset(lv, (S20465C3*), 0, "S20465C13");
    check_field_offset(lv, s20465c13f0, ABISELECT(48,40), "S20465C13.s20465c13f0");
    check_field_offset(lv, s20465c13f1, ABISELECT(104,68), "S20465C13.s20465c13f1");
    check_field_offset(lv, s20465c13f2, ABISELECT(112,76), "S20465C13.s20465c13f2");
    check_field_offset(lv, s20465c13f3, ABISELECT(120,84), "S20465C13.s20465c13f3");
    test_class_info(&lv, &cd_S20465C13);
    dp->~S20465C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20465C13(Test_S20465C13, "S20465C13", ABISELECT(128,88));

#else // __cplusplus

extern void _ZN9S20465C13C1Ev();
extern void _ZN9S20465C13D1Ev();
Name_Map name_map_S20465C13[] = {
  NSPAIR(_ZN9S20465C13C1Ev),
  NSPAIR(_ZN9S20465C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20465C3;
extern VTBL_ENTRY _ZTI8S20465C3[];
extern  VTBL_ENTRY _ZTV8S20465C3[];
static Base_Class bases_S20465C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S20465C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20465C13[];
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
extern void _ZN9S20465C13D1Ev();
extern void _ZN9S20465C13D0Ev();
extern void _ZN9S20465C132v9Ev();
static  VTBL_ENTRY vtc_S20465C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20465C13[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
  (VTBL_ENTRY)&_ZN9S20465C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20465C13D0Ev,
  (VTBL_ENTRY)&_ZN9S20465C132v9Ev,
};
extern VTBL_ENTRY _ZTI9S20465C13[];
extern  VTBL_ENTRY _ZTV9S20465C13[];
Class_Descriptor cd_S20465C13 = {  "S20465C13", // class name
  bases_S20465C13, 2,
  &(vtc_S20465C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,88), // object size
  NSPAIRA(_ZTI9S20465C13),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20465C13),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  S20465C14  : S20465C15 , S3216C8_nt , virtual S20465C9 , S20465C13 {
  int s20465c14f0;
  void *s20465c14f1;
  int s20465c14f2;
  virtual  ~S20465C14(); // _ZN9S20465C14D2Ev
  virtual void  v10(); // _ZN9S20465C143v10Ev
  S20465C14(); // tgen
};
//SIG(-1 S20465C14) C1{ BC2{ VBC3{ m Fi} VBC4{ BC3 v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC5{ BC4 VBC3 FD FL FC4 Fp Fs[3]} Fp[2] Fi FC5[8] FD[9]} BC3 VBC6{ VBC4 VBC3 BC7{ VBC4 VBC3 v5 FC4 FD Fp[2] FC4} BC5 v6 Fp[2] Fl Fi FC4[5]} BC8{ BC4 vd v7 Fp[7] Fi[2] FL Fi} vd v1 Fi Fp Fi}


 S20465C14 ::~S20465C14(){ note_dtor("S20465C14", this);}
void  S20465C14 ::v10(){vfunc_called(this, "_ZN9S20465C143v10Ev");}
S20465C14 ::S20465C14(){ note_ctor("S20465C14", this);} // tgen

static void Test_S20465C14()
{
  extern Class_Descriptor cd_S20465C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(141,437)];
    init_test(&cd_S20465C14, buf);
    S20465C14 *dp, &lv = *(dp=new (buf) S20465C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2240,1744), "sizeof(S20465C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20465C14)");
    /*is_ambiguous_... S20465C15::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C15*), ABISELECT(1476,1156), "S20465C14");
    /*is_ambiguous_... S20465C14::S20465C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C7*), ABISELECT(1476,1156), "S20465C14");
    /*is_ambiguous_... S20465C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C9*), ABISELECT(1476,1156), "S20465C14");
    /*is_ambiguous_... S20465C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C2*)(S20465C9*), ABISELECT(1476,1156), "S20465C14");
    /*is_ambiguous_... S20465C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C7*)(S20465C9*), ABISELECT(1476,1156), "S20465C14");
    /*is_ambiguous_... S20465C14::S20465C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C3*), ABISELECT(1488,1164), "S20465C14");
    /*is_ambiguous_... S20465C15::S20465C3 */ AMB_check_base_class_offset(lv, (S20465C3*)(S20465C15*), ABISELECT(1480,1160), "S20465C14");
    /*is_ambiguous_... S20465C9::S20465C3 */ AMB_check_base_class_offset(lv, (S20465C3*)(S20465C9*), ABISELECT(1480,1160), "S20465C14");
    check_base_class_offset(lv, (S20465C3*)(S20465C2*)(S20465C9*), ABISELECT(1480,1160), "S20465C14");
    /*is_ambiguous_... S20465C14::S20465C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C3*)(S20465C7*), ABISELECT(1544,1204), "S20465C14");
    /*is_ambiguous_... S20465C14::S20465C7 */ AMB_check_base_class_offset(lv, (S20465C3*)(S20465C7*), ABISELECT(1536,1200), "S20465C14");
    check_base_class_offset(lv, (S20465C7*)(S20465C15*), ABISELECT(1536,1200), "S20465C14");
    check_base_class_offset(lv, (S20465C15*), 0, "S20465C14");
    /*is_ambiguous_... S20465C14::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(1328,1052), "S20465C14");
    check_base_class_offset(lv, (S20465C2*)(S20465C9*), ABISELECT(1680,1312), "S20465C14");
    check_base_class_offset(lv, (S3216C8_nt*)(S20465C3*)(S20465C7*)(S20465C9*), ABISELECT(1832,1420), "S20465C14");
    check_base_class_offset(lv, (S20465C3*)(S20465C7*)(S20465C9*), ABISELECT(1824,1416), "S20465C14");
    check_base_class_offset(lv, (S20465C7*)(S20465C9*), ABISELECT(1824,1416), "S20465C14");
    check_base_class_offset(lv, (S20465C9*), ABISELECT(1680,1312), "S20465C14");
    check_base_class_offset(lv, (S3216C8_nt*)(S20465C3*)(S20465C13*), ABISELECT(1344,1060), "S20465C14");
    check_base_class_offset(lv, (S20465C3*)(S20465C13*), ABISELECT(1336,1056), "S20465C14");
    check_base_class_offset(lv, (S20465C13*), ABISELECT(1336,1056), "S20465C14");
    check_field_offset(lv, s20465c14f0, ABISELECT(1460,1144), "S20465C14.s20465c14f0");
    check_field_offset(lv, s20465c14f1, ABISELECT(1464,1148), "S20465C14.s20465c14f1");
    check_field_offset(lv, s20465c14f2, ABISELECT(1472,1152), "S20465C14.s20465c14f2");
    test_class_info(&lv, &cd_S20465C14);
    dp->~S20465C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20465C14(Test_S20465C14, "S20465C14", ABISELECT(2240,1744));

#else // __cplusplus

extern void _ZN9S20465C14C1Ev();
extern void _ZN9S20465C14D2Ev();
Name_Map name_map_S20465C14[] = {
  NSPAIR(_ZN9S20465C14C1Ev),
  NSPAIR(_ZN9S20465C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20465C3;
extern VTBL_ENTRY _ZTI8S20465C3[];
extern  VTBL_ENTRY _ZTV8S20465C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20465C3;
extern VTBL_ENTRY _ZTI8S20465C3[];
extern  VTBL_ENTRY _ZTV8S20465C3[];
extern Class_Descriptor cd_S20465C7;
extern VTBL_ENTRY _ZTI8S20465C7[];
extern  VTBL_ENTRY _ZTV8S20465C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C7[];
extern Class_Descriptor cd_S20465C15;
extern VTBL_ENTRY _ZTI9S20465C15[];
extern  VTBL_ENTRY _ZTV9S20465C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20465C15[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20465C2;
extern VTBL_ENTRY _ZTI8S20465C2[];
extern  VTBL_ENTRY _ZTV8S20465C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20465C3;
extern VTBL_ENTRY _ZTI8S20465C3[];
extern  VTBL_ENTRY _ZTV8S20465C3[];
extern Class_Descriptor cd_S20465C7;
extern VTBL_ENTRY _ZTI8S20465C7[];
extern  VTBL_ENTRY _ZTV8S20465C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C7[];
extern Class_Descriptor cd_S20465C9;
extern VTBL_ENTRY _ZTI8S20465C9[];
extern  VTBL_ENTRY _ZTV8S20465C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20465C3;
extern VTBL_ENTRY _ZTI8S20465C3[];
extern  VTBL_ENTRY _ZTV8S20465C3[];
extern Class_Descriptor cd_S20465C13;
extern VTBL_ENTRY _ZTI9S20465C13[];
extern  VTBL_ENTRY _ZTV9S20465C13[];
static Base_Class bases_S20465C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(1476,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
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1488,1164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20465C3,    ABISELECT(1480,1160), //bcp->offset
    17, //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
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1544,1204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20465C3,    ABISELECT(1536,1200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20465C7,    ABISELECT(1536,1200), //bcp->offset
    25, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20465C15,    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_S3216C8_nt,    ABISELECT(1328,1052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20465C2,    ABISELECT(1680,1312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1832,1420), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20465C3,    ABISELECT(1824,1416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20465C7,    ABISELECT(1824,1416), //bcp->offset
    45, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20465C9,    ABISELECT(1680,1312), //bcp->offset
    34, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1344,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20465C3,    ABISELECT(1336,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
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20465C13,    ABISELECT(1336,1056), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20465C14[];
extern void _ZN9S20465C14D1Ev();
extern void _ZN9S20465C14D0Ev();
extern void _ZN9S20465C143v10Ev();
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
extern void ABISELECT(_ZThn1336_N9S20465C14D1Ev,_ZThn1056_N9S20465C14D1Ev)();
extern void ABISELECT(_ZThn1336_N9S20465C14D0Ev,_ZThn1056_N9S20465C14D0Ev)();
extern void _ZN9S20465C132v9Ev();
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
extern void _ZN8S20465C22v4Ev();
extern void _ZN8S20465C92v6Ev();
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY vtc_S20465C14[] = {
  ABISELECT(1680,1312),
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  0,
  (VTBL_ENTRY)&(_ZTI9S20465C14[0]),
  (VTBL_ENTRY)&_ZN9S20465C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20465C14D0Ev,
  (VTBL_ENTRY)&_ZN9S20465C143v10Ev,
  ABISELECT(-1336,-1056),
  (VTBL_ENTRY)&(_ZTI9S20465C14[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1336_N9S20465C14D1Ev,_ZThn1056_N9S20465C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1336_N9S20465C14D0Ev,_ZThn1056_N9S20465C14D0Ev),
  (VTBL_ENTRY)&_ZN9S20465C132v9Ev,
  0,
  0,
  0,
  ABISELECT(-1480,-1160),
  (VTBL_ENTRY)&(_ZTI9S20465C14[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(-1536,-1200),
  (VTBL_ENTRY)&(_ZTI9S20465C14[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  ABISELECT(-1680,-1312),
  (VTBL_ENTRY)&(_ZTI9S20465C14[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20465C92v6Ev,
  ABISELECT(-348,-260),
  ABISELECT(-1824,-1416),
  (VTBL_ENTRY)&(_ZTI9S20465C14[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern VTBL_ENTRY _ZTV9S20465C14[];
static  VTBL_ENTRY _tg__ZTV9S20465C15__9S20465C14[] = {
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  0,
  (VTBL_ENTRY)&(_ZTI9S20465C15[0]),
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C3__9S20465C15__9S20465C14[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1160),
  (VTBL_ENTRY)&(_ZTI9S20465C15[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C7__9S20465C15__9S20465C14[] = {
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(-1536,-1200),
  (VTBL_ENTRY)&(_ZTI9S20465C15[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C7__9S20465C14[] = {
  ABISELECT(-60,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C7[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C22v4Ev();
extern void _ZN8S20465C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C9__9S20465C14[] = {
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C9[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20465C92v6Ev,
};
extern void _ZN8S20465C22v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C28S20465C9__9S20465C14[] = {
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C2[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C3__8S20465C28S20465C9__9S20465C14[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S20465C2[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C78S20465C9__A1__9S20465C14[] = {
  ABISELECT(-348,-260),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C7[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C3__8S20465C9__9S20465C14[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S20465C9[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C7__8S20465C9__9S20465C14[] = {
  ABISELECT(-348,-260),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20465C9[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
static  VTT_ENTRY vtt_S20465C14[] = {
  {&(_ZTV9S20465C14[6]),  6,51},
  {&(_tg__ZTV9S20465C15__9S20465C14[5]),  5,5},
  {&(_tg__ZTV8S20465C3__9S20465C15__9S20465C14[5]),  5,8},
  {&(_tg__ZTV8S20465C7__9S20465C15__9S20465C14[6]),  6,9},
  {&(_ZTV9S20465C14[22]),  22,51},
  {&(_ZTV9S20465C14[31]),  31,51},
  {&(_ZTV9S20465C14[43]),  43,51},
  {&(_ZTV9S20465C14[48]),  48,51},
  {&(_tg__ZTV8S20465C7__9S20465C14[3]),  3,6},
  {&(_tg__ZTV8S20465C9__9S20465C14[4]),  4,6},
  {&(_tg__ZTV8S20465C28S20465C9__9S20465C14[4]),  4,5},
  {&(_tg__ZTV8S20465C3__8S20465C28S20465C9__9S20465C14[5]),  5,8},
  {&(_tg__ZTV8S20465C78S20465C9__A1__9S20465C14[3]),  3,6},
  {&(_tg__ZTV8S20465C3__8S20465C9__9S20465C14[5]),  5,8},
  {&(_tg__ZTV8S20465C7__8S20465C9__9S20465C14[3]),  3,6},
};
extern VTBL_ENTRY _ZTI9S20465C14[];
extern  VTBL_ENTRY _ZTV9S20465C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20465C14[];
Class_Descriptor cd_S20465C14 = {  "S20465C14", // class name
  bases_S20465C14, 16,
  &(vtc_S20465C14[0]), // expected_vtbl_contents
  &(vtt_S20465C14[0]), // expected_vtt_contents
  ABISELECT(2240,1744), // object size
  NSPAIRA(_ZTI9S20465C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20465C14),51, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20465C14),15, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20465C1  : virtual S20465C2 , S20465C5 , S20465C11 , S20465C14 , virtual S20465C15 {
  int s20465c1f0[2];
  void *s20465c1f1;
  long s20465c1f2;
  void *s20465c1f3;
  long double s20465c1f4;
  int s20465c1f5;
  ::S20465C3 s20465c1f6;
  void *s20465c1f7;
  virtual  ~S20465C1(); // _ZN8S20465C1D2Ev
  S20465C1(); // tgen
};
//SIG(1 S20465C1) C1{ VBC2{ VBC3{ BC4{ m Fi} v1 v2 v3 FC4[3] FC4[2] Fp Fs FC4} VBC4 v4 FC3 FD Fp[2] FC3} BC5{ BC6{ v5 Fp[7] FC2 FD Fi FL Fp FC2 Fp[5] Fi[8] Fp} BC7{ BC3 VBC4 FD FL FC3 Fp Fs[3]} BC8{ VBC4 BC9{ VBC3 VBC4 BC2 BC7 v6 Fp[2] Fl Fi FC3[5]} BC2 BC7 v7 Fi FC10{} Fp[2]} vd} BC11{ v8 Fi FC6 FL Fi FC12{ VBC13{ BC14{ BC4 v12 v13 v14 FC4[3] FC4[2] Fp Fs FC4} VBC4 FD FL FC14 Fp Fs[3]} BC15{ BC14 vd v15 Fp[7] Fi[2] FL Fi} VBC14 BC16{ VBC14 VBC4 BC17{ VBC14 VBC4 v16 FC14 FD Fp[2] FC14} BC13 v17 Fp[2] Fl Fi FC14[5]} BC17 v11 Fi[2] FD FC17[10] Fi} Fi[2]} BC18{ BC19{ VBC4 VBC3 VBC7 Fp[2] Fi FC7[8] FD[9]} BC4 VBC9 BC20{ BC3 vd v9 Fp[7] Fi[2] FL Fi} vd v10 Fi Fp Fi} VBC19 vd Fi[2] Fp Fl Fp FD Fi FC3 Fp}


 S20465C1 ::~S20465C1(){ note_dtor("S20465C1", this);}
S20465C1 ::S20465C1(){ note_ctor("S20465C1", this);} // tgen

static void Test_S20465C1()
{
  extern Class_Descriptor cd_S20465C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(580,1724)];
    init_test(&cd_S20465C1, buf);
    S20465C1 *dp, &lv = *(dp=new (buf) S20465C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(9264,6892), "sizeof(S20465C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20465C1)");
    /*is_ambiguous_... S20465C1::S20465C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C3*), ABISELECT(7176,5256), "S20465C1");
    /*is_ambiguous_... S20465C1::S20465C2 */ AMB_check_base_class_offset(lv, (S20465C3*)(S20465C2*), ABISELECT(7168,5252), "S20465C1");
    /*is_ambiguous_... S20465C9::S20465C3 */ AMB_check_base_class_offset(lv, (S20465C3*)(S20465C9*)(S20465C8*)(S20465C5*), ABISELECT(7168,5252), "S20465C1");
    check_base_class_offset(lv, (S20465C3*)(S20465C2*)(S20465C9*)(S20465C8*)(S20465C5*), ABISELECT(7168,5252), "S20465C1");
    /*is_ambiguous_... S20465C8::S20465C2 */ AMB_check_base_class_offset(lv, (S20465C3*)(S20465C2*)(S20465C8*)(S20465C5*), ABISELECT(7168,5252), "S20465C1");
    /*is_ambiguous_... S20465C15::S20465C3 */ AMB_check_base_class_offset(lv, (S20465C3*)(S20465C15*)(S20465C14*), ABISELECT(7168,5252), "S20465C1");
    /*is_ambiguous_... S20465C1::S20465C9 */ AMB_check_base_class_offset(lv, (S20465C3*)(S20465C9*), ABISELECT(7168,5252), "S20465C1");
    /*is_ambiguous_... S20465C1::S20465C9 */ AMB_check_base_class_offset(lv, (S20465C3*)(S20465C2*)(S20465C9*), ABISELECT(7168,5252), "S20465C1");
    /*is_ambiguous_... S20465C1::S20465C15 */ AMB_check_base_class_offset(lv, (S20465C3*)(S20465C15*), ABISELECT(7168,5252), "S20465C1");
    /*is_ambiguous_... S20465C1::S20465C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C2*), ABISELECT(7216,5292), "S20465C1");
    /*is_ambiguous_... S20465C5::S20465C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C7*)(S20465C5*), ABISELECT(7216,5292), "S20465C1");
    /*is_ambiguous_... S20465C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C8*)(S20465C5*), ABISELECT(7216,5292), "S20465C1");
    /*is_ambiguous_... S20465C9::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C9*)(S20465C8*)(S20465C5*), ABISELECT(7216,5292), "S20465C1");
    /*is_ambiguous_... S20465C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C2*)(S20465C9*)(S20465C8*)(S20465C5*), ABISELECT(7216,5292), "S20465C1");
    /*is_ambiguous_... S20465C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C7*)(S20465C9*)(S20465C8*)(S20465C5*), ABISELECT(7216,5292), "S20465C1");
    /*is_ambiguous_... S20465C8::S20465C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C2*)(S20465C8*)(S20465C5*), ABISELECT(7216,5292), "S20465C1");
    /*is_ambiguous_... S20465C8::S20465C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C7*)(S20465C8*)(S20465C5*), ABISELECT(7216,5292), "S20465C1");
    /*is_ambiguous_... S20465C15::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C15*)(S20465C14*), ABISELECT(7216,5292), "S20465C1");
    /*is_ambiguous_... S20465C1::S20465C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C7*), ABISELECT(7216,5292), "S20465C1");
    /*is_ambiguous_... S20465C1::S20465C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C9*), ABISELECT(7216,5292), "S20465C1");
    /*is_ambiguous_... S20465C1::S20465C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C2*)(S20465C9*), ABISELECT(7216,5292), "S20465C1");
    /*is_ambiguous_... S20465C1::S20465C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C7*)(S20465C9*), ABISELECT(7216,5292), "S20465C1");
    /*is_ambiguous_... S20465C1::S20465C15 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C15*), ABISELECT(7216,5292), "S20465C1");
    /*is_ambiguous_... S20465C1::S20465C2 */ AMB_check_base_class_offset(lv, (S20465C2*), ABISELECT(7024,5148), "S20465C1");
    check_base_class_offset(lv, (S20465C6*)(S20465C5*), 0, "S20465C1");
    /*is_ambiguous_... S20465C5::S20465C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C3*)(S20465C7*)(S20465C5*), ABISELECT(616,416), "S20465C1");
    /*is_ambiguous_... S20465C5::S20465C7 */ AMB_check_base_class_offset(lv, (S20465C3*)(S20465C7*)(S20465C5*), ABISELECT(608,412), "S20465C1");
    /*is_ambiguous_... S20465C5::S20465C7 */ AMB_check_base_class_offset(lv, (S20465C7*)(S20465C5*), ABISELECT(608,412), "S20465C1");
    check_base_class_offset(lv, (S20465C2*)(S20465C9*)(S20465C8*)(S20465C5*), ABISELECT(752,524), "S20465C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S20465C3*)(S20465C7*)(S20465C9*)(S20465C8*)(S20465C5*), ABISELECT(904,632), "S20465C1");
    check_base_class_offset(lv, (S20465C3*)(S20465C7*)(S20465C9*)(S20465C8*)(S20465C5*), ABISELECT(896,628), "S20465C1");
    check_base_class_offset(lv, (S20465C7*)(S20465C9*)(S20465C8*)(S20465C5*), ABISELECT(896,628), "S20465C1");
    check_base_class_offset(lv, (S20465C9*)(S20465C8*)(S20465C5*), ABISELECT(752,524), "S20465C1");
    /*is_ambiguous_... S20465C8::S20465C2 */ AMB_check_base_class_offset(lv, (S20465C2*)(S20465C8*)(S20465C5*), ABISELECT(1312,956), "S20465C1");
    /*is_ambiguous_... S20465C8::S20465C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C3*)(S20465C7*)(S20465C8*)(S20465C5*), ABISELECT(1464,1064), "S20465C1");
    /*is_ambiguous_... S20465C8::S20465C7 */ AMB_check_base_class_offset(lv, (S20465C3*)(S20465C7*)(S20465C8*)(S20465C5*), ABISELECT(1456,1060), "S20465C1");
    /*is_ambiguous_... S20465C8::S20465C7 */ AMB_check_base_class_offset(lv, (S20465C7*)(S20465C8*)(S20465C5*), ABISELECT(1456,1060), "S20465C1");
    check_base_class_offset(lv, (S20465C8*)(S20465C5*), ABISELECT(752,524), "S20465C1");
    check_base_class_offset(lv, (S20465C5*), 0, "S20465C1");
    check_base_class_offset(lv, (S20465C11*), ABISELECT(1616,1188), "S20465C1");
    /*is_ambiguous_... S20465C1::S20465C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C3*)(S20465C7*), ABISELECT(7240,5300), "S20465C1");
    /*is_ambiguous_... S20465C1::S20465C7 */ AMB_check_base_class_offset(lv, (S20465C3*)(S20465C7*), ABISELECT(7232,5296), "S20465C1");
    check_base_class_offset(lv, (S20465C7*)(S20465C15*)(S20465C14*), ABISELECT(7232,5296), "S20465C1");
    /*is_ambiguous_... S20465C1::S20465C15 */ AMB_check_base_class_offset(lv, (S20465C7*)(S20465C15*), ABISELECT(7232,5296), "S20465C1");
    check_base_class_offset(lv, (S20465C15*)(S20465C14*), ABISELECT(5424,3912), "S20465C1");
    /*is_ambiguous_... S20465C14::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C14*), ABISELECT(6752,4964), "S20465C1");
    /*is_ambiguous_... S20465C1::S20465C9 */ AMB_check_base_class_offset(lv, (S20465C2*)(S20465C9*), ABISELECT(7376,5408), "S20465C1");
    /*is_ambiguous_... S20465C1::S20465C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20465C3*)(S20465C7*)(S20465C9*), ABISELECT(7528,5516), "S20465C1");
    /*is_ambiguous_... S20465C1::S20465C9 */ AMB_check_base_class_offset(lv, (S20465C3*)(S20465C7*)(S20465C9*), ABISELECT(7520,5512), "S20465C1");
    /*is_ambiguous_... S20465C1::S20465C9 */ AMB_check_base_class_offset(lv, (S20465C7*)(S20465C9*), ABISELECT(7520,5512), "S20465C1");
    check_base_class_offset(lv, (S20465C9*)(S20465C14*), ABISELECT(7376,5408), "S20465C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S20465C3*)(S20465C13*)(S20465C14*), ABISELECT(6768,4972), "S20465C1");
    check_base_class_offset(lv, (S20465C3*)(S20465C13*)(S20465C14*), ABISELECT(6760,4968), "S20465C1");
    check_base_class_offset(lv, (S20465C13*)(S20465C14*), ABISELECT(6760,4968), "S20465C1");
    check_base_class_offset(lv, (S20465C14*), ABISELECT(5424,3912), "S20465C1");
    /*is_ambiguous_... S20465C1::S20465C15 */ AMB_check_base_class_offset(lv, (S20465C15*), ABISELECT(7936,5840), "S20465C1");
    check_field_offset(lv, s20465c1f0, ABISELECT(6900,5068), "S20465C1.s20465c1f0");
    check_field_offset(lv, s20465c1f1, ABISELECT(6912,5076), "S20465C1.s20465c1f1");
    check_field_offset(lv, s20465c1f2, ABISELECT(6920,5080), "S20465C1.s20465c1f2");
    check_field_offset(lv, s20465c1f3, ABISELECT(6928,5084), "S20465C1.s20465c1f3");
    check_field_offset(lv, s20465c1f4, ABISELECT(6944,5088), "S20465C1.s20465c1f4");
    check_field_offset(lv, s20465c1f5, ABISELECT(6960,5100), "S20465C1.s20465c1f5");
    check_field_offset(lv, s20465c1f6, ABISELECT(6968,5104), "S20465C1.s20465c1f6");
    check_field_offset(lv, s20465c1f7, ABISELECT(7016,5144), "S20465C1.s20465c1f7");
    test_class_info(&lv, &cd_S20465C1);
    dp->~S20465C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20465C1(Test_S20465C1, "S20465C1", ABISELECT(9264,6892));

#else // __cplusplus

extern void _ZN8S20465C1C1Ev();
extern void _ZN8S20465C1D2Ev();
Name_Map name_map_S20465C1[] = {
  NSPAIR(_ZN8S20465C1C1Ev),
  NSPAIR(_ZN8S20465C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20465C3;
extern VTBL_ENTRY _ZTI8S20465C3[];
extern  VTBL_ENTRY _ZTV8S20465C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20465C2;
extern VTBL_ENTRY _ZTI8S20465C2[];
extern  VTBL_ENTRY _ZTV8S20465C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C2[];
extern Class_Descriptor cd_S20465C6;
extern VTBL_ENTRY _ZTI8S20465C6[];
extern  VTBL_ENTRY _ZTV8S20465C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20465C3;
extern VTBL_ENTRY _ZTI8S20465C3[];
extern  VTBL_ENTRY _ZTV8S20465C3[];
extern Class_Descriptor cd_S20465C7;
extern VTBL_ENTRY _ZTI8S20465C7[];
extern  VTBL_ENTRY _ZTV8S20465C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C7[];
extern Class_Descriptor cd_S20465C2;
extern VTBL_ENTRY _ZTI8S20465C2[];
extern  VTBL_ENTRY _ZTV8S20465C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20465C3;
extern VTBL_ENTRY _ZTI8S20465C3[];
extern  VTBL_ENTRY _ZTV8S20465C3[];
extern Class_Descriptor cd_S20465C7;
extern VTBL_ENTRY _ZTI8S20465C7[];
extern  VTBL_ENTRY _ZTV8S20465C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C7[];
extern Class_Descriptor cd_S20465C9;
extern VTBL_ENTRY _ZTI8S20465C9[];
extern  VTBL_ENTRY _ZTV8S20465C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C9[];
extern Class_Descriptor cd_S20465C2;
extern VTBL_ENTRY _ZTI8S20465C2[];
extern  VTBL_ENTRY _ZTV8S20465C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20465C3;
extern VTBL_ENTRY _ZTI8S20465C3[];
extern  VTBL_ENTRY _ZTV8S20465C3[];
extern Class_Descriptor cd_S20465C7;
extern VTBL_ENTRY _ZTI8S20465C7[];
extern  VTBL_ENTRY _ZTV8S20465C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C7[];
extern Class_Descriptor cd_S20465C8;
extern VTBL_ENTRY _ZTI8S20465C8[];
extern  VTBL_ENTRY _ZTV8S20465C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C8[];
extern Class_Descriptor cd_S20465C5;
extern VTBL_ENTRY _ZTI8S20465C5[];
extern  VTBL_ENTRY _ZTV8S20465C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C5[];
extern Class_Descriptor cd_S20465C11;
extern VTBL_ENTRY _ZTI9S20465C11[];
extern  VTBL_ENTRY _ZTV9S20465C11[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20465C3;
extern VTBL_ENTRY _ZTI8S20465C3[];
extern  VTBL_ENTRY _ZTV8S20465C3[];
extern Class_Descriptor cd_S20465C7;
extern VTBL_ENTRY _ZTI8S20465C7[];
extern  VTBL_ENTRY _ZTV8S20465C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C7[];
extern Class_Descriptor cd_S20465C15;
extern VTBL_ENTRY _ZTI9S20465C15[];
extern  VTBL_ENTRY _ZTV9S20465C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20465C15[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20465C2;
extern VTBL_ENTRY _ZTI8S20465C2[];
extern  VTBL_ENTRY _ZTV8S20465C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20465C3;
extern VTBL_ENTRY _ZTI8S20465C3[];
extern  VTBL_ENTRY _ZTV8S20465C3[];
extern Class_Descriptor cd_S20465C7;
extern VTBL_ENTRY _ZTI8S20465C7[];
extern  VTBL_ENTRY _ZTV8S20465C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C7[];
extern Class_Descriptor cd_S20465C9;
extern VTBL_ENTRY _ZTI8S20465C9[];
extern  VTBL_ENTRY _ZTV8S20465C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C9[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20465C3;
extern VTBL_ENTRY _ZTI8S20465C3[];
extern  VTBL_ENTRY _ZTV8S20465C3[];
extern Class_Descriptor cd_S20465C13;
extern VTBL_ENTRY _ZTI9S20465C13[];
extern  VTBL_ENTRY _ZTV9S20465C13[];
extern Class_Descriptor cd_S20465C14;
extern VTBL_ENTRY _ZTI9S20465C14[];
extern  VTBL_ENTRY _ZTV9S20465C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20465C14[];
extern Class_Descriptor cd_S20465C15;
extern VTBL_ENTRY _ZTI9S20465C15[];
extern  VTBL_ENTRY _ZTV9S20465C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20465C15[];
static Base_Class bases_S20465C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(7176,5256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20465C3,    ABISELECT(7168,5252), //bcp->offset
    67, //bcp->virtual_function_table_offset
    5, //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
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(7216,5292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20465C2,    ABISELECT(7024,5148), //bcp->offset
    61, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20465C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    18, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(616,416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20465C3,    ABISELECT(608,412), //bcp->offset
    -1, //bcp->virtual_function_table_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
    7, //immediately_derived
  0, 0},
  {&cd_S20465C7,    ABISELECT(608,412), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20465C2,    ABISELECT(752,524), //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
    13, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(904,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
    10, //immediately_derived
  0, 0},
  {&cd_S20465C3,    ABISELECT(896,628), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20465C7,    ABISELECT(896,628), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20465C9,    ABISELECT(752,524), //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
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20465C2,    ABISELECT(1312,956), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1464,1064), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20465C3,    ABISELECT(1456,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20465C7,    ABISELECT(1456,1060), //bcp->offset
    35, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20465C8,    ABISELECT(752,524), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20465C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20465C11,    ABISELECT(1616,1188), //bcp->offset
    41, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(7240,5300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20465C3,    ABISELECT(7232,5296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20465C7,    ABISELECT(7232,5296), //bcp->offset
    75, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20465C15,    ABISELECT(5424,3912), //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
    23, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(6752,4964), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20465C2,    ABISELECT(7376,5408), //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
    5, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(7528,5516), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20465C3,    ABISELECT(7520,5512), //bcp->offset
    -1, //bcp->virtual_function_table_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
    28, //immediately_derived
  0, 0},
  {&cd_S20465C7,    ABISELECT(7520,5512), //bcp->offset
    95, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20465C9,    ABISELECT(7376,5408), //bcp->offset
    84, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(6768,4972), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20465C3,    ABISELECT(6760,4968), //bcp->offset
    -1, //bcp->virtual_function_table_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
    32, //immediately_derived
  0, 0},
  {&cd_S20465C13,    ABISELECT(6760,4968), //bcp->offset
    53, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20465C14,    ABISELECT(5424,3912), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20465C15,    ABISELECT(7936,5840), //bcp->offset
    101, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20465C1[];
extern void _ZN8S20465C62v5Ev();
extern void _ZN8S20465C1D1Ev();
extern void _ZN8S20465C1D0Ev();
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
extern void _ZN8S20465C22v4Ev();
extern void _ZN8S20465C92v6Ev();
extern void _ZN8S20465C82v7Ev();
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
extern void _ZN8S20465C22v4Ev();
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
extern void _ZN9S20465C112v8Ev();
extern void ABISELECT(_ZThn5424_N8S20465C1D1Ev,_ZThn3912_N8S20465C1D1Ev)();
extern void ABISELECT(_ZThn5424_N8S20465C1D0Ev,_ZThn3912_N8S20465C1D0Ev)();
extern void _ZN9S20465C143v10Ev();
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
extern void ABISELECT(_ZThn6760_N8S20465C1D1Ev,_ZThn4968_N8S20465C1D1Ev)();
extern void ABISELECT(_ZThn6760_N8S20465C1D0Ev,_ZThn4968_N8S20465C1D0Ev)();
extern void _ZN9S20465C132v9Ev();
extern void _ZN8S20465C22v4Ev();
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
extern void _ZN8S20465C22v4Ev();
extern void _ZN8S20465C92v6Ev();
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY vtc_S20465C1[] = {
  ABISELECT(7936,5840),
  ABISELECT(7376,5408),
  ABISELECT(7232,5296),
  ABISELECT(7024,5148),
  ABISELECT(7168,5252),
  ABISELECT(7216,5292),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C1[0]),
  (VTBL_ENTRY)&_ZN8S20465C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20465C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20465C1D0Ev,
  ABISELECT(6608,4880),
  ABISELECT(-608,-412),
  (VTBL_ENTRY)&(_ZTI8S20465C1[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
  ABISELECT(6464,4768),
  ABISELECT(6416,4728),
  ABISELECT(-752,-524),
  (VTBL_ENTRY)&(_ZTI8S20465C1[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20465C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20465C82v7Ev,
  ABISELECT(6320,4664),
  ABISELECT(-896,-628),
  (VTBL_ENTRY)&(_ZTI8S20465C1[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
  ABISELECT(5904,4336),
  ABISELECT(5856,4296),
  ABISELECT(-1312,-956),
  (VTBL_ENTRY)&(_ZTI8S20465C1[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
  ABISELECT(5760,4232),
  ABISELECT(-1456,-1060),
  (VTBL_ENTRY)&(_ZTI8S20465C1[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
  ABISELECT(-1616,-1188),
  (VTBL_ENTRY)&(_ZTI8S20465C1[0]),
  (VTBL_ENTRY)&_ZN9S20465C112v8Ev,
  ABISELECT(1952,1496),
  ABISELECT(1808,1384),
  ABISELECT(1744,1340),
  ABISELECT(1792,1380),
  ABISELECT(-5424,-3912),
  (VTBL_ENTRY)&(_ZTI8S20465C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn5424_N8S20465C1D1Ev,_ZThn3912_N8S20465C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn5424_N8S20465C1D0Ev,_ZThn3912_N8S20465C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20465C143v10Ev,
  ABISELECT(-6760,-4968),
  (VTBL_ENTRY)&(_ZTI8S20465C1[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn6760_N8S20465C1D1Ev,_ZThn4968_N8S20465C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn6760_N8S20465C1D0Ev,_ZThn4968_N8S20465C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20465C132v9Ev,
  0,
  ABISELECT(192,144),
  ABISELECT(144,104),
  ABISELECT(-7024,-5148),
  (VTBL_ENTRY)&(_ZTI8S20465C1[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
  0,
  0,
  0,
  ABISELECT(-7168,-5252),
  (VTBL_ENTRY)&(_ZTI8S20465C1[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
  0,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-7232,-5296),
  (VTBL_ENTRY)&(_ZTI8S20465C1[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-160,-116),
  ABISELECT(-208,-156),
  ABISELECT(-7376,-5408),
  (VTBL_ENTRY)&(_ZTI8S20465C1[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20465C92v6Ev,
  ABISELECT(-304,-220),
  ABISELECT(-7520,-5512),
  (VTBL_ENTRY)&(_ZTI8S20465C1[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
  ABISELECT(-704,-544),
  ABISELECT(-768,-588),
  ABISELECT(-720,-548),
  ABISELECT(-7936,-5840),
  (VTBL_ENTRY)&(_ZTI8S20465C1[0]),
};
extern VTBL_ENTRY _ZTV8S20465C1[];
extern void _ZN8S20465C62v5Ev();
extern void _ZN8S20465C5D1Ev();
extern void _ZN8S20465C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C5__8S20465C1[] = {
  ABISELECT(7168,5252),
  ABISELECT(7216,5292),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C5[0]),
  (VTBL_ENTRY)&_ZN8S20465C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20465C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20465C5D0Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C78S20465C5__8S20465C1[] = {
  ABISELECT(6608,4880),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C7[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C22v4Ev();
extern void _ZN8S20465C92v6Ev();
extern void _ZN8S20465C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C88S20465C5__8S20465C1[] = {
  ABISELECT(6464,4768),
  ABISELECT(6416,4728),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C8[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20465C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20465C82v7Ev,
};
extern void _ZN8S20465C22v4Ev();
extern void _ZN8S20465C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C98S20465C88S20465C5__8S20465C1[] = {
  ABISELECT(6464,4768),
  ABISELECT(6416,4728),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C9[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20465C92v6Ev,
};
extern void _ZN8S20465C22v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C28S20465C98S20465C88S20465C5__A1__8S20465C1[] = {
  ABISELECT(6464,4768),
  ABISELECT(6416,4728),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C2[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C3__8S20465C28S20465C98S20465C88S20465C5__A1__8S20465C1[] = {
  0,
  0,
  0,
  ABISELECT(-6416,-4728),
  (VTBL_ENTRY)&(_ZTI8S20465C2[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C78S20465C98S20465C88S20465C5__A1__8S20465C1[] = {
  ABISELECT(6320,4664),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C7[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C3__8S20465C98S20465C88S20465C5__8S20465C1[] = {
  0,
  0,
  0,
  ABISELECT(-6416,-4728),
  (VTBL_ENTRY)&(_ZTI8S20465C9[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C7__8S20465C98S20465C88S20465C5__8S20465C1[] = {
  ABISELECT(6320,4664),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20465C9[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C22v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C28S20465C88S20465C5__A2__8S20465C1[] = {
  ABISELECT(5904,4336),
  ABISELECT(5856,4296),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C2[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C3__8S20465C28S20465C88S20465C5__A2__8S20465C1[] = {
  0,
  0,
  0,
  ABISELECT(-5856,-4296),
  (VTBL_ENTRY)&(_ZTI8S20465C2[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C78S20465C88S20465C5__A2__8S20465C1[] = {
  ABISELECT(5760,4232),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C7[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C3__8S20465C88S20465C5__8S20465C1[] = {
  0,
  0,
  0,
  ABISELECT(-6416,-4728),
  (VTBL_ENTRY)&(_ZTI8S20465C8[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C78S20465C9__8S20465C88S20465C5__8S20465C1[] = {
  ABISELECT(6320,4664),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20465C8[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C22v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C2__A1__8S20465C88S20465C5__8S20465C1[] = {
  ABISELECT(5904,4336),
  ABISELECT(5856,4296),
  ABISELECT(-560,-432),
  (VTBL_ENTRY)&(_ZTI8S20465C8[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C7__A1__8S20465C88S20465C5__8S20465C1[] = {
  ABISELECT(5760,4232),
  ABISELECT(-704,-536),
  (VTBL_ENTRY)&(_ZTI8S20465C8[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C7__8S20465C5__8S20465C1[] = {
  ABISELECT(6608,4880),
  ABISELECT(-608,-412),
  (VTBL_ENTRY)&(_ZTI8S20465C5[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C22v4Ev();
extern void _ZN8S20465C92v6Ev();
extern void _ZN8S20465C82v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C8__8S20465C5__8S20465C1[] = {
  ABISELECT(6464,4768),
  ABISELECT(6416,4728),
  ABISELECT(-752,-524),
  (VTBL_ENTRY)&(_ZTI8S20465C5[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20465C92v6Ev,
  (VTBL_ENTRY)&_ZN8S20465C82v7Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C3__A1__8S20465C5__8S20465C1[] = {
  0,
  0,
  0,
  ABISELECT(-7168,-5252),
  (VTBL_ENTRY)&(_ZTI8S20465C5[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C78S20465C98S20465C8__A1__8S20465C5__8S20465C1[] = {
  ABISELECT(6320,4664),
  ABISELECT(-896,-628),
  (VTBL_ENTRY)&(_ZTI8S20465C5[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C22v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C28S20465C8__A1__8S20465C5__8S20465C1[] = {
  ABISELECT(5904,4336),
  ABISELECT(5856,4296),
  ABISELECT(-1312,-956),
  (VTBL_ENTRY)&(_ZTI8S20465C5[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C78S20465C8__A2__8S20465C5__8S20465C1[] = {
  ABISELECT(5760,4232),
  ABISELECT(-1456,-1060),
  (VTBL_ENTRY)&(_ZTI8S20465C5[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN9S20465C14D1Ev();
extern void _ZN9S20465C14D0Ev();
extern void _ZN9S20465C143v10Ev();
static  VTBL_ENTRY _tg__ZTV9S20465C14__8S20465C1[] = {
  ABISELECT(1952,1496),
  ABISELECT(1808,1384),
  ABISELECT(1744,1340),
  ABISELECT(1792,1380),
  0,
  (VTBL_ENTRY)&(_ZTI9S20465C14[0]),
  (VTBL_ENTRY)&_ZN9S20465C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20465C14D0Ev,
  (VTBL_ENTRY)&_ZN9S20465C143v10Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20465C159S20465C14__8S20465C1[] = {
  ABISELECT(1808,1384),
  ABISELECT(1744,1340),
  ABISELECT(1792,1380),
  0,
  (VTBL_ENTRY)&(_ZTI9S20465C15[0]),
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C3__9S20465C159S20465C14__8S20465C1[] = {
  0,
  0,
  0,
  ABISELECT(-1744,-1340),
  (VTBL_ENTRY)&(_ZTI9S20465C15[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C7__9S20465C159S20465C14__8S20465C1[] = {
  0,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-1808,-1384),
  (VTBL_ENTRY)&(_ZTI9S20465C15[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C3__9S20465C14__8S20465C1[] = {
  0,
  0,
  0,
  ABISELECT(-1744,-1340),
  (VTBL_ENTRY)&(_ZTI9S20465C14[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C7__9S20465C14__8S20465C1[] = {
  0,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-1808,-1384),
  (VTBL_ENTRY)&(_ZTI9S20465C14[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C22v4Ev();
extern void _ZN8S20465C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C9__9S20465C14__8S20465C1[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-160,-116),
  ABISELECT(-208,-156),
  ABISELECT(-1952,-1496),
  (VTBL_ENTRY)&(_ZTI9S20465C14[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20465C92v6Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C78S20465C9__A1__9S20465C14__8S20465C1[] = {
  ABISELECT(-304,-220),
  ABISELECT(-2096,-1600),
  (VTBL_ENTRY)&(_ZTI9S20465C14[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C22v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C2__8S20465C1[] = {
  ABISELECT(192,144),
  ABISELECT(144,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C2[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C3__8S20465C2__8S20465C1[] = {
  0,
  0,
  0,
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20465C2[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C7__A3__8S20465C1[] = {
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C7[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C22v4Ev();
extern void _ZN8S20465C92v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C9__A1__8S20465C1[] = {
  ABISELECT(-160,-116),
  ABISELECT(-208,-156),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C9[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20465C92v6Ev,
};
extern void _ZN8S20465C22v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C28S20465C9__A3__8S20465C1[] = {
  ABISELECT(-160,-116),
  ABISELECT(-208,-156),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C2[0]),
  (VTBL_ENTRY)&_ZN8S20465C22v4Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C3__8S20465C28S20465C9__A3__8S20465C1[] = {
  0,
  0,
  0,
  ABISELECT(208,156),
  (VTBL_ENTRY)&(_ZTI8S20465C2[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C78S20465C9__A4__8S20465C1[] = {
  ABISELECT(-304,-220),
  0,
  (VTBL_ENTRY)&(_ZTI8S20465C7[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C3__8S20465C9__A1__8S20465C1[] = {
  0,
  0,
  0,
  ABISELECT(208,156),
  (VTBL_ENTRY)&(_ZTI8S20465C9[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C7__8S20465C9__A1__8S20465C1[] = {
  ABISELECT(-304,-220),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S20465C9[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20465C15__A1__8S20465C1[] = {
  ABISELECT(-704,-544),
  ABISELECT(-768,-588),
  ABISELECT(-720,-548),
  0,
  (VTBL_ENTRY)&(_ZTI9S20465C15[0]),
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C3__9S20465C15__A1__8S20465C1[] = {
  0,
  0,
  0,
  ABISELECT(768,588),
  (VTBL_ENTRY)&(_ZTI9S20465C15[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
extern void _ZN8S20465C32v1Ev();
extern void _ZN8S20465C32v2Ev();
extern void _ZN8S20465C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20465C7__9S20465C15__A1__8S20465C1[] = {
  0,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(704,544),
  (VTBL_ENTRY)&(_ZTI9S20465C15[0]),
  (VTBL_ENTRY)&_ZN8S20465C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20465C32v3Ev,
};
static  VTT_ENTRY vtt_S20465C1[] = {
  {&(_ZTV8S20465C1[8]),  8,106},
  {&(_tg__ZTV8S20465C5__8S20465C1[4]),  4,7},
  {&(_tg__ZTV8S20465C78S20465C5__8S20465C1[3]),  3,6},
  {&(_tg__ZTV8S20465C88S20465C5__8S20465C1[4]),  4,7},
  {&(_tg__ZTV8S20465C98S20465C88S20465C5__8S20465C1[4]),  4,6},
  {&(_tg__ZTV8S20465C28S20465C98S20465C88S20465C5__A1__8S20465C1[4]),  4,5},
  {&(_tg__ZTV8S20465C3__8S20465C28S20465C98S20465C88S20465C5__A1__8S20465C1[5]),  5,8},
  {&(_tg__ZTV8S20465C78S20465C98S20465C88S20465C5__A1__8S20465C1[3]),  3,6},
  {&(_tg__ZTV8S20465C3__8S20465C98S20465C88S20465C5__8S20465C1[5]),  5,8},
  {&(_tg__ZTV8S20465C7__8S20465C98S20465C88S20465C5__8S20465C1[3]),  3,6},
  {&(_tg__ZTV8S20465C28S20465C88S20465C5__A2__8S20465C1[4]),  4,5},
  {&(_tg__ZTV8S20465C3__8S20465C28S20465C88S20465C5__A2__8S20465C1[5]),  5,8},
  {&(_tg__ZTV8S20465C78S20465C88S20465C5__A2__8S20465C1[3]),  3,6},
  {&(_tg__ZTV8S20465C3__8S20465C88S20465C5__8S20465C1[5]),  5,8},
  {&(_tg__ZTV8S20465C78S20465C9__8S20465C88S20465C5__8S20465C1[3]),  3,6},
  {&(_tg__ZTV8S20465C2__A1__8S20465C88S20465C5__8S20465C1[4]),  4,5},
  {&(_tg__ZTV8S20465C7__A1__8S20465C88S20465C5__8S20465C1[3]),  3,6},
  {&(_tg__ZTV8S20465C7__8S20465C5__8S20465C1[3]),  3,6},
  {&(_tg__ZTV8S20465C8__8S20465C5__8S20465C1[4]),  4,7},
  {&(_tg__ZTV8S20465C3__A1__8S20465C5__8S20465C1[5]),  5,8},
  {&(_tg__ZTV8S20465C78S20465C98S20465C8__A1__8S20465C5__8S20465C1[3]),  3,6},
  {&(_tg__ZTV8S20465C28S20465C8__A1__8S20465C5__8S20465C1[4]),  4,5},
  {&(_tg__ZTV8S20465C78S20465C8__A2__8S20465C5__8S20465C1[3]),  3,6},
  {&(_tg__ZTV9S20465C14__8S20465C1[6]),  6,9},
  {&(_tg__ZTV9S20465C159S20465C14__8S20465C1[5]),  5,5},
  {&(_tg__ZTV8S20465C3__9S20465C159S20465C14__8S20465C1[5]),  5,8},
  {&(_tg__ZTV8S20465C7__9S20465C159S20465C14__8S20465C1[6]),  6,9},
  {&(_tg__ZTV8S20465C3__9S20465C14__8S20465C1[5]),  5,8},
  {&(_tg__ZTV8S20465C7__9S20465C14__8S20465C1[6]),  6,9},
  {&(_tg__ZTV8S20465C9__9S20465C14__8S20465C1[9]),  9,11},
  {&(_tg__ZTV8S20465C78S20465C9__A1__9S20465C14__8S20465C1[3]),  3,6},
  {&(_ZTV8S20465C1[66]),  66,106},
  {&(_ZTV8S20465C1[72]),  72,106},
  {&(_ZTV8S20465C1[14]),  14,106},
  {&(_ZTV8S20465C1[21]),  21,106},
  {&(_ZTV8S20465C1[27]),  27,106},
  {&(_ZTV8S20465C1[34]),  34,106},
  {&(_ZTV8S20465C1[38]),  38,106},
  {&(_ZTV8S20465C1[50]),  50,106},
  {&(_ZTV8S20465C1[81]),  81,106},
  {&(_ZTV8S20465C1[93]),  93,106},
  {&(_ZTV8S20465C1[98]),  98,106},
  {&(_ZTV8S20465C1[106]),  106,106},
  {&(_tg__ZTV8S20465C2__8S20465C1[4]),  4,5},
  {&(_tg__ZTV8S20465C3__8S20465C2__8S20465C1[5]),  5,8},
  {&(_tg__ZTV8S20465C7__A3__8S20465C1[3]),  3,6},
  {&(_tg__ZTV8S20465C9__A1__8S20465C1[4]),  4,6},
  {&(_tg__ZTV8S20465C28S20465C9__A3__8S20465C1[4]),  4,5},
  {&(_tg__ZTV8S20465C3__8S20465C28S20465C9__A3__8S20465C1[5]),  5,8},
  {&(_tg__ZTV8S20465C78S20465C9__A4__8S20465C1[3]),  3,6},
  {&(_tg__ZTV8S20465C3__8S20465C9__A1__8S20465C1[5]),  5,8},
  {&(_tg__ZTV8S20465C7__8S20465C9__A1__8S20465C1[3]),  3,6},
  {&(_tg__ZTV9S20465C15__A1__8S20465C1[5]),  5,5},
  {&(_tg__ZTV8S20465C3__9S20465C15__A1__8S20465C1[5]),  5,8},
  {&(_tg__ZTV8S20465C7__9S20465C15__A1__8S20465C1[6]),  6,9},
};
extern VTBL_ENTRY _ZTI8S20465C1[];
extern  VTBL_ENTRY _ZTV8S20465C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20465C1[];
Class_Descriptor cd_S20465C1 = {  "S20465C1", // class name
  bases_S20465C1, 35,
  &(vtc_S20465C1[0]), // expected_vtbl_contents
  &(vtt_S20465C1[0]), // expected_vtt_contents
  ABISELECT(9264,6892), // object size
  NSPAIRA(_ZTI8S20465C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20465C1),106, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20465C1),55, //virtual table table var
  26, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6638C2_nt  {
  void *s6638c2f0;
  ::S4677C24 s6638c2f1;
  virtual  ~S6638C2_nt(); // _ZN10S6638C2_ntD1Ev
  virtual void  v23(); // _ZN10S6638C2_nt3v23Ev
  virtual void  v24(); // _ZN10S6638C2_nt3v24Ev
  virtual void  v25(); // _ZN10S6638C2_nt3v25Ev
  virtual void  v26(); // _ZN10S6638C2_nt3v26Ev
  virtual void  v27(); // _ZN10S6638C2_nt3v27Ev
  virtual void  v28(); // _ZN10S6638C2_nt3v28Ev
  virtual void  v29(); // _ZN10S6638C2_nt3v29Ev
  virtual void  v30(); // _ZN10S6638C2_nt3v30Ev
  virtual void  v31(); // _ZN10S6638C2_nt3v31Ev
  virtual void  v32(); // _ZN10S6638C2_nt3v32Ev
  virtual void  v33(); // _ZN10S6638C2_nt3v33Ev
  virtual void  v34(); // _ZN10S6638C2_nt3v34Ev
  virtual void  v35(); // _ZN10S6638C2_nt3v35Ev
  virtual void  v36(); // _ZN10S6638C2_nt3v36Ev
  virtual void  v37(); // _ZN10S6638C2_nt3v37Ev
  S6638C2_nt(); // tgen
};
//SIG(-1 S6638C2_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}}}}


 S6638C2_nt ::~S6638C2_nt(){ note_dtor("S6638C2_nt", this);}
void  S6638C2_nt ::v23(){vfunc_called(this, "_ZN10S6638C2_nt3v23Ev");}
void  S6638C2_nt ::v24(){vfunc_called(this, "_ZN10S6638C2_nt3v24Ev");}
void  S6638C2_nt ::v25(){vfunc_called(this, "_ZN10S6638C2_nt3v25Ev");}
void  S6638C2_nt ::v26(){vfunc_called(this, "_ZN10S6638C2_nt3v26Ev");}
void  S6638C2_nt ::v27(){vfunc_called(this, "_ZN10S6638C2_nt3v27Ev");}
void  S6638C2_nt ::v28(){vfunc_called(this, "_ZN10S6638C2_nt3v28Ev");}
void  S6638C2_nt ::v29(){vfunc_called(this, "_ZN10S6638C2_nt3v29Ev");}
void  S6638C2_nt ::v30(){vfunc_called(this, "_ZN10S6638C2_nt3v30Ev");}
void  S6638C2_nt ::v31(){vfunc_called(this, "_ZN10S6638C2_nt3v31Ev");}
void  S6638C2_nt ::v32(){vfunc_called(this, "_ZN10S6638C2_nt3v32Ev");}
void  S6638C2_nt ::v33(){vfunc_called(this, "_ZN10S6638C2_nt3v33Ev");}
void  S6638C2_nt ::v34(){vfunc_called(this, "_ZN10S6638C2_nt3v34Ev");}
void  S6638C2_nt ::v35(){vfunc_called(this, "_ZN10S6638C2_nt3v35Ev");}
void  S6638C2_nt ::v36(){vfunc_called(this, "_ZN10S6638C2_nt3v36Ev");}
void  S6638C2_nt ::v37(){vfunc_called(this, "_ZN10S6638C2_nt3v37Ev");}
S6638C2_nt ::S6638C2_nt(){ note_ctor("S6638C2_nt", this);} // tgen

//skip512 S6638C2_nt

#else // __cplusplus

extern void _ZN10S6638C2_ntC1Ev();
extern void _ZN10S6638C2_ntD1Ev();
Name_Map name_map_S6638C2_nt[] = {
  NSPAIR(_ZN10S6638C2_ntC1Ev),
  NSPAIR(_ZN10S6638C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S6638C2_nt[];
extern void _ZN10S6638C2_ntD1Ev();
extern void _ZN10S6638C2_ntD0Ev();
extern void _ZN10S6638C2_nt3v23Ev();
extern void _ZN10S6638C2_nt3v24Ev();
extern void _ZN10S6638C2_nt3v25Ev();
extern void _ZN10S6638C2_nt3v26Ev();
extern void _ZN10S6638C2_nt3v27Ev();
extern void _ZN10S6638C2_nt3v28Ev();
extern void _ZN10S6638C2_nt3v29Ev();
extern void _ZN10S6638C2_nt3v30Ev();
extern void _ZN10S6638C2_nt3v31Ev();
extern void _ZN10S6638C2_nt3v32Ev();
extern void _ZN10S6638C2_nt3v33Ev();
extern void _ZN10S6638C2_nt3v34Ev();
extern void _ZN10S6638C2_nt3v35Ev();
extern void _ZN10S6638C2_nt3v36Ev();
extern void _ZN10S6638C2_nt3v37Ev();
static  VTBL_ENTRY vtc_S6638C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6638C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S6638C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6638C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S6638C2_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6638C2_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6638C2_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S6638C2_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S6638C2_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S6638C2_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S6638C2_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S6638C2_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6638C2_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6638C2_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S6638C2_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6638C2_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6638C2_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6638C2_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6638C2_nt3v37Ev,
};
extern VTBL_ENTRY _ZTI10S6638C2_nt[];
VTBL_ENTRY *P__ZTI10S6638C2_nt = _ZTI10S6638C2_nt; 
extern  VTBL_ENTRY _ZTV10S6638C2_nt[];
Class_Descriptor cd_S6638C2_nt = {  "S6638C2_nt", // class name
  0,0,//no base classes
  &(vtc_S6638C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI10S6638C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S6638C2_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  S6638C9_nt  {
  virtual  ~S6638C9_nt(); // _ZN10S6638C9_ntD1Ev
  virtual void  v38(); // _ZN10S6638C9_nt3v38Ev
  virtual void  v39(); // _ZN10S6638C9_nt3v39Ev
  virtual void  v40(); // _ZN10S6638C9_nt3v40Ev
  S6638C9_nt(); // tgen
};
//SIG(-1 S6638C9_nt) C1{ vd v1 v2 v3}


 S6638C9_nt ::~S6638C9_nt(){ note_dtor("S6638C9_nt", this);}
void  S6638C9_nt ::v38(){vfunc_called(this, "_ZN10S6638C9_nt3v38Ev");}
void  S6638C9_nt ::v39(){vfunc_called(this, "_ZN10S6638C9_nt3v39Ev");}
void  S6638C9_nt ::v40(){vfunc_called(this, "_ZN10S6638C9_nt3v40Ev");}
S6638C9_nt ::S6638C9_nt(){ note_ctor("S6638C9_nt", this);} // tgen

//skip512 S6638C9_nt

#else // __cplusplus

extern void _ZN10S6638C9_ntC1Ev();
extern void _ZN10S6638C9_ntD1Ev();
Name_Map name_map_S6638C9_nt[] = {
  NSPAIR(_ZN10S6638C9_ntC1Ev),
  NSPAIR(_ZN10S6638C9_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S6638C9_nt[];
extern void _ZN10S6638C9_ntD1Ev();
extern void _ZN10S6638C9_ntD0Ev();
extern void _ZN10S6638C9_nt3v38Ev();
extern void _ZN10S6638C9_nt3v39Ev();
extern void _ZN10S6638C9_nt3v40Ev();
static  VTBL_ENTRY vtc_S6638C9_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6638C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6638C9_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6638C9_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S6638C9_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S6638C9_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S6638C9_nt3v40Ev,
};
extern VTBL_ENTRY _ZTI10S6638C9_nt[];
VTBL_ENTRY *P__ZTI10S6638C9_nt = _ZTI10S6638C9_nt; 
extern  VTBL_ENTRY _ZTV10S6638C9_nt[];
Class_Descriptor cd_S6638C9_nt = {  "S6638C9_nt", // class name
  0,0,//no base classes
  &(vtc_S6638C9_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S6638C9_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S6638C9_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  S6638C8_nt  : S6638C9_nt {
  virtual  ~S6638C8_nt(); // _ZN10S6638C8_ntD1Ev
  virtual void  v41(); // _ZN10S6638C8_nt3v41Ev
  virtual void  v42(); // _ZN10S6638C8_nt3v42Ev
  virtual void  v43(); // _ZN10S6638C8_nt3v43Ev
  virtual void  v44(); // _ZN10S6638C8_nt3v44Ev
  virtual void  v45(); // _ZN10S6638C8_nt3v45Ev
  virtual void  v46(); // _ZN10S6638C8_nt3v46Ev
  S6638C8_nt(); // tgen
};
//SIG(-1 S6638C8_nt) C1{ BC2{ vd v7 v8 v9} vd v1 v2 v3 v4 v5 v6}


 S6638C8_nt ::~S6638C8_nt(){ note_dtor("S6638C8_nt", this);}
void  S6638C8_nt ::v41(){vfunc_called(this, "_ZN10S6638C8_nt3v41Ev");}
void  S6638C8_nt ::v42(){vfunc_called(this, "_ZN10S6638C8_nt3v42Ev");}
void  S6638C8_nt ::v43(){vfunc_called(this, "_ZN10S6638C8_nt3v43Ev");}
void  S6638C8_nt ::v44(){vfunc_called(this, "_ZN10S6638C8_nt3v44Ev");}
void  S6638C8_nt ::v45(){vfunc_called(this, "_ZN10S6638C8_nt3v45Ev");}
void  S6638C8_nt ::v46(){vfunc_called(this, "_ZN10S6638C8_nt3v46Ev");}
S6638C8_nt ::S6638C8_nt(){ note_ctor("S6638C8_nt", this);} // tgen

//skip512 S6638C8_nt

#else // __cplusplus

extern void _ZN10S6638C8_ntC1Ev();
extern void _ZN10S6638C8_ntD1Ev();
Name_Map name_map_S6638C8_nt[] = {
  NSPAIR(_ZN10S6638C8_ntC1Ev),
  NSPAIR(_ZN10S6638C8_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6638C9_nt;
extern VTBL_ENTRY _ZTI10S6638C9_nt[];
extern  VTBL_ENTRY _ZTV10S6638C9_nt[];
static Base_Class bases_S6638C8_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6638C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S6638C8_nt[];
extern void _ZN10S6638C8_ntD1Ev();
extern void _ZN10S6638C8_ntD0Ev();
extern void _ZN10S6638C9_nt3v38Ev();
extern void _ZN10S6638C9_nt3v39Ev();
extern void _ZN10S6638C9_nt3v40Ev();
extern void _ZN10S6638C8_nt3v41Ev();
extern void _ZN10S6638C8_nt3v42Ev();
extern void _ZN10S6638C8_nt3v43Ev();
extern void _ZN10S6638C8_nt3v44Ev();
extern void _ZN10S6638C8_nt3v45Ev();
extern void _ZN10S6638C8_nt3v46Ev();
static  VTBL_ENTRY vtc_S6638C8_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6638C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S6638C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6638C8_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S6638C9_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S6638C9_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S6638C9_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S6638C8_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S6638C8_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S6638C8_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S6638C8_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S6638C8_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S6638C8_nt3v46Ev,
};
extern VTBL_ENTRY _ZTI10S6638C8_nt[];
VTBL_ENTRY *P__ZTI10S6638C8_nt = _ZTI10S6638C8_nt; 
extern  VTBL_ENTRY _ZTV10S6638C8_nt[];
Class_Descriptor cd_S6638C8_nt = {  "S6638C8_nt", // class name
  bases_S6638C8_nt, 1,
  &(vtc_S6638C8_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S6638C8_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S6638C8_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  S6638C12_nt  {
  __tsi64 s6638c12f0[4];
  void  mf6638c12(); // _ZN11S6638C12_nt9mf6638c12Ev
};
//SIG(-1 S6638C12_nt) C1{ m FL[4]}


void  S6638C12_nt ::mf6638c12(){}

//skip512 S6638C12_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6638C7_nt  : S6638C8_nt {
  ::S4677C36 s6638c7f0;
  ::S6638C12_nt s6638c7f1;
  char s6638c7f2;
  virtual  ~S6638C7_nt(); // _ZN10S6638C7_ntD1Ev
  virtual void  v47(); // _ZN10S6638C7_nt3v47Ev
  virtual void  v48(); // _ZN10S6638C7_nt3v48Ev
  virtual void  v49(); // _ZN10S6638C7_nt3v49Ev
  S6638C7_nt(); // tgen
};
//SIG(-1 S6638C7_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 FL[4]} Fc}


 S6638C7_nt ::~S6638C7_nt(){ note_dtor("S6638C7_nt", this);}
void  S6638C7_nt ::v47(){vfunc_called(this, "_ZN10S6638C7_nt3v47Ev");}
void  S6638C7_nt ::v48(){vfunc_called(this, "_ZN10S6638C7_nt3v48Ev");}
void  S6638C7_nt ::v49(){vfunc_called(this, "_ZN10S6638C7_nt3v49Ev");}
S6638C7_nt ::S6638C7_nt(){ note_ctor("S6638C7_nt", this);} // tgen

//skip512 S6638C7_nt

#else // __cplusplus

extern void _ZN10S6638C7_ntC1Ev();
extern void _ZN10S6638C7_ntD1Ev();
Name_Map name_map_S6638C7_nt[] = {
  NSPAIR(_ZN10S6638C7_ntC1Ev),
  NSPAIR(_ZN10S6638C7_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6638C9_nt;
extern VTBL_ENTRY _ZTI10S6638C9_nt[];
extern  VTBL_ENTRY _ZTV10S6638C9_nt[];
extern Class_Descriptor cd_S6638C8_nt;
extern VTBL_ENTRY _ZTI10S6638C8_nt[];
extern  VTBL_ENTRY _ZTV10S6638C8_nt[];
static Base_Class bases_S6638C7_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6638C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S6638C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI10S6638C7_nt[];
extern void _ZN10S6638C7_ntD1Ev();
extern void _ZN10S6638C7_ntD0Ev();
extern void _ZN10S6638C9_nt3v38Ev();
extern void _ZN10S6638C9_nt3v39Ev();
extern void _ZN10S6638C9_nt3v40Ev();
extern void _ZN10S6638C8_nt3v41Ev();
extern void _ZN10S6638C8_nt3v42Ev();
extern void _ZN10S6638C8_nt3v43Ev();
extern void _ZN10S6638C8_nt3v44Ev();
extern void _ZN10S6638C8_nt3v45Ev();
extern void _ZN10S6638C8_nt3v46Ev();
extern void _ZN10S6638C7_nt3v47Ev();
extern void _ZN10S6638C7_nt3v48Ev();
extern void _ZN10S6638C7_nt3v49Ev();
static  VTBL_ENTRY vtc_S6638C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6638C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6638C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6638C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S6638C9_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S6638C9_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S6638C9_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S6638C8_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S6638C8_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S6638C8_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S6638C8_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S6638C8_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S6638C8_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S6638C7_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S6638C7_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S6638C7_nt3v49Ev,
};
extern VTBL_ENTRY _ZTI10S6638C7_nt[];
VTBL_ENTRY *P__ZTI10S6638C7_nt = _ZTI10S6638C7_nt; 
extern  VTBL_ENTRY _ZTV10S6638C7_nt[];
Class_Descriptor cd_S6638C7_nt = {  "S6638C7_nt", // class name
  bases_S6638C7_nt, 2,
  &(vtc_S6638C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI10S6638C7_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S6638C7_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  S6638C13_nt  {
  virtual  ~S6638C13_nt(); // _ZN11S6638C13_ntD1Ev
  virtual void  v50(); // _ZN11S6638C13_nt3v50Ev
  virtual void  v51(); // _ZN11S6638C13_nt3v51Ev
  S6638C13_nt(); // tgen
};
//SIG(-1 S6638C13_nt) C1{ vd v1 v2}


 S6638C13_nt ::~S6638C13_nt(){ note_dtor("S6638C13_nt", this);}
void  S6638C13_nt ::v50(){vfunc_called(this, "_ZN11S6638C13_nt3v50Ev");}
void  S6638C13_nt ::v51(){vfunc_called(this, "_ZN11S6638C13_nt3v51Ev");}
S6638C13_nt ::S6638C13_nt(){ note_ctor("S6638C13_nt", this);} // tgen

//skip512 S6638C13_nt

#else // __cplusplus

extern void _ZN11S6638C13_ntC1Ev();
extern void _ZN11S6638C13_ntD1Ev();
Name_Map name_map_S6638C13_nt[] = {
  NSPAIR(_ZN11S6638C13_ntC1Ev),
  NSPAIR(_ZN11S6638C13_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S6638C13_nt[];
extern void _ZN11S6638C13_ntD1Ev();
extern void _ZN11S6638C13_ntD0Ev();
extern void _ZN11S6638C13_nt3v50Ev();
extern void _ZN11S6638C13_nt3v51Ev();
static  VTBL_ENTRY vtc_S6638C13_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S6638C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S6638C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6638C13_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S6638C13_nt3v50Ev,
  (VTBL_ENTRY)&_ZN11S6638C13_nt3v51Ev,
};
extern VTBL_ENTRY _ZTI11S6638C13_nt[];
VTBL_ENTRY *P__ZTI11S6638C13_nt = _ZTI11S6638C13_nt; 
extern  VTBL_ENTRY _ZTV11S6638C13_nt[];
Class_Descriptor cd_S6638C13_nt = {  "S6638C13_nt", // class name
  0,0,//no base classes
  &(vtc_S6638C13_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S6638C13_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S6638C13_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  S6638C14_nt  {
  virtual  ~S6638C14_nt(); // _ZN11S6638C14_ntD1Ev
  virtual void  v52(); // _ZN11S6638C14_nt3v52Ev
  S6638C14_nt(); // tgen
};
//SIG(-1 S6638C14_nt) C1{ vd v1}


 S6638C14_nt ::~S6638C14_nt(){ note_dtor("S6638C14_nt", this);}
void  S6638C14_nt ::v52(){vfunc_called(this, "_ZN11S6638C14_nt3v52Ev");}
S6638C14_nt ::S6638C14_nt(){ note_ctor("S6638C14_nt", this);} // tgen

//skip512 S6638C14_nt

#else // __cplusplus

extern void _ZN11S6638C14_ntC1Ev();
extern void _ZN11S6638C14_ntD1Ev();
Name_Map name_map_S6638C14_nt[] = {
  NSPAIR(_ZN11S6638C14_ntC1Ev),
  NSPAIR(_ZN11S6638C14_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S6638C14_nt[];
extern void _ZN11S6638C14_ntD1Ev();
extern void _ZN11S6638C14_ntD0Ev();
extern void _ZN11S6638C14_nt3v52Ev();
static  VTBL_ENTRY vtc_S6638C14_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S6638C14_nt[0]),
  (VTBL_ENTRY)&_ZN11S6638C14_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6638C14_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S6638C14_nt3v52Ev,
};
extern VTBL_ENTRY _ZTI11S6638C14_nt[];
VTBL_ENTRY *P__ZTI11S6638C14_nt = _ZTI11S6638C14_nt; 
extern  VTBL_ENTRY _ZTV11S6638C14_nt[];
Class_Descriptor cd_S6638C14_nt = {  "S6638C14_nt", // class name
  0,0,//no base classes
  &(vtc_S6638C14_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S6638C14_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S6638C14_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  S6638C15  {
  virtual  ~S6638C15(); // _ZN8S6638C15D1Ev
  virtual void  v53(); // _ZN8S6638C153v53Ev
  S6638C15(); // tgen
};
//SIG(-1 S6638C15) C1{ vd v1}


 S6638C15 ::~S6638C15(){ note_dtor("S6638C15", this);}
void  S6638C15 ::v53(){vfunc_called(this, "_ZN8S6638C153v53Ev");}
S6638C15 ::S6638C15(){ note_ctor("S6638C15", this);} // tgen

static void Test_S6638C15()
{
  extern Class_Descriptor cd_S6638C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6638C15, buf);
    S6638C15 *dp, &lv = *(dp=new (buf) S6638C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6638C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6638C15)");
    test_class_info(&lv, &cd_S6638C15);
    dp->~S6638C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6638C15(Test_S6638C15, "S6638C15", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S6638C15C1Ev();
extern void _ZN8S6638C15D1Ev();
Name_Map name_map_S6638C15[] = {
  NSPAIR(_ZN8S6638C15C1Ev),
  NSPAIR(_ZN8S6638C15D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S6638C15[];
extern void _ZN8S6638C15D1Ev();
extern void _ZN8S6638C15D0Ev();
extern void _ZN8S6638C153v53Ev();
static  VTBL_ENTRY vtc_S6638C15[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S6638C15[0]),
  (VTBL_ENTRY)&_ZN8S6638C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6638C15D0Ev,
  (VTBL_ENTRY)&_ZN8S6638C153v53Ev,
};
extern VTBL_ENTRY _ZTI8S6638C15[];
extern  VTBL_ENTRY _ZTV8S6638C15[];
Class_Descriptor cd_S6638C15 = {  "S6638C15", // class name
  0,0,//no base classes
  &(vtc_S6638C15[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S6638C15),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S6638C15),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  S6638C16_nt  {
  void *s6638c16f0[2];
  void  mf6638c16(); // _ZN11S6638C16_nt9mf6638c16Ev
};
//SIG(-1 S6638C16_nt) C1{ m Fp[2]}


void  S6638C16_nt ::mf6638c16(){}

//skip512 S6638C16_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6638C19_nt  {
  void *s6638c19f0;
  int s6638c19f1[2];
  ::S4677C37 s6638c19f2;
  void  mf6638c19(); // _ZN11S6638C19_nt9mf6638c19Ev
};
//SIG(-1 S6638C19_nt) C1{ m Fp Fi[2] FC2{ m}}


void  S6638C19_nt ::mf6638c19(){}

//skip512 S6638C19_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6638C1  : S6638C2_nt , S6638C7_nt , S6638C13_nt , S6638C14_nt , S6638C15 {
  void *s6638c1f0;
  char s6638c1f1;
  ::S6638C16_nt s6638c1f2;
  void *s6638c1f3[2];
  ::S4677C28_nt s6638c1f4;
  ::S6638C19_nt s6638c1f5;
  ::S6638C19_nt s6638c1f6;
  ::S6638C19_nt s6638c1f7;
  int s6638c1f8;
  char s6638c1f9[2];
  void *s6638c1f10;
  virtual  ~S6638C1(); // _ZN7S6638C1D1Ev
  virtual void  v1(); // _ZN7S6638C12v1Ev
  virtual void  v2(); // _ZN7S6638C12v2Ev
  virtual void  v3(); // _ZN7S6638C12v3Ev
  virtual void  v4(); // _ZN7S6638C12v4Ev
  virtual void  v5(); // _ZN7S6638C12v5Ev
  virtual void  v6(); // _ZN7S6638C12v6Ev
  virtual void  v7(); // _ZN7S6638C12v7Ev
  virtual void  v8(); // _ZN7S6638C12v8Ev
  virtual void  v9(); // _ZN7S6638C12v9Ev
  virtual void  v10(); // _ZN7S6638C13v10Ev
  virtual void  v11(); // _ZN7S6638C13v11Ev
  virtual void  v12(); // _ZN7S6638C13v12Ev
  virtual void  v13(); // _ZN7S6638C13v13Ev
  virtual void  v14(); // _ZN7S6638C13v14Ev
  virtual void  v15(); // _ZN7S6638C13v15Ev
  virtual void  v16(); // _ZN7S6638C13v16Ev
  virtual void  v17(); // _ZN7S6638C13v17Ev
  virtual void  v18(); // _ZN7S6638C13v18Ev
  virtual void  v19(); // _ZN7S6638C13v19Ev
  virtual void  v20(); // _ZN7S6638C13v20Ev
  virtual void  v21(); // _ZN7S6638C13v21Ev
  virtual void  v22(); // _ZN7S6638C13v22Ev
  S6638C1(); // tgen
};
//SIG(1 S6638C1) C1{ BC2{ vd v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 Fp FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}} BC7{ BC8{ BC9{ vd v38 v39 v40} vd v41 v42 v43 v44 v45 v46} vd v47 v48 v49 FC10{ m Fp Fi[2] FC11{ m}} FC12{ m FL[4]} Fc} BC13{ vd v50 v51} BC14{ vd v52} BC15{ vd v53} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 Fp Fc FC16{ m Fp[2]} Fp[2] FC17{ m Fp Fi[2] FC6} FC18{ m Fp Fi[2] FC11} FC18 FC18 Fi Fc[2] Fp}


 S6638C1 ::~S6638C1(){ note_dtor("S6638C1", this);}
void  S6638C1 ::v1(){vfunc_called(this, "_ZN7S6638C12v1Ev");}
void  S6638C1 ::v2(){vfunc_called(this, "_ZN7S6638C12v2Ev");}
void  S6638C1 ::v3(){vfunc_called(this, "_ZN7S6638C12v3Ev");}
void  S6638C1 ::v4(){vfunc_called(this, "_ZN7S6638C12v4Ev");}
void  S6638C1 ::v5(){vfunc_called(this, "_ZN7S6638C12v5Ev");}
void  S6638C1 ::v6(){vfunc_called(this, "_ZN7S6638C12v6Ev");}
void  S6638C1 ::v7(){vfunc_called(this, "_ZN7S6638C12v7Ev");}
void  S6638C1 ::v8(){vfunc_called(this, "_ZN7S6638C12v8Ev");}
void  S6638C1 ::v9(){vfunc_called(this, "_ZN7S6638C12v9Ev");}
void  S6638C1 ::v10(){vfunc_called(this, "_ZN7S6638C13v10Ev");}
void  S6638C1 ::v11(){vfunc_called(this, "_ZN7S6638C13v11Ev");}
void  S6638C1 ::v12(){vfunc_called(this, "_ZN7S6638C13v12Ev");}
void  S6638C1 ::v13(){vfunc_called(this, "_ZN7S6638C13v13Ev");}
void  S6638C1 ::v14(){vfunc_called(this, "_ZN7S6638C13v14Ev");}
void  S6638C1 ::v15(){vfunc_called(this, "_ZN7S6638C13v15Ev");}
void  S6638C1 ::v16(){vfunc_called(this, "_ZN7S6638C13v16Ev");}
void  S6638C1 ::v17(){vfunc_called(this, "_ZN7S6638C13v17Ev");}
void  S6638C1 ::v18(){vfunc_called(this, "_ZN7S6638C13v18Ev");}
void  S6638C1 ::v19(){vfunc_called(this, "_ZN7S6638C13v19Ev");}
void  S6638C1 ::v20(){vfunc_called(this, "_ZN7S6638C13v20Ev");}
void  S6638C1 ::v21(){vfunc_called(this, "_ZN7S6638C13v21Ev");}
void  S6638C1 ::v22(){vfunc_called(this, "_ZN7S6638C13v22Ev");}
S6638C1 ::S6638C1(){ note_ctor("S6638C1", this);} // tgen

static void Test_S6638C1()
{
  extern Class_Descriptor cd_S6638C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(37,48)];
    init_test(&cd_S6638C1, buf);
    S6638C1 *dp, &lv = *(dp=new (buf) S6638C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,188), "sizeof(S6638C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6638C1)");
    check_base_class_offset(lv, (S6638C2_nt*), 0, "S6638C1");
    check_base_class_offset(lv, (S6638C9_nt*)(S6638C8_nt*)(S6638C7_nt*), ABISELECT(32,20), "S6638C1");
    check_base_class_offset(lv, (S6638C8_nt*)(S6638C7_nt*), ABISELECT(32,20), "S6638C1");
    check_base_class_offset(lv, (S6638C7_nt*), ABISELECT(32,20), "S6638C1");
    check_base_class_offset(lv, (S6638C13_nt*), ABISELECT(104,76), "S6638C1");
    check_base_class_offset(lv, (S6638C14_nt*), ABISELECT(112,80), "S6638C1");
    check_base_class_offset(lv, (S6638C15*), ABISELECT(120,84), "S6638C1");
    check_field_offset(lv, s6638c1f0, ABISELECT(128,88), "S6638C1.s6638c1f0");
    check_field_offset(lv, s6638c1f1, ABISELECT(136,92), "S6638C1.s6638c1f1");
    check_field_offset(lv, s6638c1f2, ABISELECT(144,96), "S6638C1.s6638c1f2");
    check_field_offset(lv, s6638c1f3, ABISELECT(160,104), "S6638C1.s6638c1f3");
    check_field_offset(lv, s6638c1f4, ABISELECT(176,112), "S6638C1.s6638c1f4");
    check_field_offset(lv, s6638c1f5, ABISELECT(200,128), "S6638C1.s6638c1f5");
    check_field_offset(lv, s6638c1f6, ABISELECT(224,144), "S6638C1.s6638c1f6");
    check_field_offset(lv, s6638c1f7, ABISELECT(248,160), "S6638C1.s6638c1f7");
    check_field_offset(lv, s6638c1f8, ABISELECT(272,176), "S6638C1.s6638c1f8");
    check_field_offset(lv, s6638c1f9, ABISELECT(276,180), "S6638C1.s6638c1f9");
    check_field_offset(lv, s6638c1f10, ABISELECT(280,184), "S6638C1.s6638c1f10");
    test_class_info(&lv, &cd_S6638C1);
    dp->~S6638C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6638C1(Test_S6638C1, "S6638C1", ABISELECT(288,188));

#else // __cplusplus

extern void _ZN7S6638C1C1Ev();
extern void _ZN7S6638C1D1Ev();
Name_Map name_map_S6638C1[] = {
  NSPAIR(_ZN7S6638C1C1Ev),
  NSPAIR(_ZN7S6638C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6638C2_nt;
extern VTBL_ENTRY _ZTI10S6638C2_nt[];
extern  VTBL_ENTRY _ZTV10S6638C2_nt[];
extern Class_Descriptor cd_S6638C9_nt;
extern VTBL_ENTRY _ZTI10S6638C9_nt[];
extern  VTBL_ENTRY _ZTV10S6638C9_nt[];
extern Class_Descriptor cd_S6638C8_nt;
extern VTBL_ENTRY _ZTI10S6638C8_nt[];
extern  VTBL_ENTRY _ZTV10S6638C8_nt[];
extern Class_Descriptor cd_S6638C7_nt;
extern VTBL_ENTRY _ZTI10S6638C7_nt[];
extern  VTBL_ENTRY _ZTV10S6638C7_nt[];
extern Class_Descriptor cd_S6638C13_nt;
extern VTBL_ENTRY _ZTI11S6638C13_nt[];
extern  VTBL_ENTRY _ZTV11S6638C13_nt[];
extern Class_Descriptor cd_S6638C14_nt;
extern VTBL_ENTRY _ZTI11S6638C14_nt[];
extern  VTBL_ENTRY _ZTV11S6638C14_nt[];
extern Class_Descriptor cd_S6638C15;
extern VTBL_ENTRY _ZTI8S6638C15[];
extern  VTBL_ENTRY _ZTV8S6638C15[];
static Base_Class bases_S6638C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6638C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6638C9_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_S6638C8_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_S6638C7_nt,    ABISELECT(32,20), //bcp->offset
    41, //bcp->virtual_function_table_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_S6638C13_nt,    ABISELECT(104,76), //bcp->offset
    57, //bcp->virtual_function_table_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_S6638C14_nt,    ABISELECT(112,80), //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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6638C15,    ABISELECT(120,84), //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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6638C1[];
extern void _ZN7S6638C1D1Ev();
extern void _ZN7S6638C1D0Ev();
extern void _ZN10S6638C2_nt3v23Ev();
extern void _ZN10S6638C2_nt3v24Ev();
extern void _ZN10S6638C2_nt3v25Ev();
extern void _ZN10S6638C2_nt3v26Ev();
extern void _ZN10S6638C2_nt3v27Ev();
extern void _ZN10S6638C2_nt3v28Ev();
extern void _ZN10S6638C2_nt3v29Ev();
extern void _ZN10S6638C2_nt3v30Ev();
extern void _ZN10S6638C2_nt3v31Ev();
extern void _ZN10S6638C2_nt3v32Ev();
extern void _ZN10S6638C2_nt3v33Ev();
extern void _ZN10S6638C2_nt3v34Ev();
extern void _ZN10S6638C2_nt3v35Ev();
extern void _ZN10S6638C2_nt3v36Ev();
extern void _ZN10S6638C2_nt3v37Ev();
extern void _ZN7S6638C12v1Ev();
extern void _ZN7S6638C12v2Ev();
extern void _ZN7S6638C12v3Ev();
extern void _ZN7S6638C12v4Ev();
extern void _ZN7S6638C12v5Ev();
extern void _ZN7S6638C12v6Ev();
extern void _ZN7S6638C12v7Ev();
extern void _ZN7S6638C12v8Ev();
extern void _ZN7S6638C12v9Ev();
extern void _ZN7S6638C13v10Ev();
extern void _ZN7S6638C13v11Ev();
extern void _ZN7S6638C13v12Ev();
extern void _ZN7S6638C13v13Ev();
extern void _ZN7S6638C13v14Ev();
extern void _ZN7S6638C13v15Ev();
extern void _ZN7S6638C13v16Ev();
extern void _ZN7S6638C13v17Ev();
extern void _ZN7S6638C13v18Ev();
extern void _ZN7S6638C13v19Ev();
extern void _ZN7S6638C13v20Ev();
extern void _ZN7S6638C13v21Ev();
extern void _ZN7S6638C13v22Ev();
extern void ABISELECT(_ZThn32_N7S6638C1D1Ev,_ZThn20_N7S6638C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S6638C1D0Ev,_ZThn20_N7S6638C1D0Ev)();
extern void _ZN10S6638C9_nt3v38Ev();
extern void _ZN10S6638C9_nt3v39Ev();
extern void _ZN10S6638C9_nt3v40Ev();
extern void _ZN10S6638C8_nt3v41Ev();
extern void _ZN10S6638C8_nt3v42Ev();
extern void _ZN10S6638C8_nt3v43Ev();
extern void _ZN10S6638C8_nt3v44Ev();
extern void _ZN10S6638C8_nt3v45Ev();
extern void _ZN10S6638C8_nt3v46Ev();
extern void _ZN10S6638C7_nt3v47Ev();
extern void _ZN10S6638C7_nt3v48Ev();
extern void _ZN10S6638C7_nt3v49Ev();
extern void ABISELECT(_ZThn104_N7S6638C1D1Ev,_ZThn76_N7S6638C1D1Ev)();
extern void ABISELECT(_ZThn104_N7S6638C1D0Ev,_ZThn76_N7S6638C1D0Ev)();
extern void _ZN11S6638C13_nt3v50Ev();
extern void _ZN11S6638C13_nt3v51Ev();
extern void ABISELECT(_ZThn112_N7S6638C1D1Ev,_ZThn80_N7S6638C1D1Ev)();
extern void ABISELECT(_ZThn112_N7S6638C1D0Ev,_ZThn80_N7S6638C1D0Ev)();
extern void _ZN11S6638C14_nt3v52Ev();
extern void ABISELECT(_ZThn120_N7S6638C1D1Ev,_ZThn84_N7S6638C1D1Ev)();
extern void ABISELECT(_ZThn120_N7S6638C1D0Ev,_ZThn84_N7S6638C1D0Ev)();
extern void _ZN8S6638C153v53Ev();
static  VTBL_ENTRY vtc_S6638C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6638C1[0]),
  (VTBL_ENTRY)&_ZN7S6638C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6638C1D0Ev,
  (VTBL_ENTRY)&_ZN10S6638C2_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6638C2_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6638C2_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S6638C2_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S6638C2_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S6638C2_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S6638C2_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S6638C2_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6638C2_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6638C2_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S6638C2_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6638C2_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6638C2_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6638C2_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6638C2_nt3v37Ev,
  (VTBL_ENTRY)&_ZN7S6638C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6638C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6638C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6638C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6638C12v5Ev,
  (VTBL_ENTRY)&_ZN7S6638C12v6Ev,
  (VTBL_ENTRY)&_ZN7S6638C12v7Ev,
  (VTBL_ENTRY)&_ZN7S6638C12v8Ev,
  (VTBL_ENTRY)&_ZN7S6638C12v9Ev,
  (VTBL_ENTRY)&_ZN7S6638C13v10Ev,
  (VTBL_ENTRY)&_ZN7S6638C13v11Ev,
  (VTBL_ENTRY)&_ZN7S6638C13v12Ev,
  (VTBL_ENTRY)&_ZN7S6638C13v13Ev,
  (VTBL_ENTRY)&_ZN7S6638C13v14Ev,
  (VTBL_ENTRY)&_ZN7S6638C13v15Ev,
  (VTBL_ENTRY)&_ZN7S6638C13v16Ev,
  (VTBL_ENTRY)&_ZN7S6638C13v17Ev,
  (VTBL_ENTRY)&_ZN7S6638C13v18Ev,
  (VTBL_ENTRY)&_ZN7S6638C13v19Ev,
  (VTBL_ENTRY)&_ZN7S6638C13v20Ev,
  (VTBL_ENTRY)&_ZN7S6638C13v21Ev,
  (VTBL_ENTRY)&_ZN7S6638C13v22Ev,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S6638C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S6638C1D1Ev,_ZThn20_N7S6638C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S6638C1D0Ev,_ZThn20_N7S6638C1D0Ev),
  (VTBL_ENTRY)&_ZN10S6638C9_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S6638C9_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S6638C9_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S6638C8_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S6638C8_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S6638C8_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S6638C8_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S6638C8_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S6638C8_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S6638C7_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S6638C7_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S6638C7_nt3v49Ev,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI7S6638C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn104_N7S6638C1D1Ev,_ZThn76_N7S6638C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn104_N7S6638C1D0Ev,_ZThn76_N7S6638C1D0Ev),
  (VTBL_ENTRY)&_ZN11S6638C13_nt3v50Ev,
  (VTBL_ENTRY)&_ZN11S6638C13_nt3v51Ev,
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI7S6638C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S6638C1D1Ev,_ZThn80_N7S6638C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S6638C1D0Ev,_ZThn80_N7S6638C1D0Ev),
  (VTBL_ENTRY)&_ZN11S6638C14_nt3v52Ev,
  ABISELECT(-120,-84),
  (VTBL_ENTRY)&(_ZTI7S6638C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N7S6638C1D1Ev,_ZThn84_N7S6638C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N7S6638C1D0Ev,_ZThn84_N7S6638C1D0Ev),
  (VTBL_ENTRY)&_ZN8S6638C153v53Ev,
};
extern VTBL_ENTRY _ZTI7S6638C1[];
extern  VTBL_ENTRY _ZTV7S6638C1[];
Class_Descriptor cd_S6638C1 = {  "S6638C1", // class name
  bases_S6638C1, 7,
  &(vtc_S6638C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(288,188), // object size
  NSPAIRA(_ZTI7S6638C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S6638C1),73, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  7, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S429C4_nt  : S4677C37 {
  virtual  ~S429C4_nt(); // _ZN9S429C4_ntD1Ev
  virtual void  v14(); // _ZN9S429C4_nt3v14Ev
  S429C4_nt(); // tgen
};
//SIG(-1 S429C4_nt) C1{ BC2{ m} vd v1}


 S429C4_nt ::~S429C4_nt(){ note_dtor("S429C4_nt", this);}
void  S429C4_nt ::v14(){vfunc_called(this, "_ZN9S429C4_nt3v14Ev");}
S429C4_nt ::S429C4_nt(){ note_ctor("S429C4_nt", this);} // tgen

//skip512 S429C4_nt

#else // __cplusplus

extern void _ZN9S429C4_ntC1Ev();
extern void _ZN9S429C4_ntD1Ev();
Name_Map name_map_S429C4_nt[] = {
  NSPAIR(_ZN9S429C4_ntC1Ev),
  NSPAIR(_ZN9S429C4_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
static Base_Class bases_S429C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S429C4_nt[];
extern void _ZN9S429C4_ntD1Ev();
extern void _ZN9S429C4_ntD0Ev();
extern void _ZN9S429C4_nt3v14Ev();
static  VTBL_ENTRY vtc_S429C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S429C4_nt[0]),
  (VTBL_ENTRY)&_ZN9S429C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S429C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN9S429C4_nt3v14Ev,
};
extern VTBL_ENTRY _ZTI9S429C4_nt[];
VTBL_ENTRY *P__ZTI9S429C4_nt = _ZTI9S429C4_nt; 
extern  VTBL_ENTRY _ZTV9S429C4_nt[];
Class_Descriptor cd_S429C4_nt = {  "S429C4_nt", // class name
  bases_S429C4_nt, 1,
  &(vtc_S429C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S429C4_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S429C4_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  S429C3  : S429C4_nt {
  char s429c3f0[4];
  int s429c3f1[23];
  char s429c3f2[23];
  int s429c3f3[24];
  __tsi64 s429c3f4;
  char s429c3f5;
  void *s429c3f6;
  int s429c3f7;
  char s429c3f8;
  int s429c3f9[4];
  char s429c3f10[112];
  virtual  ~S429C3(); // _ZN6S429C3D1Ev
  virtual void  v15(); // _ZN6S429C33v15Ev
  virtual void  v16(); // _ZN6S429C33v16Ev
  virtual void  v17(); // _ZN6S429C33v17Ev
  virtual void  v18(); // _ZN6S429C33v18Ev
  virtual void  v19(); // _ZN6S429C33v19Ev
  virtual void  v20(); // _ZN6S429C33v20Ev
  virtual void  v21(); // _ZN6S429C33v21Ev
  virtual void  v22(); // _ZN6S429C33v22Ev
  virtual void  v23(); // _ZN6S429C33v23Ev
  virtual void  v24(); // _ZN6S429C33v24Ev
  virtual void  v25(); // _ZN6S429C33v25Ev
  virtual void  v26(); // _ZN6S429C33v26Ev
  virtual void  v27(); // _ZN6S429C33v27Ev
  virtual void  v28(); // _ZN6S429C33v28Ev
  virtual void  v29(); // _ZN6S429C33v29Ev
  virtual void  v30(); // _ZN6S429C33v30Ev
  virtual void  v31(); // _ZN6S429C33v31Ev
  virtual void  v32(); // _ZN6S429C33v32Ev
  virtual void  v33(); // _ZN6S429C33v33Ev
  virtual void  v34(); // _ZN6S429C33v34Ev
  virtual void  v35(); // _ZN6S429C33v35Ev
  virtual void  v36(); // _ZN6S429C33v36Ev
  virtual void  v37(); // _ZN6S429C33v37Ev
  virtual void  v38(); // _ZN6S429C33v38Ev
  virtual void  v39(); // _ZN6S429C33v39Ev
  virtual void  v40(); // _ZN6S429C33v40Ev
  virtual void  v41(); // _ZN6S429C33v41Ev
  virtual void  v42(); // _ZN6S429C33v42Ev
  virtual void  v43(); // _ZN6S429C33v43Ev
  virtual void  v44(); // _ZN6S429C33v44Ev
  virtual void  v45(); // _ZN6S429C33v45Ev
  virtual void  v46(); // _ZN6S429C33v46Ev
  virtual void  v47(); // _ZN6S429C33v47Ev
  virtual void  v48(); // _ZN6S429C33v48Ev
  virtual void  v49(); // _ZN6S429C33v49Ev
  virtual void  v50(); // _ZN6S429C33v50Ev
  virtual void  v51(); // _ZN6S429C33v51Ev
  virtual void  v52(); // _ZN6S429C33v52Ev
  virtual void  v53(); // _ZN6S429C33v53Ev
  virtual void  v54(); // _ZN6S429C33v54Ev
  virtual void  v55(); // _ZN6S429C33v55Ev
  virtual void  v56(); // _ZN6S429C33v56Ev
  S429C3(); // tgen
};
//SIG(-1 S429C3) C1{ BC2{ BC3{ m} vd v43} 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 Fc[4] Fi[23] Fc[23] Fi[24] FL Fc Fp Fi Fc Fi[4] Fc[112]}


 S429C3 ::~S429C3(){ note_dtor("S429C3", this);}
void  S429C3 ::v15(){vfunc_called(this, "_ZN6S429C33v15Ev");}
void  S429C3 ::v16(){vfunc_called(this, "_ZN6S429C33v16Ev");}
void  S429C3 ::v17(){vfunc_called(this, "_ZN6S429C33v17Ev");}
void  S429C3 ::v18(){vfunc_called(this, "_ZN6S429C33v18Ev");}
void  S429C3 ::v19(){vfunc_called(this, "_ZN6S429C33v19Ev");}
void  S429C3 ::v20(){vfunc_called(this, "_ZN6S429C33v20Ev");}
void  S429C3 ::v21(){vfunc_called(this, "_ZN6S429C33v21Ev");}
void  S429C3 ::v22(){vfunc_called(this, "_ZN6S429C33v22Ev");}
void  S429C3 ::v23(){vfunc_called(this, "_ZN6S429C33v23Ev");}
void  S429C3 ::v24(){vfunc_called(this, "_ZN6S429C33v24Ev");}
void  S429C3 ::v25(){vfunc_called(this, "_ZN6S429C33v25Ev");}
void  S429C3 ::v26(){vfunc_called(this, "_ZN6S429C33v26Ev");}
void  S429C3 ::v27(){vfunc_called(this, "_ZN6S429C33v27Ev");}
void  S429C3 ::v28(){vfunc_called(this, "_ZN6S429C33v28Ev");}
void  S429C3 ::v29(){vfunc_called(this, "_ZN6S429C33v29Ev");}
void  S429C3 ::v30(){vfunc_called(this, "_ZN6S429C33v30Ev");}
void  S429C3 ::v31(){vfunc_called(this, "_ZN6S429C33v31Ev");}
void  S429C3 ::v32(){vfunc_called(this, "_ZN6S429C33v32Ev");}
void  S429C3 ::v33(){vfunc_called(this, "_ZN6S429C33v33Ev");}
void  S429C3 ::v34(){vfunc_called(this, "_ZN6S429C33v34Ev");}
void  S429C3 ::v35(){vfunc_called(this, "_ZN6S429C33v35Ev");}
void  S429C3 ::v36(){vfunc_called(this, "_ZN6S429C33v36Ev");}
void  S429C3 ::v37(){vfunc_called(this, "_ZN6S429C33v37Ev");}
void  S429C3 ::v38(){vfunc_called(this, "_ZN6S429C33v38Ev");}
void  S429C3 ::v39(){vfunc_called(this, "_ZN6S429C33v39Ev");}
void  S429C3 ::v40(){vfunc_called(this, "_ZN6S429C33v40Ev");}
void  S429C3 ::v41(){vfunc_called(this, "_ZN6S429C33v41Ev");}
void  S429C3 ::v42(){vfunc_called(this, "_ZN6S429C33v42Ev");}
void  S429C3 ::v43(){vfunc_called(this, "_ZN6S429C33v43Ev");}
void  S429C3 ::v44(){vfunc_called(this, "_ZN6S429C33v44Ev");}
void  S429C3 ::v45(){vfunc_called(this, "_ZN6S429C33v45Ev");}
void  S429C3 ::v46(){vfunc_called(this, "_ZN6S429C33v46Ev");}
void  S429C3 ::v47(){vfunc_called(this, "_ZN6S429C33v47Ev");}
void  S429C3 ::v48(){vfunc_called(this, "_ZN6S429C33v48Ev");}
void  S429C3 ::v49(){vfunc_called(this, "_ZN6S429C33v49Ev");}
void  S429C3 ::v50(){vfunc_called(this, "_ZN6S429C33v50Ev");}
void  S429C3 ::v51(){vfunc_called(this, "_ZN6S429C33v51Ev");}
void  S429C3 ::v52(){vfunc_called(this, "_ZN6S429C33v52Ev");}
void  S429C3 ::v53(){vfunc_called(this, "_ZN6S429C33v53Ev");}
void  S429C3 ::v54(){vfunc_called(this, "_ZN6S429C33v54Ev");}
void  S429C3 ::v55(){vfunc_called(this, "_ZN6S429C33v55Ev");}
void  S429C3 ::v56(){vfunc_called(this, "_ZN6S429C33v56Ev");}
S429C3 ::S429C3(){ note_ctor("S429C3", this);} // tgen

static void Test_S429C3()
{
  extern Class_Descriptor cd_S429C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(49,94)];
    init_test(&cd_S429C3, buf);
    S429C3 *dp, &lv = *(dp=new (buf) S429C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,372), "sizeof(S429C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S429C3)");
    check_base_class_offset(lv, (S4677C37*)(S429C4_nt*), 0, "S429C3");
    check_base_class_offset(lv, (S429C4_nt*), 0, "S429C3");
    check_field_offset(lv, s429c3f0, ABISELECT(8,4), "S429C3.s429c3f0");
    check_field_offset(lv, s429c3f1, ABISELECT(12,8), "S429C3.s429c3f1");
    check_field_offset(lv, s429c3f2, ABISELECT(104,100), "S429C3.s429c3f2");
    check_field_offset(lv, s429c3f3, ABISELECT(128,124), "S429C3.s429c3f3");
    check_field_offset(lv, s429c3f4, ABISELECT(224,220), "S429C3.s429c3f4");
    check_field_offset(lv, s429c3f5, ABISELECT(232,228), "S429C3.s429c3f5");
    check_field_offset(lv, s429c3f6, ABISELECT(240,232), "S429C3.s429c3f6");
    check_field_offset(lv, s429c3f7, ABISELECT(248,236), "S429C3.s429c3f7");
    check_field_offset(lv, s429c3f8, ABISELECT(252,240), "S429C3.s429c3f8");
    check_field_offset(lv, s429c3f9, ABISELECT(256,244), "S429C3.s429c3f9");
    check_field_offset(lv, s429c3f10, ABISELECT(272,260), "S429C3.s429c3f10");
    test_class_info(&lv, &cd_S429C3);
    dp->~S429C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS429C3(Test_S429C3, "S429C3", ABISELECT(384,372));

#else // __cplusplus

extern void _ZN6S429C3C1Ev();
extern void _ZN6S429C3D1Ev();
Name_Map name_map_S429C3[] = {
  NSPAIR(_ZN6S429C3C1Ev),
  NSPAIR(_ZN6S429C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S429C4_nt;
extern VTBL_ENTRY _ZTI9S429C4_nt[];
extern  VTBL_ENTRY _ZTV9S429C4_nt[];
static Base_Class bases_S429C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S429C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S429C3[];
extern void _ZN6S429C3D1Ev();
extern void _ZN6S429C3D0Ev();
extern void _ZN9S429C4_nt3v14Ev();
extern void _ZN6S429C33v15Ev();
extern void _ZN6S429C33v16Ev();
extern void _ZN6S429C33v17Ev();
extern void _ZN6S429C33v18Ev();
extern void _ZN6S429C33v19Ev();
extern void _ZN6S429C33v20Ev();
extern void _ZN6S429C33v21Ev();
extern void _ZN6S429C33v22Ev();
extern void _ZN6S429C33v23Ev();
extern void _ZN6S429C33v24Ev();
extern void _ZN6S429C33v25Ev();
extern void _ZN6S429C33v26Ev();
extern void _ZN6S429C33v27Ev();
extern void _ZN6S429C33v28Ev();
extern void _ZN6S429C33v29Ev();
extern void _ZN6S429C33v30Ev();
extern void _ZN6S429C33v31Ev();
extern void _ZN6S429C33v32Ev();
extern void _ZN6S429C33v33Ev();
extern void _ZN6S429C33v34Ev();
extern void _ZN6S429C33v35Ev();
extern void _ZN6S429C33v36Ev();
extern void _ZN6S429C33v37Ev();
extern void _ZN6S429C33v38Ev();
extern void _ZN6S429C33v39Ev();
extern void _ZN6S429C33v40Ev();
extern void _ZN6S429C33v41Ev();
extern void _ZN6S429C33v42Ev();
extern void _ZN6S429C33v43Ev();
extern void _ZN6S429C33v44Ev();
extern void _ZN6S429C33v45Ev();
extern void _ZN6S429C33v46Ev();
extern void _ZN6S429C33v47Ev();
extern void _ZN6S429C33v48Ev();
extern void _ZN6S429C33v49Ev();
extern void _ZN6S429C33v50Ev();
extern void _ZN6S429C33v51Ev();
extern void _ZN6S429C33v52Ev();
extern void _ZN6S429C33v53Ev();
extern void _ZN6S429C33v54Ev();
extern void _ZN6S429C33v55Ev();
extern void _ZN6S429C33v56Ev();
static  VTBL_ENTRY vtc_S429C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S429C3[0]),
  (VTBL_ENTRY)&_ZN6S429C3D1Ev,
  (VTBL_ENTRY)&_ZN6S429C3D0Ev,
  (VTBL_ENTRY)&_ZN9S429C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN6S429C33v15Ev,
  (VTBL_ENTRY)&_ZN6S429C33v16Ev,
  (VTBL_ENTRY)&_ZN6S429C33v17Ev,
  (VTBL_ENTRY)&_ZN6S429C33v18Ev,
  (VTBL_ENTRY)&_ZN6S429C33v19Ev,
  (VTBL_ENTRY)&_ZN6S429C33v20Ev,
  (VTBL_ENTRY)&_ZN6S429C33v21Ev,
  (VTBL_ENTRY)&_ZN6S429C33v22Ev,
  (VTBL_ENTRY)&_ZN6S429C33v23Ev,
  (VTBL_ENTRY)&_ZN6S429C33v24Ev,
  (VTBL_ENTRY)&_ZN6S429C33v25Ev,
  (VTBL_ENTRY)&_ZN6S429C33v26Ev,
  (VTBL_ENTRY)&_ZN6S429C33v27Ev,
  (VTBL_ENTRY)&_ZN6S429C33v28Ev,
  (VTBL_ENTRY)&_ZN6S429C33v29Ev,
  (VTBL_ENTRY)&_ZN6S429C33v30Ev,
  (VTBL_ENTRY)&_ZN6S429C33v31Ev,
  (VTBL_ENTRY)&_ZN6S429C33v32Ev,
  (VTBL_ENTRY)&_ZN6S429C33v33Ev,
  (VTBL_ENTRY)&_ZN6S429C33v34Ev,
  (VTBL_ENTRY)&_ZN6S429C33v35Ev,
  (VTBL_ENTRY)&_ZN6S429C33v36Ev,
  (VTBL_ENTRY)&_ZN6S429C33v37Ev,
  (VTBL_ENTRY)&_ZN6S429C33v38Ev,
  (VTBL_ENTRY)&_ZN6S429C33v39Ev,
  (VTBL_ENTRY)&_ZN6S429C33v40Ev,
  (VTBL_ENTRY)&_ZN6S429C33v41Ev,
  (VTBL_ENTRY)&_ZN6S429C33v42Ev,
  (VTBL_ENTRY)&_ZN6S429C33v43Ev,
  (VTBL_ENTRY)&_ZN6S429C33v44Ev,
  (VTBL_ENTRY)&_ZN6S429C33v45Ev,
  (VTBL_ENTRY)&_ZN6S429C33v46Ev,
  (VTBL_ENTRY)&_ZN6S429C33v47Ev,
  (VTBL_ENTRY)&_ZN6S429C33v48Ev,
  (VTBL_ENTRY)&_ZN6S429C33v49Ev,
  (VTBL_ENTRY)&_ZN6S429C33v50Ev,
  (VTBL_ENTRY)&_ZN6S429C33v51Ev,
  (VTBL_ENTRY)&_ZN6S429C33v52Ev,
  (VTBL_ENTRY)&_ZN6S429C33v53Ev,
  (VTBL_ENTRY)&_ZN6S429C33v54Ev,
  (VTBL_ENTRY)&_ZN6S429C33v55Ev,
  (VTBL_ENTRY)&_ZN6S429C33v56Ev,
};
extern VTBL_ENTRY _ZTI6S429C3[];
extern  VTBL_ENTRY _ZTV6S429C3[];
Class_Descriptor cd_S429C3 = {  "S429C3", // class name
  bases_S429C3, 2,
  &(vtc_S429C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(384,372), // object size
  NSPAIRA(_ZTI6S429C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S429C3),47, //virtual function table var
  2, // 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  S429C2  : S429C3 {
  __tsi64 s429c2f0;
  int s429c2f1;
  __tsi64 s429c2f2;
  int s429c2f3[2];
  char s429c2f4[2];
  virtual  ~S429C2(); // _ZN6S429C2D1Ev
  virtual void  v57(); // _ZN6S429C23v57Ev
  virtual void  v58(); // _ZN6S429C23v58Ev
  virtual void  v59(); // _ZN6S429C23v59Ev
  virtual void  v60(); // _ZN6S429C23v60Ev
  virtual void  v61(); // _ZN6S429C23v61Ev
  virtual void  v62(); // _ZN6S429C23v62Ev
  virtual void  v63(); // _ZN6S429C23v63Ev
  virtual void  v64(); // _ZN6S429C23v64Ev
  virtual void  v65(); // _ZN6S429C23v65Ev
  virtual void  v66(); // _ZN6S429C23v66Ev
  virtual void  v67(); // _ZN6S429C23v67Ev
  virtual void  v68(); // _ZN6S429C23v68Ev
  virtual void  v69(); // _ZN6S429C23v69Ev
  virtual void  v70(); // _ZN6S429C23v70Ev
  virtual void  v71(); // _ZN6S429C23v71Ev
  virtual void  v72(); // _ZN6S429C23v72Ev
  virtual void  v73(); // _ZN6S429C23v73Ev
  virtual void  v74(); // _ZN6S429C23v74Ev
  virtual void  v75(); // _ZN6S429C23v75Ev
  virtual void  v76(); // _ZN6S429C23v76Ev
  virtual void  v77(); // _ZN6S429C23v77Ev
  virtual void  v78(); // _ZN6S429C23v78Ev
  virtual void  v79(); // _ZN6S429C23v79Ev
  virtual void  v80(); // _ZN6S429C23v80Ev
  S429C2(); // tgen
};
//SIG(-1 S429C2) C1{ BC2{ BC3{ BC4{ m} vd v25} vd v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fc[4] Fi[23] Fc[23] Fi[24] FL Fc Fp Fi Fc Fi[4] Fc[112]} 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 FL Fi FL Fi[2] Fc[2]}


 S429C2 ::~S429C2(){ note_dtor("S429C2", this);}
void  S429C2 ::v57(){vfunc_called(this, "_ZN6S429C23v57Ev");}
void  S429C2 ::v58(){vfunc_called(this, "_ZN6S429C23v58Ev");}
void  S429C2 ::v59(){vfunc_called(this, "_ZN6S429C23v59Ev");}
void  S429C2 ::v60(){vfunc_called(this, "_ZN6S429C23v60Ev");}
void  S429C2 ::v61(){vfunc_called(this, "_ZN6S429C23v61Ev");}
void  S429C2 ::v62(){vfunc_called(this, "_ZN6S429C23v62Ev");}
void  S429C2 ::v63(){vfunc_called(this, "_ZN6S429C23v63Ev");}
void  S429C2 ::v64(){vfunc_called(this, "_ZN6S429C23v64Ev");}
void  S429C2 ::v65(){vfunc_called(this, "_ZN6S429C23v65Ev");}
void  S429C2 ::v66(){vfunc_called(this, "_ZN6S429C23v66Ev");}
void  S429C2 ::v67(){vfunc_called(this, "_ZN6S429C23v67Ev");}
void  S429C2 ::v68(){vfunc_called(this, "_ZN6S429C23v68Ev");}
void  S429C2 ::v69(){vfunc_called(this, "_ZN6S429C23v69Ev");}
void  S429C2 ::v70(){vfunc_called(this, "_ZN6S429C23v70Ev");}
void  S429C2 ::v71(){vfunc_called(this, "_ZN6S429C23v71Ev");}
void  S429C2 ::v72(){vfunc_called(this, "_ZN6S429C23v72Ev");}
void  S429C2 ::v73(){vfunc_called(this, "_ZN6S429C23v73Ev");}
void  S429C2 ::v74(){vfunc_called(this, "_ZN6S429C23v74Ev");}
void  S429C2 ::v75(){vfunc_called(this, "_ZN6S429C23v75Ev");}
void  S429C2 ::v76(){vfunc_called(this, "_ZN6S429C23v76Ev");}
void  S429C2 ::v77(){vfunc_called(this, "_ZN6S429C23v77Ev");}
void  S429C2 ::v78(){vfunc_called(this, "_ZN6S429C23v78Ev");}
void  S429C2 ::v79(){vfunc_called(this, "_ZN6S429C23v79Ev");}
void  S429C2 ::v80(){vfunc_called(this, "_ZN6S429C23v80Ev");}
S429C2 ::S429C2(){ note_ctor("S429C2", this);} // tgen

static void Test_S429C2()
{
  extern Class_Descriptor cd_S429C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(54,102)];
    init_test(&cd_S429C2, buf);
    S429C2 *dp, &lv = *(dp=new (buf) S429C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(424,404), "sizeof(S429C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S429C2)");
    check_base_class_offset(lv, (S4677C37*)(S429C4_nt*)(S429C3*), 0, "S429C2");
    check_base_class_offset(lv, (S429C4_nt*)(S429C3*), 0, "S429C2");
    check_base_class_offset(lv, (S429C3*), 0, "S429C2");
    check_field_offset(lv, s429c2f0, ABISELECT(384,372), "S429C2.s429c2f0");
    check_field_offset(lv, s429c2f1, ABISELECT(392,380), "S429C2.s429c2f1");
    check_field_offset(lv, s429c2f2, ABISELECT(400,384), "S429C2.s429c2f2");
    check_field_offset(lv, s429c2f3, ABISELECT(408,392), "S429C2.s429c2f3");
    check_field_offset(lv, s429c2f4, ABISELECT(416,400), "S429C2.s429c2f4");
    test_class_info(&lv, &cd_S429C2);
    dp->~S429C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS429C2(Test_S429C2, "S429C2", ABISELECT(424,404));

#else // __cplusplus

extern void _ZN6S429C2C1Ev();
extern void _ZN6S429C2D1Ev();
Name_Map name_map_S429C2[] = {
  NSPAIR(_ZN6S429C2C1Ev),
  NSPAIR(_ZN6S429C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S429C4_nt;
extern VTBL_ENTRY _ZTI9S429C4_nt[];
extern  VTBL_ENTRY _ZTV9S429C4_nt[];
extern Class_Descriptor cd_S429C3;
extern VTBL_ENTRY _ZTI6S429C3[];
extern  VTBL_ENTRY _ZTV6S429C3[];
static Base_Class bases_S429C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S429C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S429C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S429C2[];
extern void _ZN6S429C2D1Ev();
extern void _ZN6S429C2D0Ev();
extern void _ZN9S429C4_nt3v14Ev();
extern void _ZN6S429C33v15Ev();
extern void _ZN6S429C33v16Ev();
extern void _ZN6S429C33v17Ev();
extern void _ZN6S429C33v18Ev();
extern void _ZN6S429C33v19Ev();
extern void _ZN6S429C33v20Ev();
extern void _ZN6S429C33v21Ev();
extern void _ZN6S429C33v22Ev();
extern void _ZN6S429C33v23Ev();
extern void _ZN6S429C33v24Ev();
extern void _ZN6S429C33v25Ev();
extern void _ZN6S429C33v26Ev();
extern void _ZN6S429C33v27Ev();
extern void _ZN6S429C33v28Ev();
extern void _ZN6S429C33v29Ev();
extern void _ZN6S429C33v30Ev();
extern void _ZN6S429C33v31Ev();
extern void _ZN6S429C33v32Ev();
extern void _ZN6S429C33v33Ev();
extern void _ZN6S429C33v34Ev();
extern void _ZN6S429C33v35Ev();
extern void _ZN6S429C33v36Ev();
extern void _ZN6S429C33v37Ev();
extern void _ZN6S429C33v38Ev();
extern void _ZN6S429C33v39Ev();
extern void _ZN6S429C33v40Ev();
extern void _ZN6S429C33v41Ev();
extern void _ZN6S429C33v42Ev();
extern void _ZN6S429C33v43Ev();
extern void _ZN6S429C33v44Ev();
extern void _ZN6S429C33v45Ev();
extern void _ZN6S429C33v46Ev();
extern void _ZN6S429C33v47Ev();
extern void _ZN6S429C33v48Ev();
extern void _ZN6S429C33v49Ev();
extern void _ZN6S429C33v50Ev();
extern void _ZN6S429C33v51Ev();
extern void _ZN6S429C33v52Ev();
extern void _ZN6S429C33v53Ev();
extern void _ZN6S429C33v54Ev();
extern void _ZN6S429C33v55Ev();
extern void _ZN6S429C33v56Ev();
extern void _ZN6S429C23v57Ev();
extern void _ZN6S429C23v58Ev();
extern void _ZN6S429C23v59Ev();
extern void _ZN6S429C23v60Ev();
extern void _ZN6S429C23v61Ev();
extern void _ZN6S429C23v62Ev();
extern void _ZN6S429C23v63Ev();
extern void _ZN6S429C23v64Ev();
extern void _ZN6S429C23v65Ev();
extern void _ZN6S429C23v66Ev();
extern void _ZN6S429C23v67Ev();
extern void _ZN6S429C23v68Ev();
extern void _ZN6S429C23v69Ev();
extern void _ZN6S429C23v70Ev();
extern void _ZN6S429C23v71Ev();
extern void _ZN6S429C23v72Ev();
extern void _ZN6S429C23v73Ev();
extern void _ZN6S429C23v74Ev();
extern void _ZN6S429C23v75Ev();
extern void _ZN6S429C23v76Ev();
extern void _ZN6S429C23v77Ev();
extern void _ZN6S429C23v78Ev();
extern void _ZN6S429C23v79Ev();
extern void _ZN6S429C23v80Ev();
static  VTBL_ENTRY vtc_S429C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S429C2[0]),
  (VTBL_ENTRY)&_ZN6S429C2D1Ev,
  (VTBL_ENTRY)&_ZN6S429C2D0Ev,
  (VTBL_ENTRY)&_ZN9S429C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN6S429C33v15Ev,
  (VTBL_ENTRY)&_ZN6S429C33v16Ev,
  (VTBL_ENTRY)&_ZN6S429C33v17Ev,
  (VTBL_ENTRY)&_ZN6S429C33v18Ev,
  (VTBL_ENTRY)&_ZN6S429C33v19Ev,
  (VTBL_ENTRY)&_ZN6S429C33v20Ev,
  (VTBL_ENTRY)&_ZN6S429C33v21Ev,
  (VTBL_ENTRY)&_ZN6S429C33v22Ev,
  (VTBL_ENTRY)&_ZN6S429C33v23Ev,
  (VTBL_ENTRY)&_ZN6S429C33v24Ev,
  (VTBL_ENTRY)&_ZN6S429C33v25Ev,
  (VTBL_ENTRY)&_ZN6S429C33v26Ev,
  (VTBL_ENTRY)&_ZN6S429C33v27Ev,
  (VTBL_ENTRY)&_ZN6S429C33v28Ev,
  (VTBL_ENTRY)&_ZN6S429C33v29Ev,
  (VTBL_ENTRY)&_ZN6S429C33v30Ev,
  (VTBL_ENTRY)&_ZN6S429C33v31Ev,
  (VTBL_ENTRY)&_ZN6S429C33v32Ev,
  (VTBL_ENTRY)&_ZN6S429C33v33Ev,
  (VTBL_ENTRY)&_ZN6S429C33v34Ev,
  (VTBL_ENTRY)&_ZN6S429C33v35Ev,
  (VTBL_ENTRY)&_ZN6S429C33v36Ev,
  (VTBL_ENTRY)&_ZN6S429C33v37Ev,
  (VTBL_ENTRY)&_ZN6S429C33v38Ev,
  (VTBL_ENTRY)&_ZN6S429C33v39Ev,
  (VTBL_ENTRY)&_ZN6S429C33v40Ev,
  (VTBL_ENTRY)&_ZN6S429C33v41Ev,
  (VTBL_ENTRY)&_ZN6S429C33v42Ev,
  (VTBL_ENTRY)&_ZN6S429C33v43Ev,
  (VTBL_ENTRY)&_ZN6S429C33v44Ev,
  (VTBL_ENTRY)&_ZN6S429C33v45Ev,
  (VTBL_ENTRY)&_ZN6S429C33v46Ev,
  (VTBL_ENTRY)&_ZN6S429C33v47Ev,
  (VTBL_ENTRY)&_ZN6S429C33v48Ev,
  (VTBL_ENTRY)&_ZN6S429C33v49Ev,
  (VTBL_ENTRY)&_ZN6S429C33v50Ev,
  (VTBL_ENTRY)&_ZN6S429C33v51Ev,
  (VTBL_ENTRY)&_ZN6S429C33v52Ev,
  (VTBL_ENTRY)&_ZN6S429C33v53Ev,
  (VTBL_ENTRY)&_ZN6S429C33v54Ev,
  (VTBL_ENTRY)&_ZN6S429C33v55Ev,
  (VTBL_ENTRY)&_ZN6S429C33v56Ev,
  (VTBL_ENTRY)&_ZN6S429C23v57Ev,
  (VTBL_ENTRY)&_ZN6S429C23v58Ev,
  (VTBL_ENTRY)&_ZN6S429C23v59Ev,
  (VTBL_ENTRY)&_ZN6S429C23v60Ev,
  (VTBL_ENTRY)&_ZN6S429C23v61Ev,
  (VTBL_ENTRY)&_ZN6S429C23v62Ev,
  (VTBL_ENTRY)&_ZN6S429C23v63Ev,
  (VTBL_ENTRY)&_ZN6S429C23v64Ev,
  (VTBL_ENTRY)&_ZN6S429C23v65Ev,
  (VTBL_ENTRY)&_ZN6S429C23v66Ev,
  (VTBL_ENTRY)&_ZN6S429C23v67Ev,
  (VTBL_ENTRY)&_ZN6S429C23v68Ev,
  (VTBL_ENTRY)&_ZN6S429C23v69Ev,
  (VTBL_ENTRY)&_ZN6S429C23v70Ev,
  (VTBL_ENTRY)&_ZN6S429C23v71Ev,
  (VTBL_ENTRY)&_ZN6S429C23v72Ev,
  (VTBL_ENTRY)&_ZN6S429C23v73Ev,
  (VTBL_ENTRY)&_ZN6S429C23v74Ev,
  (VTBL_ENTRY)&_ZN6S429C23v75Ev,
  (VTBL_ENTRY)&_ZN6S429C23v76Ev,
  (VTBL_ENTRY)&_ZN6S429C23v77Ev,
  (VTBL_ENTRY)&_ZN6S429C23v78Ev,
  (VTBL_ENTRY)&_ZN6S429C23v79Ev,
  (VTBL_ENTRY)&_ZN6S429C23v80Ev,
};
extern VTBL_ENTRY _ZTI6S429C2[];
extern  VTBL_ENTRY _ZTV6S429C2[];
Class_Descriptor cd_S429C2 = {  "S429C2", // class name
  bases_S429C2, 3,
  &(vtc_S429C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(424,404), // object size
  NSPAIRA(_ZTI6S429C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S429C2),71, //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  S429C1  : S429C2 {
  virtual  ~S429C1(); // _ZN6S429C1D1Ev
  virtual void  v1(); // _ZN6S429C12v1Ev
  virtual void  v2(); // _ZN6S429C12v2Ev
  virtual void  v3(); // _ZN6S429C12v3Ev
  virtual void  v4(); // _ZN6S429C12v4Ev
  virtual void  v5(); // _ZN6S429C12v5Ev
  virtual void  v6(); // _ZN6S429C12v6Ev
  virtual void  v7(); // _ZN6S429C12v7Ev
  virtual void  v8(); // _ZN6S429C12v8Ev
  virtual void  v9(); // _ZN6S429C12v9Ev
  virtual void  v10(); // _ZN6S429C13v10Ev
  virtual void  v11(); // _ZN6S429C13v11Ev
  virtual void  v12(); // _ZN6S429C13v12Ev
  virtual void  v13(); // _ZN6S429C13v13Ev
  S429C1(); // tgen
};
//SIG(1 S429C1) C1{ BC2{ BC3{ BC4{ BC5{ m} vd v14} vd v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 Fc[4] Fi[23] Fc[23] Fi[24] FL Fc Fp Fi Fc Fi[4] Fc[112]} vd v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 FL Fi FL Fi[2] Fc[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13}


 S429C1 ::~S429C1(){ note_dtor("S429C1", this);}
void  S429C1 ::v1(){vfunc_called(this, "_ZN6S429C12v1Ev");}
void  S429C1 ::v2(){vfunc_called(this, "_ZN6S429C12v2Ev");}
void  S429C1 ::v3(){vfunc_called(this, "_ZN6S429C12v3Ev");}
void  S429C1 ::v4(){vfunc_called(this, "_ZN6S429C12v4Ev");}
void  S429C1 ::v5(){vfunc_called(this, "_ZN6S429C12v5Ev");}
void  S429C1 ::v6(){vfunc_called(this, "_ZN6S429C12v6Ev");}
void  S429C1 ::v7(){vfunc_called(this, "_ZN6S429C12v7Ev");}
void  S429C1 ::v8(){vfunc_called(this, "_ZN6S429C12v8Ev");}
void  S429C1 ::v9(){vfunc_called(this, "_ZN6S429C12v9Ev");}
void  S429C1 ::v10(){vfunc_called(this, "_ZN6S429C13v10Ev");}
void  S429C1 ::v11(){vfunc_called(this, "_ZN6S429C13v11Ev");}
void  S429C1 ::v12(){vfunc_called(this, "_ZN6S429C13v12Ev");}
void  S429C1 ::v13(){vfunc_called(this, "_ZN6S429C13v13Ev");}
S429C1 ::S429C1(){ note_ctor("S429C1", this);} // tgen

static void Test_S429C1()
{
  extern Class_Descriptor cd_S429C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(54,102)];
    init_test(&cd_S429C1, buf);
    S429C1 *dp, &lv = *(dp=new (buf) S429C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(424,404), "sizeof(S429C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S429C1)");
    check_base_class_offset(lv, (S4677C37*)(S429C4_nt*)(S429C3*)(S429C2*), 0, "S429C1");
    check_base_class_offset(lv, (S429C4_nt*)(S429C3*)(S429C2*), 0, "S429C1");
    check_base_class_offset(lv, (S429C3*)(S429C2*), 0, "S429C1");
    check_base_class_offset(lv, (S429C2*), 0, "S429C1");
    test_class_info(&lv, &cd_S429C1);
    dp->~S429C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS429C1(Test_S429C1, "S429C1", ABISELECT(424,404));

#else // __cplusplus

extern void _ZN6S429C1C1Ev();
extern void _ZN6S429C1D1Ev();
Name_Map name_map_S429C1[] = {
  NSPAIR(_ZN6S429C1C1Ev),
  NSPAIR(_ZN6S429C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S429C4_nt;
extern VTBL_ENTRY _ZTI9S429C4_nt[];
extern  VTBL_ENTRY _ZTV9S429C4_nt[];
extern Class_Descriptor cd_S429C3;
extern VTBL_ENTRY _ZTI6S429C3[];
extern  VTBL_ENTRY _ZTV6S429C3[];
extern Class_Descriptor cd_S429C2;
extern VTBL_ENTRY _ZTI6S429C2[];
extern  VTBL_ENTRY _ZTV6S429C2[];
static Base_Class bases_S429C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S429C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S429C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S429C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S429C1[];
extern void _ZN6S429C1D1Ev();
extern void _ZN6S429C1D0Ev();
extern void _ZN9S429C4_nt3v14Ev();
extern void _ZN6S429C33v15Ev();
extern void _ZN6S429C33v16Ev();
extern void _ZN6S429C33v17Ev();
extern void _ZN6S429C33v18Ev();
extern void _ZN6S429C33v19Ev();
extern void _ZN6S429C33v20Ev();
extern void _ZN6S429C33v21Ev();
extern void _ZN6S429C33v22Ev();
extern void _ZN6S429C33v23Ev();
extern void _ZN6S429C33v24Ev();
extern void _ZN6S429C33v25Ev();
extern void _ZN6S429C33v26Ev();
extern void _ZN6S429C33v27Ev();
extern void _ZN6S429C33v28Ev();
extern void _ZN6S429C33v29Ev();
extern void _ZN6S429C33v30Ev();
extern void _ZN6S429C33v31Ev();
extern void _ZN6S429C33v32Ev();
extern void _ZN6S429C33v33Ev();
extern void _ZN6S429C33v34Ev();
extern void _ZN6S429C33v35Ev();
extern void _ZN6S429C33v36Ev();
extern void _ZN6S429C33v37Ev();
extern void _ZN6S429C33v38Ev();
extern void _ZN6S429C33v39Ev();
extern void _ZN6S429C33v40Ev();
extern void _ZN6S429C33v41Ev();
extern void _ZN6S429C33v42Ev();
extern void _ZN6S429C33v43Ev();
extern void _ZN6S429C33v44Ev();
extern void _ZN6S429C33v45Ev();
extern void _ZN6S429C33v46Ev();
extern void _ZN6S429C33v47Ev();
extern void _ZN6S429C33v48Ev();
extern void _ZN6S429C33v49Ev();
extern void _ZN6S429C33v50Ev();
extern void _ZN6S429C33v51Ev();
extern void _ZN6S429C33v52Ev();
extern void _ZN6S429C33v53Ev();
extern void _ZN6S429C33v54Ev();
extern void _ZN6S429C33v55Ev();
extern void _ZN6S429C33v56Ev();
extern void _ZN6S429C23v57Ev();
extern void _ZN6S429C23v58Ev();
extern void _ZN6S429C23v59Ev();
extern void _ZN6S429C23v60Ev();
extern void _ZN6S429C23v61Ev();
extern void _ZN6S429C23v62Ev();
extern void _ZN6S429C23v63Ev();
extern void _ZN6S429C23v64Ev();
extern void _ZN6S429C23v65Ev();
extern void _ZN6S429C23v66Ev();
extern void _ZN6S429C23v67Ev();
extern void _ZN6S429C23v68Ev();
extern void _ZN6S429C23v69Ev();
extern void _ZN6S429C23v70Ev();
extern void _ZN6S429C23v71Ev();
extern void _ZN6S429C23v72Ev();
extern void _ZN6S429C23v73Ev();
extern void _ZN6S429C23v74Ev();
extern void _ZN6S429C23v75Ev();
extern void _ZN6S429C23v76Ev();
extern void _ZN6S429C23v77Ev();
extern void _ZN6S429C23v78Ev();
extern void _ZN6S429C23v79Ev();
extern void _ZN6S429C23v80Ev();
extern void _ZN6S429C12v1Ev();
extern void _ZN6S429C12v2Ev();
extern void _ZN6S429C12v3Ev();
extern void _ZN6S429C12v4Ev();
extern void _ZN6S429C12v5Ev();
extern void _ZN6S429C12v6Ev();
extern void _ZN6S429C12v7Ev();
extern void _ZN6S429C12v8Ev();
extern void _ZN6S429C12v9Ev();
extern void _ZN6S429C13v10Ev();
extern void _ZN6S429C13v11Ev();
extern void _ZN6S429C13v12Ev();
extern void _ZN6S429C13v13Ev();
static  VTBL_ENTRY vtc_S429C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S429C1[0]),
  (VTBL_ENTRY)&_ZN6S429C1D1Ev,
  (VTBL_ENTRY)&_ZN6S429C1D0Ev,
  (VTBL_ENTRY)&_ZN9S429C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN6S429C33v15Ev,
  (VTBL_ENTRY)&_ZN6S429C33v16Ev,
  (VTBL_ENTRY)&_ZN6S429C33v17Ev,
  (VTBL_ENTRY)&_ZN6S429C33v18Ev,
  (VTBL_ENTRY)&_ZN6S429C33v19Ev,
  (VTBL_ENTRY)&_ZN6S429C33v20Ev,
  (VTBL_ENTRY)&_ZN6S429C33v21Ev,
  (VTBL_ENTRY)&_ZN6S429C33v22Ev,
  (VTBL_ENTRY)&_ZN6S429C33v23Ev,
  (VTBL_ENTRY)&_ZN6S429C33v24Ev,
  (VTBL_ENTRY)&_ZN6S429C33v25Ev,
  (VTBL_ENTRY)&_ZN6S429C33v26Ev,
  (VTBL_ENTRY)&_ZN6S429C33v27Ev,
  (VTBL_ENTRY)&_ZN6S429C33v28Ev,
  (VTBL_ENTRY)&_ZN6S429C33v29Ev,
  (VTBL_ENTRY)&_ZN6S429C33v30Ev,
  (VTBL_ENTRY)&_ZN6S429C33v31Ev,
  (VTBL_ENTRY)&_ZN6S429C33v32Ev,
  (VTBL_ENTRY)&_ZN6S429C33v33Ev,
  (VTBL_ENTRY)&_ZN6S429C33v34Ev,
  (VTBL_ENTRY)&_ZN6S429C33v35Ev,
  (VTBL_ENTRY)&_ZN6S429C33v36Ev,
  (VTBL_ENTRY)&_ZN6S429C33v37Ev,
  (VTBL_ENTRY)&_ZN6S429C33v38Ev,
  (VTBL_ENTRY)&_ZN6S429C33v39Ev,
  (VTBL_ENTRY)&_ZN6S429C33v40Ev,
  (VTBL_ENTRY)&_ZN6S429C33v41Ev,
  (VTBL_ENTRY)&_ZN6S429C33v42Ev,
  (VTBL_ENTRY)&_ZN6S429C33v43Ev,
  (VTBL_ENTRY)&_ZN6S429C33v44Ev,
  (VTBL_ENTRY)&_ZN6S429C33v45Ev,
  (VTBL_ENTRY)&_ZN6S429C33v46Ev,
  (VTBL_ENTRY)&_ZN6S429C33v47Ev,
  (VTBL_ENTRY)&_ZN6S429C33v48Ev,
  (VTBL_ENTRY)&_ZN6S429C33v49Ev,
  (VTBL_ENTRY)&_ZN6S429C33v50Ev,
  (VTBL_ENTRY)&_ZN6S429C33v51Ev,
  (VTBL_ENTRY)&_ZN6S429C33v52Ev,
  (VTBL_ENTRY)&_ZN6S429C33v53Ev,
  (VTBL_ENTRY)&_ZN6S429C33v54Ev,
  (VTBL_ENTRY)&_ZN6S429C33v55Ev,
  (VTBL_ENTRY)&_ZN6S429C33v56Ev,
  (VTBL_ENTRY)&_ZN6S429C23v57Ev,
  (VTBL_ENTRY)&_ZN6S429C23v58Ev,
  (VTBL_ENTRY)&_ZN6S429C23v59Ev,
  (VTBL_ENTRY)&_ZN6S429C23v60Ev,
  (VTBL_ENTRY)&_ZN6S429C23v61Ev,
  (VTBL_ENTRY)&_ZN6S429C23v62Ev,
  (VTBL_ENTRY)&_ZN6S429C23v63Ev,
  (VTBL_ENTRY)&_ZN6S429C23v64Ev,
  (VTBL_ENTRY)&_ZN6S429C23v65Ev,
  (VTBL_ENTRY)&_ZN6S429C23v66Ev,
  (VTBL_ENTRY)&_ZN6S429C23v67Ev,
  (VTBL_ENTRY)&_ZN6S429C23v68Ev,
  (VTBL_ENTRY)&_ZN6S429C23v69Ev,
  (VTBL_ENTRY)&_ZN6S429C23v70Ev,
  (VTBL_ENTRY)&_ZN6S429C23v71Ev,
  (VTBL_ENTRY)&_ZN6S429C23v72Ev,
  (VTBL_ENTRY)&_ZN6S429C23v73Ev,
  (VTBL_ENTRY)&_ZN6S429C23v74Ev,
  (VTBL_ENTRY)&_ZN6S429C23v75Ev,
  (VTBL_ENTRY)&_ZN6S429C23v76Ev,
  (VTBL_ENTRY)&_ZN6S429C23v77Ev,
  (VTBL_ENTRY)&_ZN6S429C23v78Ev,
  (VTBL_ENTRY)&_ZN6S429C23v79Ev,
  (VTBL_ENTRY)&_ZN6S429C23v80Ev,
  (VTBL_ENTRY)&_ZN6S429C12v1Ev,
  (VTBL_ENTRY)&_ZN6S429C12v2Ev,
  (VTBL_ENTRY)&_ZN6S429C12v3Ev,
  (VTBL_ENTRY)&_ZN6S429C12v4Ev,
  (VTBL_ENTRY)&_ZN6S429C12v5Ev,
  (VTBL_ENTRY)&_ZN6S429C12v6Ev,
  (VTBL_ENTRY)&_ZN6S429C12v7Ev,
  (VTBL_ENTRY)&_ZN6S429C12v8Ev,
  (VTBL_ENTRY)&_ZN6S429C12v9Ev,
  (VTBL_ENTRY)&_ZN6S429C13v10Ev,
  (VTBL_ENTRY)&_ZN6S429C13v11Ev,
  (VTBL_ENTRY)&_ZN6S429C13v12Ev,
  (VTBL_ENTRY)&_ZN6S429C13v13Ev,
};
extern VTBL_ENTRY _ZTI6S429C1[];
extern  VTBL_ENTRY _ZTV6S429C1[];
Class_Descriptor cd_S429C1 = {  "S429C1", // class name
  bases_S429C1, 4,
  &(vtc_S429C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(424,404), // object size
  NSPAIRA(_ZTI6S429C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S429C1),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S428C4  : S4677C37 {
  virtual  ~S428C4(); // _ZN6S428C4D1Ev
  virtual void  v11(); // _ZN6S428C43v11Ev
  S428C4(); // tgen
};
//SIG(-1 S428C4) C1{ BC2{ m} vd v1}


 S428C4 ::~S428C4(){ note_dtor("S428C4", this);}
void  S428C4 ::v11(){vfunc_called(this, "_ZN6S428C43v11Ev");}
S428C4 ::S428C4(){ note_ctor("S428C4", this);} // tgen

static void Test_S428C4()
{
  extern Class_Descriptor cd_S428C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S428C4, buf);
    S428C4 *dp, &lv = *(dp=new (buf) S428C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S428C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S428C4)");
    check_base_class_offset(lv, (S4677C37*), 0, "S428C4");
    test_class_info(&lv, &cd_S428C4);
    dp->~S428C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS428C4(Test_S428C4, "S428C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN6S428C4C1Ev();
extern void _ZN6S428C4D1Ev();
Name_Map name_map_S428C4[] = {
  NSPAIR(_ZN6S428C4C1Ev),
  NSPAIR(_ZN6S428C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
static Base_Class bases_S428C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S428C4[];
extern void _ZN6S428C4D1Ev();
extern void _ZN6S428C4D0Ev();
extern void _ZN6S428C43v11Ev();
static  VTBL_ENTRY vtc_S428C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S428C4[0]),
  (VTBL_ENTRY)&_ZN6S428C4D1Ev,
  (VTBL_ENTRY)&_ZN6S428C4D0Ev,
  (VTBL_ENTRY)&_ZN6S428C43v11Ev,
};
extern VTBL_ENTRY _ZTI6S428C4[];
extern  VTBL_ENTRY _ZTV6S428C4[];
Class_Descriptor cd_S428C4 = {  "S428C4", // class name
  bases_S428C4, 1,
  &(vtc_S428C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI6S428C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S428C4),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  S428C3  : S428C4 {
  char s428c3f0[4];
  int s428c3f1[23];
  char s428c3f2[23];
  int s428c3f3[24];
  __tsi64 s428c3f4;
  char s428c3f5;
  void *s428c3f6;
  int s428c3f7;
  char s428c3f8;
  int s428c3f9[4];
  char s428c3f10[112];
  virtual  ~S428C3(); // _ZN6S428C3D1Ev
  virtual void  v12(); // _ZN6S428C33v12Ev
  virtual void  v13(); // _ZN6S428C33v13Ev
  virtual void  v14(); // _ZN6S428C33v14Ev
  virtual void  v15(); // _ZN6S428C33v15Ev
  virtual void  v16(); // _ZN6S428C33v16Ev
  virtual void  v17(); // _ZN6S428C33v17Ev
  virtual void  v18(); // _ZN6S428C33v18Ev
  virtual void  v19(); // _ZN6S428C33v19Ev
  virtual void  v20(); // _ZN6S428C33v20Ev
  virtual void  v21(); // _ZN6S428C33v21Ev
  virtual void  v22(); // _ZN6S428C33v22Ev
  virtual void  v23(); // _ZN6S428C33v23Ev
  virtual void  v24(); // _ZN6S428C33v24Ev
  virtual void  v25(); // _ZN6S428C33v25Ev
  virtual void  v26(); // _ZN6S428C33v26Ev
  virtual void  v27(); // _ZN6S428C33v27Ev
  virtual void  v28(); // _ZN6S428C33v28Ev
  virtual void  v29(); // _ZN6S428C33v29Ev
  virtual void  v30(); // _ZN6S428C33v30Ev
  virtual void  v31(); // _ZN6S428C33v31Ev
  virtual void  v32(); // _ZN6S428C33v32Ev
  virtual void  v33(); // _ZN6S428C33v33Ev
  virtual void  v34(); // _ZN6S428C33v34Ev
  virtual void  v35(); // _ZN6S428C33v35Ev
  virtual void  v36(); // _ZN6S428C33v36Ev
  virtual void  v37(); // _ZN6S428C33v37Ev
  virtual void  v38(); // _ZN6S428C33v38Ev
  virtual void  v39(); // _ZN6S428C33v39Ev
  virtual void  v40(); // _ZN6S428C33v40Ev
  virtual void  v41(); // _ZN6S428C33v41Ev
  virtual void  v42(); // _ZN6S428C33v42Ev
  virtual void  v43(); // _ZN6S428C33v43Ev
  virtual void  v44(); // _ZN6S428C33v44Ev
  virtual void  v45(); // _ZN6S428C33v45Ev
  virtual void  v46(); // _ZN6S428C33v46Ev
  virtual void  v47(); // _ZN6S428C33v47Ev
  virtual void  v48(); // _ZN6S428C33v48Ev
  virtual void  v49(); // _ZN6S428C33v49Ev
  virtual void  v50(); // _ZN6S428C33v50Ev
  virtual void  v51(); // _ZN6S428C33v51Ev
  virtual void  v52(); // _ZN6S428C33v52Ev
  virtual void  v53(); // _ZN6S428C33v53Ev
  S428C3(); // tgen
};
//SIG(-1 S428C3) C1{ BC2{ BC3{ m} vd v43} 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 Fc[4] Fi[23] Fc[23] Fi[24] FL Fc Fp Fi Fc Fi[4] Fc[112]}


 S428C3 ::~S428C3(){ note_dtor("S428C3", this);}
void  S428C3 ::v12(){vfunc_called(this, "_ZN6S428C33v12Ev");}
void  S428C3 ::v13(){vfunc_called(this, "_ZN6S428C33v13Ev");}
void  S428C3 ::v14(){vfunc_called(this, "_ZN6S428C33v14Ev");}
void  S428C3 ::v15(){vfunc_called(this, "_ZN6S428C33v15Ev");}
void  S428C3 ::v16(){vfunc_called(this, "_ZN6S428C33v16Ev");}
void  S428C3 ::v17(){vfunc_called(this, "_ZN6S428C33v17Ev");}
void  S428C3 ::v18(){vfunc_called(this, "_ZN6S428C33v18Ev");}
void  S428C3 ::v19(){vfunc_called(this, "_ZN6S428C33v19Ev");}
void  S428C3 ::v20(){vfunc_called(this, "_ZN6S428C33v20Ev");}
void  S428C3 ::v21(){vfunc_called(this, "_ZN6S428C33v21Ev");}
void  S428C3 ::v22(){vfunc_called(this, "_ZN6S428C33v22Ev");}
void  S428C3 ::v23(){vfunc_called(this, "_ZN6S428C33v23Ev");}
void  S428C3 ::v24(){vfunc_called(this, "_ZN6S428C33v24Ev");}
void  S428C3 ::v25(){vfunc_called(this, "_ZN6S428C33v25Ev");}
void  S428C3 ::v26(){vfunc_called(this, "_ZN6S428C33v26Ev");}
void  S428C3 ::v27(){vfunc_called(this, "_ZN6S428C33v27Ev");}
void  S428C3 ::v28(){vfunc_called(this, "_ZN6S428C33v28Ev");}
void  S428C3 ::v29(){vfunc_called(this, "_ZN6S428C33v29Ev");}
void  S428C3 ::v30(){vfunc_called(this, "_ZN6S428C33v30Ev");}
void  S428C3 ::v31(){vfunc_called(this, "_ZN6S428C33v31Ev");}
void  S428C3 ::v32(){vfunc_called(this, "_ZN6S428C33v32Ev");}
void  S428C3 ::v33(){vfunc_called(this, "_ZN6S428C33v33Ev");}
void  S428C3 ::v34(){vfunc_called(this, "_ZN6S428C33v34Ev");}
void  S428C3 ::v35(){vfunc_called(this, "_ZN6S428C33v35Ev");}
void  S428C3 ::v36(){vfunc_called(this, "_ZN6S428C33v36Ev");}
void  S428C3 ::v37(){vfunc_called(this, "_ZN6S428C33v37Ev");}
void  S428C3 ::v38(){vfunc_called(this, "_ZN6S428C33v38Ev");}
void  S428C3 ::v39(){vfunc_called(this, "_ZN6S428C33v39Ev");}
void  S428C3 ::v40(){vfunc_called(this, "_ZN6S428C33v40Ev");}
void  S428C3 ::v41(){vfunc_called(this, "_ZN6S428C33v41Ev");}
void  S428C3 ::v42(){vfunc_called(this, "_ZN6S428C33v42Ev");}
void  S428C3 ::v43(){vfunc_called(this, "_ZN6S428C33v43Ev");}
void  S428C3 ::v44(){vfunc_called(this, "_ZN6S428C33v44Ev");}
void  S428C3 ::v45(){vfunc_called(this, "_ZN6S428C33v45Ev");}
void  S428C3 ::v46(){vfunc_called(this, "_ZN6S428C33v46Ev");}
void  S428C3 ::v47(){vfunc_called(this, "_ZN6S428C33v47Ev");}
void  S428C3 ::v48(){vfunc_called(this, "_ZN6S428C33v48Ev");}
void  S428C3 ::v49(){vfunc_called(this, "_ZN6S428C33v49Ev");}
void  S428C3 ::v50(){vfunc_called(this, "_ZN6S428C33v50Ev");}
void  S428C3 ::v51(){vfunc_called(this, "_ZN6S428C33v51Ev");}
void  S428C3 ::v52(){vfunc_called(this, "_ZN6S428C33v52Ev");}
void  S428C3 ::v53(){vfunc_called(this, "_ZN6S428C33v53Ev");}
S428C3 ::S428C3(){ note_ctor("S428C3", this);} // tgen

static void Test_S428C3()
{
  extern Class_Descriptor cd_S428C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(49,94)];
    init_test(&cd_S428C3, buf);
    S428C3 *dp, &lv = *(dp=new (buf) S428C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,372), "sizeof(S428C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S428C3)");
    check_base_class_offset(lv, (S4677C37*)(S428C4*), 0, "S428C3");
    check_base_class_offset(lv, (S428C4*), 0, "S428C3");
    check_field_offset(lv, s428c3f0, ABISELECT(8,4), "S428C3.s428c3f0");
    check_field_offset(lv, s428c3f1, ABISELECT(12,8), "S428C3.s428c3f1");
    check_field_offset(lv, s428c3f2, ABISELECT(104,100), "S428C3.s428c3f2");
    check_field_offset(lv, s428c3f3, ABISELECT(128,124), "S428C3.s428c3f3");
    check_field_offset(lv, s428c3f4, ABISELECT(224,220), "S428C3.s428c3f4");
    check_field_offset(lv, s428c3f5, ABISELECT(232,228), "S428C3.s428c3f5");
    check_field_offset(lv, s428c3f6, ABISELECT(240,232), "S428C3.s428c3f6");
    check_field_offset(lv, s428c3f7, ABISELECT(248,236), "S428C3.s428c3f7");
    check_field_offset(lv, s428c3f8, ABISELECT(252,240), "S428C3.s428c3f8");
    check_field_offset(lv, s428c3f9, ABISELECT(256,244), "S428C3.s428c3f9");
    check_field_offset(lv, s428c3f10, ABISELECT(272,260), "S428C3.s428c3f10");
    test_class_info(&lv, &cd_S428C3);
    dp->~S428C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS428C3(Test_S428C3, "S428C3", ABISELECT(384,372));

#else // __cplusplus

extern void _ZN6S428C3C1Ev();
extern void _ZN6S428C3D1Ev();
Name_Map name_map_S428C3[] = {
  NSPAIR(_ZN6S428C3C1Ev),
  NSPAIR(_ZN6S428C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S428C4;
extern VTBL_ENTRY _ZTI6S428C4[];
extern  VTBL_ENTRY _ZTV6S428C4[];
static Base_Class bases_S428C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S428C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S428C3[];
extern void _ZN6S428C3D1Ev();
extern void _ZN6S428C3D0Ev();
extern void _ZN6S428C43v11Ev();
extern void _ZN6S428C33v12Ev();
extern void _ZN6S428C33v13Ev();
extern void _ZN6S428C33v14Ev();
extern void _ZN6S428C33v15Ev();
extern void _ZN6S428C33v16Ev();
extern void _ZN6S428C33v17Ev();
extern void _ZN6S428C33v18Ev();
extern void _ZN6S428C33v19Ev();
extern void _ZN6S428C33v20Ev();
extern void _ZN6S428C33v21Ev();
extern void _ZN6S428C33v22Ev();
extern void _ZN6S428C33v23Ev();
extern void _ZN6S428C33v24Ev();
extern void _ZN6S428C33v25Ev();
extern void _ZN6S428C33v26Ev();
extern void _ZN6S428C33v27Ev();
extern void _ZN6S428C33v28Ev();
extern void _ZN6S428C33v29Ev();
extern void _ZN6S428C33v30Ev();
extern void _ZN6S428C33v31Ev();
extern void _ZN6S428C33v32Ev();
extern void _ZN6S428C33v33Ev();
extern void _ZN6S428C33v34Ev();
extern void _ZN6S428C33v35Ev();
extern void _ZN6S428C33v36Ev();
extern void _ZN6S428C33v37Ev();
extern void _ZN6S428C33v38Ev();
extern void _ZN6S428C33v39Ev();
extern void _ZN6S428C33v40Ev();
extern void _ZN6S428C33v41Ev();
extern void _ZN6S428C33v42Ev();
extern void _ZN6S428C33v43Ev();
extern void _ZN6S428C33v44Ev();
extern void _ZN6S428C33v45Ev();
extern void _ZN6S428C33v46Ev();
extern void _ZN6S428C33v47Ev();
extern void _ZN6S428C33v48Ev();
extern void _ZN6S428C33v49Ev();
extern void _ZN6S428C33v50Ev();
extern void _ZN6S428C33v51Ev();
extern void _ZN6S428C33v52Ev();
extern void _ZN6S428C33v53Ev();
static  VTBL_ENTRY vtc_S428C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S428C3[0]),
  (VTBL_ENTRY)&_ZN6S428C3D1Ev,
  (VTBL_ENTRY)&_ZN6S428C3D0Ev,
  (VTBL_ENTRY)&_ZN6S428C43v11Ev,
  (VTBL_ENTRY)&_ZN6S428C33v12Ev,
  (VTBL_ENTRY)&_ZN6S428C33v13Ev,
  (VTBL_ENTRY)&_ZN6S428C33v14Ev,
  (VTBL_ENTRY)&_ZN6S428C33v15Ev,
  (VTBL_ENTRY)&_ZN6S428C33v16Ev,
  (VTBL_ENTRY)&_ZN6S428C33v17Ev,
  (VTBL_ENTRY)&_ZN6S428C33v18Ev,
  (VTBL_ENTRY)&_ZN6S428C33v19Ev,
  (VTBL_ENTRY)&_ZN6S428C33v20Ev,
  (VTBL_ENTRY)&_ZN6S428C33v21Ev,
  (VTBL_ENTRY)&_ZN6S428C33v22Ev,
  (VTBL_ENTRY)&_ZN6S428C33v23Ev,
  (VTBL_ENTRY)&_ZN6S428C33v24Ev,
  (VTBL_ENTRY)&_ZN6S428C33v25Ev,
  (VTBL_ENTRY)&_ZN6S428C33v26Ev,
  (VTBL_ENTRY)&_ZN6S428C33v27Ev,
  (VTBL_ENTRY)&_ZN6S428C33v28Ev,
  (VTBL_ENTRY)&_ZN6S428C33v29Ev,
  (VTBL_ENTRY)&_ZN6S428C33v30Ev,
  (VTBL_ENTRY)&_ZN6S428C33v31Ev,
  (VTBL_ENTRY)&_ZN6S428C33v32Ev,
  (VTBL_ENTRY)&_ZN6S428C33v33Ev,
  (VTBL_ENTRY)&_ZN6S428C33v34Ev,
  (VTBL_ENTRY)&_ZN6S428C33v35Ev,
  (VTBL_ENTRY)&_ZN6S428C33v36Ev,
  (VTBL_ENTRY)&_ZN6S428C33v37Ev,
  (VTBL_ENTRY)&_ZN6S428C33v38Ev,
  (VTBL_ENTRY)&_ZN6S428C33v39Ev,
  (VTBL_ENTRY)&_ZN6S428C33v40Ev,
  (VTBL_ENTRY)&_ZN6S428C33v41Ev,
  (VTBL_ENTRY)&_ZN6S428C33v42Ev,
  (VTBL_ENTRY)&_ZN6S428C33v43Ev,
  (VTBL_ENTRY)&_ZN6S428C33v44Ev,
  (VTBL_ENTRY)&_ZN6S428C33v45Ev,
  (VTBL_ENTRY)&_ZN6S428C33v46Ev,
  (VTBL_ENTRY)&_ZN6S428C33v47Ev,
  (VTBL_ENTRY)&_ZN6S428C33v48Ev,
  (VTBL_ENTRY)&_ZN6S428C33v49Ev,
  (VTBL_ENTRY)&_ZN6S428C33v50Ev,
  (VTBL_ENTRY)&_ZN6S428C33v51Ev,
  (VTBL_ENTRY)&_ZN6S428C33v52Ev,
  (VTBL_ENTRY)&_ZN6S428C33v53Ev,
};
extern VTBL_ENTRY _ZTI6S428C3[];
extern  VTBL_ENTRY _ZTV6S428C3[];
Class_Descriptor cd_S428C3 = {  "S428C3", // class name
  bases_S428C3, 2,
  &(vtc_S428C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(384,372), // object size
  NSPAIRA(_ZTI6S428C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S428C3),47, //virtual function table var
  2, // 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  S428C2  : S428C3 {
  __tsi64 s428c2f0;
  int s428c2f1;
  __tsi64 s428c2f2;
  int s428c2f3[2];
  char s428c2f4[2];
  virtual  ~S428C2(); // _ZN6S428C2D1Ev
  virtual void  v54(); // _ZN6S428C23v54Ev
  virtual void  v55(); // _ZN6S428C23v55Ev
  virtual void  v56(); // _ZN6S428C23v56Ev
  virtual void  v57(); // _ZN6S428C23v57Ev
  virtual void  v58(); // _ZN6S428C23v58Ev
  virtual void  v59(); // _ZN6S428C23v59Ev
  virtual void  v60(); // _ZN6S428C23v60Ev
  virtual void  v61(); // _ZN6S428C23v61Ev
  virtual void  v62(); // _ZN6S428C23v62Ev
  virtual void  v63(); // _ZN6S428C23v63Ev
  virtual void  v64(); // _ZN6S428C23v64Ev
  virtual void  v65(); // _ZN6S428C23v65Ev
  virtual void  v66(); // _ZN6S428C23v66Ev
  virtual void  v67(); // _ZN6S428C23v67Ev
  virtual void  v68(); // _ZN6S428C23v68Ev
  virtual void  v69(); // _ZN6S428C23v69Ev
  virtual void  v70(); // _ZN6S428C23v70Ev
  virtual void  v71(); // _ZN6S428C23v71Ev
  virtual void  v72(); // _ZN6S428C23v72Ev
  virtual void  v73(); // _ZN6S428C23v73Ev
  virtual void  v74(); // _ZN6S428C23v74Ev
  virtual void  v75(); // _ZN6S428C23v75Ev
  virtual void  v76(); // _ZN6S428C23v76Ev
  virtual void  v77(); // _ZN6S428C23v77Ev
  S428C2(); // tgen
};
//SIG(-1 S428C2) C1{ BC2{ BC3{ BC4{ m} vd v25} vd v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fc[4] Fi[23] Fc[23] Fi[24] FL Fc Fp Fi Fc Fi[4] Fc[112]} 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 FL Fi FL Fi[2] Fc[2]}


 S428C2 ::~S428C2(){ note_dtor("S428C2", this);}
void  S428C2 ::v54(){vfunc_called(this, "_ZN6S428C23v54Ev");}
void  S428C2 ::v55(){vfunc_called(this, "_ZN6S428C23v55Ev");}
void  S428C2 ::v56(){vfunc_called(this, "_ZN6S428C23v56Ev");}
void  S428C2 ::v57(){vfunc_called(this, "_ZN6S428C23v57Ev");}
void  S428C2 ::v58(){vfunc_called(this, "_ZN6S428C23v58Ev");}
void  S428C2 ::v59(){vfunc_called(this, "_ZN6S428C23v59Ev");}
void  S428C2 ::v60(){vfunc_called(this, "_ZN6S428C23v60Ev");}
void  S428C2 ::v61(){vfunc_called(this, "_ZN6S428C23v61Ev");}
void  S428C2 ::v62(){vfunc_called(this, "_ZN6S428C23v62Ev");}
void  S428C2 ::v63(){vfunc_called(this, "_ZN6S428C23v63Ev");}
void  S428C2 ::v64(){vfunc_called(this, "_ZN6S428C23v64Ev");}
void  S428C2 ::v65(){vfunc_called(this, "_ZN6S428C23v65Ev");}
void  S428C2 ::v66(){vfunc_called(this, "_ZN6S428C23v66Ev");}
void  S428C2 ::v67(){vfunc_called(this, "_ZN6S428C23v67Ev");}
void  S428C2 ::v68(){vfunc_called(this, "_ZN6S428C23v68Ev");}
void  S428C2 ::v69(){vfunc_called(this, "_ZN6S428C23v69Ev");}
void  S428C2 ::v70(){vfunc_called(this, "_ZN6S428C23v70Ev");}
void  S428C2 ::v71(){vfunc_called(this, "_ZN6S428C23v71Ev");}
void  S428C2 ::v72(){vfunc_called(this, "_ZN6S428C23v72Ev");}
void  S428C2 ::v73(){vfunc_called(this, "_ZN6S428C23v73Ev");}
void  S428C2 ::v74(){vfunc_called(this, "_ZN6S428C23v74Ev");}
void  S428C2 ::v75(){vfunc_called(this, "_ZN6S428C23v75Ev");}
void  S428C2 ::v76(){vfunc_called(this, "_ZN6S428C23v76Ev");}
void  S428C2 ::v77(){vfunc_called(this, "_ZN6S428C23v77Ev");}
S428C2 ::S428C2(){ note_ctor("S428C2", this);} // tgen

static void Test_S428C2()
{
  extern Class_Descriptor cd_S428C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(54,102)];
    init_test(&cd_S428C2, buf);
    S428C2 *dp, &lv = *(dp=new (buf) S428C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(424,404), "sizeof(S428C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S428C2)");
    check_base_class_offset(lv, (S4677C37*)(S428C4*)(S428C3*), 0, "S428C2");
    check_base_class_offset(lv, (S428C4*)(S428C3*), 0, "S428C2");
    check_base_class_offset(lv, (S428C3*), 0, "S428C2");
    check_field_offset(lv, s428c2f0, ABISELECT(384,372), "S428C2.s428c2f0");
    check_field_offset(lv, s428c2f1, ABISELECT(392,380), "S428C2.s428c2f1");
    check_field_offset(lv, s428c2f2, ABISELECT(400,384), "S428C2.s428c2f2");
    check_field_offset(lv, s428c2f3, ABISELECT(408,392), "S428C2.s428c2f3");
    check_field_offset(lv, s428c2f4, ABISELECT(416,400), "S428C2.s428c2f4");
    test_class_info(&lv, &cd_S428C2);
    dp->~S428C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS428C2(Test_S428C2, "S428C2", ABISELECT(424,404));

#else // __cplusplus

extern void _ZN6S428C2C1Ev();
extern void _ZN6S428C2D1Ev();
Name_Map name_map_S428C2[] = {
  NSPAIR(_ZN6S428C2C1Ev),
  NSPAIR(_ZN6S428C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S428C4;
extern VTBL_ENTRY _ZTI6S428C4[];
extern  VTBL_ENTRY _ZTV6S428C4[];
extern Class_Descriptor cd_S428C3;
extern VTBL_ENTRY _ZTI6S428C3[];
extern  VTBL_ENTRY _ZTV6S428C3[];
static Base_Class bases_S428C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S428C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S428C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S428C2[];
extern void _ZN6S428C2D1Ev();
extern void _ZN6S428C2D0Ev();
extern void _ZN6S428C43v11Ev();
extern void _ZN6S428C33v12Ev();
extern void _ZN6S428C33v13Ev();
extern void _ZN6S428C33v14Ev();
extern void _ZN6S428C33v15Ev();
extern void _ZN6S428C33v16Ev();
extern void _ZN6S428C33v17Ev();
extern void _ZN6S428C33v18Ev();
extern void _ZN6S428C33v19Ev();
extern void _ZN6S428C33v20Ev();
extern void _ZN6S428C33v21Ev();
extern void _ZN6S428C33v22Ev();
extern void _ZN6S428C33v23Ev();
extern void _ZN6S428C33v24Ev();
extern void _ZN6S428C33v25Ev();
extern void _ZN6S428C33v26Ev();
extern void _ZN6S428C33v27Ev();
extern void _ZN6S428C33v28Ev();
extern void _ZN6S428C33v29Ev();
extern void _ZN6S428C33v30Ev();
extern void _ZN6S428C33v31Ev();
extern void _ZN6S428C33v32Ev();
extern void _ZN6S428C33v33Ev();
extern void _ZN6S428C33v34Ev();
extern void _ZN6S428C33v35Ev();
extern void _ZN6S428C33v36Ev();
extern void _ZN6S428C33v37Ev();
extern void _ZN6S428C33v38Ev();
extern void _ZN6S428C33v39Ev();
extern void _ZN6S428C33v40Ev();
extern void _ZN6S428C33v41Ev();
extern void _ZN6S428C33v42Ev();
extern void _ZN6S428C33v43Ev();
extern void _ZN6S428C33v44Ev();
extern void _ZN6S428C33v45Ev();
extern void _ZN6S428C33v46Ev();
extern void _ZN6S428C33v47Ev();
extern void _ZN6S428C33v48Ev();
extern void _ZN6S428C33v49Ev();
extern void _ZN6S428C33v50Ev();
extern void _ZN6S428C33v51Ev();
extern void _ZN6S428C33v52Ev();
extern void _ZN6S428C33v53Ev();
extern void _ZN6S428C23v54Ev();
extern void _ZN6S428C23v55Ev();
extern void _ZN6S428C23v56Ev();
extern void _ZN6S428C23v57Ev();
extern void _ZN6S428C23v58Ev();
extern void _ZN6S428C23v59Ev();
extern void _ZN6S428C23v60Ev();
extern void _ZN6S428C23v61Ev();
extern void _ZN6S428C23v62Ev();
extern void _ZN6S428C23v63Ev();
extern void _ZN6S428C23v64Ev();
extern void _ZN6S428C23v65Ev();
extern void _ZN6S428C23v66Ev();
extern void _ZN6S428C23v67Ev();
extern void _ZN6S428C23v68Ev();
extern void _ZN6S428C23v69Ev();
extern void _ZN6S428C23v70Ev();
extern void _ZN6S428C23v71Ev();
extern void _ZN6S428C23v72Ev();
extern void _ZN6S428C23v73Ev();
extern void _ZN6S428C23v74Ev();
extern void _ZN6S428C23v75Ev();
extern void _ZN6S428C23v76Ev();
extern void _ZN6S428C23v77Ev();
static  VTBL_ENTRY vtc_S428C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S428C2[0]),
  (VTBL_ENTRY)&_ZN6S428C2D1Ev,
  (VTBL_ENTRY)&_ZN6S428C2D0Ev,
  (VTBL_ENTRY)&_ZN6S428C43v11Ev,
  (VTBL_ENTRY)&_ZN6S428C33v12Ev,
  (VTBL_ENTRY)&_ZN6S428C33v13Ev,
  (VTBL_ENTRY)&_ZN6S428C33v14Ev,
  (VTBL_ENTRY)&_ZN6S428C33v15Ev,
  (VTBL_ENTRY)&_ZN6S428C33v16Ev,
  (VTBL_ENTRY)&_ZN6S428C33v17Ev,
  (VTBL_ENTRY)&_ZN6S428C33v18Ev,
  (VTBL_ENTRY)&_ZN6S428C33v19Ev,
  (VTBL_ENTRY)&_ZN6S428C33v20Ev,
  (VTBL_ENTRY)&_ZN6S428C33v21Ev,
  (VTBL_ENTRY)&_ZN6S428C33v22Ev,
  (VTBL_ENTRY)&_ZN6S428C33v23Ev,
  (VTBL_ENTRY)&_ZN6S428C33v24Ev,
  (VTBL_ENTRY)&_ZN6S428C33v25Ev,
  (VTBL_ENTRY)&_ZN6S428C33v26Ev,
  (VTBL_ENTRY)&_ZN6S428C33v27Ev,
  (VTBL_ENTRY)&_ZN6S428C33v28Ev,
  (VTBL_ENTRY)&_ZN6S428C33v29Ev,
  (VTBL_ENTRY)&_ZN6S428C33v30Ev,
  (VTBL_ENTRY)&_ZN6S428C33v31Ev,
  (VTBL_ENTRY)&_ZN6S428C33v32Ev,
  (VTBL_ENTRY)&_ZN6S428C33v33Ev,
  (VTBL_ENTRY)&_ZN6S428C33v34Ev,
  (VTBL_ENTRY)&_ZN6S428C33v35Ev,
  (VTBL_ENTRY)&_ZN6S428C33v36Ev,
  (VTBL_ENTRY)&_ZN6S428C33v37Ev,
  (VTBL_ENTRY)&_ZN6S428C33v38Ev,
  (VTBL_ENTRY)&_ZN6S428C33v39Ev,
  (VTBL_ENTRY)&_ZN6S428C33v40Ev,
  (VTBL_ENTRY)&_ZN6S428C33v41Ev,
  (VTBL_ENTRY)&_ZN6S428C33v42Ev,
  (VTBL_ENTRY)&_ZN6S428C33v43Ev,
  (VTBL_ENTRY)&_ZN6S428C33v44Ev,
  (VTBL_ENTRY)&_ZN6S428C33v45Ev,
  (VTBL_ENTRY)&_ZN6S428C33v46Ev,
  (VTBL_ENTRY)&_ZN6S428C33v47Ev,
  (VTBL_ENTRY)&_ZN6S428C33v48Ev,
  (VTBL_ENTRY)&_ZN6S428C33v49Ev,
  (VTBL_ENTRY)&_ZN6S428C33v50Ev,
  (VTBL_ENTRY)&_ZN6S428C33v51Ev,
  (VTBL_ENTRY)&_ZN6S428C33v52Ev,
  (VTBL_ENTRY)&_ZN6S428C33v53Ev,
  (VTBL_ENTRY)&_ZN6S428C23v54Ev,
  (VTBL_ENTRY)&_ZN6S428C23v55Ev,
  (VTBL_ENTRY)&_ZN6S428C23v56Ev,
  (VTBL_ENTRY)&_ZN6S428C23v57Ev,
  (VTBL_ENTRY)&_ZN6S428C23v58Ev,
  (VTBL_ENTRY)&_ZN6S428C23v59Ev,
  (VTBL_ENTRY)&_ZN6S428C23v60Ev,
  (VTBL_ENTRY)&_ZN6S428C23v61Ev,
  (VTBL_ENTRY)&_ZN6S428C23v62Ev,
  (VTBL_ENTRY)&_ZN6S428C23v63Ev,
  (VTBL_ENTRY)&_ZN6S428C23v64Ev,
  (VTBL_ENTRY)&_ZN6S428C23v65Ev,
  (VTBL_ENTRY)&_ZN6S428C23v66Ev,
  (VTBL_ENTRY)&_ZN6S428C23v67Ev,
  (VTBL_ENTRY)&_ZN6S428C23v68Ev,
  (VTBL_ENTRY)&_ZN6S428C23v69Ev,
  (VTBL_ENTRY)&_ZN6S428C23v70Ev,
  (VTBL_ENTRY)&_ZN6S428C23v71Ev,
  (VTBL_ENTRY)&_ZN6S428C23v72Ev,
  (VTBL_ENTRY)&_ZN6S428C23v73Ev,
  (VTBL_ENTRY)&_ZN6S428C23v74Ev,
  (VTBL_ENTRY)&_ZN6S428C23v75Ev,
  (VTBL_ENTRY)&_ZN6S428C23v76Ev,
  (VTBL_ENTRY)&_ZN6S428C23v77Ev,
};
extern VTBL_ENTRY _ZTI6S428C2[];
extern  VTBL_ENTRY _ZTV6S428C2[];
Class_Descriptor cd_S428C2 = {  "S428C2", // class name
  bases_S428C2, 3,
  &(vtc_S428C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(424,404), // object size
  NSPAIRA(_ZTI6S428C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S428C2),71, //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  S428C1  : S428C2 {
  virtual  ~S428C1(); // _ZN6S428C1D1Ev
  virtual void  v1(); // _ZN6S428C12v1Ev
  virtual void  v2(); // _ZN6S428C12v2Ev
  virtual void  v3(); // _ZN6S428C12v3Ev
  virtual void  v4(); // _ZN6S428C12v4Ev
  virtual void  v5(); // _ZN6S428C12v5Ev
  virtual void  v6(); // _ZN6S428C12v6Ev
  virtual void  v7(); // _ZN6S428C12v7Ev
  virtual void  v8(); // _ZN6S428C12v8Ev
  virtual void  v9(); // _ZN6S428C12v9Ev
  virtual void  v10(); // _ZN6S428C13v10Ev
  S428C1(); // tgen
};
//SIG(1 S428C1) C1{ BC2{ BC3{ BC4{ BC5{ m} vd v11} vd 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 Fc[4] Fi[23] Fc[23] Fi[24] FL Fc Fp Fi Fc Fi[4] Fc[112]} vd v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 FL Fi FL Fi[2] Fc[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10}


 S428C1 ::~S428C1(){ note_dtor("S428C1", this);}
void  S428C1 ::v1(){vfunc_called(this, "_ZN6S428C12v1Ev");}
void  S428C1 ::v2(){vfunc_called(this, "_ZN6S428C12v2Ev");}
void  S428C1 ::v3(){vfunc_called(this, "_ZN6S428C12v3Ev");}
void  S428C1 ::v4(){vfunc_called(this, "_ZN6S428C12v4Ev");}
void  S428C1 ::v5(){vfunc_called(this, "_ZN6S428C12v5Ev");}
void  S428C1 ::v6(){vfunc_called(this, "_ZN6S428C12v6Ev");}
void  S428C1 ::v7(){vfunc_called(this, "_ZN6S428C12v7Ev");}
void  S428C1 ::v8(){vfunc_called(this, "_ZN6S428C12v8Ev");}
void  S428C1 ::v9(){vfunc_called(this, "_ZN6S428C12v9Ev");}
void  S428C1 ::v10(){vfunc_called(this, "_ZN6S428C13v10Ev");}
S428C1 ::S428C1(){ note_ctor("S428C1", this);} // tgen

static void Test_S428C1()
{
  extern Class_Descriptor cd_S428C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(54,102)];
    init_test(&cd_S428C1, buf);
    S428C1 *dp, &lv = *(dp=new (buf) S428C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(424,404), "sizeof(S428C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S428C1)");
    check_base_class_offset(lv, (S4677C37*)(S428C4*)(S428C3*)(S428C2*), 0, "S428C1");
    check_base_class_offset(lv, (S428C4*)(S428C3*)(S428C2*), 0, "S428C1");
    check_base_class_offset(lv, (S428C3*)(S428C2*), 0, "S428C1");
    check_base_class_offset(lv, (S428C2*), 0, "S428C1");
    test_class_info(&lv, &cd_S428C1);
    dp->~S428C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS428C1(Test_S428C1, "S428C1", ABISELECT(424,404));

#else // __cplusplus

extern void _ZN6S428C1C1Ev();
extern void _ZN6S428C1D1Ev();
Name_Map name_map_S428C1[] = {
  NSPAIR(_ZN6S428C1C1Ev),
  NSPAIR(_ZN6S428C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S428C4;
extern VTBL_ENTRY _ZTI6S428C4[];
extern  VTBL_ENTRY _ZTV6S428C4[];
extern Class_Descriptor cd_S428C3;
extern VTBL_ENTRY _ZTI6S428C3[];
extern  VTBL_ENTRY _ZTV6S428C3[];
extern Class_Descriptor cd_S428C2;
extern VTBL_ENTRY _ZTI6S428C2[];
extern  VTBL_ENTRY _ZTV6S428C2[];
static Base_Class bases_S428C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S428C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S428C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S428C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S428C1[];
extern void _ZN6S428C1D1Ev();
extern void _ZN6S428C1D0Ev();
extern void _ZN6S428C43v11Ev();
extern void _ZN6S428C33v12Ev();
extern void _ZN6S428C33v13Ev();
extern void _ZN6S428C33v14Ev();
extern void _ZN6S428C33v15Ev();
extern void _ZN6S428C33v16Ev();
extern void _ZN6S428C33v17Ev();
extern void _ZN6S428C33v18Ev();
extern void _ZN6S428C33v19Ev();
extern void _ZN6S428C33v20Ev();
extern void _ZN6S428C33v21Ev();
extern void _ZN6S428C33v22Ev();
extern void _ZN6S428C33v23Ev();
extern void _ZN6S428C33v24Ev();
extern void _ZN6S428C33v25Ev();
extern void _ZN6S428C33v26Ev();
extern void _ZN6S428C33v27Ev();
extern void _ZN6S428C33v28Ev();
extern void _ZN6S428C33v29Ev();
extern void _ZN6S428C33v30Ev();
extern void _ZN6S428C33v31Ev();
extern void _ZN6S428C33v32Ev();
extern void _ZN6S428C33v33Ev();
extern void _ZN6S428C33v34Ev();
extern void _ZN6S428C33v35Ev();
extern void _ZN6S428C33v36Ev();
extern void _ZN6S428C33v37Ev();
extern void _ZN6S428C33v38Ev();
extern void _ZN6S428C33v39Ev();
extern void _ZN6S428C33v40Ev();
extern void _ZN6S428C33v41Ev();
extern void _ZN6S428C33v42Ev();
extern void _ZN6S428C33v43Ev();
extern void _ZN6S428C33v44Ev();
extern void _ZN6S428C33v45Ev();
extern void _ZN6S428C33v46Ev();
extern void _ZN6S428C33v47Ev();
extern void _ZN6S428C33v48Ev();
extern void _ZN6S428C33v49Ev();
extern void _ZN6S428C33v50Ev();
extern void _ZN6S428C33v51Ev();
extern void _ZN6S428C33v52Ev();
extern void _ZN6S428C33v53Ev();
extern void _ZN6S428C23v54Ev();
extern void _ZN6S428C23v55Ev();
extern void _ZN6S428C23v56Ev();
extern void _ZN6S428C23v57Ev();
extern void _ZN6S428C23v58Ev();
extern void _ZN6S428C23v59Ev();
extern void _ZN6S428C23v60Ev();
extern void _ZN6S428C23v61Ev();
extern void _ZN6S428C23v62Ev();
extern void _ZN6S428C23v63Ev();
extern void _ZN6S428C23v64Ev();
extern void _ZN6S428C23v65Ev();
extern void _ZN6S428C23v66Ev();
extern void _ZN6S428C23v67Ev();
extern void _ZN6S428C23v68Ev();
extern void _ZN6S428C23v69Ev();
extern void _ZN6S428C23v70Ev();
extern void _ZN6S428C23v71Ev();
extern void _ZN6S428C23v72Ev();
extern void _ZN6S428C23v73Ev();
extern void _ZN6S428C23v74Ev();
extern void _ZN6S428C23v75Ev();
extern void _ZN6S428C23v76Ev();
extern void _ZN6S428C23v77Ev();
extern void _ZN6S428C12v1Ev();
extern void _ZN6S428C12v2Ev();
extern void _ZN6S428C12v3Ev();
extern void _ZN6S428C12v4Ev();
extern void _ZN6S428C12v5Ev();
extern void _ZN6S428C12v6Ev();
extern void _ZN6S428C12v7Ev();
extern void _ZN6S428C12v8Ev();
extern void _ZN6S428C12v9Ev();
extern void _ZN6S428C13v10Ev();
static  VTBL_ENTRY vtc_S428C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S428C1[0]),
  (VTBL_ENTRY)&_ZN6S428C1D1Ev,
  (VTBL_ENTRY)&_ZN6S428C1D0Ev,
  (VTBL_ENTRY)&_ZN6S428C43v11Ev,
  (VTBL_ENTRY)&_ZN6S428C33v12Ev,
  (VTBL_ENTRY)&_ZN6S428C33v13Ev,
  (VTBL_ENTRY)&_ZN6S428C33v14Ev,
  (VTBL_ENTRY)&_ZN6S428C33v15Ev,
  (VTBL_ENTRY)&_ZN6S428C33v16Ev,
  (VTBL_ENTRY)&_ZN6S428C33v17Ev,
  (VTBL_ENTRY)&_ZN6S428C33v18Ev,
  (VTBL_ENTRY)&_ZN6S428C33v19Ev,
  (VTBL_ENTRY)&_ZN6S428C33v20Ev,
  (VTBL_ENTRY)&_ZN6S428C33v21Ev,
  (VTBL_ENTRY)&_ZN6S428C33v22Ev,
  (VTBL_ENTRY)&_ZN6S428C33v23Ev,
  (VTBL_ENTRY)&_ZN6S428C33v24Ev,
  (VTBL_ENTRY)&_ZN6S428C33v25Ev,
  (VTBL_ENTRY)&_ZN6S428C33v26Ev,
  (VTBL_ENTRY)&_ZN6S428C33v27Ev,
  (VTBL_ENTRY)&_ZN6S428C33v28Ev,
  (VTBL_ENTRY)&_ZN6S428C33v29Ev,
  (VTBL_ENTRY)&_ZN6S428C33v30Ev,
  (VTBL_ENTRY)&_ZN6S428C33v31Ev,
  (VTBL_ENTRY)&_ZN6S428C33v32Ev,
  (VTBL_ENTRY)&_ZN6S428C33v33Ev,
  (VTBL_ENTRY)&_ZN6S428C33v34Ev,
  (VTBL_ENTRY)&_ZN6S428C33v35Ev,
  (VTBL_ENTRY)&_ZN6S428C33v36Ev,
  (VTBL_ENTRY)&_ZN6S428C33v37Ev,
  (VTBL_ENTRY)&_ZN6S428C33v38Ev,
  (VTBL_ENTRY)&_ZN6S428C33v39Ev,
  (VTBL_ENTRY)&_ZN6S428C33v40Ev,
  (VTBL_ENTRY)&_ZN6S428C33v41Ev,
  (VTBL_ENTRY)&_ZN6S428C33v42Ev,
  (VTBL_ENTRY)&_ZN6S428C33v43Ev,
  (VTBL_ENTRY)&_ZN6S428C33v44Ev,
  (VTBL_ENTRY)&_ZN6S428C33v45Ev,
  (VTBL_ENTRY)&_ZN6S428C33v46Ev,
  (VTBL_ENTRY)&_ZN6S428C33v47Ev,
  (VTBL_ENTRY)&_ZN6S428C33v48Ev,
  (VTBL_ENTRY)&_ZN6S428C33v49Ev,
  (VTBL_ENTRY)&_ZN6S428C33v50Ev,
  (VTBL_ENTRY)&_ZN6S428C33v51Ev,
  (VTBL_ENTRY)&_ZN6S428C33v52Ev,
  (VTBL_ENTRY)&_ZN6S428C33v53Ev,
  (VTBL_ENTRY)&_ZN6S428C23v54Ev,
  (VTBL_ENTRY)&_ZN6S428C23v55Ev,
  (VTBL_ENTRY)&_ZN6S428C23v56Ev,
  (VTBL_ENTRY)&_ZN6S428C23v57Ev,
  (VTBL_ENTRY)&_ZN6S428C23v58Ev,
  (VTBL_ENTRY)&_ZN6S428C23v59Ev,
  (VTBL_ENTRY)&_ZN6S428C23v60Ev,
  (VTBL_ENTRY)&_ZN6S428C23v61Ev,
  (VTBL_ENTRY)&_ZN6S428C23v62Ev,
  (VTBL_ENTRY)&_ZN6S428C23v63Ev,
  (VTBL_ENTRY)&_ZN6S428C23v64Ev,
  (VTBL_ENTRY)&_ZN6S428C23v65Ev,
  (VTBL_ENTRY)&_ZN6S428C23v66Ev,
  (VTBL_ENTRY)&_ZN6S428C23v67Ev,
  (VTBL_ENTRY)&_ZN6S428C23v68Ev,
  (VTBL_ENTRY)&_ZN6S428C23v69Ev,
  (VTBL_ENTRY)&_ZN6S428C23v70Ev,
  (VTBL_ENTRY)&_ZN6S428C23v71Ev,
  (VTBL_ENTRY)&_ZN6S428C23v72Ev,
  (VTBL_ENTRY)&_ZN6S428C23v73Ev,
  (VTBL_ENTRY)&_ZN6S428C23v74Ev,
  (VTBL_ENTRY)&_ZN6S428C23v75Ev,
  (VTBL_ENTRY)&_ZN6S428C23v76Ev,
  (VTBL_ENTRY)&_ZN6S428C23v77Ev,
  (VTBL_ENTRY)&_ZN6S428C12v1Ev,
  (VTBL_ENTRY)&_ZN6S428C12v2Ev,
  (VTBL_ENTRY)&_ZN6S428C12v3Ev,
  (VTBL_ENTRY)&_ZN6S428C12v4Ev,
  (VTBL_ENTRY)&_ZN6S428C12v5Ev,
  (VTBL_ENTRY)&_ZN6S428C12v6Ev,
  (VTBL_ENTRY)&_ZN6S428C12v7Ev,
  (VTBL_ENTRY)&_ZN6S428C12v8Ev,
  (VTBL_ENTRY)&_ZN6S428C12v9Ev,
  (VTBL_ENTRY)&_ZN6S428C13v10Ev,
};
extern VTBL_ENTRY _ZTI6S428C1[];
extern  VTBL_ENTRY _ZTV6S428C1[];
Class_Descriptor cd_S428C1 = {  "S428C1", // class name
  bases_S428C1, 4,
  &(vtc_S428C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(424,404), // object size
  NSPAIRA(_ZTI6S428C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S428C1),81, //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  S426C4  : S4677C37 {
  virtual  ~S426C4(); // _ZN6S426C4D1Ev
  virtual void  v10(); // _ZN6S426C43v10Ev
  S426C4(); // tgen
};
//SIG(-1 S426C4) C1{ BC2{ m} vd v1}


 S426C4 ::~S426C4(){ note_dtor("S426C4", this);}
void  S426C4 ::v10(){vfunc_called(this, "_ZN6S426C43v10Ev");}
S426C4 ::S426C4(){ note_ctor("S426C4", this);} // tgen

static void Test_S426C4()
{
  extern Class_Descriptor cd_S426C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S426C4, buf);
    S426C4 *dp, &lv = *(dp=new (buf) S426C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S426C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S426C4)");
    check_base_class_offset(lv, (S4677C37*), 0, "S426C4");
    test_class_info(&lv, &cd_S426C4);
    dp->~S426C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS426C4(Test_S426C4, "S426C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN6S426C4C1Ev();
extern void _ZN6S426C4D1Ev();
Name_Map name_map_S426C4[] = {
  NSPAIR(_ZN6S426C4C1Ev),
  NSPAIR(_ZN6S426C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
static Base_Class bases_S426C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S426C4[];
extern void _ZN6S426C4D1Ev();
extern void _ZN6S426C4D0Ev();
extern void _ZN6S426C43v10Ev();
static  VTBL_ENTRY vtc_S426C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S426C4[0]),
  (VTBL_ENTRY)&_ZN6S426C4D1Ev,
  (VTBL_ENTRY)&_ZN6S426C4D0Ev,
  (VTBL_ENTRY)&_ZN6S426C43v10Ev,
};
extern VTBL_ENTRY _ZTI6S426C4[];
extern  VTBL_ENTRY _ZTV6S426C4[];
Class_Descriptor cd_S426C4 = {  "S426C4", // class name
  bases_S426C4, 1,
  &(vtc_S426C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI6S426C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S426C4),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  S426C3  : S426C4 {
  char s426c3f0[4];
  int s426c3f1[23];
  char s426c3f2[23];
  int s426c3f3[24];
  __tsi64 s426c3f4;
  char s426c3f5;
  void *s426c3f6;
  int s426c3f7;
  char s426c3f8;
  int s426c3f9[4];
  char s426c3f10[112];
  virtual  ~S426C3(); // _ZN6S426C3D1Ev
  virtual void  v11(); // _ZN6S426C33v11Ev
  virtual void  v12(); // _ZN6S426C33v12Ev
  virtual void  v13(); // _ZN6S426C33v13Ev
  virtual void  v14(); // _ZN6S426C33v14Ev
  virtual void  v15(); // _ZN6S426C33v15Ev
  virtual void  v16(); // _ZN6S426C33v16Ev
  virtual void  v17(); // _ZN6S426C33v17Ev
  virtual void  v18(); // _ZN6S426C33v18Ev
  virtual void  v19(); // _ZN6S426C33v19Ev
  virtual void  v20(); // _ZN6S426C33v20Ev
  virtual void  v21(); // _ZN6S426C33v21Ev
  virtual void  v22(); // _ZN6S426C33v22Ev
  virtual void  v23(); // _ZN6S426C33v23Ev
  virtual void  v24(); // _ZN6S426C33v24Ev
  virtual void  v25(); // _ZN6S426C33v25Ev
  virtual void  v26(); // _ZN6S426C33v26Ev
  virtual void  v27(); // _ZN6S426C33v27Ev
  virtual void  v28(); // _ZN6S426C33v28Ev
  virtual void  v29(); // _ZN6S426C33v29Ev
  virtual void  v30(); // _ZN6S426C33v30Ev
  virtual void  v31(); // _ZN6S426C33v31Ev
  virtual void  v32(); // _ZN6S426C33v32Ev
  virtual void  v33(); // _ZN6S426C33v33Ev
  virtual void  v34(); // _ZN6S426C33v34Ev
  virtual void  v35(); // _ZN6S426C33v35Ev
  virtual void  v36(); // _ZN6S426C33v36Ev
  virtual void  v37(); // _ZN6S426C33v37Ev
  virtual void  v38(); // _ZN6S426C33v38Ev
  virtual void  v39(); // _ZN6S426C33v39Ev
  virtual void  v40(); // _ZN6S426C33v40Ev
  virtual void  v41(); // _ZN6S426C33v41Ev
  virtual void  v42(); // _ZN6S426C33v42Ev
  virtual void  v43(); // _ZN6S426C33v43Ev
  virtual void  v44(); // _ZN6S426C33v44Ev
  virtual void  v45(); // _ZN6S426C33v45Ev
  virtual void  v46(); // _ZN6S426C33v46Ev
  virtual void  v47(); // _ZN6S426C33v47Ev
  virtual void  v48(); // _ZN6S426C33v48Ev
  virtual void  v49(); // _ZN6S426C33v49Ev
  virtual void  v50(); // _ZN6S426C33v50Ev
  virtual void  v51(); // _ZN6S426C33v51Ev
  virtual void  v52(); // _ZN6S426C33v52Ev
  S426C3(); // tgen
};
//SIG(-1 S426C3) C1{ BC2{ BC3{ m} vd v43} 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 Fc[4] Fi[23] Fc[23] Fi[24] FL Fc Fp Fi Fc Fi[4] Fc[112]}


 S426C3 ::~S426C3(){ note_dtor("S426C3", this);}
void  S426C3 ::v11(){vfunc_called(this, "_ZN6S426C33v11Ev");}
void  S426C3 ::v12(){vfunc_called(this, "_ZN6S426C33v12Ev");}
void  S426C3 ::v13(){vfunc_called(this, "_ZN6S426C33v13Ev");}
void  S426C3 ::v14(){vfunc_called(this, "_ZN6S426C33v14Ev");}
void  S426C3 ::v15(){vfunc_called(this, "_ZN6S426C33v15Ev");}
void  S426C3 ::v16(){vfunc_called(this, "_ZN6S426C33v16Ev");}
void  S426C3 ::v17(){vfunc_called(this, "_ZN6S426C33v17Ev");}
void  S426C3 ::v18(){vfunc_called(this, "_ZN6S426C33v18Ev");}
void  S426C3 ::v19(){vfunc_called(this, "_ZN6S426C33v19Ev");}
void  S426C3 ::v20(){vfunc_called(this, "_ZN6S426C33v20Ev");}
void  S426C3 ::v21(){vfunc_called(this, "_ZN6S426C33v21Ev");}
void  S426C3 ::v22(){vfunc_called(this, "_ZN6S426C33v22Ev");}
void  S426C3 ::v23(){vfunc_called(this, "_ZN6S426C33v23Ev");}
void  S426C3 ::v24(){vfunc_called(this, "_ZN6S426C33v24Ev");}
void  S426C3 ::v25(){vfunc_called(this, "_ZN6S426C33v25Ev");}
void  S426C3 ::v26(){vfunc_called(this, "_ZN6S426C33v26Ev");}
void  S426C3 ::v27(){vfunc_called(this, "_ZN6S426C33v27Ev");}
void  S426C3 ::v28(){vfunc_called(this, "_ZN6S426C33v28Ev");}
void  S426C3 ::v29(){vfunc_called(this, "_ZN6S426C33v29Ev");}
void  S426C3 ::v30(){vfunc_called(this, "_ZN6S426C33v30Ev");}
void  S426C3 ::v31(){vfunc_called(this, "_ZN6S426C33v31Ev");}
void  S426C3 ::v32(){vfunc_called(this, "_ZN6S426C33v32Ev");}
void  S426C3 ::v33(){vfunc_called(this, "_ZN6S426C33v33Ev");}
void  S426C3 ::v34(){vfunc_called(this, "_ZN6S426C33v34Ev");}
void  S426C3 ::v35(){vfunc_called(this, "_ZN6S426C33v35Ev");}
void  S426C3 ::v36(){vfunc_called(this, "_ZN6S426C33v36Ev");}
void  S426C3 ::v37(){vfunc_called(this, "_ZN6S426C33v37Ev");}
void  S426C3 ::v38(){vfunc_called(this, "_ZN6S426C33v38Ev");}
void  S426C3 ::v39(){vfunc_called(this, "_ZN6S426C33v39Ev");}
void  S426C3 ::v40(){vfunc_called(this, "_ZN6S426C33v40Ev");}
void  S426C3 ::v41(){vfunc_called(this, "_ZN6S426C33v41Ev");}
void  S426C3 ::v42(){vfunc_called(this, "_ZN6S426C33v42Ev");}
void  S426C3 ::v43(){vfunc_called(this, "_ZN6S426C33v43Ev");}
void  S426C3 ::v44(){vfunc_called(this, "_ZN6S426C33v44Ev");}
void  S426C3 ::v45(){vfunc_called(this, "_ZN6S426C33v45Ev");}
void  S426C3 ::v46(){vfunc_called(this, "_ZN6S426C33v46Ev");}
void  S426C3 ::v47(){vfunc_called(this, "_ZN6S426C33v47Ev");}
void  S426C3 ::v48(){vfunc_called(this, "_ZN6S426C33v48Ev");}
void  S426C3 ::v49(){vfunc_called(this, "_ZN6S426C33v49Ev");}
void  S426C3 ::v50(){vfunc_called(this, "_ZN6S426C33v50Ev");}
void  S426C3 ::v51(){vfunc_called(this, "_ZN6S426C33v51Ev");}
void  S426C3 ::v52(){vfunc_called(this, "_ZN6S426C33v52Ev");}
S426C3 ::S426C3(){ note_ctor("S426C3", this);} // tgen

static void Test_S426C3()
{
  extern Class_Descriptor cd_S426C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(49,94)];
    init_test(&cd_S426C3, buf);
    S426C3 *dp, &lv = *(dp=new (buf) S426C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,372), "sizeof(S426C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S426C3)");
    check_base_class_offset(lv, (S4677C37*)(S426C4*), 0, "S426C3");
    check_base_class_offset(lv, (S426C4*), 0, "S426C3");
    check_field_offset(lv, s426c3f0, ABISELECT(8,4), "S426C3.s426c3f0");
    check_field_offset(lv, s426c3f1, ABISELECT(12,8), "S426C3.s426c3f1");
    check_field_offset(lv, s426c3f2, ABISELECT(104,100), "S426C3.s426c3f2");
    check_field_offset(lv, s426c3f3, ABISELECT(128,124), "S426C3.s426c3f3");
    check_field_offset(lv, s426c3f4, ABISELECT(224,220), "S426C3.s426c3f4");
    check_field_offset(lv, s426c3f5, ABISELECT(232,228), "S426C3.s426c3f5");
    check_field_offset(lv, s426c3f6, ABISELECT(240,232), "S426C3.s426c3f6");
    check_field_offset(lv, s426c3f7, ABISELECT(248,236), "S426C3.s426c3f7");
    check_field_offset(lv, s426c3f8, ABISELECT(252,240), "S426C3.s426c3f8");
    check_field_offset(lv, s426c3f9, ABISELECT(256,244), "S426C3.s426c3f9");
    check_field_offset(lv, s426c3f10, ABISELECT(272,260), "S426C3.s426c3f10");
    test_class_info(&lv, &cd_S426C3);
    dp->~S426C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS426C3(Test_S426C3, "S426C3", ABISELECT(384,372));

#else // __cplusplus

extern void _ZN6S426C3C1Ev();
extern void _ZN6S426C3D1Ev();
Name_Map name_map_S426C3[] = {
  NSPAIR(_ZN6S426C3C1Ev),
  NSPAIR(_ZN6S426C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S426C4;
extern VTBL_ENTRY _ZTI6S426C4[];
extern  VTBL_ENTRY _ZTV6S426C4[];
static Base_Class bases_S426C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S426C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S426C3[];
extern void _ZN6S426C3D1Ev();
extern void _ZN6S426C3D0Ev();
extern void _ZN6S426C43v10Ev();
extern void _ZN6S426C33v11Ev();
extern void _ZN6S426C33v12Ev();
extern void _ZN6S426C33v13Ev();
extern void _ZN6S426C33v14Ev();
extern void _ZN6S426C33v15Ev();
extern void _ZN6S426C33v16Ev();
extern void _ZN6S426C33v17Ev();
extern void _ZN6S426C33v18Ev();
extern void _ZN6S426C33v19Ev();
extern void _ZN6S426C33v20Ev();
extern void _ZN6S426C33v21Ev();
extern void _ZN6S426C33v22Ev();
extern void _ZN6S426C33v23Ev();
extern void _ZN6S426C33v24Ev();
extern void _ZN6S426C33v25Ev();
extern void _ZN6S426C33v26Ev();
extern void _ZN6S426C33v27Ev();
extern void _ZN6S426C33v28Ev();
extern void _ZN6S426C33v29Ev();
extern void _ZN6S426C33v30Ev();
extern void _ZN6S426C33v31Ev();
extern void _ZN6S426C33v32Ev();
extern void _ZN6S426C33v33Ev();
extern void _ZN6S426C33v34Ev();
extern void _ZN6S426C33v35Ev();
extern void _ZN6S426C33v36Ev();
extern void _ZN6S426C33v37Ev();
extern void _ZN6S426C33v38Ev();
extern void _ZN6S426C33v39Ev();
extern void _ZN6S426C33v40Ev();
extern void _ZN6S426C33v41Ev();
extern void _ZN6S426C33v42Ev();
extern void _ZN6S426C33v43Ev();
extern void _ZN6S426C33v44Ev();
extern void _ZN6S426C33v45Ev();
extern void _ZN6S426C33v46Ev();
extern void _ZN6S426C33v47Ev();
extern void _ZN6S426C33v48Ev();
extern void _ZN6S426C33v49Ev();
extern void _ZN6S426C33v50Ev();
extern void _ZN6S426C33v51Ev();
extern void _ZN6S426C33v52Ev();
static  VTBL_ENTRY vtc_S426C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S426C3[0]),
  (VTBL_ENTRY)&_ZN6S426C3D1Ev,
  (VTBL_ENTRY)&_ZN6S426C3D0Ev,
  (VTBL_ENTRY)&_ZN6S426C43v10Ev,
  (VTBL_ENTRY)&_ZN6S426C33v11Ev,
  (VTBL_ENTRY)&_ZN6S426C33v12Ev,
  (VTBL_ENTRY)&_ZN6S426C33v13Ev,
  (VTBL_ENTRY)&_ZN6S426C33v14Ev,
  (VTBL_ENTRY)&_ZN6S426C33v15Ev,
  (VTBL_ENTRY)&_ZN6S426C33v16Ev,
  (VTBL_ENTRY)&_ZN6S426C33v17Ev,
  (VTBL_ENTRY)&_ZN6S426C33v18Ev,
  (VTBL_ENTRY)&_ZN6S426C33v19Ev,
  (VTBL_ENTRY)&_ZN6S426C33v20Ev,
  (VTBL_ENTRY)&_ZN6S426C33v21Ev,
  (VTBL_ENTRY)&_ZN6S426C33v22Ev,
  (VTBL_ENTRY)&_ZN6S426C33v23Ev,
  (VTBL_ENTRY)&_ZN6S426C33v24Ev,
  (VTBL_ENTRY)&_ZN6S426C33v25Ev,
  (VTBL_ENTRY)&_ZN6S426C33v26Ev,
  (VTBL_ENTRY)&_ZN6S426C33v27Ev,
  (VTBL_ENTRY)&_ZN6S426C33v28Ev,
  (VTBL_ENTRY)&_ZN6S426C33v29Ev,
  (VTBL_ENTRY)&_ZN6S426C33v30Ev,
  (VTBL_ENTRY)&_ZN6S426C33v31Ev,
  (VTBL_ENTRY)&_ZN6S426C33v32Ev,
  (VTBL_ENTRY)&_ZN6S426C33v33Ev,
  (VTBL_ENTRY)&_ZN6S426C33v34Ev,
  (VTBL_ENTRY)&_ZN6S426C33v35Ev,
  (VTBL_ENTRY)&_ZN6S426C33v36Ev,
  (VTBL_ENTRY)&_ZN6S426C33v37Ev,
  (VTBL_ENTRY)&_ZN6S426C33v38Ev,
  (VTBL_ENTRY)&_ZN6S426C33v39Ev,
  (VTBL_ENTRY)&_ZN6S426C33v40Ev,
  (VTBL_ENTRY)&_ZN6S426C33v41Ev,
  (VTBL_ENTRY)&_ZN6S426C33v42Ev,
  (VTBL_ENTRY)&_ZN6S426C33v43Ev,
  (VTBL_ENTRY)&_ZN6S426C33v44Ev,
  (VTBL_ENTRY)&_ZN6S426C33v45Ev,
  (VTBL_ENTRY)&_ZN6S426C33v46Ev,
  (VTBL_ENTRY)&_ZN6S426C33v47Ev,
  (VTBL_ENTRY)&_ZN6S426C33v48Ev,
  (VTBL_ENTRY)&_ZN6S426C33v49Ev,
  (VTBL_ENTRY)&_ZN6S426C33v50Ev,
  (VTBL_ENTRY)&_ZN6S426C33v51Ev,
  (VTBL_ENTRY)&_ZN6S426C33v52Ev,
};
extern VTBL_ENTRY _ZTI6S426C3[];
extern  VTBL_ENTRY _ZTV6S426C3[];
Class_Descriptor cd_S426C3 = {  "S426C3", // class name
  bases_S426C3, 2,
  &(vtc_S426C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(384,372), // object size
  NSPAIRA(_ZTI6S426C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S426C3),47, //virtual function table var
  2, // 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  S426C2  : S426C3 {
  __tsi64 s426c2f0;
  int s426c2f1;
  __tsi64 s426c2f2;
  int s426c2f3[2];
  char s426c2f4[2];
  virtual  ~S426C2(); // _ZN6S426C2D1Ev
  virtual void  v53(); // _ZN6S426C23v53Ev
  virtual void  v54(); // _ZN6S426C23v54Ev
  virtual void  v55(); // _ZN6S426C23v55Ev
  virtual void  v56(); // _ZN6S426C23v56Ev
  virtual void  v57(); // _ZN6S426C23v57Ev
  virtual void  v58(); // _ZN6S426C23v58Ev
  virtual void  v59(); // _ZN6S426C23v59Ev
  virtual void  v60(); // _ZN6S426C23v60Ev
  virtual void  v61(); // _ZN6S426C23v61Ev
  virtual void  v62(); // _ZN6S426C23v62Ev
  virtual void  v63(); // _ZN6S426C23v63Ev
  virtual void  v64(); // _ZN6S426C23v64Ev
  virtual void  v65(); // _ZN6S426C23v65Ev
  virtual void  v66(); // _ZN6S426C23v66Ev
  virtual void  v67(); // _ZN6S426C23v67Ev
  virtual void  v68(); // _ZN6S426C23v68Ev
  virtual void  v69(); // _ZN6S426C23v69Ev
  virtual void  v70(); // _ZN6S426C23v70Ev
  virtual void  v71(); // _ZN6S426C23v71Ev
  virtual void  v72(); // _ZN6S426C23v72Ev
  virtual void  v73(); // _ZN6S426C23v73Ev
  virtual void  v74(); // _ZN6S426C23v74Ev
  virtual void  v75(); // _ZN6S426C23v75Ev
  virtual void  v76(); // _ZN6S426C23v76Ev
  S426C2(); // tgen
};
//SIG(-1 S426C2) C1{ BC2{ BC3{ BC4{ m} vd v25} vd v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fc[4] Fi[23] Fc[23] Fi[24] FL Fc Fp Fi Fc Fi[4] Fc[112]} 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 FL Fi FL Fi[2] Fc[2]}


 S426C2 ::~S426C2(){ note_dtor("S426C2", this);}
void  S426C2 ::v53(){vfunc_called(this, "_ZN6S426C23v53Ev");}
void  S426C2 ::v54(){vfunc_called(this, "_ZN6S426C23v54Ev");}
void  S426C2 ::v55(){vfunc_called(this, "_ZN6S426C23v55Ev");}
void  S426C2 ::v56(){vfunc_called(this, "_ZN6S426C23v56Ev");}
void  S426C2 ::v57(){vfunc_called(this, "_ZN6S426C23v57Ev");}
void  S426C2 ::v58(){vfunc_called(this, "_ZN6S426C23v58Ev");}
void  S426C2 ::v59(){vfunc_called(this, "_ZN6S426C23v59Ev");}
void  S426C2 ::v60(){vfunc_called(this, "_ZN6S426C23v60Ev");}
void  S426C2 ::v61(){vfunc_called(this, "_ZN6S426C23v61Ev");}
void  S426C2 ::v62(){vfunc_called(this, "_ZN6S426C23v62Ev");}
void  S426C2 ::v63(){vfunc_called(this, "_ZN6S426C23v63Ev");}
void  S426C2 ::v64(){vfunc_called(this, "_ZN6S426C23v64Ev");}
void  S426C2 ::v65(){vfunc_called(this, "_ZN6S426C23v65Ev");}
void  S426C2 ::v66(){vfunc_called(this, "_ZN6S426C23v66Ev");}
void  S426C2 ::v67(){vfunc_called(this, "_ZN6S426C23v67Ev");}
void  S426C2 ::v68(){vfunc_called(this, "_ZN6S426C23v68Ev");}
void  S426C2 ::v69(){vfunc_called(this, "_ZN6S426C23v69Ev");}
void  S426C2 ::v70(){vfunc_called(this, "_ZN6S426C23v70Ev");}
void  S426C2 ::v71(){vfunc_called(this, "_ZN6S426C23v71Ev");}
void  S426C2 ::v72(){vfunc_called(this, "_ZN6S426C23v72Ev");}
void  S426C2 ::v73(){vfunc_called(this, "_ZN6S426C23v73Ev");}
void  S426C2 ::v74(){vfunc_called(this, "_ZN6S426C23v74Ev");}
void  S426C2 ::v75(){vfunc_called(this, "_ZN6S426C23v75Ev");}
void  S426C2 ::v76(){vfunc_called(this, "_ZN6S426C23v76Ev");}
S426C2 ::S426C2(){ note_ctor("S426C2", this);} // tgen

static void Test_S426C2()
{
  extern Class_Descriptor cd_S426C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(54,102)];
    init_test(&cd_S426C2, buf);
    S426C2 *dp, &lv = *(dp=new (buf) S426C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(424,404), "sizeof(S426C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S426C2)");
    check_base_class_offset(lv, (S4677C37*)(S426C4*)(S426C3*), 0, "S426C2");
    check_base_class_offset(lv, (S426C4*)(S426C3*), 0, "S426C2");
    check_base_class_offset(lv, (S426C3*), 0, "S426C2");
    check_field_offset(lv, s426c2f0, ABISELECT(384,372), "S426C2.s426c2f0");
    check_field_offset(lv, s426c2f1, ABISELECT(392,380), "S426C2.s426c2f1");
    check_field_offset(lv, s426c2f2, ABISELECT(400,384), "S426C2.s426c2f2");
    check_field_offset(lv, s426c2f3, ABISELECT(408,392), "S426C2.s426c2f3");
    check_field_offset(lv, s426c2f4, ABISELECT(416,400), "S426C2.s426c2f4");
    test_class_info(&lv, &cd_S426C2);
    dp->~S426C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS426C2(Test_S426C2, "S426C2", ABISELECT(424,404));

#else // __cplusplus

extern void _ZN6S426C2C1Ev();
extern void _ZN6S426C2D1Ev();
Name_Map name_map_S426C2[] = {
  NSPAIR(_ZN6S426C2C1Ev),
  NSPAIR(_ZN6S426C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S426C4;
extern VTBL_ENTRY _ZTI6S426C4[];
extern  VTBL_ENTRY _ZTV6S426C4[];
extern Class_Descriptor cd_S426C3;
extern VTBL_ENTRY _ZTI6S426C3[];
extern  VTBL_ENTRY _ZTV6S426C3[];
static Base_Class bases_S426C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S426C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S426C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S426C2[];
extern void _ZN6S426C2D1Ev();
extern void _ZN6S426C2D0Ev();
extern void _ZN6S426C43v10Ev();
extern void _ZN6S426C33v11Ev();
extern void _ZN6S426C33v12Ev();
extern void _ZN6S426C33v13Ev();
extern void _ZN6S426C33v14Ev();
extern void _ZN6S426C33v15Ev();
extern void _ZN6S426C33v16Ev();
extern void _ZN6S426C33v17Ev();
extern void _ZN6S426C33v18Ev();
extern void _ZN6S426C33v19Ev();
extern void _ZN6S426C33v20Ev();
extern void _ZN6S426C33v21Ev();
extern void _ZN6S426C33v22Ev();
extern void _ZN6S426C33v23Ev();
extern void _ZN6S426C33v24Ev();
extern void _ZN6S426C33v25Ev();
extern void _ZN6S426C33v26Ev();
extern void _ZN6S426C33v27Ev();
extern void _ZN6S426C33v28Ev();
extern void _ZN6S426C33v29Ev();
extern void _ZN6S426C33v30Ev();
extern void _ZN6S426C33v31Ev();
extern void _ZN6S426C33v32Ev();
extern void _ZN6S426C33v33Ev();
extern void _ZN6S426C33v34Ev();
extern void _ZN6S426C33v35Ev();
extern void _ZN6S426C33v36Ev();
extern void _ZN6S426C33v37Ev();
extern void _ZN6S426C33v38Ev();
extern void _ZN6S426C33v39Ev();
extern void _ZN6S426C33v40Ev();
extern void _ZN6S426C33v41Ev();
extern void _ZN6S426C33v42Ev();
extern void _ZN6S426C33v43Ev();
extern void _ZN6S426C33v44Ev();
extern void _ZN6S426C33v45Ev();
extern void _ZN6S426C33v46Ev();
extern void _ZN6S426C33v47Ev();
extern void _ZN6S426C33v48Ev();
extern void _ZN6S426C33v49Ev();
extern void _ZN6S426C33v50Ev();
extern void _ZN6S426C33v51Ev();
extern void _ZN6S426C33v52Ev();
extern void _ZN6S426C23v53Ev();
extern void _ZN6S426C23v54Ev();
extern void _ZN6S426C23v55Ev();
extern void _ZN6S426C23v56Ev();
extern void _ZN6S426C23v57Ev();
extern void _ZN6S426C23v58Ev();
extern void _ZN6S426C23v59Ev();
extern void _ZN6S426C23v60Ev();
extern void _ZN6S426C23v61Ev();
extern void _ZN6S426C23v62Ev();
extern void _ZN6S426C23v63Ev();
extern void _ZN6S426C23v64Ev();
extern void _ZN6S426C23v65Ev();
extern void _ZN6S426C23v66Ev();
extern void _ZN6S426C23v67Ev();
extern void _ZN6S426C23v68Ev();
extern void _ZN6S426C23v69Ev();
extern void _ZN6S426C23v70Ev();
extern void _ZN6S426C23v71Ev();
extern void _ZN6S426C23v72Ev();
extern void _ZN6S426C23v73Ev();
extern void _ZN6S426C23v74Ev();
extern void _ZN6S426C23v75Ev();
extern void _ZN6S426C23v76Ev();
static  VTBL_ENTRY vtc_S426C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S426C2[0]),
  (VTBL_ENTRY)&_ZN6S426C2D1Ev,
  (VTBL_ENTRY)&_ZN6S426C2D0Ev,
  (VTBL_ENTRY)&_ZN6S426C43v10Ev,
  (VTBL_ENTRY)&_ZN6S426C33v11Ev,
  (VTBL_ENTRY)&_ZN6S426C33v12Ev,
  (VTBL_ENTRY)&_ZN6S426C33v13Ev,
  (VTBL_ENTRY)&_ZN6S426C33v14Ev,
  (VTBL_ENTRY)&_ZN6S426C33v15Ev,
  (VTBL_ENTRY)&_ZN6S426C33v16Ev,
  (VTBL_ENTRY)&_ZN6S426C33v17Ev,
  (VTBL_ENTRY)&_ZN6S426C33v18Ev,
  (VTBL_ENTRY)&_ZN6S426C33v19Ev,
  (VTBL_ENTRY)&_ZN6S426C33v20Ev,
  (VTBL_ENTRY)&_ZN6S426C33v21Ev,
  (VTBL_ENTRY)&_ZN6S426C33v22Ev,
  (VTBL_ENTRY)&_ZN6S426C33v23Ev,
  (VTBL_ENTRY)&_ZN6S426C33v24Ev,
  (VTBL_ENTRY)&_ZN6S426C33v25Ev,
  (VTBL_ENTRY)&_ZN6S426C33v26Ev,
  (VTBL_ENTRY)&_ZN6S426C33v27Ev,
  (VTBL_ENTRY)&_ZN6S426C33v28Ev,
  (VTBL_ENTRY)&_ZN6S426C33v29Ev,
  (VTBL_ENTRY)&_ZN6S426C33v30Ev,
  (VTBL_ENTRY)&_ZN6S426C33v31Ev,
  (VTBL_ENTRY)&_ZN6S426C33v32Ev,
  (VTBL_ENTRY)&_ZN6S426C33v33Ev,
  (VTBL_ENTRY)&_ZN6S426C33v34Ev,
  (VTBL_ENTRY)&_ZN6S426C33v35Ev,
  (VTBL_ENTRY)&_ZN6S426C33v36Ev,
  (VTBL_ENTRY)&_ZN6S426C33v37Ev,
  (VTBL_ENTRY)&_ZN6S426C33v38Ev,
  (VTBL_ENTRY)&_ZN6S426C33v39Ev,
  (VTBL_ENTRY)&_ZN6S426C33v40Ev,
  (VTBL_ENTRY)&_ZN6S426C33v41Ev,
  (VTBL_ENTRY)&_ZN6S426C33v42Ev,
  (VTBL_ENTRY)&_ZN6S426C33v43Ev,
  (VTBL_ENTRY)&_ZN6S426C33v44Ev,
  (VTBL_ENTRY)&_ZN6S426C33v45Ev,
  (VTBL_ENTRY)&_ZN6S426C33v46Ev,
  (VTBL_ENTRY)&_ZN6S426C33v47Ev,
  (VTBL_ENTRY)&_ZN6S426C33v48Ev,
  (VTBL_ENTRY)&_ZN6S426C33v49Ev,
  (VTBL_ENTRY)&_ZN6S426C33v50Ev,
  (VTBL_ENTRY)&_ZN6S426C33v51Ev,
  (VTBL_ENTRY)&_ZN6S426C33v52Ev,
  (VTBL_ENTRY)&_ZN6S426C23v53Ev,
  (VTBL_ENTRY)&_ZN6S426C23v54Ev,
  (VTBL_ENTRY)&_ZN6S426C23v55Ev,
  (VTBL_ENTRY)&_ZN6S426C23v56Ev,
  (VTBL_ENTRY)&_ZN6S426C23v57Ev,
  (VTBL_ENTRY)&_ZN6S426C23v58Ev,
  (VTBL_ENTRY)&_ZN6S426C23v59Ev,
  (VTBL_ENTRY)&_ZN6S426C23v60Ev,
  (VTBL_ENTRY)&_ZN6S426C23v61Ev,
  (VTBL_ENTRY)&_ZN6S426C23v62Ev,
  (VTBL_ENTRY)&_ZN6S426C23v63Ev,
  (VTBL_ENTRY)&_ZN6S426C23v64Ev,
  (VTBL_ENTRY)&_ZN6S426C23v65Ev,
  (VTBL_ENTRY)&_ZN6S426C23v66Ev,
  (VTBL_ENTRY)&_ZN6S426C23v67Ev,
  (VTBL_ENTRY)&_ZN6S426C23v68Ev,
  (VTBL_ENTRY)&_ZN6S426C23v69Ev,
  (VTBL_ENTRY)&_ZN6S426C23v70Ev,
  (VTBL_ENTRY)&_ZN6S426C23v71Ev,
  (VTBL_ENTRY)&_ZN6S426C23v72Ev,
  (VTBL_ENTRY)&_ZN6S426C23v73Ev,
  (VTBL_ENTRY)&_ZN6S426C23v74Ev,
  (VTBL_ENTRY)&_ZN6S426C23v75Ev,
  (VTBL_ENTRY)&_ZN6S426C23v76Ev,
};
extern VTBL_ENTRY _ZTI6S426C2[];
extern  VTBL_ENTRY _ZTV6S426C2[];
Class_Descriptor cd_S426C2 = {  "S426C2", // class name
  bases_S426C2, 3,
  &(vtc_S426C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(424,404), // object size
  NSPAIRA(_ZTI6S426C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S426C2),71, //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  S426C1  : S426C2 {
  virtual  ~S426C1(); // _ZN6S426C1D1Ev
  virtual void  v1(); // _ZN6S426C12v1Ev
  virtual void  v2(); // _ZN6S426C12v2Ev
  virtual void  v3(); // _ZN6S426C12v3Ev
  virtual void  v4(); // _ZN6S426C12v4Ev
  virtual void  v5(); // _ZN6S426C12v5Ev
  virtual void  v6(); // _ZN6S426C12v6Ev
  virtual void  v7(); // _ZN6S426C12v7Ev
  virtual void  v8(); // _ZN6S426C12v8Ev
  virtual void  v9(); // _ZN6S426C12v9Ev
  S426C1(); // tgen
};
//SIG(1 S426C1) C1{ BC2{ BC3{ BC4{ BC5{ m} vd v10} 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 Fc[4] Fi[23] Fc[23] Fi[24] FL Fc Fp Fi Fc Fi[4] Fc[112]} vd v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 FL Fi FL Fi[2] Fc[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9}


 S426C1 ::~S426C1(){ note_dtor("S426C1", this);}
void  S426C1 ::v1(){vfunc_called(this, "_ZN6S426C12v1Ev");}
void  S426C1 ::v2(){vfunc_called(this, "_ZN6S426C12v2Ev");}
void  S426C1 ::v3(){vfunc_called(this, "_ZN6S426C12v3Ev");}
void  S426C1 ::v4(){vfunc_called(this, "_ZN6S426C12v4Ev");}
void  S426C1 ::v5(){vfunc_called(this, "_ZN6S426C12v5Ev");}
void  S426C1 ::v6(){vfunc_called(this, "_ZN6S426C12v6Ev");}
void  S426C1 ::v7(){vfunc_called(this, "_ZN6S426C12v7Ev");}
void  S426C1 ::v8(){vfunc_called(this, "_ZN6S426C12v8Ev");}
void  S426C1 ::v9(){vfunc_called(this, "_ZN6S426C12v9Ev");}
S426C1 ::S426C1(){ note_ctor("S426C1", this);} // tgen

static void Test_S426C1()
{
  extern Class_Descriptor cd_S426C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(54,102)];
    init_test(&cd_S426C1, buf);
    S426C1 *dp, &lv = *(dp=new (buf) S426C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(424,404), "sizeof(S426C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S426C1)");
    check_base_class_offset(lv, (S4677C37*)(S426C4*)(S426C3*)(S426C2*), 0, "S426C1");
    check_base_class_offset(lv, (S426C4*)(S426C3*)(S426C2*), 0, "S426C1");
    check_base_class_offset(lv, (S426C3*)(S426C2*), 0, "S426C1");
    check_base_class_offset(lv, (S426C2*), 0, "S426C1");
    test_class_info(&lv, &cd_S426C1);
    dp->~S426C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS426C1(Test_S426C1, "S426C1", ABISELECT(424,404));

#else // __cplusplus

extern void _ZN6S426C1C1Ev();
extern void _ZN6S426C1D1Ev();
Name_Map name_map_S426C1[] = {
  NSPAIR(_ZN6S426C1C1Ev),
  NSPAIR(_ZN6S426C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S426C4;
extern VTBL_ENTRY _ZTI6S426C4[];
extern  VTBL_ENTRY _ZTV6S426C4[];
extern Class_Descriptor cd_S426C3;
extern VTBL_ENTRY _ZTI6S426C3[];
extern  VTBL_ENTRY _ZTV6S426C3[];
extern Class_Descriptor cd_S426C2;
extern VTBL_ENTRY _ZTI6S426C2[];
extern  VTBL_ENTRY _ZTV6S426C2[];
static Base_Class bases_S426C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S426C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S426C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S426C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S426C1[];
extern void _ZN6S426C1D1Ev();
extern void _ZN6S426C1D0Ev();
extern void _ZN6S426C43v10Ev();
extern void _ZN6S426C33v11Ev();
extern void _ZN6S426C33v12Ev();
extern void _ZN6S426C33v13Ev();
extern void _ZN6S426C33v14Ev();
extern void _ZN6S426C33v15Ev();
extern void _ZN6S426C33v16Ev();
extern void _ZN6S426C33v17Ev();
extern void _ZN6S426C33v18Ev();
extern void _ZN6S426C33v19Ev();
extern void _ZN6S426C33v20Ev();
extern void _ZN6S426C33v21Ev();
extern void _ZN6S426C33v22Ev();
extern void _ZN6S426C33v23Ev();
extern void _ZN6S426C33v24Ev();
extern void _ZN6S426C33v25Ev();
extern void _ZN6S426C33v26Ev();
extern void _ZN6S426C33v27Ev();
extern void _ZN6S426C33v28Ev();
extern void _ZN6S426C33v29Ev();
extern void _ZN6S426C33v30Ev();
extern void _ZN6S426C33v31Ev();
extern void _ZN6S426C33v32Ev();
extern void _ZN6S426C33v33Ev();
extern void _ZN6S426C33v34Ev();
extern void _ZN6S426C33v35Ev();
extern void _ZN6S426C33v36Ev();
extern void _ZN6S426C33v37Ev();
extern void _ZN6S426C33v38Ev();
extern void _ZN6S426C33v39Ev();
extern void _ZN6S426C33v40Ev();
extern void _ZN6S426C33v41Ev();
extern void _ZN6S426C33v42Ev();
extern void _ZN6S426C33v43Ev();
extern void _ZN6S426C33v44Ev();
extern void _ZN6S426C33v45Ev();
extern void _ZN6S426C33v46Ev();
extern void _ZN6S426C33v47Ev();
extern void _ZN6S426C33v48Ev();
extern void _ZN6S426C33v49Ev();
extern void _ZN6S426C33v50Ev();
extern void _ZN6S426C33v51Ev();
extern void _ZN6S426C33v52Ev();
extern void _ZN6S426C23v53Ev();
extern void _ZN6S426C23v54Ev();
extern void _ZN6S426C23v55Ev();
extern void _ZN6S426C23v56Ev();
extern void _ZN6S426C23v57Ev();
extern void _ZN6S426C23v58Ev();
extern void _ZN6S426C23v59Ev();
extern void _ZN6S426C23v60Ev();
extern void _ZN6S426C23v61Ev();
extern void _ZN6S426C23v62Ev();
extern void _ZN6S426C23v63Ev();
extern void _ZN6S426C23v64Ev();
extern void _ZN6S426C23v65Ev();
extern void _ZN6S426C23v66Ev();
extern void _ZN6S426C23v67Ev();
extern void _ZN6S426C23v68Ev();
extern void _ZN6S426C23v69Ev();
extern void _ZN6S426C23v70Ev();
extern void _ZN6S426C23v71Ev();
extern void _ZN6S426C23v72Ev();
extern void _ZN6S426C23v73Ev();
extern void _ZN6S426C23v74Ev();
extern void _ZN6S426C23v75Ev();
extern void _ZN6S426C23v76Ev();
extern void _ZN6S426C12v1Ev();
extern void _ZN6S426C12v2Ev();
extern void _ZN6S426C12v3Ev();
extern void _ZN6S426C12v4Ev();
extern void _ZN6S426C12v5Ev();
extern void _ZN6S426C12v6Ev();
extern void _ZN6S426C12v7Ev();
extern void _ZN6S426C12v8Ev();
extern void _ZN6S426C12v9Ev();
static  VTBL_ENTRY vtc_S426C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S426C1[0]),
  (VTBL_ENTRY)&_ZN6S426C1D1Ev,
  (VTBL_ENTRY)&_ZN6S426C1D0Ev,
  (VTBL_ENTRY)&_ZN6S426C43v10Ev,
  (VTBL_ENTRY)&_ZN6S426C33v11Ev,
  (VTBL_ENTRY)&_ZN6S426C33v12Ev,
  (VTBL_ENTRY)&_ZN6S426C33v13Ev,
  (VTBL_ENTRY)&_ZN6S426C33v14Ev,
  (VTBL_ENTRY)&_ZN6S426C33v15Ev,
  (VTBL_ENTRY)&_ZN6S426C33v16Ev,
  (VTBL_ENTRY)&_ZN6S426C33v17Ev,
  (VTBL_ENTRY)&_ZN6S426C33v18Ev,
  (VTBL_ENTRY)&_ZN6S426C33v19Ev,
  (VTBL_ENTRY)&_ZN6S426C33v20Ev,
  (VTBL_ENTRY)&_ZN6S426C33v21Ev,
  (VTBL_ENTRY)&_ZN6S426C33v22Ev,
  (VTBL_ENTRY)&_ZN6S426C33v23Ev,
  (VTBL_ENTRY)&_ZN6S426C33v24Ev,
  (VTBL_ENTRY)&_ZN6S426C33v25Ev,
  (VTBL_ENTRY)&_ZN6S426C33v26Ev,
  (VTBL_ENTRY)&_ZN6S426C33v27Ev,
  (VTBL_ENTRY)&_ZN6S426C33v28Ev,
  (VTBL_ENTRY)&_ZN6S426C33v29Ev,
  (VTBL_ENTRY)&_ZN6S426C33v30Ev,
  (VTBL_ENTRY)&_ZN6S426C33v31Ev,
  (VTBL_ENTRY)&_ZN6S426C33v32Ev,
  (VTBL_ENTRY)&_ZN6S426C33v33Ev,
  (VTBL_ENTRY)&_ZN6S426C33v34Ev,
  (VTBL_ENTRY)&_ZN6S426C33v35Ev,
  (VTBL_ENTRY)&_ZN6S426C33v36Ev,
  (VTBL_ENTRY)&_ZN6S426C33v37Ev,
  (VTBL_ENTRY)&_ZN6S426C33v38Ev,
  (VTBL_ENTRY)&_ZN6S426C33v39Ev,
  (VTBL_ENTRY)&_ZN6S426C33v40Ev,
  (VTBL_ENTRY)&_ZN6S426C33v41Ev,
  (VTBL_ENTRY)&_ZN6S426C33v42Ev,
  (VTBL_ENTRY)&_ZN6S426C33v43Ev,
  (VTBL_ENTRY)&_ZN6S426C33v44Ev,
  (VTBL_ENTRY)&_ZN6S426C33v45Ev,
  (VTBL_ENTRY)&_ZN6S426C33v46Ev,
  (VTBL_ENTRY)&_ZN6S426C33v47Ev,
  (VTBL_ENTRY)&_ZN6S426C33v48Ev,
  (VTBL_ENTRY)&_ZN6S426C33v49Ev,
  (VTBL_ENTRY)&_ZN6S426C33v50Ev,
  (VTBL_ENTRY)&_ZN6S426C33v51Ev,
  (VTBL_ENTRY)&_ZN6S426C33v52Ev,
  (VTBL_ENTRY)&_ZN6S426C23v53Ev,
  (VTBL_ENTRY)&_ZN6S426C23v54Ev,
  (VTBL_ENTRY)&_ZN6S426C23v55Ev,
  (VTBL_ENTRY)&_ZN6S426C23v56Ev,
  (VTBL_ENTRY)&_ZN6S426C23v57Ev,
  (VTBL_ENTRY)&_ZN6S426C23v58Ev,
  (VTBL_ENTRY)&_ZN6S426C23v59Ev,
  (VTBL_ENTRY)&_ZN6S426C23v60Ev,
  (VTBL_ENTRY)&_ZN6S426C23v61Ev,
  (VTBL_ENTRY)&_ZN6S426C23v62Ev,
  (VTBL_ENTRY)&_ZN6S426C23v63Ev,
  (VTBL_ENTRY)&_ZN6S426C23v64Ev,
  (VTBL_ENTRY)&_ZN6S426C23v65Ev,
  (VTBL_ENTRY)&_ZN6S426C23v66Ev,
  (VTBL_ENTRY)&_ZN6S426C23v67Ev,
  (VTBL_ENTRY)&_ZN6S426C23v68Ev,
  (VTBL_ENTRY)&_ZN6S426C23v69Ev,
  (VTBL_ENTRY)&_ZN6S426C23v70Ev,
  (VTBL_ENTRY)&_ZN6S426C23v71Ev,
  (VTBL_ENTRY)&_ZN6S426C23v72Ev,
  (VTBL_ENTRY)&_ZN6S426C23v73Ev,
  (VTBL_ENTRY)&_ZN6S426C23v74Ev,
  (VTBL_ENTRY)&_ZN6S426C23v75Ev,
  (VTBL_ENTRY)&_ZN6S426C23v76Ev,
  (VTBL_ENTRY)&_ZN6S426C12v1Ev,
  (VTBL_ENTRY)&_ZN6S426C12v2Ev,
  (VTBL_ENTRY)&_ZN6S426C12v3Ev,
  (VTBL_ENTRY)&_ZN6S426C12v4Ev,
  (VTBL_ENTRY)&_ZN6S426C12v5Ev,
  (VTBL_ENTRY)&_ZN6S426C12v6Ev,
  (VTBL_ENTRY)&_ZN6S426C12v7Ev,
  (VTBL_ENTRY)&_ZN6S426C12v8Ev,
  (VTBL_ENTRY)&_ZN6S426C12v9Ev,
};
extern VTBL_ENTRY _ZTI6S426C1[];
extern  VTBL_ENTRY _ZTV6S426C1[];
Class_Descriptor cd_S426C1 = {  "S426C1", // class name
  bases_S426C1, 4,
  &(vtc_S426C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(424,404), // object size
  NSPAIRA(_ZTI6S426C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S426C1),80, //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  S9073C2  {
  virtual  ~S9073C2(); // _ZN7S9073C2D1Ev
  virtual void  v2(); // _ZN7S9073C22v2Ev
  S9073C2(); // tgen
};
//SIG(-1 S9073C2) C1{ vd v1}


 S9073C2 ::~S9073C2(){ note_dtor("S9073C2", this);}
void  S9073C2 ::v2(){vfunc_called(this, "_ZN7S9073C22v2Ev");}
S9073C2 ::S9073C2(){ note_ctor("S9073C2", this);} // tgen

static void Test_S9073C2()
{
  extern Class_Descriptor cd_S9073C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S9073C2, buf);
    S9073C2 *dp, &lv = *(dp=new (buf) S9073C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S9073C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9073C2)");
    test_class_info(&lv, &cd_S9073C2);
    dp->~S9073C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9073C2(Test_S9073C2, "S9073C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S9073C2C1Ev();
extern void _ZN7S9073C2D1Ev();
Name_Map name_map_S9073C2[] = {
  NSPAIR(_ZN7S9073C2C1Ev),
  NSPAIR(_ZN7S9073C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9073C2[];
extern void _ZN7S9073C2D1Ev();
extern void _ZN7S9073C2D0Ev();
extern void _ZN7S9073C22v2Ev();
static  VTBL_ENTRY vtc_S9073C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9073C2[0]),
  (VTBL_ENTRY)&_ZN7S9073C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9073C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9073C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S9073C2[];
extern  VTBL_ENTRY _ZTV7S9073C2[];
Class_Descriptor cd_S9073C2 = {  "S9073C2", // class name
  0,0,//no base classes
  &(vtc_S9073C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9073C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9073C2),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  S9073C8  {
  void *s9073c8f0;
  int s9073c8f1[3];
  virtual  ~S9073C8(); // _ZN7S9073C8D1Ev
  virtual void  v5(); // _ZN7S9073C82v5Ev
  S9073C8(); // tgen
};
//SIG(-1 S9073C8) C1{ vd v1 Fp Fi[3]}


 S9073C8 ::~S9073C8(){ note_dtor("S9073C8", this);}
void  S9073C8 ::v5(){vfunc_called(this, "_ZN7S9073C82v5Ev");}
S9073C8 ::S9073C8(){ note_ctor("S9073C8", this);} // tgen

static void Test_S9073C8()
{
  extern Class_Descriptor cd_S9073C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S9073C8, buf);
    S9073C8 *dp, &lv = *(dp=new (buf) S9073C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S9073C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9073C8)");
    check_field_offset(lv, s9073c8f0, ABISELECT(8,4), "S9073C8.s9073c8f0");
    check_field_offset(lv, s9073c8f1, ABISELECT(16,8), "S9073C8.s9073c8f1");
    test_class_info(&lv, &cd_S9073C8);
    dp->~S9073C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9073C8(Test_S9073C8, "S9073C8", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S9073C8C1Ev();
extern void _ZN7S9073C8D1Ev();
Name_Map name_map_S9073C8[] = {
  NSPAIR(_ZN7S9073C8C1Ev),
  NSPAIR(_ZN7S9073C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9073C8[];
extern void _ZN7S9073C8D1Ev();
extern void _ZN7S9073C8D0Ev();
extern void _ZN7S9073C82v5Ev();
static  VTBL_ENTRY vtc_S9073C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9073C8[0]),
  (VTBL_ENTRY)&_ZN7S9073C8D1Ev,
  (VTBL_ENTRY)&_ZN7S9073C8D0Ev,
  (VTBL_ENTRY)&_ZN7S9073C82v5Ev,
};
extern VTBL_ENTRY _ZTI7S9073C8[];
extern  VTBL_ENTRY _ZTV7S9073C8[];
Class_Descriptor cd_S9073C8 = {  "S9073C8", // class name
  0,0,//no base classes
  &(vtc_S9073C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S9073C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9073C8),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  S9073C7  : S9073C8 {
  int s9073c7f0[2];
  virtual  ~S9073C7(); // _ZN7S9073C7D1Ev
  virtual void  v3(); // _ZN7S9073C72v3Ev
  virtual void  v4(); // _ZN7S9073C72v4Ev
  S9073C7(); // tgen
};
//SIG(-1 S9073C7) C1{ BC2{ vd v3 Fp Fi[3]} vd v1 v2 Fi[2]}


 S9073C7 ::~S9073C7(){ note_dtor("S9073C7", this);}
void  S9073C7 ::v3(){vfunc_called(this, "_ZN7S9073C72v3Ev");}
void  S9073C7 ::v4(){vfunc_called(this, "_ZN7S9073C72v4Ev");}
S9073C7 ::S9073C7(){ note_ctor("S9073C7", this);} // tgen

static void Test_S9073C7()
{
  extern Class_Descriptor cd_S9073C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9073C7, buf);
    S9073C7 *dp, &lv = *(dp=new (buf) S9073C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9073C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9073C7)");
    check_base_class_offset(lv, (S9073C8*), 0, "S9073C7");
    check_field_offset(lv, s9073c7f0, ABISELECT(28,20), "S9073C7.s9073c7f0");
    test_class_info(&lv, &cd_S9073C7);
    dp->~S9073C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9073C7(Test_S9073C7, "S9073C7", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9073C7C1Ev();
extern void _ZN7S9073C7D1Ev();
Name_Map name_map_S9073C7[] = {
  NSPAIR(_ZN7S9073C7C1Ev),
  NSPAIR(_ZN7S9073C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9073C8;
extern VTBL_ENTRY _ZTI7S9073C8[];
extern  VTBL_ENTRY _ZTV7S9073C8[];
static Base_Class bases_S9073C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9073C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9073C7[];
extern void _ZN7S9073C7D1Ev();
extern void _ZN7S9073C7D0Ev();
extern void _ZN7S9073C82v5Ev();
extern void _ZN7S9073C72v3Ev();
extern void _ZN7S9073C72v4Ev();
static  VTBL_ENTRY vtc_S9073C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9073C7[0]),
  (VTBL_ENTRY)&_ZN7S9073C7D1Ev,
  (VTBL_ENTRY)&_ZN7S9073C7D0Ev,
  (VTBL_ENTRY)&_ZN7S9073C82v5Ev,
  (VTBL_ENTRY)&_ZN7S9073C72v3Ev,
  (VTBL_ENTRY)&_ZN7S9073C72v4Ev,
};
extern VTBL_ENTRY _ZTI7S9073C7[];
extern  VTBL_ENTRY _ZTV7S9073C7[];
Class_Descriptor cd_S9073C7 = {  "S9073C7", // class name
  bases_S9073C7, 1,
  &(vtc_S9073C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9073C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9073C7),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9073C9  : S9073C8 {
  int s9073c9f0[3];
  virtual  ~S9073C9(); // _ZN7S9073C9D1Ev
  virtual void  v6(); // _ZN7S9073C92v6Ev
  S9073C9(); // tgen
};
//SIG(-1 S9073C9) C1{ BC2{ vd v2 Fp Fi[3]} vd v1 Fi[3]}


 S9073C9 ::~S9073C9(){ note_dtor("S9073C9", this);}
void  S9073C9 ::v6(){vfunc_called(this, "_ZN7S9073C92v6Ev");}
S9073C9 ::S9073C9(){ note_ctor("S9073C9", this);} // tgen

static void Test_S9073C9()
{
  extern Class_Descriptor cd_S9073C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,9)];
    init_test(&cd_S9073C9, buf);
    S9073C9 *dp, &lv = *(dp=new (buf) S9073C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S9073C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9073C9)");
    check_base_class_offset(lv, (S9073C8*), 0, "S9073C9");
    check_field_offset(lv, s9073c9f0, ABISELECT(28,20), "S9073C9.s9073c9f0");
    test_class_info(&lv, &cd_S9073C9);
    dp->~S9073C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9073C9(Test_S9073C9, "S9073C9", ABISELECT(40,32));

#else // __cplusplus

extern void _ZN7S9073C9C1Ev();
extern void _ZN7S9073C9D1Ev();
Name_Map name_map_S9073C9[] = {
  NSPAIR(_ZN7S9073C9C1Ev),
  NSPAIR(_ZN7S9073C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9073C8;
extern VTBL_ENTRY _ZTI7S9073C8[];
extern  VTBL_ENTRY _ZTV7S9073C8[];
static Base_Class bases_S9073C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9073C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9073C9[];
extern void _ZN7S9073C9D1Ev();
extern void _ZN7S9073C9D0Ev();
extern void _ZN7S9073C82v5Ev();
extern void _ZN7S9073C92v6Ev();
static  VTBL_ENTRY vtc_S9073C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9073C9[0]),
  (VTBL_ENTRY)&_ZN7S9073C9D1Ev,
  (VTBL_ENTRY)&_ZN7S9073C9D0Ev,
  (VTBL_ENTRY)&_ZN7S9073C82v5Ev,
  (VTBL_ENTRY)&_ZN7S9073C92v6Ev,
};
extern VTBL_ENTRY _ZTI7S9073C9[];
extern  VTBL_ENTRY _ZTV7S9073C9[];
Class_Descriptor cd_S9073C9 = {  "S9073C9", // class name
  bases_S9073C9, 1,
  &(vtc_S9073C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,32), // object size
  NSPAIRA(_ZTI7S9073C9),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9073C9),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  S9073C10  : S9073C8 {
  int s9073c10f0[2];
  virtual  ~S9073C10(); // _ZN8S9073C10D1Ev
  virtual void  v7(); // _ZN8S9073C102v7Ev
  S9073C10(); // tgen
};
//SIG(-1 S9073C10) C1{ BC2{ vd v2 Fp Fi[3]} vd v1 Fi[2]}


 S9073C10 ::~S9073C10(){ note_dtor("S9073C10", this);}
void  S9073C10 ::v7(){vfunc_called(this, "_ZN8S9073C102v7Ev");}
S9073C10 ::S9073C10(){ note_ctor("S9073C10", this);} // tgen

static void Test_S9073C10()
{
  extern Class_Descriptor cd_S9073C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9073C10, buf);
    S9073C10 *dp, &lv = *(dp=new (buf) S9073C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9073C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9073C10)");
    check_base_class_offset(lv, (S9073C8*), 0, "S9073C10");
    check_field_offset(lv, s9073c10f0, ABISELECT(28,20), "S9073C10.s9073c10f0");
    test_class_info(&lv, &cd_S9073C10);
    dp->~S9073C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9073C10(Test_S9073C10, "S9073C10", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN8S9073C10C1Ev();
extern void _ZN8S9073C10D1Ev();
Name_Map name_map_S9073C10[] = {
  NSPAIR(_ZN8S9073C10C1Ev),
  NSPAIR(_ZN8S9073C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9073C8;
extern VTBL_ENTRY _ZTI7S9073C8[];
extern  VTBL_ENTRY _ZTV7S9073C8[];
static Base_Class bases_S9073C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9073C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S9073C10[];
extern void _ZN8S9073C10D1Ev();
extern void _ZN8S9073C10D0Ev();
extern void _ZN7S9073C82v5Ev();
extern void _ZN8S9073C102v7Ev();
static  VTBL_ENTRY vtc_S9073C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S9073C10[0]),
  (VTBL_ENTRY)&_ZN8S9073C10D1Ev,
  (VTBL_ENTRY)&_ZN8S9073C10D0Ev,
  (VTBL_ENTRY)&_ZN7S9073C82v5Ev,
  (VTBL_ENTRY)&_ZN8S9073C102v7Ev,
};
extern VTBL_ENTRY _ZTI8S9073C10[];
extern  VTBL_ENTRY _ZTV8S9073C10[];
Class_Descriptor cd_S9073C10 = {  "S9073C10", // class name
  bases_S9073C10, 1,
  &(vtc_S9073C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI8S9073C10),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S9073C10),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  S9073C6  {
  ::S9073C7 s9073c6f0;
  ::S9073C9 s9073c6f1;
  ::S9073C10 s9073c6f2;
  ::S9073C9 s9073c6f3;
  void  mf9073c6(); // _ZN7S9073C68mf9073c6Ev
  virtual  ~S9073C6(); // _ZN7S9073C6D1Ev
  S9073C6(); // tgen
};
//SIG(-1 S9073C6) C1{ vd m FC2{ BC3{ vd v3 Fp Fi[3]} vd v1 v2 Fi[2]} FC4{ BC3 vd v4 Fi[3]} FC5{ BC3 vd v5 Fi[2]} FC4}


void  S9073C6 ::mf9073c6(){}
 S9073C6 ::~S9073C6(){ note_dtor("S9073C6", this);}
S9073C6 ::S9073C6(){ note_ctor("S9073C6", this);} // tgen

static void Test_S9073C6()
{
  extern Class_Descriptor cd_S9073C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,32)];
    init_test(&cd_S9073C6, buf);
    S9073C6 *dp, &lv = *(dp=new (buf) S9073C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,124), "sizeof(S9073C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9073C6)");
    check_field_offset(lv, s9073c6f0, ABISELECT(8,4), "S9073C6.s9073c6f0");
    check_field_offset(lv, s9073c6f1, ABISELECT(48,32), "S9073C6.s9073c6f1");
    check_field_offset(lv, s9073c6f2, ABISELECT(88,64), "S9073C6.s9073c6f2");
    check_field_offset(lv, s9073c6f3, ABISELECT(128,92), "S9073C6.s9073c6f3");
    test_class_info(&lv, &cd_S9073C6);
    dp->~S9073C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9073C6(Test_S9073C6, "S9073C6", ABISELECT(168,124));

#else // __cplusplus

extern void _ZN7S9073C6C1Ev();
extern void _ZN7S9073C6D1Ev();
Name_Map name_map_S9073C6[] = {
  NSPAIR(_ZN7S9073C6C1Ev),
  NSPAIR(_ZN7S9073C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9073C6[];
extern void _ZN7S9073C6D1Ev();
extern void _ZN7S9073C6D0Ev();
static  VTBL_ENTRY vtc_S9073C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9073C6[0]),
  (VTBL_ENTRY)&_ZN7S9073C6D1Ev,
  (VTBL_ENTRY)&_ZN7S9073C6D0Ev,
};
extern VTBL_ENTRY _ZTI7S9073C6[];
extern  VTBL_ENTRY _ZTV7S9073C6[];
Class_Descriptor cd_S9073C6 = {  "S9073C6", // class name
  0,0,//no base classes
  &(vtc_S9073C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,124), // object size
  NSPAIRA(_ZTI7S9073C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9073C6),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  S9073C14_nt  {
  int s9073c14f0;
  virtual  ~S9073C14_nt(); // _ZN11S9073C14_ntD1Ev
  virtual void  v11(); // _ZN11S9073C14_nt3v11Ev
  virtual void  v12(); // _ZN11S9073C14_nt3v12Ev
  virtual void  v13(); // _ZN11S9073C14_nt3v13Ev
  S9073C14_nt(); // tgen
};
//SIG(-1 S9073C14_nt) C1{ vd v1 v2 v3 Fi}


 S9073C14_nt ::~S9073C14_nt(){ note_dtor("S9073C14_nt", this);}
void  S9073C14_nt ::v11(){vfunc_called(this, "_ZN11S9073C14_nt3v11Ev");}
void  S9073C14_nt ::v12(){vfunc_called(this, "_ZN11S9073C14_nt3v12Ev");}
void  S9073C14_nt ::v13(){vfunc_called(this, "_ZN11S9073C14_nt3v13Ev");}
S9073C14_nt ::S9073C14_nt(){ note_ctor("S9073C14_nt", this);} // tgen

//skip512 S9073C14_nt

#else // __cplusplus

extern void _ZN11S9073C14_ntC1Ev();
extern void _ZN11S9073C14_ntD1Ev();
Name_Map name_map_S9073C14_nt[] = {
  NSPAIR(_ZN11S9073C14_ntC1Ev),
  NSPAIR(_ZN11S9073C14_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S9073C14_nt[];
extern void _ZN11S9073C14_ntD1Ev();
extern void _ZN11S9073C14_ntD0Ev();
extern void _ZN11S9073C14_nt3v11Ev();
extern void _ZN11S9073C14_nt3v12Ev();
extern void _ZN11S9073C14_nt3v13Ev();
static  VTBL_ENTRY vtc_S9073C14_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S9073C14_nt[0]),
  (VTBL_ENTRY)&_ZN11S9073C14_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S9073C14_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S9073C14_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S9073C14_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S9073C14_nt3v13Ev,
};
extern VTBL_ENTRY _ZTI11S9073C14_nt[];
VTBL_ENTRY *P__ZTI11S9073C14_nt = _ZTI11S9073C14_nt; 
extern  VTBL_ENTRY _ZTV11S9073C14_nt[];
Class_Descriptor cd_S9073C14_nt = {  "S9073C14_nt", // class name
  0,0,//no base classes
  &(vtc_S9073C14_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI11S9073C14_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S9073C14_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  S9073C13_nt  : S9073C14_nt {
  virtual  ~S9073C13_nt(); // _ZN11S9073C13_ntD1Ev
  virtual void  v9(); // _ZN11S9073C13_nt2v9Ev
  virtual void  v10(); // _ZN11S9073C13_nt3v10Ev
  S9073C13_nt(); // tgen
};
//SIG(-1 S9073C13_nt) C1{ BC2{ vd v3 v4 v5 Fi} vd v1 v2}


 S9073C13_nt ::~S9073C13_nt(){ note_dtor("S9073C13_nt", this);}
void  S9073C13_nt ::v9(){vfunc_called(this, "_ZN11S9073C13_nt2v9Ev");}
void  S9073C13_nt ::v10(){vfunc_called(this, "_ZN11S9073C13_nt3v10Ev");}
S9073C13_nt ::S9073C13_nt(){ note_ctor("S9073C13_nt", this);} // tgen

//skip512 S9073C13_nt

#else // __cplusplus

extern void _ZN11S9073C13_ntC1Ev();
extern void _ZN11S9073C13_ntD1Ev();
Name_Map name_map_S9073C13_nt[] = {
  NSPAIR(_ZN11S9073C13_ntC1Ev),
  NSPAIR(_ZN11S9073C13_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9073C14_nt;
extern VTBL_ENTRY _ZTI11S9073C14_nt[];
extern  VTBL_ENTRY _ZTV11S9073C14_nt[];
static Base_Class bases_S9073C13_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9073C14_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S9073C13_nt[];
extern void _ZN11S9073C13_ntD1Ev();
extern void _ZN11S9073C13_ntD0Ev();
extern void _ZN11S9073C14_nt3v11Ev();
extern void _ZN11S9073C14_nt3v12Ev();
extern void _ZN11S9073C14_nt3v13Ev();
extern void _ZN11S9073C13_nt2v9Ev();
extern void _ZN11S9073C13_nt3v10Ev();
static  VTBL_ENTRY vtc_S9073C13_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S9073C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S9073C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S9073C13_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S9073C14_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S9073C14_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S9073C14_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S9073C13_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S9073C13_nt3v10Ev,
};
extern VTBL_ENTRY _ZTI11S9073C13_nt[];
VTBL_ENTRY *P__ZTI11S9073C13_nt = _ZTI11S9073C13_nt; 
extern  VTBL_ENTRY _ZTV11S9073C13_nt[];
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9073C12  {
  ::S9073C13_nt s9073c12f0;
  ::S9073C8 s9073c12f1;
  int s9073c12f2[2];
  void  mf9073c12(); // _ZN8S9073C129mf9073c12Ev
  virtual  ~S9073C12(); // _ZN8S9073C12D1Ev
  S9073C12(); // tgen
};
//SIG(-1 S9073C12) C1{ vd m FC2{ BC3{ vd v3 v4 v5 Fi} vd v1 v2} FC4{ vd v6 Fp Fi[3]} Fi[2]}


void  S9073C12 ::mf9073c12(){}
 S9073C12 ::~S9073C12(){ note_dtor("S9073C12", this);}
S9073C12 ::S9073C12(){ note_ctor("S9073C12", this);} // tgen

static void Test_S9073C12()
{
  extern Class_Descriptor cd_S9073C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,11)];
    init_test(&cd_S9073C12, buf);
    S9073C12 *dp, &lv = *(dp=new (buf) S9073C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S9073C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9073C12)");
    check_field_offset(lv, s9073c12f0, ABISELECT(8,4), "S9073C12.s9073c12f0");
    check_field_offset(lv, s9073c12f1, ABISELECT(24,12), "S9073C12.s9073c12f1");
    check_field_offset(lv, s9073c12f2, ABISELECT(56,32), "S9073C12.s9073c12f2");
    test_class_info(&lv, &cd_S9073C12);
    dp->~S9073C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9073C12(Test_S9073C12, "S9073C12", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN8S9073C12C1Ev();
extern void _ZN8S9073C12D1Ev();
Name_Map name_map_S9073C12[] = {
  NSPAIR(_ZN8S9073C12C1Ev),
  NSPAIR(_ZN8S9073C12D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S9073C12[];
extern void _ZN8S9073C12D1Ev();
extern void _ZN8S9073C12D0Ev();
static  VTBL_ENTRY vtc_S9073C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S9073C12[0]),
  (VTBL_ENTRY)&_ZN8S9073C12D1Ev,
  (VTBL_ENTRY)&_ZN8S9073C12D0Ev,
};
extern VTBL_ENTRY _ZTI8S9073C12[];
extern  VTBL_ENTRY _ZTV8S9073C12[];
Class_Descriptor cd_S9073C12 = {  "S9073C12", // class name
  0,0,//no base classes
  &(vtc_S9073C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI8S9073C12),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S9073C12),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  S9073C15  {
  ::S9073C8 s9073c15f0;
  ::S9073C8 s9073c15f1;
  int s9073c15f2[2];
  void  mf9073c15(); // _ZN8S9073C159mf9073c15Ev
  virtual  ~S9073C15(); // _ZN8S9073C15D1Ev
  S9073C15(); // tgen
};
//SIG(-1 S9073C15) C1{ vd m FC2{ vd v1 Fp Fi[3]} FC2 Fi[2]}


void  S9073C15 ::mf9073c15(){}
 S9073C15 ::~S9073C15(){ note_dtor("S9073C15", this);}
S9073C15 ::S9073C15(){ note_ctor("S9073C15", this);} // tgen

static void Test_S9073C15()
{
  extern Class_Descriptor cd_S9073C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,14)];
    init_test(&cd_S9073C15, buf);
    S9073C15 *dp, &lv = *(dp=new (buf) S9073C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,52), "sizeof(S9073C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9073C15)");
    check_field_offset(lv, s9073c15f0, ABISELECT(8,4), "S9073C15.s9073c15f0");
    check_field_offset(lv, s9073c15f1, ABISELECT(40,24), "S9073C15.s9073c15f1");
    check_field_offset(lv, s9073c15f2, ABISELECT(72,44), "S9073C15.s9073c15f2");
    test_class_info(&lv, &cd_S9073C15);
    dp->~S9073C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9073C15(Test_S9073C15, "S9073C15", ABISELECT(80,52));

#else // __cplusplus

extern void _ZN8S9073C15C1Ev();
extern void _ZN8S9073C15D1Ev();
Name_Map name_map_S9073C15[] = {
  NSPAIR(_ZN8S9073C15C1Ev),
  NSPAIR(_ZN8S9073C15D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S9073C15[];
extern void _ZN8S9073C15D1Ev();
extern void _ZN8S9073C15D0Ev();
static  VTBL_ENTRY vtc_S9073C15[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S9073C15[0]),
  (VTBL_ENTRY)&_ZN8S9073C15D1Ev,
  (VTBL_ENTRY)&_ZN8S9073C15D0Ev,
};
extern VTBL_ENTRY _ZTI8S9073C15[];
extern  VTBL_ENTRY _ZTV8S9073C15[];
Class_Descriptor cd_S9073C15 = {  "S9073C15", // class name
  0,0,//no base classes
  &(vtc_S9073C15[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,52), // object size
  NSPAIRA(_ZTI8S9073C15),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S9073C15),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  S9073C16  : S9073C14_nt {
  int s9073c16f0;
  virtual  ~S9073C16(); // _ZN8S9073C16D1Ev
  virtual void  v14(); // _ZN8S9073C163v14Ev
  virtual void  v15(); // _ZN8S9073C163v15Ev
  virtual void  v16(); // _ZN8S9073C163v16Ev
  virtual void  v17(); // _ZN8S9073C163v17Ev
  S9073C16(); // tgen
};
//SIG(-1 S9073C16) C1{ BC2{ vd v5 v6 v7 Fi} vd v1 v2 v3 v4 Fi}


 S9073C16 ::~S9073C16(){ note_dtor("S9073C16", this);}
void  S9073C16 ::v14(){vfunc_called(this, "_ZN8S9073C163v14Ev");}
void  S9073C16 ::v15(){vfunc_called(this, "_ZN8S9073C163v15Ev");}
void  S9073C16 ::v16(){vfunc_called(this, "_ZN8S9073C163v16Ev");}
void  S9073C16 ::v17(){vfunc_called(this, "_ZN8S9073C163v17Ev");}
S9073C16 ::S9073C16(){ note_ctor("S9073C16", this);} // tgen

static void Test_S9073C16()
{
  extern Class_Descriptor cd_S9073C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S9073C16, buf);
    S9073C16 *dp, &lv = *(dp=new (buf) S9073C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S9073C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9073C16)");
    check_base_class_offset(lv, (S9073C14_nt*), 0, "S9073C16");
    check_field_offset(lv, s9073c16f0, ABISELECT(12,8), "S9073C16.s9073c16f0");
    test_class_info(&lv, &cd_S9073C16);
    dp->~S9073C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9073C16(Test_S9073C16, "S9073C16", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S9073C16C1Ev();
extern void _ZN8S9073C16D1Ev();
Name_Map name_map_S9073C16[] = {
  NSPAIR(_ZN8S9073C16C1Ev),
  NSPAIR(_ZN8S9073C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9073C14_nt;
extern VTBL_ENTRY _ZTI11S9073C14_nt[];
extern  VTBL_ENTRY _ZTV11S9073C14_nt[];
static Base_Class bases_S9073C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9073C14_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S9073C16[];
extern void _ZN8S9073C16D1Ev();
extern void _ZN8S9073C16D0Ev();
extern void _ZN11S9073C14_nt3v11Ev();
extern void _ZN11S9073C14_nt3v12Ev();
extern void _ZN11S9073C14_nt3v13Ev();
extern void _ZN8S9073C163v14Ev();
extern void _ZN8S9073C163v15Ev();
extern void _ZN8S9073C163v16Ev();
extern void _ZN8S9073C163v17Ev();
static  VTBL_ENTRY vtc_S9073C16[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S9073C16[0]),
  (VTBL_ENTRY)&_ZN8S9073C16D1Ev,
  (VTBL_ENTRY)&_ZN8S9073C16D0Ev,
  (VTBL_ENTRY)&_ZN11S9073C14_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S9073C14_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S9073C14_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S9073C163v14Ev,
  (VTBL_ENTRY)&_ZN8S9073C163v15Ev,
  (VTBL_ENTRY)&_ZN8S9073C163v16Ev,
  (VTBL_ENTRY)&_ZN8S9073C163v17Ev,
};
extern VTBL_ENTRY _ZTI8S9073C16[];
extern  VTBL_ENTRY _ZTV8S9073C16[];
Class_Descriptor cd_S9073C16 = {  "S9073C16", // class name
  bases_S9073C16, 1,
  &(vtc_S9073C16[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S9073C16),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S9073C16),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  S9073C17  {
  void *s9073c17f0[7];
  ::S6638C19_nt s9073c17f1;
  int s9073c17f2[2];
  void  mf9073c17(); // _ZN8S9073C179mf9073c17Ev
  virtual  ~S9073C17(); // _ZN8S9073C17D1Ev
  S9073C17(); // tgen
};
//SIG(-1 S9073C17) C1{ vd m Fp[7] FC2{ m Fp Fi[2] FC3{ m}} Fi[2]}


void  S9073C17 ::mf9073c17(){}
 S9073C17 ::~S9073C17(){ note_dtor("S9073C17", this);}
S9073C17 ::S9073C17(){ note_ctor("S9073C17", this);} // tgen

static void Test_S9073C17()
{
  extern Class_Descriptor cd_S9073C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,15)];
    init_test(&cd_S9073C17, buf);
    S9073C17 *dp, &lv = *(dp=new (buf) S9073C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,56), "sizeof(S9073C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9073C17)");
    check_field_offset(lv, s9073c17f0, ABISELECT(8,4), "S9073C17.s9073c17f0");
    check_field_offset(lv, s9073c17f1, ABISELECT(64,32), "S9073C17.s9073c17f1");
    check_field_offset(lv, s9073c17f2, ABISELECT(88,48), "S9073C17.s9073c17f2");
    test_class_info(&lv, &cd_S9073C17);
    dp->~S9073C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9073C17(Test_S9073C17, "S9073C17", ABISELECT(96,56));

#else // __cplusplus

extern void _ZN8S9073C17C1Ev();
extern void _ZN8S9073C17D1Ev();
Name_Map name_map_S9073C17[] = {
  NSPAIR(_ZN8S9073C17C1Ev),
  NSPAIR(_ZN8S9073C17D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S9073C17[];
extern void _ZN8S9073C17D1Ev();
extern void _ZN8S9073C17D0Ev();
static  VTBL_ENTRY vtc_S9073C17[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S9073C17[0]),
  (VTBL_ENTRY)&_ZN8S9073C17D1Ev,
  (VTBL_ENTRY)&_ZN8S9073C17D0Ev,
};
extern VTBL_ENTRY _ZTI8S9073C17[];
extern  VTBL_ENTRY _ZTV8S9073C17[];
Class_Descriptor cd_S9073C17 = {  "S9073C17", // class name
  0,0,//no base classes
  &(vtc_S9073C17[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,56), // object size
  NSPAIRA(_ZTI8S9073C17),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S9073C17),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  S9073C22_nt  {
  char s9073c22f0;
  void  mf9073c22(); // _ZN11S9073C22_nt9mf9073c22Ev
  virtual  ~S9073C22_nt(); // _ZN11S9073C22_ntD1Ev
  S9073C22_nt(); // tgen
};
//SIG(-1 S9073C22_nt) C1{ vd m Fc}


void  S9073C22_nt ::mf9073c22(){}
 S9073C22_nt ::~S9073C22_nt(){ note_dtor("S9073C22_nt", this);}
S9073C22_nt ::S9073C22_nt(){ note_ctor("S9073C22_nt", this);} // tgen

//skip512 S9073C22_nt

#else // __cplusplus

extern void _ZN11S9073C22_ntC1Ev();
extern void _ZN11S9073C22_ntD1Ev();
Name_Map name_map_S9073C22_nt[] = {
  NSPAIR(_ZN11S9073C22_ntC1Ev),
  NSPAIR(_ZN11S9073C22_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S9073C22_nt[];
extern void _ZN11S9073C22_ntD1Ev();
extern void _ZN11S9073C22_ntD0Ev();
static  VTBL_ENTRY vtc_S9073C22_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S9073C22_nt[0]),
  (VTBL_ENTRY)&_ZN11S9073C22_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S9073C22_ntD0Ev,
};
extern VTBL_ENTRY _ZTI11S9073C22_nt[];
VTBL_ENTRY *P__ZTI11S9073C22_nt = _ZTI11S9073C22_nt; 
extern  VTBL_ENTRY _ZTV11S9073C22_nt[];
Class_Descriptor cd_S9073C22_nt = {  "S9073C22_nt", // class name
  0,0,//no base classes
  &(vtc_S9073C22_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI11S9073C22_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S9073C22_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  S9073C21  {
  ::S9073C22_nt s9073c21f0[2];
  int s9073c21f1;
  void  mf9073c21(); // _ZN8S9073C219mf9073c21Ev
  virtual  ~S9073C21(); // _ZN8S9073C21D1Ev
  S9073C21(); // tgen
};
//SIG(-1 S9073C21) C1{ vd m FC2{ vd m Fc}[2] Fi}


void  S9073C21 ::mf9073c21(){}
 S9073C21 ::~S9073C21(){ note_dtor("S9073C21", this);}
S9073C21 ::S9073C21(){ note_ctor("S9073C21", this);} // tgen

static void Test_S9073C21()
{
  extern Class_Descriptor cd_S9073C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S9073C21, buf);
    S9073C21 *dp, &lv = *(dp=new (buf) S9073C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S9073C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9073C21)");
    check_field_offset(lv, s9073c21f0, ABISELECT(8,4), "S9073C21.s9073c21f0");
    check_field_offset(lv, s9073c21f1, ABISELECT(40,20), "S9073C21.s9073c21f1");
    test_class_info(&lv, &cd_S9073C21);
    dp->~S9073C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9073C21(Test_S9073C21, "S9073C21", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN8S9073C21C1Ev();
extern void _ZN8S9073C21D1Ev();
Name_Map name_map_S9073C21[] = {
  NSPAIR(_ZN8S9073C21C1Ev),
  NSPAIR(_ZN8S9073C21D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S9073C21[];
extern void _ZN8S9073C21D1Ev();
extern void _ZN8S9073C21D0Ev();
static  VTBL_ENTRY vtc_S9073C21[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S9073C21[0]),
  (VTBL_ENTRY)&_ZN8S9073C21D1Ev,
  (VTBL_ENTRY)&_ZN8S9073C21D0Ev,
};
extern VTBL_ENTRY _ZTI8S9073C21[];
extern  VTBL_ENTRY _ZTV8S9073C21[];
Class_Descriptor cd_S9073C21 = {  "S9073C21", // class name
  0,0,//no base classes
  &(vtc_S9073C21[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI8S9073C21),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S9073C21),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  S9073C1  : S9073C2 {
  int s9073c1f0;
  ::S4677C25 s9073c1f1;
  ::S4677C25 s9073c1f2;
  ::S9073C6 s9073c1f3;
  ::S9073C12 s9073c1f4;
  ::S9073C15 s9073c1f5;
  ::S9073C16 s9073c1f6;
  ::S9073C17 s9073c1f7;
  ::S9073C15 s9073c1f8;
  ::S9073C21 s9073c1f9;
  __tsi64 s9073c1f10;
  ::S4677C25 s9073c1f11;
  char s9073c1f12;
  virtual  ~S9073C1(); // _ZN7S9073C1D1Ev
  virtual void  v1(); // _ZN7S9073C12v1Ev
  S9073C1(); // tgen
};
//SIG(1 S9073C1) C1{ BC2{ vd v2} vd v1 Fi FC3{ m Fp Fi FC4{ m} FC5{ m}} FC3 FC6{ vd m FC7{ BC8{ vd v5 Fp Fi[3]} vd v3 v4 Fi[2]} FC9{ BC8 vd v6 Fi[3]} FC10{ BC8 vd v7 Fi[2]} FC9} FC11{ vd m FC12{ BC13{ vd v10 v11 v12 Fi} vd v8 v9} FC8 Fi[2]} FC14{ vd m FC8 FC8 Fi[2]} FC15{ BC13 vd v13 v14 v15 v16 Fi} FC16{ vd m Fp[7] FC17{ m Fp Fi[2] FC18{ m}} Fi[2]} FC14 FC19{ vd m FC20{ vd m Fc}[2] Fi} FL FC3 Fc}


 S9073C1 ::~S9073C1(){ note_dtor("S9073C1", this);}
void  S9073C1 ::v1(){vfunc_called(this, "_ZN7S9073C12v1Ev");}
S9073C1 ::S9073C1(){ note_ctor("S9073C1", this);} // tgen

static void Test_S9073C1()
{
  extern Class_Descriptor cd_S9073C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(80,105)];
    init_test(&cd_S9073C1, buf);
    S9073C1 *dp, &lv = *(dp=new (buf) S9073C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(632,416), "sizeof(S9073C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9073C1)");
    check_base_class_offset(lv, (S9073C2*), 0, "S9073C1");
    check_field_offset(lv, s9073c1f0, ABISELECT(8,4), "S9073C1.s9073c1f0");
    check_field_offset(lv, s9073c1f1, ABISELECT(16,8), "S9073C1.s9073c1f1");
    check_field_offset(lv, s9073c1f2, ABISELECT(32,20), "S9073C1.s9073c1f2");
    check_field_offset(lv, s9073c1f3, ABISELECT(48,32), "S9073C1.s9073c1f3");
    check_field_offset(lv, s9073c1f4, ABISELECT(216,156), "S9073C1.s9073c1f4");
    check_field_offset(lv, s9073c1f5, ABISELECT(280,196), "S9073C1.s9073c1f5");
    check_field_offset(lv, s9073c1f6, ABISELECT(360,248), "S9073C1.s9073c1f6");
    check_field_offset(lv, s9073c1f7, ABISELECT(376,260), "S9073C1.s9073c1f7");
    check_field_offset(lv, s9073c1f8, ABISELECT(472,316), "S9073C1.s9073c1f8");
    check_field_offset(lv, s9073c1f9, ABISELECT(552,368), "S9073C1.s9073c1f9");
    check_field_offset(lv, s9073c1f10, ABISELECT(600,392), "S9073C1.s9073c1f10");
    check_field_offset(lv, s9073c1f11, ABISELECT(608,400), "S9073C1.s9073c1f11");
    check_field_offset(lv, s9073c1f12, ABISELECT(624,412), "S9073C1.s9073c1f12");
    test_class_info(&lv, &cd_S9073C1);
    dp->~S9073C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9073C1(Test_S9073C1, "S9073C1", ABISELECT(632,416));

#else // __cplusplus

extern void _ZN7S9073C1C1Ev();
extern void _ZN7S9073C1D1Ev();
Name_Map name_map_S9073C1[] = {
  NSPAIR(_ZN7S9073C1C1Ev),
  NSPAIR(_ZN7S9073C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9073C2;
extern VTBL_ENTRY _ZTI7S9073C2[];
extern  VTBL_ENTRY _ZTV7S9073C2[];
static Base_Class bases_S9073C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9073C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9073C1[];
extern void _ZN7S9073C1D1Ev();
extern void _ZN7S9073C1D0Ev();
extern void _ZN7S9073C22v2Ev();
extern void _ZN7S9073C12v1Ev();
static  VTBL_ENTRY vtc_S9073C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9073C1[0]),
  (VTBL_ENTRY)&_ZN7S9073C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9073C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9073C22v2Ev,
  (VTBL_ENTRY)&_ZN7S9073C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S9073C1[];
extern  VTBL_ENTRY _ZTV7S9073C1[];
Class_Descriptor cd_S9073C1 = {  "S9073C1", // class name
  bases_S9073C1, 1,
  &(vtc_S9073C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(632,416), // object size
  NSPAIRA(_ZTI7S9073C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9073C1),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  S3282C3  {
  int s3282c3f0;
  __tsi64 s3282c3f1;
  void *s3282c3f2[4];
  int s3282c3f3[2];
  void *s3282c3f4;
  ::S3216C4_nt s3282c3f5;
  void *s3282c3f6[2];
  virtual  ~S3282C3(); // _ZN7S3282C3D1Ev
  virtual void  v5(); // _ZN7S3282C32v5Ev
  virtual void  v6(); // _ZN7S3282C32v6Ev
  virtual void  v7(); // _ZN7S3282C32v7Ev
  virtual void  v8(); // _ZN7S3282C32v8Ev
  virtual void  v9(); // _ZN7S3282C32v9Ev
  virtual void  v10(); // _ZN7S3282C33v10Ev
  virtual void  v11(); // _ZN7S3282C33v11Ev
  virtual void  v12(); // _ZN7S3282C33v12Ev
  virtual void  v13(); // _ZN7S3282C33v13Ev
  virtual void  v14(); // _ZN7S3282C33v14Ev
  virtual void  v15(); // _ZN7S3282C33v15Ev
  virtual void  v16(); // _ZN7S3282C33v16Ev
  virtual void  v17(); // _ZN7S3282C33v17Ev
  virtual void  v18(); // _ZN7S3282C33v18Ev
  virtual void  v19(); // _ZN7S3282C33v19Ev
  virtual void  v20(); // _ZN7S3282C33v20Ev
  virtual void  v21(); // _ZN7S3282C33v21Ev
  virtual void  v22(); // _ZN7S3282C33v22Ev
  virtual void  v23(); // _ZN7S3282C33v23Ev
  virtual void  v24(); // _ZN7S3282C33v24Ev
  virtual void  v25(); // _ZN7S3282C33v25Ev
  virtual void  v26(); // _ZN7S3282C33v26Ev
  virtual void  v27(); // _ZN7S3282C33v27Ev
  virtual void  v28(); // _ZN7S3282C33v28Ev
  virtual void  v29(); // _ZN7S3282C33v29Ev
  virtual void  v30(); // _ZN7S3282C33v30Ev
  virtual void  v31(); // _ZN7S3282C33v31Ev
  virtual void  v32(); // _ZN7S3282C33v32Ev
  virtual void  v33(); // _ZN7S3282C33v33Ev
  virtual void  v34(); // _ZN7S3282C33v34Ev
  virtual void  v35(); // _ZN7S3282C33v35Ev
  virtual void  v36(); // _ZN7S3282C33v36Ev
  virtual void  v37(); // _ZN7S3282C33v37Ev
  virtual void  v38(); // _ZN7S3282C33v38Ev
  virtual void  v39(); // _ZN7S3282C33v39Ev
  virtual void  v40(); // _ZN7S3282C33v40Ev
  virtual void  v41(); // _ZN7S3282C33v41Ev
  virtual void  v42(); // _ZN7S3282C33v42Ev
  virtual void  v43(); // _ZN7S3282C33v43Ev
  virtual void  v44(); // _ZN7S3282C33v44Ev
  virtual void  v45(); // _ZN7S3282C33v45Ev
  virtual void  v46(); // _ZN7S3282C33v46Ev
  virtual void  v47(); // _ZN7S3282C33v47Ev
  virtual void  v48(); // _ZN7S3282C33v48Ev
  virtual void  v49(); // _ZN7S3282C33v49Ev
  virtual void  v50(); // _ZN7S3282C33v50Ev
  virtual void  v51(); // _ZN7S3282C33v51Ev
  virtual void  v52(); // _ZN7S3282C33v52Ev
  virtual void  v53(); // _ZN7S3282C33v53Ev
  virtual void  v54(); // _ZN7S3282C33v54Ev
  virtual void  v55(); // _ZN7S3282C33v55Ev
  virtual void  v56(); // _ZN7S3282C33v56Ev
  virtual void  v57(); // _ZN7S3282C33v57Ev
  virtual void  v58(); // _ZN7S3282C33v58Ev
  virtual void  v59(); // _ZN7S3282C33v59Ev
  virtual void  v60(); // _ZN7S3282C33v60Ev
  virtual void  v61(); // _ZN7S3282C33v61Ev
  virtual void  v62(); // _ZN7S3282C33v62Ev
  virtual void  v63(); // _ZN7S3282C33v63Ev
  virtual void  v64(); // _ZN7S3282C33v64Ev
  virtual void  v65(); // _ZN7S3282C33v65Ev
  virtual void  v66(); // _ZN7S3282C33v66Ev
  virtual void  v67(); // _ZN7S3282C33v67Ev
  virtual void  v68(); // _ZN7S3282C33v68Ev
  S3282C3(); // tgen
};
//SIG(-1 S3282C3) 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]}


 S3282C3 ::~S3282C3(){ note_dtor("S3282C3", this);}
void  S3282C3 ::v5(){vfunc_called(this, "_ZN7S3282C32v5Ev");}
void  S3282C3 ::v6(){vfunc_called(this, "_ZN7S3282C32v6Ev");}
void  S3282C3 ::v7(){vfunc_called(this, "_ZN7S3282C32v7Ev");}
void  S3282C3 ::v8(){vfunc_called(this, "_ZN7S3282C32v8Ev");}
void  S3282C3 ::v9(){vfunc_called(this, "_ZN7S3282C32v9Ev");}
void  S3282C3 ::v10(){vfunc_called(this, "_ZN7S3282C33v10Ev");}
void  S3282C3 ::v11(){vfunc_called(this, "_ZN7S3282C33v11Ev");}
void  S3282C3 ::v12(){vfunc_called(this, "_ZN7S3282C33v12Ev");}
void  S3282C3 ::v13(){vfunc_called(this, "_ZN7S3282C33v13Ev");}
void  S3282C3 ::v14(){vfunc_called(this, "_ZN7S3282C33v14Ev");}
void  S3282C3 ::v15(){vfunc_called(this, "_ZN7S3282C33v15Ev");}
void  S3282C3 ::v16(){vfunc_called(this, "_ZN7S3282C33v16Ev");}
void  S3282C3 ::v17(){vfunc_called(this, "_ZN7S3282C33v17Ev");}
void  S3282C3 ::v18(){vfunc_called(this, "_ZN7S3282C33v18Ev");}
void  S3282C3 ::v19(){vfunc_called(this, "_ZN7S3282C33v19Ev");}
void  S3282C3 ::v20(){vfunc_called(this, "_ZN7S3282C33v20Ev");}
void  S3282C3 ::v21(){vfunc_called(this, "_ZN7S3282C33v21Ev");}
void  S3282C3 ::v22(){vfunc_called(this, "_ZN7S3282C33v22Ev");}
void  S3282C3 ::v23(){vfunc_called(this, "_ZN7S3282C33v23Ev");}
void  S3282C3 ::v24(){vfunc_called(this, "_ZN7S3282C33v24Ev");}
void  S3282C3 ::v25(){vfunc_called(this, "_ZN7S3282C33v25Ev");}
void  S3282C3 ::v26(){vfunc_called(this, "_ZN7S3282C33v26Ev");}
void  S3282C3 ::v27(){vfunc_called(this, "_ZN7S3282C33v27Ev");}
void  S3282C3 ::v28(){vfunc_called(this, "_ZN7S3282C33v28Ev");}
void  S3282C3 ::v29(){vfunc_called(this, "_ZN7S3282C33v29Ev");}
void  S3282C3 ::v30(){vfunc_called(this, "_ZN7S3282C33v30Ev");}
void  S3282C3 ::v31(){vfunc_called(this, "_ZN7S3282C33v31Ev");}
void  S3282C3 ::v32(){vfunc_called(this, "_ZN7S3282C33v32Ev");}
void  S3282C3 ::v33(){vfunc_called(this, "_ZN7S3282C33v33Ev");}
void  S3282C3 ::v34(){vfunc_called(this, "_ZN7S3282C33v34Ev");}
void  S3282C3 ::v35(){vfunc_called(this, "_ZN7S3282C33v35Ev");}
void  S3282C3 ::v36(){vfunc_called(this, "_ZN7S3282C33v36Ev");}
void  S3282C3 ::v37(){vfunc_called(this, "_ZN7S3282C33v37Ev");}
void  S3282C3 ::v38(){vfunc_called(this, "_ZN7S3282C33v38Ev");}
void  S3282C3 ::v39(){vfunc_called(this, "_ZN7S3282C33v39Ev");}
void  S3282C3 ::v40(){vfunc_called(this, "_ZN7S3282C33v40Ev");}
void  S3282C3 ::v41(){vfunc_called(this, "_ZN7S3282C33v41Ev");}
void  S3282C3 ::v42(){vfunc_called(this, "_ZN7S3282C33v42Ev");}
void  S3282C3 ::v43(){vfunc_called(this, "_ZN7S3282C33v43Ev");}
void  S3282C3 ::v44(){vfunc_called(this, "_ZN7S3282C33v44Ev");}
void  S3282C3 ::v45(){vfunc_called(this, "_ZN7S3282C33v45Ev");}
void  S3282C3 ::v46(){vfunc_called(this, "_ZN7S3282C33v46Ev");}
void  S3282C3 ::v47(){vfunc_called(this, "_ZN7S3282C33v47Ev");}
void  S3282C3 ::v48(){vfunc_called(this, "_ZN7S3282C33v48Ev");}
void  S3282C3 ::v49(){vfunc_called(this, "_ZN7S3282C33v49Ev");}
void  S3282C3 ::v50(){vfunc_called(this, "_ZN7S3282C33v50Ev");}
void  S3282C3 ::v51(){vfunc_called(this, "_ZN7S3282C33v51Ev");}
void  S3282C3 ::v52(){vfunc_called(this, "_ZN7S3282C33v52Ev");}
void  S3282C3 ::v53(){vfunc_called(this, "_ZN7S3282C33v53Ev");}
void  S3282C3 ::v54(){vfunc_called(this, "_ZN7S3282C33v54Ev");}
void  S3282C3 ::v55(){vfunc_called(this, "_ZN7S3282C33v55Ev");}
void  S3282C3 ::v56(){vfunc_called(this, "_ZN7S3282C33v56Ev");}
void  S3282C3 ::v57(){vfunc_called(this, "_ZN7S3282C33v57Ev");}
void  S3282C3 ::v58(){vfunc_called(this, "_ZN7S3282C33v58Ev");}
void  S3282C3 ::v59(){vfunc_called(this, "_ZN7S3282C33v59Ev");}
void  S3282C3 ::v60(){vfunc_called(this, "_ZN7S3282C33v60Ev");}
void  S3282C3 ::v61(){vfunc_called(this, "_ZN7S3282C33v61Ev");}
void  S3282C3 ::v62(){vfunc_called(this, "_ZN7S3282C33v62Ev");}
void  S3282C3 ::v63(){vfunc_called(this, "_ZN7S3282C33v63Ev");}
void  S3282C3 ::v64(){vfunc_called(this, "_ZN7S3282C33v64Ev");}
void  S3282C3 ::v65(){vfunc_called(this, "_ZN7S3282C33v65Ev");}
void  S3282C3 ::v66(){vfunc_called(this, "_ZN7S3282C33v66Ev");}
void  S3282C3 ::v67(){vfunc_called(this, "_ZN7S3282C33v67Ev");}
void  S3282C3 ::v68(){vfunc_called(this, "_ZN7S3282C33v68Ev");}
S3282C3 ::S3282C3(){ note_ctor("S3282C3", this);} // tgen

static void Test_S3282C3()
{
  extern Class_Descriptor cd_S3282C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S3282C3, buf);
    S3282C3 *dp, &lv = *(dp=new (buf) S3282C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S3282C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3282C3)");
    check_field_offset(lv, s3282c3f0, ABISELECT(8,4), "S3282C3.s3282c3f0");
    check_field_offset(lv, s3282c3f1, ABISELECT(16,8), "S3282C3.s3282c3f1");
    check_field_offset(lv, s3282c3f2, ABISELECT(24,16), "S3282C3.s3282c3f2");
    check_field_offset(lv, s3282c3f3, ABISELECT(56,32), "S3282C3.s3282c3f3");
    check_field_offset(lv, s3282c3f4, ABISELECT(64,40), "S3282C3.s3282c3f4");
    check_field_offset(lv, s3282c3f5, ABISELECT(72,44), "S3282C3.s3282c3f5");
    check_field_offset(lv, s3282c3f6, ABISELECT(80,52), "S3282C3.s3282c3f6");
    test_class_info(&lv, &cd_S3282C3);
    dp->~S3282C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3282C3(Test_S3282C3, "S3282C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S3282C3C1Ev();
extern void _ZN7S3282C3D1Ev();
Name_Map name_map_S3282C3[] = {
  NSPAIR(_ZN7S3282C3C1Ev),
  NSPAIR(_ZN7S3282C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3282C3[];
extern void _ZN7S3282C3D1Ev();
extern void _ZN7S3282C3D0Ev();
extern void _ZN7S3282C32v5Ev();
extern void _ZN7S3282C32v6Ev();
extern void _ZN7S3282C32v7Ev();
extern void _ZN7S3282C32v8Ev();
extern void _ZN7S3282C32v9Ev();
extern void _ZN7S3282C33v10Ev();
extern void _ZN7S3282C33v11Ev();
extern void _ZN7S3282C33v12Ev();
extern void _ZN7S3282C33v13Ev();
extern void _ZN7S3282C33v14Ev();
extern void _ZN7S3282C33v15Ev();
extern void _ZN7S3282C33v16Ev();
extern void _ZN7S3282C33v17Ev();
extern void _ZN7S3282C33v18Ev();
extern void _ZN7S3282C33v19Ev();
extern void _ZN7S3282C33v20Ev();
extern void _ZN7S3282C33v21Ev();
extern void _ZN7S3282C33v22Ev();
extern void _ZN7S3282C33v23Ev();
extern void _ZN7S3282C33v24Ev();
extern void _ZN7S3282C33v25Ev();
extern void _ZN7S3282C33v26Ev();
extern void _ZN7S3282C33v27Ev();
extern void _ZN7S3282C33v28Ev();
extern void _ZN7S3282C33v29Ev();
extern void _ZN7S3282C33v30Ev();
extern void _ZN7S3282C33v31Ev();
extern void _ZN7S3282C33v32Ev();
extern void _ZN7S3282C33v33Ev();
extern void _ZN7S3282C33v34Ev();
extern void _ZN7S3282C33v35Ev();
extern void _ZN7S3282C33v36Ev();
extern void _ZN7S3282C33v37Ev();
extern void _ZN7S3282C33v38Ev();
extern void _ZN7S3282C33v39Ev();
extern void _ZN7S3282C33v40Ev();
extern void _ZN7S3282C33v41Ev();
extern void _ZN7S3282C33v42Ev();
extern void _ZN7S3282C33v43Ev();
extern void _ZN7S3282C33v44Ev();
extern void _ZN7S3282C33v45Ev();
extern void _ZN7S3282C33v46Ev();
extern void _ZN7S3282C33v47Ev();
extern void _ZN7S3282C33v48Ev();
extern void _ZN7S3282C33v49Ev();
extern void _ZN7S3282C33v50Ev();
extern void _ZN7S3282C33v51Ev();
extern void _ZN7S3282C33v52Ev();
extern void _ZN7S3282C33v53Ev();
extern void _ZN7S3282C33v54Ev();
extern void _ZN7S3282C33v55Ev();
extern void _ZN7S3282C33v56Ev();
extern void _ZN7S3282C33v57Ev();
extern void _ZN7S3282C33v58Ev();
extern void _ZN7S3282C33v59Ev();
extern void _ZN7S3282C33v60Ev();
extern void _ZN7S3282C33v61Ev();
extern void _ZN7S3282C33v62Ev();
extern void _ZN7S3282C33v63Ev();
extern void _ZN7S3282C33v64Ev();
extern void _ZN7S3282C33v65Ev();
extern void _ZN7S3282C33v66Ev();
extern void _ZN7S3282C33v67Ev();
extern void _ZN7S3282C33v68Ev();
static  VTBL_ENTRY vtc_S3282C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3282C3[0]),
  (VTBL_ENTRY)&_ZN7S3282C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3282C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3282C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3282C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3282C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3282C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3282C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v68Ev,
};
extern VTBL_ENTRY _ZTI7S3282C3[];
extern  VTBL_ENTRY _ZTV7S3282C3[];
Class_Descriptor cd_S3282C3 = {  "S3282C3", // class name
  0,0,//no base classes
  &(vtc_S3282C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S3282C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3282C3),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  S3282C2  : S3282C3 {
  unsigned int s3282c2f0:1;
  unsigned int s3282c2f1:1;
  unsigned int s3282c2f2:1;
  ::S3216C4_nt s3282c2f3;
  int s3282c2f4[6];
  char s3282c2f5;
  virtual  ~S3282C2(); // _ZN7S3282C2D1Ev
  virtual void  v69(); // _ZN7S3282C23v69Ev
  virtual void  v70(); // _ZN7S3282C23v70Ev
  virtual void  v71(); // _ZN7S3282C23v71Ev
  virtual void  v72(); // _ZN7S3282C23v72Ev
  S3282C2(); // tgen
};
//SIG(-1 S3282C2) C1{ BC2{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 Fi:1 Fi:1 Fi:1 FC3 Fi[6] Fc}


 S3282C2 ::~S3282C2(){ note_dtor("S3282C2", this);}
void  S3282C2 ::v69(){vfunc_called(this, "_ZN7S3282C23v69Ev");}
void  S3282C2 ::v70(){vfunc_called(this, "_ZN7S3282C23v70Ev");}
void  S3282C2 ::v71(){vfunc_called(this, "_ZN7S3282C23v71Ev");}
void  S3282C2 ::v72(){vfunc_called(this, "_ZN7S3282C23v72Ev");}
S3282C2 ::S3282C2(){ note_ctor("S3282C2", this);} // tgen

static void Test_S3282C2()
{
  extern Class_Descriptor cd_S3282C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,26)];
    init_test(&cd_S3282C2, buf);
    S3282C2 *dp, &lv = *(dp=new (buf) S3282C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,100), "sizeof(S3282C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3282C2)");
    check_base_class_offset(lv, (S3282C3*), 0, "S3282C2");
    set_bf_and_test(lv, s3282c2f0, ABISELECT(96,60), 0, 1, 1, "S3282C2");
    set_bf_and_test(lv, s3282c2f1, ABISELECT(96,60), 1, 1, 1, "S3282C2");
    set_bf_and_test(lv, s3282c2f2, ABISELECT(96,60), 2, 1, 1, "S3282C2");
    check_field_offset(lv, s3282c2f3, ABISELECT(100,64), "S3282C2.s3282c2f3");
    check_field_offset(lv, s3282c2f4, ABISELECT(108,72), "S3282C2.s3282c2f4");
    check_field_offset(lv, s3282c2f5, ABISELECT(132,96), "S3282C2.s3282c2f5");
    test_class_info(&lv, &cd_S3282C2);
    dp->~S3282C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3282C2(Test_S3282C2, "S3282C2", ABISELECT(136,100));

#else // __cplusplus

extern void _ZN7S3282C2C1Ev();
extern void _ZN7S3282C2D1Ev();
Name_Map name_map_S3282C2[] = {
  NSPAIR(_ZN7S3282C2C1Ev),
  NSPAIR(_ZN7S3282C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3282C3;
extern VTBL_ENTRY _ZTI7S3282C3[];
extern  VTBL_ENTRY _ZTV7S3282C3[];
static Base_Class bases_S3282C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3282C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3282C2[];
extern void _ZN7S3282C2D1Ev();
extern void _ZN7S3282C2D0Ev();
extern void _ZN7S3282C32v5Ev();
extern void _ZN7S3282C32v6Ev();
extern void _ZN7S3282C32v7Ev();
extern void _ZN7S3282C32v8Ev();
extern void _ZN7S3282C32v9Ev();
extern void _ZN7S3282C33v10Ev();
extern void _ZN7S3282C33v11Ev();
extern void _ZN7S3282C33v12Ev();
extern void _ZN7S3282C33v13Ev();
extern void _ZN7S3282C33v14Ev();
extern void _ZN7S3282C33v15Ev();
extern void _ZN7S3282C33v16Ev();
extern void _ZN7S3282C33v17Ev();
extern void _ZN7S3282C33v18Ev();
extern void _ZN7S3282C33v19Ev();
extern void _ZN7S3282C33v20Ev();
extern void _ZN7S3282C33v21Ev();
extern void _ZN7S3282C33v22Ev();
extern void _ZN7S3282C33v23Ev();
extern void _ZN7S3282C33v24Ev();
extern void _ZN7S3282C33v25Ev();
extern void _ZN7S3282C33v26Ev();
extern void _ZN7S3282C33v27Ev();
extern void _ZN7S3282C33v28Ev();
extern void _ZN7S3282C33v29Ev();
extern void _ZN7S3282C33v30Ev();
extern void _ZN7S3282C33v31Ev();
extern void _ZN7S3282C33v32Ev();
extern void _ZN7S3282C33v33Ev();
extern void _ZN7S3282C33v34Ev();
extern void _ZN7S3282C33v35Ev();
extern void _ZN7S3282C33v36Ev();
extern void _ZN7S3282C33v37Ev();
extern void _ZN7S3282C33v38Ev();
extern void _ZN7S3282C33v39Ev();
extern void _ZN7S3282C33v40Ev();
extern void _ZN7S3282C33v41Ev();
extern void _ZN7S3282C33v42Ev();
extern void _ZN7S3282C33v43Ev();
extern void _ZN7S3282C33v44Ev();
extern void _ZN7S3282C33v45Ev();
extern void _ZN7S3282C33v46Ev();
extern void _ZN7S3282C33v47Ev();
extern void _ZN7S3282C33v48Ev();
extern void _ZN7S3282C33v49Ev();
extern void _ZN7S3282C33v50Ev();
extern void _ZN7S3282C33v51Ev();
extern void _ZN7S3282C33v52Ev();
extern void _ZN7S3282C33v53Ev();
extern void _ZN7S3282C33v54Ev();
extern void _ZN7S3282C33v55Ev();
extern void _ZN7S3282C33v56Ev();
extern void _ZN7S3282C33v57Ev();
extern void _ZN7S3282C33v58Ev();
extern void _ZN7S3282C33v59Ev();
extern void _ZN7S3282C33v60Ev();
extern void _ZN7S3282C33v61Ev();
extern void _ZN7S3282C33v62Ev();
extern void _ZN7S3282C33v63Ev();
extern void _ZN7S3282C33v64Ev();
extern void _ZN7S3282C33v65Ev();
extern void _ZN7S3282C33v66Ev();
extern void _ZN7S3282C33v67Ev();
extern void _ZN7S3282C33v68Ev();
extern void _ZN7S3282C23v69Ev();
extern void _ZN7S3282C23v70Ev();
extern void _ZN7S3282C23v71Ev();
extern void _ZN7S3282C23v72Ev();
static  VTBL_ENTRY vtc_S3282C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3282C2[0]),
  (VTBL_ENTRY)&_ZN7S3282C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3282C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3282C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3282C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3282C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3282C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3282C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3282C23v69Ev,
  (VTBL_ENTRY)&_ZN7S3282C23v70Ev,
  (VTBL_ENTRY)&_ZN7S3282C23v71Ev,
  (VTBL_ENTRY)&_ZN7S3282C23v72Ev,
};
extern VTBL_ENTRY _ZTI7S3282C2[];
extern  VTBL_ENTRY _ZTV7S3282C2[];
Class_Descriptor cd_S3282C2 = {  "S3282C2", // class name
  bases_S3282C2, 1,
  &(vtc_S3282C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,100), // object size
  NSPAIRA(_ZTI7S3282C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3282C2),72, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3282C1  : S3282C2 {
  int s3282c1f0[2];
  unsigned int s3282c1f1:1;
  int s3282c1f2[2];
  virtual  ~S3282C1(); // _ZN7S3282C1D1Ev
  virtual void  v1(); // _ZN7S3282C12v1Ev
  virtual void  v2(); // _ZN7S3282C12v2Ev
  virtual void  v3(); // _ZN7S3282C12v3Ev
  virtual void  v4(); // _ZN7S3282C12v4Ev
  S3282C1(); // tgen
};
//SIG(1 S3282C1) C1{ BC2{ BC3{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 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 FC4{ m Fi[2]} Fp[2]} vd v69 v70 v71 v72 Fi:1 Fi:1 Fi:1 FC4 Fi[6] Fc} vd v1 v2 v3 v4 Fi[2] Fi:1 Fi[2]}


 S3282C1 ::~S3282C1(){ note_dtor("S3282C1", this);}
void  S3282C1 ::v1(){vfunc_called(this, "_ZN7S3282C12v1Ev");}
void  S3282C1 ::v2(){vfunc_called(this, "_ZN7S3282C12v2Ev");}
void  S3282C1 ::v3(){vfunc_called(this, "_ZN7S3282C12v3Ev");}
void  S3282C1 ::v4(){vfunc_called(this, "_ZN7S3282C12v4Ev");}
S3282C1 ::S3282C1(){ note_ctor("S3282C1", this);} // tgen

static void Test_S3282C1()
{
  extern Class_Descriptor cd_S3282C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,31)];
    init_test(&cd_S3282C1, buf);
    S3282C1 *dp, &lv = *(dp=new (buf) S3282C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,120), "sizeof(S3282C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3282C1)");
    check_base_class_offset(lv, (S3282C3*)(S3282C2*), 0, "S3282C1");
    check_base_class_offset(lv, (S3282C2*), 0, "S3282C1");
    check_field_offset(lv, s3282c1f0, ABISELECT(136,100), "S3282C1.s3282c1f0");
    set_bf_and_test(lv, s3282c1f1, ABISELECT(144,108), 0, 1, 1, "S3282C1");
    check_field_offset(lv, s3282c1f2, ABISELECT(148,112), "S3282C1.s3282c1f2");
    test_class_info(&lv, &cd_S3282C1);
    dp->~S3282C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3282C1(Test_S3282C1, "S3282C1", ABISELECT(160,120));

#else // __cplusplus

extern void _ZN7S3282C1C1Ev();
extern void _ZN7S3282C1D1Ev();
Name_Map name_map_S3282C1[] = {
  NSPAIR(_ZN7S3282C1C1Ev),
  NSPAIR(_ZN7S3282C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3282C3;
extern VTBL_ENTRY _ZTI7S3282C3[];
extern  VTBL_ENTRY _ZTV7S3282C3[];
extern Class_Descriptor cd_S3282C2;
extern VTBL_ENTRY _ZTI7S3282C2[];
extern  VTBL_ENTRY _ZTV7S3282C2[];
static Base_Class bases_S3282C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3282C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3282C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S3282C1[];
extern void _ZN7S3282C1D1Ev();
extern void _ZN7S3282C1D0Ev();
extern void _ZN7S3282C32v5Ev();
extern void _ZN7S3282C32v6Ev();
extern void _ZN7S3282C32v7Ev();
extern void _ZN7S3282C32v8Ev();
extern void _ZN7S3282C32v9Ev();
extern void _ZN7S3282C33v10Ev();
extern void _ZN7S3282C33v11Ev();
extern void _ZN7S3282C33v12Ev();
extern void _ZN7S3282C33v13Ev();
extern void _ZN7S3282C33v14Ev();
extern void _ZN7S3282C33v15Ev();
extern void _ZN7S3282C33v16Ev();
extern void _ZN7S3282C33v17Ev();
extern void _ZN7S3282C33v18Ev();
extern void _ZN7S3282C33v19Ev();
extern void _ZN7S3282C33v20Ev();
extern void _ZN7S3282C33v21Ev();
extern void _ZN7S3282C33v22Ev();
extern void _ZN7S3282C33v23Ev();
extern void _ZN7S3282C33v24Ev();
extern void _ZN7S3282C33v25Ev();
extern void _ZN7S3282C33v26Ev();
extern void _ZN7S3282C33v27Ev();
extern void _ZN7S3282C33v28Ev();
extern void _ZN7S3282C33v29Ev();
extern void _ZN7S3282C33v30Ev();
extern void _ZN7S3282C33v31Ev();
extern void _ZN7S3282C33v32Ev();
extern void _ZN7S3282C33v33Ev();
extern void _ZN7S3282C33v34Ev();
extern void _ZN7S3282C33v35Ev();
extern void _ZN7S3282C33v36Ev();
extern void _ZN7S3282C33v37Ev();
extern void _ZN7S3282C33v38Ev();
extern void _ZN7S3282C33v39Ev();
extern void _ZN7S3282C33v40Ev();
extern void _ZN7S3282C33v41Ev();
extern void _ZN7S3282C33v42Ev();
extern void _ZN7S3282C33v43Ev();
extern void _ZN7S3282C33v44Ev();
extern void _ZN7S3282C33v45Ev();
extern void _ZN7S3282C33v46Ev();
extern void _ZN7S3282C33v47Ev();
extern void _ZN7S3282C33v48Ev();
extern void _ZN7S3282C33v49Ev();
extern void _ZN7S3282C33v50Ev();
extern void _ZN7S3282C33v51Ev();
extern void _ZN7S3282C33v52Ev();
extern void _ZN7S3282C33v53Ev();
extern void _ZN7S3282C33v54Ev();
extern void _ZN7S3282C33v55Ev();
extern void _ZN7S3282C33v56Ev();
extern void _ZN7S3282C33v57Ev();
extern void _ZN7S3282C33v58Ev();
extern void _ZN7S3282C33v59Ev();
extern void _ZN7S3282C33v60Ev();
extern void _ZN7S3282C33v61Ev();
extern void _ZN7S3282C33v62Ev();
extern void _ZN7S3282C33v63Ev();
extern void _ZN7S3282C33v64Ev();
extern void _ZN7S3282C33v65Ev();
extern void _ZN7S3282C33v66Ev();
extern void _ZN7S3282C33v67Ev();
extern void _ZN7S3282C33v68Ev();
extern void _ZN7S3282C23v69Ev();
extern void _ZN7S3282C23v70Ev();
extern void _ZN7S3282C23v71Ev();
extern void _ZN7S3282C23v72Ev();
extern void _ZN7S3282C12v1Ev();
extern void _ZN7S3282C12v2Ev();
extern void _ZN7S3282C12v3Ev();
extern void _ZN7S3282C12v4Ev();
static  VTBL_ENTRY vtc_S3282C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3282C1[0]),
  (VTBL_ENTRY)&_ZN7S3282C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3282C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3282C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3282C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3282C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3282C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3282C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3282C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3282C23v69Ev,
  (VTBL_ENTRY)&_ZN7S3282C23v70Ev,
  (VTBL_ENTRY)&_ZN7S3282C23v71Ev,
  (VTBL_ENTRY)&_ZN7S3282C23v72Ev,
  (VTBL_ENTRY)&_ZN7S3282C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3282C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3282C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3282C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S3282C1[];
extern  VTBL_ENTRY _ZTV7S3282C1[];
Class_Descriptor cd_S3282C1 = {  "S3282C1", // class name
  bases_S3282C1, 2,
  &(vtc_S3282C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,120), // object size
  NSPAIRA(_ZTI7S3282C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3282C1),76, //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  S6964C2  {
  int s6964c2f0;
  __tsi64 s6964c2f1;
  void *s6964c2f2[4];
  int s6964c2f3[2];
  void *s6964c2f4;
  ::S3216C4_nt s6964c2f5;
  void *s6964c2f6[2];
  virtual  ~S6964C2(); // _ZN7S6964C2D1Ev
  virtual void  v5(); // _ZN7S6964C22v5Ev
  virtual void  v6(); // _ZN7S6964C22v6Ev
  virtual void  v7(); // _ZN7S6964C22v7Ev
  virtual void  v8(); // _ZN7S6964C22v8Ev
  virtual void  v9(); // _ZN7S6964C22v9Ev
  virtual void  v10(); // _ZN7S6964C23v10Ev
  virtual void  v11(); // _ZN7S6964C23v11Ev
  virtual void  v12(); // _ZN7S6964C23v12Ev
  virtual void  v13(); // _ZN7S6964C23v13Ev
  virtual void  v14(); // _ZN7S6964C23v14Ev
  virtual void  v15(); // _ZN7S6964C23v15Ev
  virtual void  v16(); // _ZN7S6964C23v16Ev
  virtual void  v17(); // _ZN7S6964C23v17Ev
  virtual void  v18(); // _ZN7S6964C23v18Ev
  virtual void  v19(); // _ZN7S6964C23v19Ev
  virtual void  v20(); // _ZN7S6964C23v20Ev
  virtual void  v21(); // _ZN7S6964C23v21Ev
  virtual void  v22(); // _ZN7S6964C23v22Ev
  virtual void  v23(); // _ZN7S6964C23v23Ev
  virtual void  v24(); // _ZN7S6964C23v24Ev
  virtual void  v25(); // _ZN7S6964C23v25Ev
  virtual void  v26(); // _ZN7S6964C23v26Ev
  virtual void  v27(); // _ZN7S6964C23v27Ev
  virtual void  v28(); // _ZN7S6964C23v28Ev
  virtual void  v29(); // _ZN7S6964C23v29Ev
  virtual void  v30(); // _ZN7S6964C23v30Ev
  virtual void  v31(); // _ZN7S6964C23v31Ev
  virtual void  v32(); // _ZN7S6964C23v32Ev
  virtual void  v33(); // _ZN7S6964C23v33Ev
  virtual void  v34(); // _ZN7S6964C23v34Ev
  virtual void  v35(); // _ZN7S6964C23v35Ev
  virtual void  v36(); // _ZN7S6964C23v36Ev
  virtual void  v37(); // _ZN7S6964C23v37Ev
  virtual void  v38(); // _ZN7S6964C23v38Ev
  virtual void  v39(); // _ZN7S6964C23v39Ev
  virtual void  v40(); // _ZN7S6964C23v40Ev
  virtual void  v41(); // _ZN7S6964C23v41Ev
  virtual void  v42(); // _ZN7S6964C23v42Ev
  virtual void  v43(); // _ZN7S6964C23v43Ev
  virtual void  v44(); // _ZN7S6964C23v44Ev
  virtual void  v45(); // _ZN7S6964C23v45Ev
  virtual void  v46(); // _ZN7S6964C23v46Ev
  virtual void  v47(); // _ZN7S6964C23v47Ev
  virtual void  v48(); // _ZN7S6964C23v48Ev
  virtual void  v49(); // _ZN7S6964C23v49Ev
  virtual void  v50(); // _ZN7S6964C23v50Ev
  virtual void  v51(); // _ZN7S6964C23v51Ev
  virtual void  v52(); // _ZN7S6964C23v52Ev
  virtual void  v53(); // _ZN7S6964C23v53Ev
  virtual void  v54(); // _ZN7S6964C23v54Ev
  virtual void  v55(); // _ZN7S6964C23v55Ev
  virtual void  v56(); // _ZN7S6964C23v56Ev
  virtual void  v57(); // _ZN7S6964C23v57Ev
  virtual void  v58(); // _ZN7S6964C23v58Ev
  virtual void  v59(); // _ZN7S6964C23v59Ev
  virtual void  v60(); // _ZN7S6964C23v60Ev
  virtual void  v61(); // _ZN7S6964C23v61Ev
  virtual void  v62(); // _ZN7S6964C23v62Ev
  virtual void  v63(); // _ZN7S6964C23v63Ev
  virtual void  v64(); // _ZN7S6964C23v64Ev
  virtual void  v65(); // _ZN7S6964C23v65Ev
  virtual void  v66(); // _ZN7S6964C23v66Ev
  virtual void  v67(); // _ZN7S6964C23v67Ev
  virtual void  v68(); // _ZN7S6964C23v68Ev
  S6964C2(); // tgen
};
//SIG(-1 S6964C2) 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]}


 S6964C2 ::~S6964C2(){ note_dtor("S6964C2", this);}
void  S6964C2 ::v5(){vfunc_called(this, "_ZN7S6964C22v5Ev");}
void  S6964C2 ::v6(){vfunc_called(this, "_ZN7S6964C22v6Ev");}
void  S6964C2 ::v7(){vfunc_called(this, "_ZN7S6964C22v7Ev");}
void  S6964C2 ::v8(){vfunc_called(this, "_ZN7S6964C22v8Ev");}
void  S6964C2 ::v9(){vfunc_called(this, "_ZN7S6964C22v9Ev");}
void  S6964C2 ::v10(){vfunc_called(this, "_ZN7S6964C23v10Ev");}
void  S6964C2 ::v11(){vfunc_called(this, "_ZN7S6964C23v11Ev");}
void  S6964C2 ::v12(){vfunc_called(this, "_ZN7S6964C23v12Ev");}
void  S6964C2 ::v13(){vfunc_called(this, "_ZN7S6964C23v13Ev");}
void  S6964C2 ::v14(){vfunc_called(this, "_ZN7S6964C23v14Ev");}
void  S6964C2 ::v15(){vfunc_called(this, "_ZN7S6964C23v15Ev");}
void  S6964C2 ::v16(){vfunc_called(this, "_ZN7S6964C23v16Ev");}
void  S6964C2 ::v17(){vfunc_called(this, "_ZN7S6964C23v17Ev");}
void  S6964C2 ::v18(){vfunc_called(this, "_ZN7S6964C23v18Ev");}
void  S6964C2 ::v19(){vfunc_called(this, "_ZN7S6964C23v19Ev");}
void  S6964C2 ::v20(){vfunc_called(this, "_ZN7S6964C23v20Ev");}
void  S6964C2 ::v21(){vfunc_called(this, "_ZN7S6964C23v21Ev");}
void  S6964C2 ::v22(){vfunc_called(this, "_ZN7S6964C23v22Ev");}
void  S6964C2 ::v23(){vfunc_called(this, "_ZN7S6964C23v23Ev");}
void  S6964C2 ::v24(){vfunc_called(this, "_ZN7S6964C23v24Ev");}
void  S6964C2 ::v25(){vfunc_called(this, "_ZN7S6964C23v25Ev");}
void  S6964C2 ::v26(){vfunc_called(this, "_ZN7S6964C23v26Ev");}
void  S6964C2 ::v27(){vfunc_called(this, "_ZN7S6964C23v27Ev");}
void  S6964C2 ::v28(){vfunc_called(this, "_ZN7S6964C23v28Ev");}
void  S6964C2 ::v29(){vfunc_called(this, "_ZN7S6964C23v29Ev");}
void  S6964C2 ::v30(){vfunc_called(this, "_ZN7S6964C23v30Ev");}
void  S6964C2 ::v31(){vfunc_called(this, "_ZN7S6964C23v31Ev");}
void  S6964C2 ::v32(){vfunc_called(this, "_ZN7S6964C23v32Ev");}
void  S6964C2 ::v33(){vfunc_called(this, "_ZN7S6964C23v33Ev");}
void  S6964C2 ::v34(){vfunc_called(this, "_ZN7S6964C23v34Ev");}
void  S6964C2 ::v35(){vfunc_called(this, "_ZN7S6964C23v35Ev");}
void  S6964C2 ::v36(){vfunc_called(this, "_ZN7S6964C23v36Ev");}
void  S6964C2 ::v37(){vfunc_called(this, "_ZN7S6964C23v37Ev");}
void  S6964C2 ::v38(){vfunc_called(this, "_ZN7S6964C23v38Ev");}
void  S6964C2 ::v39(){vfunc_called(this, "_ZN7S6964C23v39Ev");}
void  S6964C2 ::v40(){vfunc_called(this, "_ZN7S6964C23v40Ev");}
void  S6964C2 ::v41(){vfunc_called(this, "_ZN7S6964C23v41Ev");}
void  S6964C2 ::v42(){vfunc_called(this, "_ZN7S6964C23v42Ev");}
void  S6964C2 ::v43(){vfunc_called(this, "_ZN7S6964C23v43Ev");}
void  S6964C2 ::v44(){vfunc_called(this, "_ZN7S6964C23v44Ev");}
void  S6964C2 ::v45(){vfunc_called(this, "_ZN7S6964C23v45Ev");}
void  S6964C2 ::v46(){vfunc_called(this, "_ZN7S6964C23v46Ev");}
void  S6964C2 ::v47(){vfunc_called(this, "_ZN7S6964C23v47Ev");}
void  S6964C2 ::v48(){vfunc_called(this, "_ZN7S6964C23v48Ev");}
void  S6964C2 ::v49(){vfunc_called(this, "_ZN7S6964C23v49Ev");}
void  S6964C2 ::v50(){vfunc_called(this, "_ZN7S6964C23v50Ev");}
void  S6964C2 ::v51(){vfunc_called(this, "_ZN7S6964C23v51Ev");}
void  S6964C2 ::v52(){vfunc_called(this, "_ZN7S6964C23v52Ev");}
void  S6964C2 ::v53(){vfunc_called(this, "_ZN7S6964C23v53Ev");}
void  S6964C2 ::v54(){vfunc_called(this, "_ZN7S6964C23v54Ev");}
void  S6964C2 ::v55(){vfunc_called(this, "_ZN7S6964C23v55Ev");}
void  S6964C2 ::v56(){vfunc_called(this, "_ZN7S6964C23v56Ev");}
void  S6964C2 ::v57(){vfunc_called(this, "_ZN7S6964C23v57Ev");}
void  S6964C2 ::v58(){vfunc_called(this, "_ZN7S6964C23v58Ev");}
void  S6964C2 ::v59(){vfunc_called(this, "_ZN7S6964C23v59Ev");}
void  S6964C2 ::v60(){vfunc_called(this, "_ZN7S6964C23v60Ev");}
void  S6964C2 ::v61(){vfunc_called(this, "_ZN7S6964C23v61Ev");}
void  S6964C2 ::v62(){vfunc_called(this, "_ZN7S6964C23v62Ev");}
void  S6964C2 ::v63(){vfunc_called(this, "_ZN7S6964C23v63Ev");}
void  S6964C2 ::v64(){vfunc_called(this, "_ZN7S6964C23v64Ev");}
void  S6964C2 ::v65(){vfunc_called(this, "_ZN7S6964C23v65Ev");}
void  S6964C2 ::v66(){vfunc_called(this, "_ZN7S6964C23v66Ev");}
void  S6964C2 ::v67(){vfunc_called(this, "_ZN7S6964C23v67Ev");}
void  S6964C2 ::v68(){vfunc_called(this, "_ZN7S6964C23v68Ev");}
S6964C2 ::S6964C2(){ note_ctor("S6964C2", this);} // tgen

static void Test_S6964C2()
{
  extern Class_Descriptor cd_S6964C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S6964C2, buf);
    S6964C2 *dp, &lv = *(dp=new (buf) S6964C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S6964C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6964C2)");
    check_field_offset(lv, s6964c2f0, ABISELECT(8,4), "S6964C2.s6964c2f0");
    check_field_offset(lv, s6964c2f1, ABISELECT(16,8), "S6964C2.s6964c2f1");
    check_field_offset(lv, s6964c2f2, ABISELECT(24,16), "S6964C2.s6964c2f2");
    check_field_offset(lv, s6964c2f3, ABISELECT(56,32), "S6964C2.s6964c2f3");
    check_field_offset(lv, s6964c2f4, ABISELECT(64,40), "S6964C2.s6964c2f4");
    check_field_offset(lv, s6964c2f5, ABISELECT(72,44), "S6964C2.s6964c2f5");
    check_field_offset(lv, s6964c2f6, ABISELECT(80,52), "S6964C2.s6964c2f6");
    test_class_info(&lv, &cd_S6964C2);
    dp->~S6964C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6964C2(Test_S6964C2, "S6964C2", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S6964C2C1Ev();
extern void _ZN7S6964C2D1Ev();
Name_Map name_map_S6964C2[] = {
  NSPAIR(_ZN7S6964C2C1Ev),
  NSPAIR(_ZN7S6964C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6964C2[];
extern void _ZN7S6964C2D1Ev();
extern void _ZN7S6964C2D0Ev();
extern void _ZN7S6964C22v5Ev();
extern void _ZN7S6964C22v6Ev();
extern void _ZN7S6964C22v7Ev();
extern void _ZN7S6964C22v8Ev();
extern void _ZN7S6964C22v9Ev();
extern void _ZN7S6964C23v10Ev();
extern void _ZN7S6964C23v11Ev();
extern void _ZN7S6964C23v12Ev();
extern void _ZN7S6964C23v13Ev();
extern void _ZN7S6964C23v14Ev();
extern void _ZN7S6964C23v15Ev();
extern void _ZN7S6964C23v16Ev();
extern void _ZN7S6964C23v17Ev();
extern void _ZN7S6964C23v18Ev();
extern void _ZN7S6964C23v19Ev();
extern void _ZN7S6964C23v20Ev();
extern void _ZN7S6964C23v21Ev();
extern void _ZN7S6964C23v22Ev();
extern void _ZN7S6964C23v23Ev();
extern void _ZN7S6964C23v24Ev();
extern void _ZN7S6964C23v25Ev();
extern void _ZN7S6964C23v26Ev();
extern void _ZN7S6964C23v27Ev();
extern void _ZN7S6964C23v28Ev();
extern void _ZN7S6964C23v29Ev();
extern void _ZN7S6964C23v30Ev();
extern void _ZN7S6964C23v31Ev();
extern void _ZN7S6964C23v32Ev();
extern void _ZN7S6964C23v33Ev();
extern void _ZN7S6964C23v34Ev();
extern void _ZN7S6964C23v35Ev();
extern void _ZN7S6964C23v36Ev();
extern void _ZN7S6964C23v37Ev();
extern void _ZN7S6964C23v38Ev();
extern void _ZN7S6964C23v39Ev();
extern void _ZN7S6964C23v40Ev();
extern void _ZN7S6964C23v41Ev();
extern void _ZN7S6964C23v42Ev();
extern void _ZN7S6964C23v43Ev();
extern void _ZN7S6964C23v44Ev();
extern void _ZN7S6964C23v45Ev();
extern void _ZN7S6964C23v46Ev();
extern void _ZN7S6964C23v47Ev();
extern void _ZN7S6964C23v48Ev();
extern void _ZN7S6964C23v49Ev();
extern void _ZN7S6964C23v50Ev();
extern void _ZN7S6964C23v51Ev();
extern void _ZN7S6964C23v52Ev();
extern void _ZN7S6964C23v53Ev();
extern void _ZN7S6964C23v54Ev();
extern void _ZN7S6964C23v55Ev();
extern void _ZN7S6964C23v56Ev();
extern void _ZN7S6964C23v57Ev();
extern void _ZN7S6964C23v58Ev();
extern void _ZN7S6964C23v59Ev();
extern void _ZN7S6964C23v60Ev();
extern void _ZN7S6964C23v61Ev();
extern void _ZN7S6964C23v62Ev();
extern void _ZN7S6964C23v63Ev();
extern void _ZN7S6964C23v64Ev();
extern void _ZN7S6964C23v65Ev();
extern void _ZN7S6964C23v66Ev();
extern void _ZN7S6964C23v67Ev();
extern void _ZN7S6964C23v68Ev();
static  VTBL_ENTRY vtc_S6964C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6964C2[0]),
  (VTBL_ENTRY)&_ZN7S6964C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6964C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6964C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6964C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6964C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6964C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6964C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v12Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v29Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v30Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v31Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v32Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v33Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v51Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v52Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v53Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v54Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v55Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v56Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v57Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v58Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v59Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v60Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v61Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v62Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v63Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v64Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v65Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v66Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v67Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v68Ev,
};
extern VTBL_ENTRY _ZTI7S6964C2[];
extern  VTBL_ENTRY _ZTV7S6964C2[];
Class_Descriptor cd_S6964C2 = {  "S6964C2", // class name
  0,0,//no base classes
  &(vtc_S6964C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S6964C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6964C2),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  S6964C1  : S6964C2 {
  int s6964c1f0[3];
  unsigned int s6964c1f1:1;
  unsigned int s6964c1f2:1;
  ::S3216C13_nt s6964c1f3;
  int s6964c1f4[8];
  void *s6964c1f5[2];
  int s6964c1f6[2];
  void *s6964c1f7[4];
  virtual  ~S6964C1(); // _ZN7S6964C1D1Ev
  virtual void  v1(); // _ZN7S6964C12v1Ev
  virtual void  v2(); // _ZN7S6964C12v2Ev
  virtual void  v3(); // _ZN7S6964C12v3Ev
  virtual void  v4(); // _ZN7S6964C12v4Ev
  S6964C1(); // tgen
};
//SIG(1 S6964C1) C1{ BC2{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 Fi[3] Fi:1 Fi:1 FC4{ m Fi[3]} Fi[8] Fp[2] Fi[2] Fp[4]}


 S6964C1 ::~S6964C1(){ note_dtor("S6964C1", this);}
void  S6964C1 ::v1(){vfunc_called(this, "_ZN7S6964C12v1Ev");}
void  S6964C1 ::v2(){vfunc_called(this, "_ZN7S6964C12v2Ev");}
void  S6964C1 ::v3(){vfunc_called(this, "_ZN7S6964C12v3Ev");}
void  S6964C1 ::v4(){vfunc_called(this, "_ZN7S6964C12v4Ev");}
S6964C1 ::S6964C1(){ note_ctor("S6964C1", this);} // tgen

static void Test_S6964C1()
{
  extern Class_Descriptor cd_S6964C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(28,39)];
    init_test(&cd_S6964C1, buf);
    S6964C1 *dp, &lv = *(dp=new (buf) S6964C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(216,152), "sizeof(S6964C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6964C1)");
    check_base_class_offset(lv, (S6964C2*), 0, "S6964C1");
    check_field_offset(lv, s6964c1f0, ABISELECT(96,60), "S6964C1.s6964c1f0");
    set_bf_and_test(lv, s6964c1f1, ABISELECT(108,72), 0, 1, 1, "S6964C1");
    set_bf_and_test(lv, s6964c1f2, ABISELECT(108,72), 1, 1, 1, "S6964C1");
    check_field_offset(lv, s6964c1f3, ABISELECT(112,76), "S6964C1.s6964c1f3");
    check_field_offset(lv, s6964c1f4, ABISELECT(124,88), "S6964C1.s6964c1f4");
    check_field_offset(lv, s6964c1f5, ABISELECT(160,120), "S6964C1.s6964c1f5");
    check_field_offset(lv, s6964c1f6, ABISELECT(176,128), "S6964C1.s6964c1f6");
    check_field_offset(lv, s6964c1f7, ABISELECT(184,136), "S6964C1.s6964c1f7");
    test_class_info(&lv, &cd_S6964C1);
    dp->~S6964C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6964C1(Test_S6964C1, "S6964C1", ABISELECT(216,152));

#else // __cplusplus

extern void _ZN7S6964C1C1Ev();
extern void _ZN7S6964C1D1Ev();
Name_Map name_map_S6964C1[] = {
  NSPAIR(_ZN7S6964C1C1Ev),
  NSPAIR(_ZN7S6964C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6964C2;
extern VTBL_ENTRY _ZTI7S6964C2[];
extern  VTBL_ENTRY _ZTV7S6964C2[];
static Base_Class bases_S6964C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6964C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6964C1[];
extern void _ZN7S6964C1D1Ev();
extern void _ZN7S6964C1D0Ev();
extern void _ZN7S6964C22v5Ev();
extern void _ZN7S6964C22v6Ev();
extern void _ZN7S6964C22v7Ev();
extern void _ZN7S6964C22v8Ev();
extern void _ZN7S6964C22v9Ev();
extern void _ZN7S6964C23v10Ev();
extern void _ZN7S6964C23v11Ev();
extern void _ZN7S6964C23v12Ev();
extern void _ZN7S6964C23v13Ev();
extern void _ZN7S6964C23v14Ev();
extern void _ZN7S6964C23v15Ev();
extern void _ZN7S6964C23v16Ev();
extern void _ZN7S6964C23v17Ev();
extern void _ZN7S6964C23v18Ev();
extern void _ZN7S6964C23v19Ev();
extern void _ZN7S6964C23v20Ev();
extern void _ZN7S6964C23v21Ev();
extern void _ZN7S6964C23v22Ev();
extern void _ZN7S6964C23v23Ev();
extern void _ZN7S6964C23v24Ev();
extern void _ZN7S6964C23v25Ev();
extern void _ZN7S6964C23v26Ev();
extern void _ZN7S6964C23v27Ev();
extern void _ZN7S6964C23v28Ev();
extern void _ZN7S6964C23v29Ev();
extern void _ZN7S6964C23v30Ev();
extern void _ZN7S6964C23v31Ev();
extern void _ZN7S6964C23v32Ev();
extern void _ZN7S6964C23v33Ev();
extern void _ZN7S6964C23v34Ev();
extern void _ZN7S6964C23v35Ev();
extern void _ZN7S6964C23v36Ev();
extern void _ZN7S6964C23v37Ev();
extern void _ZN7S6964C23v38Ev();
extern void _ZN7S6964C23v39Ev();
extern void _ZN7S6964C23v40Ev();
extern void _ZN7S6964C23v41Ev();
extern void _ZN7S6964C23v42Ev();
extern void _ZN7S6964C23v43Ev();
extern void _ZN7S6964C23v44Ev();
extern void _ZN7S6964C23v45Ev();
extern void _ZN7S6964C23v46Ev();
extern void _ZN7S6964C23v47Ev();
extern void _ZN7S6964C23v48Ev();
extern void _ZN7S6964C23v49Ev();
extern void _ZN7S6964C23v50Ev();
extern void _ZN7S6964C23v51Ev();
extern void _ZN7S6964C23v52Ev();
extern void _ZN7S6964C23v53Ev();
extern void _ZN7S6964C23v54Ev();
extern void _ZN7S6964C23v55Ev();
extern void _ZN7S6964C23v56Ev();
extern void _ZN7S6964C23v57Ev();
extern void _ZN7S6964C23v58Ev();
extern void _ZN7S6964C23v59Ev();
extern void _ZN7S6964C23v60Ev();
extern void _ZN7S6964C23v61Ev();
extern void _ZN7S6964C23v62Ev();
extern void _ZN7S6964C23v63Ev();
extern void _ZN7S6964C23v64Ev();
extern void _ZN7S6964C23v65Ev();
extern void _ZN7S6964C23v66Ev();
extern void _ZN7S6964C23v67Ev();
extern void _ZN7S6964C23v68Ev();
extern void _ZN7S6964C12v1Ev();
extern void _ZN7S6964C12v2Ev();
extern void _ZN7S6964C12v3Ev();
extern void _ZN7S6964C12v4Ev();
static  VTBL_ENTRY vtc_S6964C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6964C1[0]),
  (VTBL_ENTRY)&_ZN7S6964C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6964C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6964C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6964C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6964C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6964C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6964C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v12Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v29Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v30Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v31Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v32Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v33Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v51Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v52Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v53Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v54Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v55Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v56Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v57Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v58Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v59Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v60Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v61Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v62Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v63Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v64Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v65Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v66Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v67Ev,
  (VTBL_ENTRY)&_ZN7S6964C23v68Ev,
  (VTBL_ENTRY)&_ZN7S6964C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6964C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6964C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6964C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S6964C1[];
extern  VTBL_ENTRY _ZTV7S6964C1[];
Class_Descriptor cd_S6964C1 = {  "S6964C1", // class name
  bases_S6964C1, 1,
  &(vtc_S6964C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(216,152), // object size
  NSPAIRA(_ZTI7S6964C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6964C1),72, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3235C3  {
  int s3235c3f0;
  __tsi64 s3235c3f1;
  void *s3235c3f2[4];
  int s3235c3f3[2];
  void *s3235c3f4;
  ::S3216C4_nt s3235c3f5;
  void *s3235c3f6[2];
  virtual  ~S3235C3(); // _ZN7S3235C3D1Ev
  virtual void  v4(); // _ZN7S3235C32v4Ev
  virtual void  v5(); // _ZN7S3235C32v5Ev
  virtual void  v6(); // _ZN7S3235C32v6Ev
  virtual void  v7(); // _ZN7S3235C32v7Ev
  virtual void  v8(); // _ZN7S3235C32v8Ev
  virtual void  v9(); // _ZN7S3235C32v9Ev
  virtual void  v10(); // _ZN7S3235C33v10Ev
  virtual void  v11(); // _ZN7S3235C33v11Ev
  virtual void  v12(); // _ZN7S3235C33v12Ev
  virtual void  v13(); // _ZN7S3235C33v13Ev
  virtual void  v14(); // _ZN7S3235C33v14Ev
  virtual void  v15(); // _ZN7S3235C33v15Ev
  virtual void  v16(); // _ZN7S3235C33v16Ev
  virtual void  v17(); // _ZN7S3235C33v17Ev
  virtual void  v18(); // _ZN7S3235C33v18Ev
  virtual void  v19(); // _ZN7S3235C33v19Ev
  virtual void  v20(); // _ZN7S3235C33v20Ev
  virtual void  v21(); // _ZN7S3235C33v21Ev
  virtual void  v22(); // _ZN7S3235C33v22Ev
  virtual void  v23(); // _ZN7S3235C33v23Ev
  virtual void  v24(); // _ZN7S3235C33v24Ev
  virtual void  v25(); // _ZN7S3235C33v25Ev
  virtual void  v26(); // _ZN7S3235C33v26Ev
  virtual void  v27(); // _ZN7S3235C33v27Ev
  virtual void  v28(); // _ZN7S3235C33v28Ev
  virtual void  v29(); // _ZN7S3235C33v29Ev
  virtual void  v30(); // _ZN7S3235C33v30Ev
  virtual void  v31(); // _ZN7S3235C33v31Ev
  virtual void  v32(); // _ZN7S3235C33v32Ev
  virtual void  v33(); // _ZN7S3235C33v33Ev
  virtual void  v34(); // _ZN7S3235C33v34Ev
  virtual void  v35(); // _ZN7S3235C33v35Ev
  virtual void  v36(); // _ZN7S3235C33v36Ev
  virtual void  v37(); // _ZN7S3235C33v37Ev
  virtual void  v38(); // _ZN7S3235C33v38Ev
  virtual void  v39(); // _ZN7S3235C33v39Ev
  virtual void  v40(); // _ZN7S3235C33v40Ev
  virtual void  v41(); // _ZN7S3235C33v41Ev
  virtual void  v42(); // _ZN7S3235C33v42Ev
  virtual void  v43(); // _ZN7S3235C33v43Ev
  virtual void  v44(); // _ZN7S3235C33v44Ev
  virtual void  v45(); // _ZN7S3235C33v45Ev
  virtual void  v46(); // _ZN7S3235C33v46Ev
  virtual void  v47(); // _ZN7S3235C33v47Ev
  virtual void  v48(); // _ZN7S3235C33v48Ev
  virtual void  v49(); // _ZN7S3235C33v49Ev
  virtual void  v50(); // _ZN7S3235C33v50Ev
  virtual void  v51(); // _ZN7S3235C33v51Ev
  virtual void  v52(); // _ZN7S3235C33v52Ev
  virtual void  v53(); // _ZN7S3235C33v53Ev
  virtual void  v54(); // _ZN7S3235C33v54Ev
  virtual void  v55(); // _ZN7S3235C33v55Ev
  virtual void  v56(); // _ZN7S3235C33v56Ev
  virtual void  v57(); // _ZN7S3235C33v57Ev
  virtual void  v58(); // _ZN7S3235C33v58Ev
  virtual void  v59(); // _ZN7S3235C33v59Ev
  virtual void  v60(); // _ZN7S3235C33v60Ev
  virtual void  v61(); // _ZN7S3235C33v61Ev
  virtual void  v62(); // _ZN7S3235C33v62Ev
  virtual void  v63(); // _ZN7S3235C33v63Ev
  virtual void  v64(); // _ZN7S3235C33v64Ev
  virtual void  v65(); // _ZN7S3235C33v65Ev
  virtual void  v66(); // _ZN7S3235C33v66Ev
  virtual void  v67(); // _ZN7S3235C33v67Ev
  S3235C3(); // tgen
};
//SIG(-1 S3235C3) 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]}


 S3235C3 ::~S3235C3(){ note_dtor("S3235C3", this);}
void  S3235C3 ::v4(){vfunc_called(this, "_ZN7S3235C32v4Ev");}
void  S3235C3 ::v5(){vfunc_called(this, "_ZN7S3235C32v5Ev");}
void  S3235C3 ::v6(){vfunc_called(this, "_ZN7S3235C32v6Ev");}
void  S3235C3 ::v7(){vfunc_called(this, "_ZN7S3235C32v7Ev");}
void  S3235C3 ::v8(){vfunc_called(this, "_ZN7S3235C32v8Ev");}
void  S3235C3 ::v9(){vfunc_called(this, "_ZN7S3235C32v9Ev");}
void  S3235C3 ::v10(){vfunc_called(this, "_ZN7S3235C33v10Ev");}
void  S3235C3 ::v11(){vfunc_called(this, "_ZN7S3235C33v11Ev");}
void  S3235C3 ::v12(){vfunc_called(this, "_ZN7S3235C33v12Ev");}
void  S3235C3 ::v13(){vfunc_called(this, "_ZN7S3235C33v13Ev");}
void  S3235C3 ::v14(){vfunc_called(this, "_ZN7S3235C33v14Ev");}
void  S3235C3 ::v15(){vfunc_called(this, "_ZN7S3235C33v15Ev");}
void  S3235C3 ::v16(){vfunc_called(this, "_ZN7S3235C33v16Ev");}
void  S3235C3 ::v17(){vfunc_called(this, "_ZN7S3235C33v17Ev");}
void  S3235C3 ::v18(){vfunc_called(this, "_ZN7S3235C33v18Ev");}
void  S3235C3 ::v19(){vfunc_called(this, "_ZN7S3235C33v19Ev");}
void  S3235C3 ::v20(){vfunc_called(this, "_ZN7S3235C33v20Ev");}
void  S3235C3 ::v21(){vfunc_called(this, "_ZN7S3235C33v21Ev");}
void  S3235C3 ::v22(){vfunc_called(this, "_ZN7S3235C33v22Ev");}
void  S3235C3 ::v23(){vfunc_called(this, "_ZN7S3235C33v23Ev");}
void  S3235C3 ::v24(){vfunc_called(this, "_ZN7S3235C33v24Ev");}
void  S3235C3 ::v25(){vfunc_called(this, "_ZN7S3235C33v25Ev");}
void  S3235C3 ::v26(){vfunc_called(this, "_ZN7S3235C33v26Ev");}
void  S3235C3 ::v27(){vfunc_called(this, "_ZN7S3235C33v27Ev");}
void  S3235C3 ::v28(){vfunc_called(this, "_ZN7S3235C33v28Ev");}
void  S3235C3 ::v29(){vfunc_called(this, "_ZN7S3235C33v29Ev");}
void  S3235C3 ::v30(){vfunc_called(this, "_ZN7S3235C33v30Ev");}
void  S3235C3 ::v31(){vfunc_called(this, "_ZN7S3235C33v31Ev");}
void  S3235C3 ::v32(){vfunc_called(this, "_ZN7S3235C33v32Ev");}
void  S3235C3 ::v33(){vfunc_called(this, "_ZN7S3235C33v33Ev");}
void  S3235C3 ::v34(){vfunc_called(this, "_ZN7S3235C33v34Ev");}
void  S3235C3 ::v35(){vfunc_called(this, "_ZN7S3235C33v35Ev");}
void  S3235C3 ::v36(){vfunc_called(this, "_ZN7S3235C33v36Ev");}
void  S3235C3 ::v37(){vfunc_called(this, "_ZN7S3235C33v37Ev");}
void  S3235C3 ::v38(){vfunc_called(this, "_ZN7S3235C33v38Ev");}
void  S3235C3 ::v39(){vfunc_called(this, "_ZN7S3235C33v39Ev");}
void  S3235C3 ::v40(){vfunc_called(this, "_ZN7S3235C33v40Ev");}
void  S3235C3 ::v41(){vfunc_called(this, "_ZN7S3235C33v41Ev");}
void  S3235C3 ::v42(){vfunc_called(this, "_ZN7S3235C33v42Ev");}
void  S3235C3 ::v43(){vfunc_called(this, "_ZN7S3235C33v43Ev");}
void  S3235C3 ::v44(){vfunc_called(this, "_ZN7S3235C33v44Ev");}
void  S3235C3 ::v45(){vfunc_called(this, "_ZN7S3235C33v45Ev");}
void  S3235C3 ::v46(){vfunc_called(this, "_ZN7S3235C33v46Ev");}
void  S3235C3 ::v47(){vfunc_called(this, "_ZN7S3235C33v47Ev");}
void  S3235C3 ::v48(){vfunc_called(this, "_ZN7S3235C33v48Ev");}
void  S3235C3 ::v49(){vfunc_called(this, "_ZN7S3235C33v49Ev");}
void  S3235C3 ::v50(){vfunc_called(this, "_ZN7S3235C33v50Ev");}
void  S3235C3 ::v51(){vfunc_called(this, "_ZN7S3235C33v51Ev");}
void  S3235C3 ::v52(){vfunc_called(this, "_ZN7S3235C33v52Ev");}
void  S3235C3 ::v53(){vfunc_called(this, "_ZN7S3235C33v53Ev");}
void  S3235C3 ::v54(){vfunc_called(this, "_ZN7S3235C33v54Ev");}
void  S3235C3 ::v55(){vfunc_called(this, "_ZN7S3235C33v55Ev");}
void  S3235C3 ::v56(){vfunc_called(this, "_ZN7S3235C33v56Ev");}
void  S3235C3 ::v57(){vfunc_called(this, "_ZN7S3235C33v57Ev");}
void  S3235C3 ::v58(){vfunc_called(this, "_ZN7S3235C33v58Ev");}
void  S3235C3 ::v59(){vfunc_called(this, "_ZN7S3235C33v59Ev");}
void  S3235C3 ::v60(){vfunc_called(this, "_ZN7S3235C33v60Ev");}
void  S3235C3 ::v61(){vfunc_called(this, "_ZN7S3235C33v61Ev");}
void  S3235C3 ::v62(){vfunc_called(this, "_ZN7S3235C33v62Ev");}
void  S3235C3 ::v63(){vfunc_called(this, "_ZN7S3235C33v63Ev");}
void  S3235C3 ::v64(){vfunc_called(this, "_ZN7S3235C33v64Ev");}
void  S3235C3 ::v65(){vfunc_called(this, "_ZN7S3235C33v65Ev");}
void  S3235C3 ::v66(){vfunc_called(this, "_ZN7S3235C33v66Ev");}
void  S3235C3 ::v67(){vfunc_called(this, "_ZN7S3235C33v67Ev");}
S3235C3 ::S3235C3(){ note_ctor("S3235C3", this);} // tgen

static void Test_S3235C3()
{
  extern Class_Descriptor cd_S3235C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S3235C3, buf);
    S3235C3 *dp, &lv = *(dp=new (buf) S3235C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S3235C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3235C3)");
    check_field_offset(lv, s3235c3f0, ABISELECT(8,4), "S3235C3.s3235c3f0");
    check_field_offset(lv, s3235c3f1, ABISELECT(16,8), "S3235C3.s3235c3f1");
    check_field_offset(lv, s3235c3f2, ABISELECT(24,16), "S3235C3.s3235c3f2");
    check_field_offset(lv, s3235c3f3, ABISELECT(56,32), "S3235C3.s3235c3f3");
    check_field_offset(lv, s3235c3f4, ABISELECT(64,40), "S3235C3.s3235c3f4");
    check_field_offset(lv, s3235c3f5, ABISELECT(72,44), "S3235C3.s3235c3f5");
    check_field_offset(lv, s3235c3f6, ABISELECT(80,52), "S3235C3.s3235c3f6");
    test_class_info(&lv, &cd_S3235C3);
    dp->~S3235C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3235C3(Test_S3235C3, "S3235C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S3235C3C1Ev();
extern void _ZN7S3235C3D1Ev();
Name_Map name_map_S3235C3[] = {
  NSPAIR(_ZN7S3235C3C1Ev),
  NSPAIR(_ZN7S3235C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3235C3[];
extern void _ZN7S3235C3D1Ev();
extern void _ZN7S3235C3D0Ev();
extern void _ZN7S3235C32v4Ev();
extern void _ZN7S3235C32v5Ev();
extern void _ZN7S3235C32v6Ev();
extern void _ZN7S3235C32v7Ev();
extern void _ZN7S3235C32v8Ev();
extern void _ZN7S3235C32v9Ev();
extern void _ZN7S3235C33v10Ev();
extern void _ZN7S3235C33v11Ev();
extern void _ZN7S3235C33v12Ev();
extern void _ZN7S3235C33v13Ev();
extern void _ZN7S3235C33v14Ev();
extern void _ZN7S3235C33v15Ev();
extern void _ZN7S3235C33v16Ev();
extern void _ZN7S3235C33v17Ev();
extern void _ZN7S3235C33v18Ev();
extern void _ZN7S3235C33v19Ev();
extern void _ZN7S3235C33v20Ev();
extern void _ZN7S3235C33v21Ev();
extern void _ZN7S3235C33v22Ev();
extern void _ZN7S3235C33v23Ev();
extern void _ZN7S3235C33v24Ev();
extern void _ZN7S3235C33v25Ev();
extern void _ZN7S3235C33v26Ev();
extern void _ZN7S3235C33v27Ev();
extern void _ZN7S3235C33v28Ev();
extern void _ZN7S3235C33v29Ev();
extern void _ZN7S3235C33v30Ev();
extern void _ZN7S3235C33v31Ev();
extern void _ZN7S3235C33v32Ev();
extern void _ZN7S3235C33v33Ev();
extern void _ZN7S3235C33v34Ev();
extern void _ZN7S3235C33v35Ev();
extern void _ZN7S3235C33v36Ev();
extern void _ZN7S3235C33v37Ev();
extern void _ZN7S3235C33v38Ev();
extern void _ZN7S3235C33v39Ev();
extern void _ZN7S3235C33v40Ev();
extern void _ZN7S3235C33v41Ev();
extern void _ZN7S3235C33v42Ev();
extern void _ZN7S3235C33v43Ev();
extern void _ZN7S3235C33v44Ev();
extern void _ZN7S3235C33v45Ev();
extern void _ZN7S3235C33v46Ev();
extern void _ZN7S3235C33v47Ev();
extern void _ZN7S3235C33v48Ev();
extern void _ZN7S3235C33v49Ev();
extern void _ZN7S3235C33v50Ev();
extern void _ZN7S3235C33v51Ev();
extern void _ZN7S3235C33v52Ev();
extern void _ZN7S3235C33v53Ev();
extern void _ZN7S3235C33v54Ev();
extern void _ZN7S3235C33v55Ev();
extern void _ZN7S3235C33v56Ev();
extern void _ZN7S3235C33v57Ev();
extern void _ZN7S3235C33v58Ev();
extern void _ZN7S3235C33v59Ev();
extern void _ZN7S3235C33v60Ev();
extern void _ZN7S3235C33v61Ev();
extern void _ZN7S3235C33v62Ev();
extern void _ZN7S3235C33v63Ev();
extern void _ZN7S3235C33v64Ev();
extern void _ZN7S3235C33v65Ev();
extern void _ZN7S3235C33v66Ev();
extern void _ZN7S3235C33v67Ev();
static  VTBL_ENTRY vtc_S3235C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3235C3[0]),
  (VTBL_ENTRY)&_ZN7S3235C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3235C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3235C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3235C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3235C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3235C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3235C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3235C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v67Ev,
};
extern VTBL_ENTRY _ZTI7S3235C3[];
extern  VTBL_ENTRY _ZTV7S3235C3[];
Class_Descriptor cd_S3235C3 = {  "S3235C3", // class name
  0,0,//no base classes
  &(vtc_S3235C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S3235C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3235C3),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  S3235C2  : S3235C3 {
  unsigned int s3235c2f0:1;
  unsigned int s3235c2f1:1;
  unsigned int s3235c2f2:1;
  ::S3216C4_nt s3235c2f3;
  int s3235c2f4[6];
  char s3235c2f5;
  virtual  ~S3235C2(); // _ZN7S3235C2D1Ev
  virtual void  v68(); // _ZN7S3235C23v68Ev
  virtual void  v69(); // _ZN7S3235C23v69Ev
  virtual void  v70(); // _ZN7S3235C23v70Ev
  virtual void  v71(); // _ZN7S3235C23v71Ev
  S3235C2(); // tgen
};
//SIG(-1 S3235C2) C1{ BC2{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 Fi:1 Fi:1 Fi:1 FC3 Fi[6] Fc}


 S3235C2 ::~S3235C2(){ note_dtor("S3235C2", this);}
void  S3235C2 ::v68(){vfunc_called(this, "_ZN7S3235C23v68Ev");}
void  S3235C2 ::v69(){vfunc_called(this, "_ZN7S3235C23v69Ev");}
void  S3235C2 ::v70(){vfunc_called(this, "_ZN7S3235C23v70Ev");}
void  S3235C2 ::v71(){vfunc_called(this, "_ZN7S3235C23v71Ev");}
S3235C2 ::S3235C2(){ note_ctor("S3235C2", this);} // tgen

static void Test_S3235C2()
{
  extern Class_Descriptor cd_S3235C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,26)];
    init_test(&cd_S3235C2, buf);
    S3235C2 *dp, &lv = *(dp=new (buf) S3235C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,100), "sizeof(S3235C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3235C2)");
    check_base_class_offset(lv, (S3235C3*), 0, "S3235C2");
    set_bf_and_test(lv, s3235c2f0, ABISELECT(96,60), 0, 1, 1, "S3235C2");
    set_bf_and_test(lv, s3235c2f1, ABISELECT(96,60), 1, 1, 1, "S3235C2");
    set_bf_and_test(lv, s3235c2f2, ABISELECT(96,60), 2, 1, 1, "S3235C2");
    check_field_offset(lv, s3235c2f3, ABISELECT(100,64), "S3235C2.s3235c2f3");
    check_field_offset(lv, s3235c2f4, ABISELECT(108,72), "S3235C2.s3235c2f4");
    check_field_offset(lv, s3235c2f5, ABISELECT(132,96), "S3235C2.s3235c2f5");
    test_class_info(&lv, &cd_S3235C2);
    dp->~S3235C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3235C2(Test_S3235C2, "S3235C2", ABISELECT(136,100));

#else // __cplusplus

extern void _ZN7S3235C2C1Ev();
extern void _ZN7S3235C2D1Ev();
Name_Map name_map_S3235C2[] = {
  NSPAIR(_ZN7S3235C2C1Ev),
  NSPAIR(_ZN7S3235C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3235C3;
extern VTBL_ENTRY _ZTI7S3235C3[];
extern  VTBL_ENTRY _ZTV7S3235C3[];
static Base_Class bases_S3235C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3235C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3235C2[];
extern void _ZN7S3235C2D1Ev();
extern void _ZN7S3235C2D0Ev();
extern void _ZN7S3235C32v4Ev();
extern void _ZN7S3235C32v5Ev();
extern void _ZN7S3235C32v6Ev();
extern void _ZN7S3235C32v7Ev();
extern void _ZN7S3235C32v8Ev();
extern void _ZN7S3235C32v9Ev();
extern void _ZN7S3235C33v10Ev();
extern void _ZN7S3235C33v11Ev();
extern void _ZN7S3235C33v12Ev();
extern void _ZN7S3235C33v13Ev();
extern void _ZN7S3235C33v14Ev();
extern void _ZN7S3235C33v15Ev();
extern void _ZN7S3235C33v16Ev();
extern void _ZN7S3235C33v17Ev();
extern void _ZN7S3235C33v18Ev();
extern void _ZN7S3235C33v19Ev();
extern void _ZN7S3235C33v20Ev();
extern void _ZN7S3235C33v21Ev();
extern void _ZN7S3235C33v22Ev();
extern void _ZN7S3235C33v23Ev();
extern void _ZN7S3235C33v24Ev();
extern void _ZN7S3235C33v25Ev();
extern void _ZN7S3235C33v26Ev();
extern void _ZN7S3235C33v27Ev();
extern void _ZN7S3235C33v28Ev();
extern void _ZN7S3235C33v29Ev();
extern void _ZN7S3235C33v30Ev();
extern void _ZN7S3235C33v31Ev();
extern void _ZN7S3235C33v32Ev();
extern void _ZN7S3235C33v33Ev();
extern void _ZN7S3235C33v34Ev();
extern void _ZN7S3235C33v35Ev();
extern void _ZN7S3235C33v36Ev();
extern void _ZN7S3235C33v37Ev();
extern void _ZN7S3235C33v38Ev();
extern void _ZN7S3235C33v39Ev();
extern void _ZN7S3235C33v40Ev();
extern void _ZN7S3235C33v41Ev();
extern void _ZN7S3235C33v42Ev();
extern void _ZN7S3235C33v43Ev();
extern void _ZN7S3235C33v44Ev();
extern void _ZN7S3235C33v45Ev();
extern void _ZN7S3235C33v46Ev();
extern void _ZN7S3235C33v47Ev();
extern void _ZN7S3235C33v48Ev();
extern void _ZN7S3235C33v49Ev();
extern void _ZN7S3235C33v50Ev();
extern void _ZN7S3235C33v51Ev();
extern void _ZN7S3235C33v52Ev();
extern void _ZN7S3235C33v53Ev();
extern void _ZN7S3235C33v54Ev();
extern void _ZN7S3235C33v55Ev();
extern void _ZN7S3235C33v56Ev();
extern void _ZN7S3235C33v57Ev();
extern void _ZN7S3235C33v58Ev();
extern void _ZN7S3235C33v59Ev();
extern void _ZN7S3235C33v60Ev();
extern void _ZN7S3235C33v61Ev();
extern void _ZN7S3235C33v62Ev();
extern void _ZN7S3235C33v63Ev();
extern void _ZN7S3235C33v64Ev();
extern void _ZN7S3235C33v65Ev();
extern void _ZN7S3235C33v66Ev();
extern void _ZN7S3235C33v67Ev();
extern void _ZN7S3235C23v68Ev();
extern void _ZN7S3235C23v69Ev();
extern void _ZN7S3235C23v70Ev();
extern void _ZN7S3235C23v71Ev();
static  VTBL_ENTRY vtc_S3235C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3235C2[0]),
  (VTBL_ENTRY)&_ZN7S3235C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3235C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3235C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3235C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3235C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3235C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3235C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3235C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3235C23v68Ev,
  (VTBL_ENTRY)&_ZN7S3235C23v69Ev,
  (VTBL_ENTRY)&_ZN7S3235C23v70Ev,
  (VTBL_ENTRY)&_ZN7S3235C23v71Ev,
};
extern VTBL_ENTRY _ZTI7S3235C2[];
extern  VTBL_ENTRY _ZTV7S3235C2[];
Class_Descriptor cd_S3235C2 = {  "S3235C2", // class name
  bases_S3235C2, 1,
  &(vtc_S3235C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,100), // object size
  NSPAIRA(_ZTI7S3235C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3235C2),72, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3235C1  : S3235C2 {
  void *s3235c1f0;
  virtual  ~S3235C1(); // _ZN7S3235C1D1Ev
  virtual void  v1(); // _ZN7S3235C12v1Ev
  virtual void  v2(); // _ZN7S3235C12v2Ev
  virtual void  v3(); // _ZN7S3235C12v3Ev
  S3235C1(); // tgen
};
//SIG(1 S3235C1) C1{ BC2{ BC3{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v68 v69 v70 v71 Fi:1 Fi:1 Fi:1 FC4 Fi[6] Fc} vd v1 v2 v3 Fp}


 S3235C1 ::~S3235C1(){ note_dtor("S3235C1", this);}
void  S3235C1 ::v1(){vfunc_called(this, "_ZN7S3235C12v1Ev");}
void  S3235C1 ::v2(){vfunc_called(this, "_ZN7S3235C12v2Ev");}
void  S3235C1 ::v3(){vfunc_called(this, "_ZN7S3235C12v3Ev");}
S3235C1 ::S3235C1(){ note_ctor("S3235C1", this);} // tgen

static void Test_S3235C1()
{
  extern Class_Descriptor cd_S3235C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,27)];
    init_test(&cd_S3235C1, buf);
    S3235C1 *dp, &lv = *(dp=new (buf) S3235C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,104), "sizeof(S3235C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3235C1)");
    check_base_class_offset(lv, (S3235C3*)(S3235C2*), 0, "S3235C1");
    check_base_class_offset(lv, (S3235C2*), 0, "S3235C1");
    check_field_offset(lv, s3235c1f0, ABISELECT(136,100), "S3235C1.s3235c1f0");
    test_class_info(&lv, &cd_S3235C1);
    dp->~S3235C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3235C1(Test_S3235C1, "S3235C1", ABISELECT(144,104));

#else // __cplusplus

extern void _ZN7S3235C1C1Ev();
extern void _ZN7S3235C1D1Ev();
Name_Map name_map_S3235C1[] = {
  NSPAIR(_ZN7S3235C1C1Ev),
  NSPAIR(_ZN7S3235C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3235C3;
extern VTBL_ENTRY _ZTI7S3235C3[];
extern  VTBL_ENTRY _ZTV7S3235C3[];
extern Class_Descriptor cd_S3235C2;
extern VTBL_ENTRY _ZTI7S3235C2[];
extern  VTBL_ENTRY _ZTV7S3235C2[];
static Base_Class bases_S3235C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3235C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3235C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S3235C1[];
extern void _ZN7S3235C1D1Ev();
extern void _ZN7S3235C1D0Ev();
extern void _ZN7S3235C32v4Ev();
extern void _ZN7S3235C32v5Ev();
extern void _ZN7S3235C32v6Ev();
extern void _ZN7S3235C32v7Ev();
extern void _ZN7S3235C32v8Ev();
extern void _ZN7S3235C32v9Ev();
extern void _ZN7S3235C33v10Ev();
extern void _ZN7S3235C33v11Ev();
extern void _ZN7S3235C33v12Ev();
extern void _ZN7S3235C33v13Ev();
extern void _ZN7S3235C33v14Ev();
extern void _ZN7S3235C33v15Ev();
extern void _ZN7S3235C33v16Ev();
extern void _ZN7S3235C33v17Ev();
extern void _ZN7S3235C33v18Ev();
extern void _ZN7S3235C33v19Ev();
extern void _ZN7S3235C33v20Ev();
extern void _ZN7S3235C33v21Ev();
extern void _ZN7S3235C33v22Ev();
extern void _ZN7S3235C33v23Ev();
extern void _ZN7S3235C33v24Ev();
extern void _ZN7S3235C33v25Ev();
extern void _ZN7S3235C33v26Ev();
extern void _ZN7S3235C33v27Ev();
extern void _ZN7S3235C33v28Ev();
extern void _ZN7S3235C33v29Ev();
extern void _ZN7S3235C33v30Ev();
extern void _ZN7S3235C33v31Ev();
extern void _ZN7S3235C33v32Ev();
extern void _ZN7S3235C33v33Ev();
extern void _ZN7S3235C33v34Ev();
extern void _ZN7S3235C33v35Ev();
extern void _ZN7S3235C33v36Ev();
extern void _ZN7S3235C33v37Ev();
extern void _ZN7S3235C33v38Ev();
extern void _ZN7S3235C33v39Ev();
extern void _ZN7S3235C33v40Ev();
extern void _ZN7S3235C33v41Ev();
extern void _ZN7S3235C33v42Ev();
extern void _ZN7S3235C33v43Ev();
extern void _ZN7S3235C33v44Ev();
extern void _ZN7S3235C33v45Ev();
extern void _ZN7S3235C33v46Ev();
extern void _ZN7S3235C33v47Ev();
extern void _ZN7S3235C33v48Ev();
extern void _ZN7S3235C33v49Ev();
extern void _ZN7S3235C33v50Ev();
extern void _ZN7S3235C33v51Ev();
extern void _ZN7S3235C33v52Ev();
extern void _ZN7S3235C33v53Ev();
extern void _ZN7S3235C33v54Ev();
extern void _ZN7S3235C33v55Ev();
extern void _ZN7S3235C33v56Ev();
extern void _ZN7S3235C33v57Ev();
extern void _ZN7S3235C33v58Ev();
extern void _ZN7S3235C33v59Ev();
extern void _ZN7S3235C33v60Ev();
extern void _ZN7S3235C33v61Ev();
extern void _ZN7S3235C33v62Ev();
extern void _ZN7S3235C33v63Ev();
extern void _ZN7S3235C33v64Ev();
extern void _ZN7S3235C33v65Ev();
extern void _ZN7S3235C33v66Ev();
extern void _ZN7S3235C33v67Ev();
extern void _ZN7S3235C23v68Ev();
extern void _ZN7S3235C23v69Ev();
extern void _ZN7S3235C23v70Ev();
extern void _ZN7S3235C23v71Ev();
extern void _ZN7S3235C12v1Ev();
extern void _ZN7S3235C12v2Ev();
extern void _ZN7S3235C12v3Ev();
static  VTBL_ENTRY vtc_S3235C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3235C1[0]),
  (VTBL_ENTRY)&_ZN7S3235C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3235C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3235C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3235C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3235C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3235C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3235C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3235C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3235C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3235C23v68Ev,
  (VTBL_ENTRY)&_ZN7S3235C23v69Ev,
  (VTBL_ENTRY)&_ZN7S3235C23v70Ev,
  (VTBL_ENTRY)&_ZN7S3235C23v71Ev,
  (VTBL_ENTRY)&_ZN7S3235C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3235C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3235C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S3235C1[];
extern  VTBL_ENTRY _ZTV7S3235C1[];
Class_Descriptor cd_S3235C1 = {  "S3235C1", // class name
  bases_S3235C1, 2,
  &(vtc_S3235C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,104), // object size
  NSPAIRA(_ZTI7S3235C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3235C1),75, //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  S3172C3  {
  int s3172c3f0;
  __tsi64 s3172c3f1;
  void *s3172c3f2[4];
  int s3172c3f3[2];
  void *s3172c3f4;
  ::S3216C4_nt s3172c3f5;
  void *s3172c3f6[2];
  virtual  ~S3172C3(); // _ZN7S3172C3D1Ev
  virtual void  v3(); // _ZN7S3172C32v3Ev
  virtual void  v4(); // _ZN7S3172C32v4Ev
  virtual void  v5(); // _ZN7S3172C32v5Ev
  virtual void  v6(); // _ZN7S3172C32v6Ev
  virtual void  v7(); // _ZN7S3172C32v7Ev
  virtual void  v8(); // _ZN7S3172C32v8Ev
  virtual void  v9(); // _ZN7S3172C32v9Ev
  virtual void  v10(); // _ZN7S3172C33v10Ev
  virtual void  v11(); // _ZN7S3172C33v11Ev
  virtual void  v12(); // _ZN7S3172C33v12Ev
  virtual void  v13(); // _ZN7S3172C33v13Ev
  virtual void  v14(); // _ZN7S3172C33v14Ev
  virtual void  v15(); // _ZN7S3172C33v15Ev
  virtual void  v16(); // _ZN7S3172C33v16Ev
  virtual void  v17(); // _ZN7S3172C33v17Ev
  virtual void  v18(); // _ZN7S3172C33v18Ev
  virtual void  v19(); // _ZN7S3172C33v19Ev
  virtual void  v20(); // _ZN7S3172C33v20Ev
  virtual void  v21(); // _ZN7S3172C33v21Ev
  virtual void  v22(); // _ZN7S3172C33v22Ev
  virtual void  v23(); // _ZN7S3172C33v23Ev
  virtual void  v24(); // _ZN7S3172C33v24Ev
  virtual void  v25(); // _ZN7S3172C33v25Ev
  virtual void  v26(); // _ZN7S3172C33v26Ev
  virtual void  v27(); // _ZN7S3172C33v27Ev
  virtual void  v28(); // _ZN7S3172C33v28Ev
  virtual void  v29(); // _ZN7S3172C33v29Ev
  virtual void  v30(); // _ZN7S3172C33v30Ev
  virtual void  v31(); // _ZN7S3172C33v31Ev
  virtual void  v32(); // _ZN7S3172C33v32Ev
  virtual void  v33(); // _ZN7S3172C33v33Ev
  virtual void  v34(); // _ZN7S3172C33v34Ev
  virtual void  v35(); // _ZN7S3172C33v35Ev
  virtual void  v36(); // _ZN7S3172C33v36Ev
  virtual void  v37(); // _ZN7S3172C33v37Ev
  virtual void  v38(); // _ZN7S3172C33v38Ev
  virtual void  v39(); // _ZN7S3172C33v39Ev
  virtual void  v40(); // _ZN7S3172C33v40Ev
  virtual void  v41(); // _ZN7S3172C33v41Ev
  virtual void  v42(); // _ZN7S3172C33v42Ev
  virtual void  v43(); // _ZN7S3172C33v43Ev
  virtual void  v44(); // _ZN7S3172C33v44Ev
  virtual void  v45(); // _ZN7S3172C33v45Ev
  virtual void  v46(); // _ZN7S3172C33v46Ev
  virtual void  v47(); // _ZN7S3172C33v47Ev
  virtual void  v48(); // _ZN7S3172C33v48Ev
  virtual void  v49(); // _ZN7S3172C33v49Ev
  virtual void  v50(); // _ZN7S3172C33v50Ev
  virtual void  v51(); // _ZN7S3172C33v51Ev
  virtual void  v52(); // _ZN7S3172C33v52Ev
  virtual void  v53(); // _ZN7S3172C33v53Ev
  virtual void  v54(); // _ZN7S3172C33v54Ev
  virtual void  v55(); // _ZN7S3172C33v55Ev
  virtual void  v56(); // _ZN7S3172C33v56Ev
  virtual void  v57(); // _ZN7S3172C33v57Ev
  virtual void  v58(); // _ZN7S3172C33v58Ev
  virtual void  v59(); // _ZN7S3172C33v59Ev
  virtual void  v60(); // _ZN7S3172C33v60Ev
  virtual void  v61(); // _ZN7S3172C33v61Ev
  virtual void  v62(); // _ZN7S3172C33v62Ev
  virtual void  v63(); // _ZN7S3172C33v63Ev
  virtual void  v64(); // _ZN7S3172C33v64Ev
  virtual void  v65(); // _ZN7S3172C33v65Ev
  virtual void  v66(); // _ZN7S3172C33v66Ev
  S3172C3(); // tgen
};
//SIG(-1 S3172C3) 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]}


 S3172C3 ::~S3172C3(){ note_dtor("S3172C3", this);}
void  S3172C3 ::v3(){vfunc_called(this, "_ZN7S3172C32v3Ev");}
void  S3172C3 ::v4(){vfunc_called(this, "_ZN7S3172C32v4Ev");}
void  S3172C3 ::v5(){vfunc_called(this, "_ZN7S3172C32v5Ev");}
void  S3172C3 ::v6(){vfunc_called(this, "_ZN7S3172C32v6Ev");}
void  S3172C3 ::v7(){vfunc_called(this, "_ZN7S3172C32v7Ev");}
void  S3172C3 ::v8(){vfunc_called(this, "_ZN7S3172C32v8Ev");}
void  S3172C3 ::v9(){vfunc_called(this, "_ZN7S3172C32v9Ev");}
void  S3172C3 ::v10(){vfunc_called(this, "_ZN7S3172C33v10Ev");}
void  S3172C3 ::v11(){vfunc_called(this, "_ZN7S3172C33v11Ev");}
void  S3172C3 ::v12(){vfunc_called(this, "_ZN7S3172C33v12Ev");}
void  S3172C3 ::v13(){vfunc_called(this, "_ZN7S3172C33v13Ev");}
void  S3172C3 ::v14(){vfunc_called(this, "_ZN7S3172C33v14Ev");}
void  S3172C3 ::v15(){vfunc_called(this, "_ZN7S3172C33v15Ev");}
void  S3172C3 ::v16(){vfunc_called(this, "_ZN7S3172C33v16Ev");}
void  S3172C3 ::v17(){vfunc_called(this, "_ZN7S3172C33v17Ev");}
void  S3172C3 ::v18(){vfunc_called(this, "_ZN7S3172C33v18Ev");}
void  S3172C3 ::v19(){vfunc_called(this, "_ZN7S3172C33v19Ev");}
void  S3172C3 ::v20(){vfunc_called(this, "_ZN7S3172C33v20Ev");}
void  S3172C3 ::v21(){vfunc_called(this, "_ZN7S3172C33v21Ev");}
void  S3172C3 ::v22(){vfunc_called(this, "_ZN7S3172C33v22Ev");}
void  S3172C3 ::v23(){vfunc_called(this, "_ZN7S3172C33v23Ev");}
void  S3172C3 ::v24(){vfunc_called(this, "_ZN7S3172C33v24Ev");}
void  S3172C3 ::v25(){vfunc_called(this, "_ZN7S3172C33v25Ev");}
void  S3172C3 ::v26(){vfunc_called(this, "_ZN7S3172C33v26Ev");}
void  S3172C3 ::v27(){vfunc_called(this, "_ZN7S3172C33v27Ev");}
void  S3172C3 ::v28(){vfunc_called(this, "_ZN7S3172C33v28Ev");}
void  S3172C3 ::v29(){vfunc_called(this, "_ZN7S3172C33v29Ev");}
void  S3172C3 ::v30(){vfunc_called(this, "_ZN7S3172C33v30Ev");}
void  S3172C3 ::v31(){vfunc_called(this, "_ZN7S3172C33v31Ev");}
void  S3172C3 ::v32(){vfunc_called(this, "_ZN7S3172C33v32Ev");}
void  S3172C3 ::v33(){vfunc_called(this, "_ZN7S3172C33v33Ev");}
void  S3172C3 ::v34(){vfunc_called(this, "_ZN7S3172C33v34Ev");}
void  S3172C3 ::v35(){vfunc_called(this, "_ZN7S3172C33v35Ev");}
void  S3172C3 ::v36(){vfunc_called(this, "_ZN7S3172C33v36Ev");}
void  S3172C3 ::v37(){vfunc_called(this, "_ZN7S3172C33v37Ev");}
void  S3172C3 ::v38(){vfunc_called(this, "_ZN7S3172C33v38Ev");}
void  S3172C3 ::v39(){vfunc_called(this, "_ZN7S3172C33v39Ev");}
void  S3172C3 ::v40(){vfunc_called(this, "_ZN7S3172C33v40Ev");}
void  S3172C3 ::v41(){vfunc_called(this, "_ZN7S3172C33v41Ev");}
void  S3172C3 ::v42(){vfunc_called(this, "_ZN7S3172C33v42Ev");}
void  S3172C3 ::v43(){vfunc_called(this, "_ZN7S3172C33v43Ev");}
void  S3172C3 ::v44(){vfunc_called(this, "_ZN7S3172C33v44Ev");}
void  S3172C3 ::v45(){vfunc_called(this, "_ZN7S3172C33v45Ev");}
void  S3172C3 ::v46(){vfunc_called(this, "_ZN7S3172C33v46Ev");}
void  S3172C3 ::v47(){vfunc_called(this, "_ZN7S3172C33v47Ev");}
void  S3172C3 ::v48(){vfunc_called(this, "_ZN7S3172C33v48Ev");}
void  S3172C3 ::v49(){vfunc_called(this, "_ZN7S3172C33v49Ev");}
void  S3172C3 ::v50(){vfunc_called(this, "_ZN7S3172C33v50Ev");}
void  S3172C3 ::v51(){vfunc_called(this, "_ZN7S3172C33v51Ev");}
void  S3172C3 ::v52(){vfunc_called(this, "_ZN7S3172C33v52Ev");}
void  S3172C3 ::v53(){vfunc_called(this, "_ZN7S3172C33v53Ev");}
void  S3172C3 ::v54(){vfunc_called(this, "_ZN7S3172C33v54Ev");}
void  S3172C3 ::v55(){vfunc_called(this, "_ZN7S3172C33v55Ev");}
void  S3172C3 ::v56(){vfunc_called(this, "_ZN7S3172C33v56Ev");}
void  S3172C3 ::v57(){vfunc_called(this, "_ZN7S3172C33v57Ev");}
void  S3172C3 ::v58(){vfunc_called(this, "_ZN7S3172C33v58Ev");}
void  S3172C3 ::v59(){vfunc_called(this, "_ZN7S3172C33v59Ev");}
void  S3172C3 ::v60(){vfunc_called(this, "_ZN7S3172C33v60Ev");}
void  S3172C3 ::v61(){vfunc_called(this, "_ZN7S3172C33v61Ev");}
void  S3172C3 ::v62(){vfunc_called(this, "_ZN7S3172C33v62Ev");}
void  S3172C3 ::v63(){vfunc_called(this, "_ZN7S3172C33v63Ev");}
void  S3172C3 ::v64(){vfunc_called(this, "_ZN7S3172C33v64Ev");}
void  S3172C3 ::v65(){vfunc_called(this, "_ZN7S3172C33v65Ev");}
void  S3172C3 ::v66(){vfunc_called(this, "_ZN7S3172C33v66Ev");}
S3172C3 ::S3172C3(){ note_ctor("S3172C3", this);} // tgen

static void Test_S3172C3()
{
  extern Class_Descriptor cd_S3172C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S3172C3, buf);
    S3172C3 *dp, &lv = *(dp=new (buf) S3172C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S3172C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3172C3)");
    check_field_offset(lv, s3172c3f0, ABISELECT(8,4), "S3172C3.s3172c3f0");
    check_field_offset(lv, s3172c3f1, ABISELECT(16,8), "S3172C3.s3172c3f1");
    check_field_offset(lv, s3172c3f2, ABISELECT(24,16), "S3172C3.s3172c3f2");
    check_field_offset(lv, s3172c3f3, ABISELECT(56,32), "S3172C3.s3172c3f3");
    check_field_offset(lv, s3172c3f4, ABISELECT(64,40), "S3172C3.s3172c3f4");
    check_field_offset(lv, s3172c3f5, ABISELECT(72,44), "S3172C3.s3172c3f5");
    check_field_offset(lv, s3172c3f6, ABISELECT(80,52), "S3172C3.s3172c3f6");
    test_class_info(&lv, &cd_S3172C3);
    dp->~S3172C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3172C3(Test_S3172C3, "S3172C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S3172C3C1Ev();
extern void _ZN7S3172C3D1Ev();
Name_Map name_map_S3172C3[] = {
  NSPAIR(_ZN7S3172C3C1Ev),
  NSPAIR(_ZN7S3172C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3172C3[];
extern void _ZN7S3172C3D1Ev();
extern void _ZN7S3172C3D0Ev();
extern void _ZN7S3172C32v3Ev();
extern void _ZN7S3172C32v4Ev();
extern void _ZN7S3172C32v5Ev();
extern void _ZN7S3172C32v6Ev();
extern void _ZN7S3172C32v7Ev();
extern void _ZN7S3172C32v8Ev();
extern void _ZN7S3172C32v9Ev();
extern void _ZN7S3172C33v10Ev();
extern void _ZN7S3172C33v11Ev();
extern void _ZN7S3172C33v12Ev();
extern void _ZN7S3172C33v13Ev();
extern void _ZN7S3172C33v14Ev();
extern void _ZN7S3172C33v15Ev();
extern void _ZN7S3172C33v16Ev();
extern void _ZN7S3172C33v17Ev();
extern void _ZN7S3172C33v18Ev();
extern void _ZN7S3172C33v19Ev();
extern void _ZN7S3172C33v20Ev();
extern void _ZN7S3172C33v21Ev();
extern void _ZN7S3172C33v22Ev();
extern void _ZN7S3172C33v23Ev();
extern void _ZN7S3172C33v24Ev();
extern void _ZN7S3172C33v25Ev();
extern void _ZN7S3172C33v26Ev();
extern void _ZN7S3172C33v27Ev();
extern void _ZN7S3172C33v28Ev();
extern void _ZN7S3172C33v29Ev();
extern void _ZN7S3172C33v30Ev();
extern void _ZN7S3172C33v31Ev();
extern void _ZN7S3172C33v32Ev();
extern void _ZN7S3172C33v33Ev();
extern void _ZN7S3172C33v34Ev();
extern void _ZN7S3172C33v35Ev();
extern void _ZN7S3172C33v36Ev();
extern void _ZN7S3172C33v37Ev();
extern void _ZN7S3172C33v38Ev();
extern void _ZN7S3172C33v39Ev();
extern void _ZN7S3172C33v40Ev();
extern void _ZN7S3172C33v41Ev();
extern void _ZN7S3172C33v42Ev();
extern void _ZN7S3172C33v43Ev();
extern void _ZN7S3172C33v44Ev();
extern void _ZN7S3172C33v45Ev();
extern void _ZN7S3172C33v46Ev();
extern void _ZN7S3172C33v47Ev();
extern void _ZN7S3172C33v48Ev();
extern void _ZN7S3172C33v49Ev();
extern void _ZN7S3172C33v50Ev();
extern void _ZN7S3172C33v51Ev();
extern void _ZN7S3172C33v52Ev();
extern void _ZN7S3172C33v53Ev();
extern void _ZN7S3172C33v54Ev();
extern void _ZN7S3172C33v55Ev();
extern void _ZN7S3172C33v56Ev();
extern void _ZN7S3172C33v57Ev();
extern void _ZN7S3172C33v58Ev();
extern void _ZN7S3172C33v59Ev();
extern void _ZN7S3172C33v60Ev();
extern void _ZN7S3172C33v61Ev();
extern void _ZN7S3172C33v62Ev();
extern void _ZN7S3172C33v63Ev();
extern void _ZN7S3172C33v64Ev();
extern void _ZN7S3172C33v65Ev();
extern void _ZN7S3172C33v66Ev();
static  VTBL_ENTRY vtc_S3172C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3172C3[0]),
  (VTBL_ENTRY)&_ZN7S3172C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3172C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3172C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3172C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3172C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3172C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3172C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3172C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3172C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v66Ev,
};
extern VTBL_ENTRY _ZTI7S3172C3[];
extern  VTBL_ENTRY _ZTV7S3172C3[];
Class_Descriptor cd_S3172C3 = {  "S3172C3", // class name
  0,0,//no base classes
  &(vtc_S3172C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S3172C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3172C3),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  S3172C2  : S3172C3 {
  unsigned int s3172c2f0:1;
  unsigned int s3172c2f1:1;
  unsigned int s3172c2f2:1;
  ::S3216C4_nt s3172c2f3;
  int s3172c2f4[6];
  char s3172c2f5;
  virtual  ~S3172C2(); // _ZN7S3172C2D1Ev
  virtual void  v67(); // _ZN7S3172C23v67Ev
  virtual void  v68(); // _ZN7S3172C23v68Ev
  virtual void  v69(); // _ZN7S3172C23v69Ev
  virtual void  v70(); // _ZN7S3172C23v70Ev
  S3172C2(); // tgen
};
//SIG(-1 S3172C2) C1{ BC2{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 Fi:1 Fi:1 Fi:1 FC3 Fi[6] Fc}


 S3172C2 ::~S3172C2(){ note_dtor("S3172C2", this);}
void  S3172C2 ::v67(){vfunc_called(this, "_ZN7S3172C23v67Ev");}
void  S3172C2 ::v68(){vfunc_called(this, "_ZN7S3172C23v68Ev");}
void  S3172C2 ::v69(){vfunc_called(this, "_ZN7S3172C23v69Ev");}
void  S3172C2 ::v70(){vfunc_called(this, "_ZN7S3172C23v70Ev");}
S3172C2 ::S3172C2(){ note_ctor("S3172C2", this);} // tgen

static void Test_S3172C2()
{
  extern Class_Descriptor cd_S3172C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,26)];
    init_test(&cd_S3172C2, buf);
    S3172C2 *dp, &lv = *(dp=new (buf) S3172C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,100), "sizeof(S3172C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3172C2)");
    check_base_class_offset(lv, (S3172C3*), 0, "S3172C2");
    set_bf_and_test(lv, s3172c2f0, ABISELECT(96,60), 0, 1, 1, "S3172C2");
    set_bf_and_test(lv, s3172c2f1, ABISELECT(96,60), 1, 1, 1, "S3172C2");
    set_bf_and_test(lv, s3172c2f2, ABISELECT(96,60), 2, 1, 1, "S3172C2");
    check_field_offset(lv, s3172c2f3, ABISELECT(100,64), "S3172C2.s3172c2f3");
    check_field_offset(lv, s3172c2f4, ABISELECT(108,72), "S3172C2.s3172c2f4");
    check_field_offset(lv, s3172c2f5, ABISELECT(132,96), "S3172C2.s3172c2f5");
    test_class_info(&lv, &cd_S3172C2);
    dp->~S3172C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3172C2(Test_S3172C2, "S3172C2", ABISELECT(136,100));

#else // __cplusplus

extern void _ZN7S3172C2C1Ev();
extern void _ZN7S3172C2D1Ev();
Name_Map name_map_S3172C2[] = {
  NSPAIR(_ZN7S3172C2C1Ev),
  NSPAIR(_ZN7S3172C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3172C3;
extern VTBL_ENTRY _ZTI7S3172C3[];
extern  VTBL_ENTRY _ZTV7S3172C3[];
static Base_Class bases_S3172C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3172C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3172C2[];
extern void _ZN7S3172C2D1Ev();
extern void _ZN7S3172C2D0Ev();
extern void _ZN7S3172C32v3Ev();
extern void _ZN7S3172C32v4Ev();
extern void _ZN7S3172C32v5Ev();
extern void _ZN7S3172C32v6Ev();
extern void _ZN7S3172C32v7Ev();
extern void _ZN7S3172C32v8Ev();
extern void _ZN7S3172C32v9Ev();
extern void _ZN7S3172C33v10Ev();
extern void _ZN7S3172C33v11Ev();
extern void _ZN7S3172C33v12Ev();
extern void _ZN7S3172C33v13Ev();
extern void _ZN7S3172C33v14Ev();
extern void _ZN7S3172C33v15Ev();
extern void _ZN7S3172C33v16Ev();
extern void _ZN7S3172C33v17Ev();
extern void _ZN7S3172C33v18Ev();
extern void _ZN7S3172C33v19Ev();
extern void _ZN7S3172C33v20Ev();
extern void _ZN7S3172C33v21Ev();
extern void _ZN7S3172C33v22Ev();
extern void _ZN7S3172C33v23Ev();
extern void _ZN7S3172C33v24Ev();
extern void _ZN7S3172C33v25Ev();
extern void _ZN7S3172C33v26Ev();
extern void _ZN7S3172C33v27Ev();
extern void _ZN7S3172C33v28Ev();
extern void _ZN7S3172C33v29Ev();
extern void _ZN7S3172C33v30Ev();
extern void _ZN7S3172C33v31Ev();
extern void _ZN7S3172C33v32Ev();
extern void _ZN7S3172C33v33Ev();
extern void _ZN7S3172C33v34Ev();
extern void _ZN7S3172C33v35Ev();
extern void _ZN7S3172C33v36Ev();
extern void _ZN7S3172C33v37Ev();
extern void _ZN7S3172C33v38Ev();
extern void _ZN7S3172C33v39Ev();
extern void _ZN7S3172C33v40Ev();
extern void _ZN7S3172C33v41Ev();
extern void _ZN7S3172C33v42Ev();
extern void _ZN7S3172C33v43Ev();
extern void _ZN7S3172C33v44Ev();
extern void _ZN7S3172C33v45Ev();
extern void _ZN7S3172C33v46Ev();
extern void _ZN7S3172C33v47Ev();
extern void _ZN7S3172C33v48Ev();
extern void _ZN7S3172C33v49Ev();
extern void _ZN7S3172C33v50Ev();
extern void _ZN7S3172C33v51Ev();
extern void _ZN7S3172C33v52Ev();
extern void _ZN7S3172C33v53Ev();
extern void _ZN7S3172C33v54Ev();
extern void _ZN7S3172C33v55Ev();
extern void _ZN7S3172C33v56Ev();
extern void _ZN7S3172C33v57Ev();
extern void _ZN7S3172C33v58Ev();
extern void _ZN7S3172C33v59Ev();
extern void _ZN7S3172C33v60Ev();
extern void _ZN7S3172C33v61Ev();
extern void _ZN7S3172C33v62Ev();
extern void _ZN7S3172C33v63Ev();
extern void _ZN7S3172C33v64Ev();
extern void _ZN7S3172C33v65Ev();
extern void _ZN7S3172C33v66Ev();
extern void _ZN7S3172C23v67Ev();
extern void _ZN7S3172C23v68Ev();
extern void _ZN7S3172C23v69Ev();
extern void _ZN7S3172C23v70Ev();
static  VTBL_ENTRY vtc_S3172C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3172C2[0]),
  (VTBL_ENTRY)&_ZN7S3172C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3172C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3172C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3172C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3172C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3172C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3172C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3172C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3172C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3172C23v67Ev,
  (VTBL_ENTRY)&_ZN7S3172C23v68Ev,
  (VTBL_ENTRY)&_ZN7S3172C23v69Ev,
  (VTBL_ENTRY)&_ZN7S3172C23v70Ev,
};
extern VTBL_ENTRY _ZTI7S3172C2[];
extern  VTBL_ENTRY _ZTV7S3172C2[];
Class_Descriptor cd_S3172C2 = {  "S3172C2", // class name
  bases_S3172C2, 1,
  &(vtc_S3172C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,100), // object size
  NSPAIRA(_ZTI7S3172C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3172C2),72, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3172C1  : S3172C2 {
  virtual  ~S3172C1(); // _ZN7S3172C1D1Ev
  virtual void  v1(); // _ZN7S3172C12v1Ev
  virtual void  v2(); // _ZN7S3172C12v2Ev
  S3172C1(); // tgen
};
//SIG(1 S3172C1) C1{ BC2{ BC3{ vd v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v67 v68 v69 v70 Fi:1 Fi:1 Fi:1 FC4 Fi[6] Fc} vd v1 v2}


 S3172C1 ::~S3172C1(){ note_dtor("S3172C1", this);}
void  S3172C1 ::v1(){vfunc_called(this, "_ZN7S3172C12v1Ev");}
void  S3172C1 ::v2(){vfunc_called(this, "_ZN7S3172C12v2Ev");}
S3172C1 ::S3172C1(){ note_ctor("S3172C1", this);} // tgen

static void Test_S3172C1()
{
  extern Class_Descriptor cd_S3172C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,26)];
    init_test(&cd_S3172C1, buf);
    S3172C1 *dp, &lv = *(dp=new (buf) S3172C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,100), "sizeof(S3172C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3172C1)");
    check_base_class_offset(lv, (S3172C3*)(S3172C2*), 0, "S3172C1");
    check_base_class_offset(lv, (S3172C2*), 0, "S3172C1");
    test_class_info(&lv, &cd_S3172C1);
    dp->~S3172C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3172C1(Test_S3172C1, "S3172C1", ABISELECT(136,100));

#else // __cplusplus

extern void _ZN7S3172C1C1Ev();
extern void _ZN7S3172C1D1Ev();
Name_Map name_map_S3172C1[] = {
  NSPAIR(_ZN7S3172C1C1Ev),
  NSPAIR(_ZN7S3172C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3172C3;
extern VTBL_ENTRY _ZTI7S3172C3[];
extern  VTBL_ENTRY _ZTV7S3172C3[];
extern Class_Descriptor cd_S3172C2;
extern VTBL_ENTRY _ZTI7S3172C2[];
extern  VTBL_ENTRY _ZTV7S3172C2[];
static Base_Class bases_S3172C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3172C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3172C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S3172C1[];
extern void _ZN7S3172C1D1Ev();
extern void _ZN7S3172C1D0Ev();
extern void _ZN7S3172C32v3Ev();
extern void _ZN7S3172C32v4Ev();
extern void _ZN7S3172C32v5Ev();
extern void _ZN7S3172C32v6Ev();
extern void _ZN7S3172C32v7Ev();
extern void _ZN7S3172C32v8Ev();
extern void _ZN7S3172C32v9Ev();
extern void _ZN7S3172C33v10Ev();
extern void _ZN7S3172C33v11Ev();
extern void _ZN7S3172C33v12Ev();
extern void _ZN7S3172C33v13Ev();
extern void _ZN7S3172C33v14Ev();
extern void _ZN7S3172C33v15Ev();
extern void _ZN7S3172C33v16Ev();
extern void _ZN7S3172C33v17Ev();
extern void _ZN7S3172C33v18Ev();
extern void _ZN7S3172C33v19Ev();
extern void _ZN7S3172C33v20Ev();
extern void _ZN7S3172C33v21Ev();
extern void _ZN7S3172C33v22Ev();
extern void _ZN7S3172C33v23Ev();
extern void _ZN7S3172C33v24Ev();
extern void _ZN7S3172C33v25Ev();
extern void _ZN7S3172C33v26Ev();
extern void _ZN7S3172C33v27Ev();
extern void _ZN7S3172C33v28Ev();
extern void _ZN7S3172C33v29Ev();
extern void _ZN7S3172C33v30Ev();
extern void _ZN7S3172C33v31Ev();
extern void _ZN7S3172C33v32Ev();
extern void _ZN7S3172C33v33Ev();
extern void _ZN7S3172C33v34Ev();
extern void _ZN7S3172C33v35Ev();
extern void _ZN7S3172C33v36Ev();
extern void _ZN7S3172C33v37Ev();
extern void _ZN7S3172C33v38Ev();
extern void _ZN7S3172C33v39Ev();
extern void _ZN7S3172C33v40Ev();
extern void _ZN7S3172C33v41Ev();
extern void _ZN7S3172C33v42Ev();
extern void _ZN7S3172C33v43Ev();
extern void _ZN7S3172C33v44Ev();
extern void _ZN7S3172C33v45Ev();
extern void _ZN7S3172C33v46Ev();
extern void _ZN7S3172C33v47Ev();
extern void _ZN7S3172C33v48Ev();
extern void _ZN7S3172C33v49Ev();
extern void _ZN7S3172C33v50Ev();
extern void _ZN7S3172C33v51Ev();
extern void _ZN7S3172C33v52Ev();
extern void _ZN7S3172C33v53Ev();
extern void _ZN7S3172C33v54Ev();
extern void _ZN7S3172C33v55Ev();
extern void _ZN7S3172C33v56Ev();
extern void _ZN7S3172C33v57Ev();
extern void _ZN7S3172C33v58Ev();
extern void _ZN7S3172C33v59Ev();
extern void _ZN7S3172C33v60Ev();
extern void _ZN7S3172C33v61Ev();
extern void _ZN7S3172C33v62Ev();
extern void _ZN7S3172C33v63Ev();
extern void _ZN7S3172C33v64Ev();
extern void _ZN7S3172C33v65Ev();
extern void _ZN7S3172C33v66Ev();
extern void _ZN7S3172C23v67Ev();
extern void _ZN7S3172C23v68Ev();
extern void _ZN7S3172C23v69Ev();
extern void _ZN7S3172C23v70Ev();
extern void _ZN7S3172C12v1Ev();
extern void _ZN7S3172C12v2Ev();
static  VTBL_ENTRY vtc_S3172C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3172C1[0]),
  (VTBL_ENTRY)&_ZN7S3172C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3172C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3172C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3172C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3172C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3172C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3172C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3172C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3172C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3172C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3172C23v67Ev,
  (VTBL_ENTRY)&_ZN7S3172C23v68Ev,
  (VTBL_ENTRY)&_ZN7S3172C23v69Ev,
  (VTBL_ENTRY)&_ZN7S3172C23v70Ev,
  (VTBL_ENTRY)&_ZN7S3172C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3172C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S3172C1[];
extern  VTBL_ENTRY _ZTV7S3172C1[];
Class_Descriptor cd_S3172C1 = {  "S3172C1", // class name
  bases_S3172C1, 2,
  &(vtc_S3172C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,100), // object size
  NSPAIRA(_ZTI7S3172C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3172C1),74, //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  S1213C3  : S4677C37 {
  virtual  ~S1213C3(); // _ZN7S1213C3D1Ev
  virtual void  v27(); // _ZN7S1213C33v27Ev
  S1213C3(); // tgen
};
//SIG(-1 S1213C3) C1{ BC2{ m} vd v1}


 S1213C3 ::~S1213C3(){ note_dtor("S1213C3", this);}
void  S1213C3 ::v27(){vfunc_called(this, "_ZN7S1213C33v27Ev");}
S1213C3 ::S1213C3(){ note_ctor("S1213C3", this);} // tgen

static void Test_S1213C3()
{
  extern Class_Descriptor cd_S1213C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1213C3, buf);
    S1213C3 *dp, &lv = *(dp=new (buf) S1213C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1213C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1213C3)");
    check_base_class_offset(lv, (S4677C37*), 0, "S1213C3");
    test_class_info(&lv, &cd_S1213C3);
    dp->~S1213C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1213C3(Test_S1213C3, "S1213C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1213C3C1Ev();
extern void _ZN7S1213C3D1Ev();
Name_Map name_map_S1213C3[] = {
  NSPAIR(_ZN7S1213C3C1Ev),
  NSPAIR(_ZN7S1213C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
static Base_Class bases_S1213C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1213C3[];
extern void _ZN7S1213C3D1Ev();
extern void _ZN7S1213C3D0Ev();
extern void _ZN7S1213C33v27Ev();
static  VTBL_ENTRY vtc_S1213C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1213C3[0]),
  (VTBL_ENTRY)&_ZN7S1213C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1213C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1213C33v27Ev,
};
extern VTBL_ENTRY _ZTI7S1213C3[];
extern  VTBL_ENTRY _ZTV7S1213C3[];
Class_Descriptor cd_S1213C3 = {  "S1213C3", // class name
  bases_S1213C3, 1,
  &(vtc_S1213C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1213C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1213C3),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  S1213C2  : S1213C3 {
  char s1213c2f0[4];
  int s1213c2f1[23];
  char s1213c2f2[23];
  int s1213c2f3[24];
  __tsi64 s1213c2f4;
  char s1213c2f5;
  void *s1213c2f6;
  int s1213c2f7;
  char s1213c2f8;
  int s1213c2f9[4];
  char s1213c2f10[112];
  virtual  ~S1213C2(); // _ZN7S1213C2D1Ev
  virtual void  v28(); // _ZN7S1213C23v28Ev
  virtual void  v29(); // _ZN7S1213C23v29Ev
  virtual void  v30(); // _ZN7S1213C23v30Ev
  virtual void  v31(); // _ZN7S1213C23v31Ev
  virtual void  v32(); // _ZN7S1213C23v32Ev
  virtual void  v33(); // _ZN7S1213C23v33Ev
  virtual void  v34(); // _ZN7S1213C23v34Ev
  virtual void  v35(); // _ZN7S1213C23v35Ev
  virtual void  v36(); // _ZN7S1213C23v36Ev
  virtual void  v37(); // _ZN7S1213C23v37Ev
  virtual void  v38(); // _ZN7S1213C23v38Ev
  virtual void  v39(); // _ZN7S1213C23v39Ev
  virtual void  v40(); // _ZN7S1213C23v40Ev
  virtual void  v41(); // _ZN7S1213C23v41Ev
  virtual void  v42(); // _ZN7S1213C23v42Ev
  virtual void  v43(); // _ZN7S1213C23v43Ev
  virtual void  v44(); // _ZN7S1213C23v44Ev
  virtual void  v45(); // _ZN7S1213C23v45Ev
  virtual void  v46(); // _ZN7S1213C23v46Ev
  virtual void  v47(); // _ZN7S1213C23v47Ev
  virtual void  v48(); // _ZN7S1213C23v48Ev
  virtual void  v49(); // _ZN7S1213C23v49Ev
  virtual void  v50(); // _ZN7S1213C23v50Ev
  virtual void  v51(); // _ZN7S1213C23v51Ev
  virtual void  v52(); // _ZN7S1213C23v52Ev
  virtual void  v53(); // _ZN7S1213C23v53Ev
  virtual void  v54(); // _ZN7S1213C23v54Ev
  virtual void  v55(); // _ZN7S1213C23v55Ev
  virtual void  v56(); // _ZN7S1213C23v56Ev
  virtual void  v57(); // _ZN7S1213C23v57Ev
  virtual void  v58(); // _ZN7S1213C23v58Ev
  virtual void  v59(); // _ZN7S1213C23v59Ev
  virtual void  v60(); // _ZN7S1213C23v60Ev
  virtual void  v61(); // _ZN7S1213C23v61Ev
  virtual void  v62(); // _ZN7S1213C23v62Ev
  virtual void  v63(); // _ZN7S1213C23v63Ev
  virtual void  v64(); // _ZN7S1213C23v64Ev
  virtual void  v65(); // _ZN7S1213C23v65Ev
  virtual void  v66(); // _ZN7S1213C23v66Ev
  virtual void  v67(); // _ZN7S1213C23v67Ev
  virtual void  v68(); // _ZN7S1213C23v68Ev
  virtual void  v69(); // _ZN7S1213C23v69Ev
  S1213C2(); // tgen
};
//SIG(-1 S1213C2) C1{ BC2{ BC3{ m} vd v43} 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 Fc[4] Fi[23] Fc[23] Fi[24] FL Fc Fp Fi Fc Fi[4] Fc[112]}


 S1213C2 ::~S1213C2(){ note_dtor("S1213C2", this);}
void  S1213C2 ::v28(){vfunc_called(this, "_ZN7S1213C23v28Ev");}
void  S1213C2 ::v29(){vfunc_called(this, "_ZN7S1213C23v29Ev");}
void  S1213C2 ::v30(){vfunc_called(this, "_ZN7S1213C23v30Ev");}
void  S1213C2 ::v31(){vfunc_called(this, "_ZN7S1213C23v31Ev");}
void  S1213C2 ::v32(){vfunc_called(this, "_ZN7S1213C23v32Ev");}
void  S1213C2 ::v33(){vfunc_called(this, "_ZN7S1213C23v33Ev");}
void  S1213C2 ::v34(){vfunc_called(this, "_ZN7S1213C23v34Ev");}
void  S1213C2 ::v35(){vfunc_called(this, "_ZN7S1213C23v35Ev");}
void  S1213C2 ::v36(){vfunc_called(this, "_ZN7S1213C23v36Ev");}
void  S1213C2 ::v37(){vfunc_called(this, "_ZN7S1213C23v37Ev");}
void  S1213C2 ::v38(){vfunc_called(this, "_ZN7S1213C23v38Ev");}
void  S1213C2 ::v39(){vfunc_called(this, "_ZN7S1213C23v39Ev");}
void  S1213C2 ::v40(){vfunc_called(this, "_ZN7S1213C23v40Ev");}
void  S1213C2 ::v41(){vfunc_called(this, "_ZN7S1213C23v41Ev");}
void  S1213C2 ::v42(){vfunc_called(this, "_ZN7S1213C23v42Ev");}
void  S1213C2 ::v43(){vfunc_called(this, "_ZN7S1213C23v43Ev");}
void  S1213C2 ::v44(){vfunc_called(this, "_ZN7S1213C23v44Ev");}
void  S1213C2 ::v45(){vfunc_called(this, "_ZN7S1213C23v45Ev");}
void  S1213C2 ::v46(){vfunc_called(this, "_ZN7S1213C23v46Ev");}
void  S1213C2 ::v47(){vfunc_called(this, "_ZN7S1213C23v47Ev");}
void  S1213C2 ::v48(){vfunc_called(this, "_ZN7S1213C23v48Ev");}
void  S1213C2 ::v49(){vfunc_called(this, "_ZN7S1213C23v49Ev");}
void  S1213C2 ::v50(){vfunc_called(this, "_ZN7S1213C23v50Ev");}
void  S1213C2 ::v51(){vfunc_called(this, "_ZN7S1213C23v51Ev");}
void  S1213C2 ::v52(){vfunc_called(this, "_ZN7S1213C23v52Ev");}
void  S1213C2 ::v53(){vfunc_called(this, "_ZN7S1213C23v53Ev");}
void  S1213C2 ::v54(){vfunc_called(this, "_ZN7S1213C23v54Ev");}
void  S1213C2 ::v55(){vfunc_called(this, "_ZN7S1213C23v55Ev");}
void  S1213C2 ::v56(){vfunc_called(this, "_ZN7S1213C23v56Ev");}
void  S1213C2 ::v57(){vfunc_called(this, "_ZN7S1213C23v57Ev");}
void  S1213C2 ::v58(){vfunc_called(this, "_ZN7S1213C23v58Ev");}
void  S1213C2 ::v59(){vfunc_called(this, "_ZN7S1213C23v59Ev");}
void  S1213C2 ::v60(){vfunc_called(this, "_ZN7S1213C23v60Ev");}
void  S1213C2 ::v61(){vfunc_called(this, "_ZN7S1213C23v61Ev");}
void  S1213C2 ::v62(){vfunc_called(this, "_ZN7S1213C23v62Ev");}
void  S1213C2 ::v63(){vfunc_called(this, "_ZN7S1213C23v63Ev");}
void  S1213C2 ::v64(){vfunc_called(this, "_ZN7S1213C23v64Ev");}
void  S1213C2 ::v65(){vfunc_called(this, "_ZN7S1213C23v65Ev");}
void  S1213C2 ::v66(){vfunc_called(this, "_ZN7S1213C23v66Ev");}
void  S1213C2 ::v67(){vfunc_called(this, "_ZN7S1213C23v67Ev");}
void  S1213C2 ::v68(){vfunc_called(this, "_ZN7S1213C23v68Ev");}
void  S1213C2 ::v69(){vfunc_called(this, "_ZN7S1213C23v69Ev");}
S1213C2 ::S1213C2(){ note_ctor("S1213C2", this);} // tgen

static void Test_S1213C2()
{
  extern Class_Descriptor cd_S1213C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(49,94)];
    init_test(&cd_S1213C2, buf);
    S1213C2 *dp, &lv = *(dp=new (buf) S1213C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,372), "sizeof(S1213C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1213C2)");
    check_base_class_offset(lv, (S4677C37*)(S1213C3*), 0, "S1213C2");
    check_base_class_offset(lv, (S1213C3*), 0, "S1213C2");
    check_field_offset(lv, s1213c2f0, ABISELECT(8,4), "S1213C2.s1213c2f0");
    check_field_offset(lv, s1213c2f1, ABISELECT(12,8), "S1213C2.s1213c2f1");
    check_field_offset(lv, s1213c2f2, ABISELECT(104,100), "S1213C2.s1213c2f2");
    check_field_offset(lv, s1213c2f3, ABISELECT(128,124), "S1213C2.s1213c2f3");
    check_field_offset(lv, s1213c2f4, ABISELECT(224,220), "S1213C2.s1213c2f4");
    check_field_offset(lv, s1213c2f5, ABISELECT(232,228), "S1213C2.s1213c2f5");
    check_field_offset(lv, s1213c2f6, ABISELECT(240,232), "S1213C2.s1213c2f6");
    check_field_offset(lv, s1213c2f7, ABISELECT(248,236), "S1213C2.s1213c2f7");
    check_field_offset(lv, s1213c2f8, ABISELECT(252,240), "S1213C2.s1213c2f8");
    check_field_offset(lv, s1213c2f9, ABISELECT(256,244), "S1213C2.s1213c2f9");
    check_field_offset(lv, s1213c2f10, ABISELECT(272,260), "S1213C2.s1213c2f10");
    test_class_info(&lv, &cd_S1213C2);
    dp->~S1213C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1213C2(Test_S1213C2, "S1213C2", ABISELECT(384,372));

#else // __cplusplus

extern void _ZN7S1213C2C1Ev();
extern void _ZN7S1213C2D1Ev();
Name_Map name_map_S1213C2[] = {
  NSPAIR(_ZN7S1213C2C1Ev),
  NSPAIR(_ZN7S1213C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S1213C3;
extern VTBL_ENTRY _ZTI7S1213C3[];
extern  VTBL_ENTRY _ZTV7S1213C3[];
static Base_Class bases_S1213C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1213C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1213C2[];
extern void _ZN7S1213C2D1Ev();
extern void _ZN7S1213C2D0Ev();
extern void _ZN7S1213C33v27Ev();
extern void _ZN7S1213C23v28Ev();
extern void _ZN7S1213C23v29Ev();
extern void _ZN7S1213C23v30Ev();
extern void _ZN7S1213C23v31Ev();
extern void _ZN7S1213C23v32Ev();
extern void _ZN7S1213C23v33Ev();
extern void _ZN7S1213C23v34Ev();
extern void _ZN7S1213C23v35Ev();
extern void _ZN7S1213C23v36Ev();
extern void _ZN7S1213C23v37Ev();
extern void _ZN7S1213C23v38Ev();
extern void _ZN7S1213C23v39Ev();
extern void _ZN7S1213C23v40Ev();
extern void _ZN7S1213C23v41Ev();
extern void _ZN7S1213C23v42Ev();
extern void _ZN7S1213C23v43Ev();
extern void _ZN7S1213C23v44Ev();
extern void _ZN7S1213C23v45Ev();
extern void _ZN7S1213C23v46Ev();
extern void _ZN7S1213C23v47Ev();
extern void _ZN7S1213C23v48Ev();
extern void _ZN7S1213C23v49Ev();
extern void _ZN7S1213C23v50Ev();
extern void _ZN7S1213C23v51Ev();
extern void _ZN7S1213C23v52Ev();
extern void _ZN7S1213C23v53Ev();
extern void _ZN7S1213C23v54Ev();
extern void _ZN7S1213C23v55Ev();
extern void _ZN7S1213C23v56Ev();
extern void _ZN7S1213C23v57Ev();
extern void _ZN7S1213C23v58Ev();
extern void _ZN7S1213C23v59Ev();
extern void _ZN7S1213C23v60Ev();
extern void _ZN7S1213C23v61Ev();
extern void _ZN7S1213C23v62Ev();
extern void _ZN7S1213C23v63Ev();
extern void _ZN7S1213C23v64Ev();
extern void _ZN7S1213C23v65Ev();
extern void _ZN7S1213C23v66Ev();
extern void _ZN7S1213C23v67Ev();
extern void _ZN7S1213C23v68Ev();
extern void _ZN7S1213C23v69Ev();
static  VTBL_ENTRY vtc_S1213C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1213C2[0]),
  (VTBL_ENTRY)&_ZN7S1213C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1213C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1213C33v27Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v28Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v29Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v30Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v31Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v32Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v33Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v34Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v35Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v36Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v37Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v38Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v39Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v40Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v41Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v42Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v43Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v44Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v45Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v46Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v47Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v48Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v49Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v50Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v51Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v52Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v53Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v54Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v55Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v56Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v57Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v58Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v59Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v60Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v61Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v62Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v63Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v64Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v65Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v66Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v67Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v68Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v69Ev,
};
extern VTBL_ENTRY _ZTI7S1213C2[];
extern  VTBL_ENTRY _ZTV7S1213C2[];
Class_Descriptor cd_S1213C2 = {  "S1213C2", // class name
  bases_S1213C2, 2,
  &(vtc_S1213C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(384,372), // object size
  NSPAIRA(_ZTI7S1213C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1213C2),47, //virtual function table var
  2, // 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  S1213C1  : S1213C2 {
  char s1213c1f0;
  virtual  ~S1213C1(); // _ZN7S1213C1D1Ev
  virtual void  v1(); // _ZN7S1213C12v1Ev
  virtual void  v2(); // _ZN7S1213C12v2Ev
  virtual void  v3(); // _ZN7S1213C12v3Ev
  virtual void  v4(); // _ZN7S1213C12v4Ev
  virtual void  v5(); // _ZN7S1213C12v5Ev
  virtual void  v6(); // _ZN7S1213C12v6Ev
  virtual void  v7(); // _ZN7S1213C12v7Ev
  virtual void  v8(); // _ZN7S1213C12v8Ev
  virtual void  v9(); // _ZN7S1213C12v9Ev
  virtual void  v10(); // _ZN7S1213C13v10Ev
  virtual void  v11(); // _ZN7S1213C13v11Ev
  virtual void  v12(); // _ZN7S1213C13v12Ev
  virtual void  v13(); // _ZN7S1213C13v13Ev
  virtual void  v14(); // _ZN7S1213C13v14Ev
  virtual void  v15(); // _ZN7S1213C13v15Ev
  virtual void  v16(); // _ZN7S1213C13v16Ev
  virtual void  v17(); // _ZN7S1213C13v17Ev
  virtual void  v18(); // _ZN7S1213C13v18Ev
  virtual void  v19(); // _ZN7S1213C13v19Ev
  virtual void  v20(); // _ZN7S1213C13v20Ev
  virtual void  v21(); // _ZN7S1213C13v21Ev
  virtual void  v22(); // _ZN7S1213C13v22Ev
  virtual void  v23(); // _ZN7S1213C13v23Ev
  virtual void  v24(); // _ZN7S1213C13v24Ev
  virtual void  v25(); // _ZN7S1213C13v25Ev
  virtual void  v26(); // _ZN7S1213C13v26Ev
  S1213C1(); // tgen
};
//SIG(1 S1213C1) C1{ BC2{ BC3{ BC4{ m} vd v27} vd v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 Fc[4] Fi[23] Fc[23] Fi[24] FL Fc Fp Fi Fc Fi[4] Fc[112]} 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 Fc}


 S1213C1 ::~S1213C1(){ note_dtor("S1213C1", this);}
void  S1213C1 ::v1(){vfunc_called(this, "_ZN7S1213C12v1Ev");}
void  S1213C1 ::v2(){vfunc_called(this, "_ZN7S1213C12v2Ev");}
void  S1213C1 ::v3(){vfunc_called(this, "_ZN7S1213C12v3Ev");}
void  S1213C1 ::v4(){vfunc_called(this, "_ZN7S1213C12v4Ev");}
void  S1213C1 ::v5(){vfunc_called(this, "_ZN7S1213C12v5Ev");}
void  S1213C1 ::v6(){vfunc_called(this, "_ZN7S1213C12v6Ev");}
void  S1213C1 ::v7(){vfunc_called(this, "_ZN7S1213C12v7Ev");}
void  S1213C1 ::v8(){vfunc_called(this, "_ZN7S1213C12v8Ev");}
void  S1213C1 ::v9(){vfunc_called(this, "_ZN7S1213C12v9Ev");}
void  S1213C1 ::v10(){vfunc_called(this, "_ZN7S1213C13v10Ev");}
void  S1213C1 ::v11(){vfunc_called(this, "_ZN7S1213C13v11Ev");}
void  S1213C1 ::v12(){vfunc_called(this, "_ZN7S1213C13v12Ev");}
void  S1213C1 ::v13(){vfunc_called(this, "_ZN7S1213C13v13Ev");}
void  S1213C1 ::v14(){vfunc_called(this, "_ZN7S1213C13v14Ev");}
void  S1213C1 ::v15(){vfunc_called(this, "_ZN7S1213C13v15Ev");}
void  S1213C1 ::v16(){vfunc_called(this, "_ZN7S1213C13v16Ev");}
void  S1213C1 ::v17(){vfunc_called(this, "_ZN7S1213C13v17Ev");}
void  S1213C1 ::v18(){vfunc_called(this, "_ZN7S1213C13v18Ev");}
void  S1213C1 ::v19(){vfunc_called(this, "_ZN7S1213C13v19Ev");}
void  S1213C1 ::v20(){vfunc_called(this, "_ZN7S1213C13v20Ev");}
void  S1213C1 ::v21(){vfunc_called(this, "_ZN7S1213C13v21Ev");}
void  S1213C1 ::v22(){vfunc_called(this, "_ZN7S1213C13v22Ev");}
void  S1213C1 ::v23(){vfunc_called(this, "_ZN7S1213C13v23Ev");}
void  S1213C1 ::v24(){vfunc_called(this, "_ZN7S1213C13v24Ev");}
void  S1213C1 ::v25(){vfunc_called(this, "_ZN7S1213C13v25Ev");}
void  S1213C1 ::v26(){vfunc_called(this, "_ZN7S1213C13v26Ev");}
S1213C1 ::S1213C1(){ note_ctor("S1213C1", this);} // tgen

static void Test_S1213C1()
{
  extern Class_Descriptor cd_S1213C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(50,95)];
    init_test(&cd_S1213C1, buf);
    S1213C1 *dp, &lv = *(dp=new (buf) S1213C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(392,376), "sizeof(S1213C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1213C1)");
    check_base_class_offset(lv, (S4677C37*)(S1213C3*)(S1213C2*), 0, "S1213C1");
    check_base_class_offset(lv, (S1213C3*)(S1213C2*), 0, "S1213C1");
    check_base_class_offset(lv, (S1213C2*), 0, "S1213C1");
    check_field_offset(lv, s1213c1f0, ABISELECT(384,372), "S1213C1.s1213c1f0");
    test_class_info(&lv, &cd_S1213C1);
    dp->~S1213C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1213C1(Test_S1213C1, "S1213C1", ABISELECT(392,376));

#else // __cplusplus

extern void _ZN7S1213C1C1Ev();
extern void _ZN7S1213C1D1Ev();
Name_Map name_map_S1213C1[] = {
  NSPAIR(_ZN7S1213C1C1Ev),
  NSPAIR(_ZN7S1213C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S1213C3;
extern VTBL_ENTRY _ZTI7S1213C3[];
extern  VTBL_ENTRY _ZTV7S1213C3[];
extern Class_Descriptor cd_S1213C2;
extern VTBL_ENTRY _ZTI7S1213C2[];
extern  VTBL_ENTRY _ZTV7S1213C2[];
static Base_Class bases_S1213C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1213C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1213C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1213C1[];
extern void _ZN7S1213C1D1Ev();
extern void _ZN7S1213C1D0Ev();
extern void _ZN7S1213C33v27Ev();
extern void _ZN7S1213C23v28Ev();
extern void _ZN7S1213C23v29Ev();
extern void _ZN7S1213C23v30Ev();
extern void _ZN7S1213C23v31Ev();
extern void _ZN7S1213C23v32Ev();
extern void _ZN7S1213C23v33Ev();
extern void _ZN7S1213C23v34Ev();
extern void _ZN7S1213C23v35Ev();
extern void _ZN7S1213C23v36Ev();
extern void _ZN7S1213C23v37Ev();
extern void _ZN7S1213C23v38Ev();
extern void _ZN7S1213C23v39Ev();
extern void _ZN7S1213C23v40Ev();
extern void _ZN7S1213C23v41Ev();
extern void _ZN7S1213C23v42Ev();
extern void _ZN7S1213C23v43Ev();
extern void _ZN7S1213C23v44Ev();
extern void _ZN7S1213C23v45Ev();
extern void _ZN7S1213C23v46Ev();
extern void _ZN7S1213C23v47Ev();
extern void _ZN7S1213C23v48Ev();
extern void _ZN7S1213C23v49Ev();
extern void _ZN7S1213C23v50Ev();
extern void _ZN7S1213C23v51Ev();
extern void _ZN7S1213C23v52Ev();
extern void _ZN7S1213C23v53Ev();
extern void _ZN7S1213C23v54Ev();
extern void _ZN7S1213C23v55Ev();
extern void _ZN7S1213C23v56Ev();
extern void _ZN7S1213C23v57Ev();
extern void _ZN7S1213C23v58Ev();
extern void _ZN7S1213C23v59Ev();
extern void _ZN7S1213C23v60Ev();
extern void _ZN7S1213C23v61Ev();
extern void _ZN7S1213C23v62Ev();
extern void _ZN7S1213C23v63Ev();
extern void _ZN7S1213C23v64Ev();
extern void _ZN7S1213C23v65Ev();
extern void _ZN7S1213C23v66Ev();
extern void _ZN7S1213C23v67Ev();
extern void _ZN7S1213C23v68Ev();
extern void _ZN7S1213C23v69Ev();
extern void _ZN7S1213C12v1Ev();
extern void _ZN7S1213C12v2Ev();
extern void _ZN7S1213C12v3Ev();
extern void _ZN7S1213C12v4Ev();
extern void _ZN7S1213C12v5Ev();
extern void _ZN7S1213C12v6Ev();
extern void _ZN7S1213C12v7Ev();
extern void _ZN7S1213C12v8Ev();
extern void _ZN7S1213C12v9Ev();
extern void _ZN7S1213C13v10Ev();
extern void _ZN7S1213C13v11Ev();
extern void _ZN7S1213C13v12Ev();
extern void _ZN7S1213C13v13Ev();
extern void _ZN7S1213C13v14Ev();
extern void _ZN7S1213C13v15Ev();
extern void _ZN7S1213C13v16Ev();
extern void _ZN7S1213C13v17Ev();
extern void _ZN7S1213C13v18Ev();
extern void _ZN7S1213C13v19Ev();
extern void _ZN7S1213C13v20Ev();
extern void _ZN7S1213C13v21Ev();
extern void _ZN7S1213C13v22Ev();
extern void _ZN7S1213C13v23Ev();
extern void _ZN7S1213C13v24Ev();
extern void _ZN7S1213C13v25Ev();
extern void _ZN7S1213C13v26Ev();
static  VTBL_ENTRY vtc_S1213C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1213C1[0]),
  (VTBL_ENTRY)&_ZN7S1213C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1213C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1213C33v27Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v28Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v29Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v30Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v31Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v32Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v33Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v34Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v35Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v36Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v37Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v38Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v39Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v40Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v41Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v42Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v43Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v44Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v45Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v46Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v47Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v48Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v49Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v50Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v51Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v52Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v53Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v54Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v55Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v56Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v57Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v58Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v59Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v60Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v61Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v62Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v63Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v64Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v65Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v66Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v67Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v68Ev,
  (VTBL_ENTRY)&_ZN7S1213C23v69Ev,
  (VTBL_ENTRY)&_ZN7S1213C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1213C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1213C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1213C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1213C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1213C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1213C12v7Ev,
  (VTBL_ENTRY)&_ZN7S1213C12v8Ev,
  (VTBL_ENTRY)&_ZN7S1213C12v9Ev,
  (VTBL_ENTRY)&_ZN7S1213C13v10Ev,
  (VTBL_ENTRY)&_ZN7S1213C13v11Ev,
  (VTBL_ENTRY)&_ZN7S1213C13v12Ev,
  (VTBL_ENTRY)&_ZN7S1213C13v13Ev,
  (VTBL_ENTRY)&_ZN7S1213C13v14Ev,
  (VTBL_ENTRY)&_ZN7S1213C13v15Ev,
  (VTBL_ENTRY)&_ZN7S1213C13v16Ev,
  (VTBL_ENTRY)&_ZN7S1213C13v17Ev,
  (VTBL_ENTRY)&_ZN7S1213C13v18Ev,
  (VTBL_ENTRY)&_ZN7S1213C13v19Ev,
  (VTBL_ENTRY)&_ZN7S1213C13v20Ev,
  (VTBL_ENTRY)&_ZN7S1213C13v21Ev,
  (VTBL_ENTRY)&_ZN7S1213C13v22Ev,
  (VTBL_ENTRY)&_ZN7S1213C13v23Ev,
  (VTBL_ENTRY)&_ZN7S1213C13v24Ev,
  (VTBL_ENTRY)&_ZN7S1213C13v25Ev,
  (VTBL_ENTRY)&_ZN7S1213C13v26Ev,
};
extern VTBL_ENTRY _ZTI7S1213C1[];
extern  VTBL_ENTRY _ZTV7S1213C1[];
Class_Descriptor cd_S1213C1 = {  "S1213C1", // class name
  bases_S1213C1, 3,
  &(vtc_S1213C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(392,376), // object size
  NSPAIRA(_ZTI7S1213C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1213C1),73, //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  S7935C2_nt  {
  ::S4677C25 s7935c2f0;
  ::S4677C21 s7935c2f1;
  char s7935c2f2;
  void  mf7935c2(); // _ZN10S7935C2_nt8mf7935c2Ev
  virtual  ~S7935C2_nt(); // _ZN10S7935C2_ntD1Ev
  S7935C2_nt(); // tgen
};
//SIG(-1 S7935C2_nt) C1{ vd m FC2{ m Fp Fi FC3{ m} FC4{ m}} FC5{ m Fp Fi FC6{ m} FC3} Fc}


void  S7935C2_nt ::mf7935c2(){}
 S7935C2_nt ::~S7935C2_nt(){ note_dtor("S7935C2_nt", this);}
S7935C2_nt ::S7935C2_nt(){ note_ctor("S7935C2_nt", this);} // tgen

//skip512 S7935C2_nt

#else // __cplusplus

extern void _ZN10S7935C2_ntC1Ev();
extern void _ZN10S7935C2_ntD1Ev();
Name_Map name_map_S7935C2_nt[] = {
  NSPAIR(_ZN10S7935C2_ntC1Ev),
  NSPAIR(_ZN10S7935C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7935C2_nt[];
extern void _ZN10S7935C2_ntD1Ev();
extern void _ZN10S7935C2_ntD0Ev();
static  VTBL_ENTRY vtc_S7935C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7935C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S7935C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S7935C2_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S7935C2_nt[];
VTBL_ENTRY *P__ZTI10S7935C2_nt = _ZTI10S7935C2_nt; 
extern  VTBL_ENTRY _ZTV10S7935C2_nt[];
Class_Descriptor cd_S7935C2_nt = {  "S7935C2_nt", // class name
  0,0,//no base classes
  &(vtc_S7935C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI10S7935C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7935C2_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  S7935C9  {
  virtual  ~S7935C9(); // _ZN7S7935C9D1Ev
  virtual void  v2(); // _ZN7S7935C92v2Ev
  S7935C9(); // tgen
};
//SIG(-1 S7935C9) C1{ vd v1}


 S7935C9 ::~S7935C9(){ note_dtor("S7935C9", this);}
void  S7935C9 ::v2(){vfunc_called(this, "_ZN7S7935C92v2Ev");}
S7935C9 ::S7935C9(){ note_ctor("S7935C9", this);} // tgen

static void Test_S7935C9()
{
  extern Class_Descriptor cd_S7935C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7935C9, buf);
    S7935C9 *dp, &lv = *(dp=new (buf) S7935C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7935C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7935C9)");
    test_class_info(&lv, &cd_S7935C9);
    dp->~S7935C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7935C9(Test_S7935C9, "S7935C9", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7935C9C1Ev();
extern void _ZN7S7935C9D1Ev();
Name_Map name_map_S7935C9[] = {
  NSPAIR(_ZN7S7935C9C1Ev),
  NSPAIR(_ZN7S7935C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7935C9[];
extern void _ZN7S7935C9D1Ev();
extern void _ZN7S7935C9D0Ev();
extern void _ZN7S7935C92v2Ev();
static  VTBL_ENTRY vtc_S7935C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7935C9[0]),
  (VTBL_ENTRY)&_ZN7S7935C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7935C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7935C92v2Ev,
};
extern VTBL_ENTRY _ZTI7S7935C9[];
extern  VTBL_ENTRY _ZTV7S7935C9[];
Class_Descriptor cd_S7935C9 = {  "S7935C9", // class name
  0,0,//no base classes
  &(vtc_S7935C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7935C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7935C9),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  S7935C10_nt  {
  __tsi64 s7935c10f0;
  void  mf7935c10(); // _ZN11S7935C10_nt9mf7935c10Ev
};
//SIG(-1 S7935C10_nt) C1{ m FL}


void  S7935C10_nt ::mf7935c10(){}

//skip512 S7935C10_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7935C16_nt  {
  void *s7935c16f0;
  int s7935c16f1;
  ::S4677C37 s7935c16f2;
  ::S4677C27 s7935c16f3;
  void  mf7935c16(); // _ZN11S7935C16_nt9mf7935c16Ev
};
//SIG(-1 S7935C16_nt) C1{ m Fp Fi FC2{ m} FC3{ m}}


void  S7935C16_nt ::mf7935c16(){}

//skip512 S7935C16_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7935C12_nt  : S7935C2_nt , S7935C9 {
  ::S4677C5_nt s7935c12f0;
  ::S4677C5_nt s7935c12f1;
  ::S7935C16_nt s7935c12f2;
  char s7935c12f3[2];
  virtual  ~S7935C12_nt(); // _ZN11S7935C12_ntD1Ev
  virtual void  v3(); // _ZN11S7935C12_nt2v3Ev
  S7935C12_nt(); // tgen
};
//SIG(-1 S7935C12_nt) C1{ BC2{ vd m FC3{ m Fp Fi FC4{ m} FC5{ m}} FC6{ m Fp Fi FC7{ m} FC4} Fc} BC8{ vd v2} vd v1 FC9{ m Fp Fi FC10{ m} FC10} FC9 FC11{ m Fp Fi FC12{ m} FC5} Fc[2]}


 S7935C12_nt ::~S7935C12_nt(){ note_dtor("S7935C12_nt", this);}
void  S7935C12_nt ::v3(){vfunc_called(this, "_ZN11S7935C12_nt2v3Ev");}
S7935C12_nt ::S7935C12_nt(){ note_ctor("S7935C12_nt", this);} // tgen

//skip512 S7935C12_nt

#else // __cplusplus

extern void _ZN11S7935C12_ntC1Ev();
extern void _ZN11S7935C12_ntD1Ev();
Name_Map name_map_S7935C12_nt[] = {
  NSPAIR(_ZN11S7935C12_ntC1Ev),
  NSPAIR(_ZN11S7935C12_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7935C2_nt;
extern VTBL_ENTRY _ZTI10S7935C2_nt[];
extern  VTBL_ENTRY _ZTV10S7935C2_nt[];
extern Class_Descriptor cd_S7935C9;
extern VTBL_ENTRY _ZTI7S7935C9[];
extern  VTBL_ENTRY _ZTV7S7935C9[];
static Base_Class bases_S7935C12_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7935C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7935C9,    ABISELECT(48,32), //bcp->offset
    5, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI11S7935C12_nt[];
extern void _ZN11S7935C12_ntD1Ev();
extern void _ZN11S7935C12_ntD0Ev();
extern void _ZN11S7935C12_nt2v3Ev();
extern void ABISELECT(_ZThn48_N11S7935C12_ntD1Ev,_ZThn32_N11S7935C12_ntD1Ev)();
extern void ABISELECT(_ZThn48_N11S7935C12_ntD0Ev,_ZThn32_N11S7935C12_ntD0Ev)();
extern void _ZN7S7935C92v2Ev();
static  VTBL_ENTRY vtc_S7935C12_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S7935C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S7935C12_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S7935C12_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S7935C12_nt2v3Ev,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI11S7935C12_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N11S7935C12_ntD1Ev,_ZThn32_N11S7935C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N11S7935C12_ntD0Ev,_ZThn32_N11S7935C12_ntD0Ev),
  (VTBL_ENTRY)&_ZN7S7935C92v2Ev,
};
extern VTBL_ENTRY _ZTI11S7935C12_nt[];
VTBL_ENTRY *P__ZTI11S7935C12_nt = _ZTI11S7935C12_nt; 
extern  VTBL_ENTRY _ZTV11S7935C12_nt[];
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7935C22  {
  void *s7935c22f0;
  int s7935c22f1;
  ::S4677C23 s7935c22f2;
  ::S4677C20 s7935c22f3;
  void  mf7935c22(); // _ZN8S7935C229mf7935c22Ev
};
//SIG(-1 S7935C22) C1{ m Fp Fi FC2{ m} FC3{ m}}


void  S7935C22 ::mf7935c22(){}

static void Test_S7935C22()
{
  {
    init_simple_test("S7935C22");
    S7935C22 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7935C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7935C22)");
    check_field_offset(lv, s7935c22f0, 0, "S7935C22.s7935c22f0");
    check_field_offset(lv, s7935c22f1, ABISELECT(8,4), "S7935C22.s7935c22f1");
    check_field_offset(lv, s7935c22f2, ABISELECT(12,8), "S7935C22.s7935c22f2");
    check_field_offset(lv, s7935c22f3, ABISELECT(13,9), "S7935C22.s7935c22f3");
  }
}
static Arrange_To_Call_Me vS7935C22(Test_S7935C22, "S7935C22", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7935C25  {
  void *s7935c25f0;
  int s7935c25f1;
  __tsi64 s7935c25f2;
  int s7935c25f3;
  __tsi64 s7935c25f4;
  int s7935c25f5;
};
//SIG(-1 S7935C25) C1{ Fp Fi FL Fi FL Fi}



static void Test_S7935C25()
{
  {
    init_simple_test("S7935C25");
    S7935C25 lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S7935C25)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7935C25)");
    check_field_offset(lv, s7935c25f0, 0, "S7935C25.s7935c25f0");
    check_field_offset(lv, s7935c25f1, ABISELECT(8,4), "S7935C25.s7935c25f1");
    check_field_offset(lv, s7935c25f2, ABISELECT(16,8), "S7935C25.s7935c25f2");
    check_field_offset(lv, s7935c25f3, ABISELECT(24,16), "S7935C25.s7935c25f3");
    check_field_offset(lv, s7935c25f4, ABISELECT(32,20), "S7935C25.s7935c25f4");
    check_field_offset(lv, s7935c25f5, ABISELECT(40,28), "S7935C25.s7935c25f5");
  }
}
static Arrange_To_Call_Me vS7935C25(Test_S7935C25, "S7935C25", ABISELECT(48,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7935C1  : S7935C2_nt , S7935C9 {
  int s7935c1f0;
  void *s7935c1f1[5];
  int s7935c1f2[2];
  ::S7935C10_nt s7935c1f3;
  char s7935c1f4;
  ::S6638C16_nt s7935c1f5;
  ::S6638C16_nt s7935c1f6;
  ::S6638C16_nt s7935c1f7;
  char s7935c1f8;
  ::S7935C12_nt s7935c1f9;
  void *s7935c1f10[3];
  ::S7935C16_nt s7935c1f11;
  void *s7935c1f12[3];
  __tsi64 s7935c1f13[3];
  char s7935c1f14[9];
  ::S7935C22 s7935c1f15;
  char s7935c1f16;
  ::S7935C25 s7935c1f17;
  int s7935c1f18;
  char s7935c1f19;
  int s7935c1f20[2];
  virtual  ~S7935C1(); // _ZN7S7935C1D1Ev
  virtual void  v1(); // _ZN7S7935C12v1Ev
  S7935C1(); // tgen
};
//SIG(1 S7935C1) C1{ BC2{ vd m FC3{ m Fp Fi FC4{ m} FC5{ m}} FC6{ m Fp Fi FC7{ m} FC4} Fc} BC8{ vd v2} vd v1 Fi Fp[5] Fi[2] FC9{ m FL} Fc FC10{ m Fp[2]} FC10 FC10 Fc FC11{ BC2 BC8 vd v3 FC12{ m Fp Fi FC13{ m} FC13} FC12 FC14{ m Fp Fi FC15{ m} FC5} Fc[2]} Fp[3] FC14 Fp[3] FL[3] Fc[9] FC16{ m Fp Fi FC4 FC7} Fc FC17{ Fp Fi FL Fi FL Fi} Fi Fc Fi[2]}


 S7935C1 ::~S7935C1(){ note_dtor("S7935C1", this);}
void  S7935C1 ::v1(){vfunc_called(this, "_ZN7S7935C12v1Ev");}
S7935C1 ::S7935C1(){ note_ctor("S7935C1", this);} // tgen

static void Test_S7935C1()
{
  extern Class_Descriptor cd_S7935C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(62,81)];
    init_test(&cd_S7935C1, buf);
    S7935C1 *dp, &lv = *(dp=new (buf) S7935C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(488,320), "sizeof(S7935C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7935C1)");
    check_base_class_offset(lv, (S7935C2_nt*), 0, "S7935C1");
    check_base_class_offset(lv, (S7935C9*), ABISELECT(48,32), "S7935C1");
    check_field_offset(lv, s7935c1f0, ABISELECT(56,36), "S7935C1.s7935c1f0");
    check_field_offset(lv, s7935c1f1, ABISELECT(64,40), "S7935C1.s7935c1f1");
    check_field_offset(lv, s7935c1f2, ABISELECT(104,60), "S7935C1.s7935c1f2");
    check_field_offset(lv, s7935c1f3, ABISELECT(112,68), "S7935C1.s7935c1f3");
    check_field_offset(lv, s7935c1f4, ABISELECT(120,76), "S7935C1.s7935c1f4");
    check_field_offset(lv, s7935c1f5, ABISELECT(128,80), "S7935C1.s7935c1f5");
    check_field_offset(lv, s7935c1f6, ABISELECT(144,88), "S7935C1.s7935c1f6");
    check_field_offset(lv, s7935c1f7, ABISELECT(160,96), "S7935C1.s7935c1f7");
    check_field_offset(lv, s7935c1f8, ABISELECT(176,104), "S7935C1.s7935c1f8");
    check_field_offset(lv, s7935c1f9, ABISELECT(184,108), "S7935C1.s7935c1f9");
    check_field_offset(lv, s7935c1f10, ABISELECT(296,184), "S7935C1.s7935c1f10");
    check_field_offset(lv, s7935c1f11, ABISELECT(320,196), "S7935C1.s7935c1f11");
    check_field_offset(lv, s7935c1f12, ABISELECT(336,208), "S7935C1.s7935c1f12");
    check_field_offset(lv, s7935c1f13, ABISELECT(360,220), "S7935C1.s7935c1f13");
    check_field_offset(lv, s7935c1f14, ABISELECT(384,244), "S7935C1.s7935c1f14");
    check_field_offset(lv, s7935c1f15, ABISELECT(400,256), "S7935C1.s7935c1f15");
    check_field_offset(lv, s7935c1f16, ABISELECT(416,268), "S7935C1.s7935c1f16");
    check_field_offset(lv, s7935c1f17, ABISELECT(424,272), "S7935C1.s7935c1f17");
    check_field_offset(lv, s7935c1f18, ABISELECT(472,304), "S7935C1.s7935c1f18");
    check_field_offset(lv, s7935c1f19, ABISELECT(476,308), "S7935C1.s7935c1f19");
    check_field_offset(lv, s7935c1f20, ABISELECT(480,312), "S7935C1.s7935c1f20");
    test_class_info(&lv, &cd_S7935C1);
    dp->~S7935C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7935C1(Test_S7935C1, "S7935C1", ABISELECT(488,320));

#else // __cplusplus

extern void _ZN7S7935C1C1Ev();
extern void _ZN7S7935C1D1Ev();
Name_Map name_map_S7935C1[] = {
  NSPAIR(_ZN7S7935C1C1Ev),
  NSPAIR(_ZN7S7935C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7935C2_nt;
extern VTBL_ENTRY _ZTI10S7935C2_nt[];
extern  VTBL_ENTRY _ZTV10S7935C2_nt[];
extern Class_Descriptor cd_S7935C9;
extern VTBL_ENTRY _ZTI7S7935C9[];
extern  VTBL_ENTRY _ZTV7S7935C9[];
static Base_Class bases_S7935C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7935C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7935C9,    ABISELECT(48,32), //bcp->offset
    5, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S7935C1[];
extern void _ZN7S7935C1D1Ev();
extern void _ZN7S7935C1D0Ev();
extern void _ZN7S7935C12v1Ev();
extern void ABISELECT(_ZThn48_N7S7935C1D1Ev,_ZThn32_N7S7935C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S7935C1D0Ev,_ZThn32_N7S7935C1D0Ev)();
extern void _ZN7S7935C92v2Ev();
static  VTBL_ENTRY vtc_S7935C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7935C1[0]),
  (VTBL_ENTRY)&_ZN7S7935C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7935C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7935C12v1Ev,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S7935C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7935C1D1Ev,_ZThn32_N7S7935C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7935C1D0Ev,_ZThn32_N7S7935C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7935C92v2Ev,
};
extern VTBL_ENTRY _ZTI7S7935C1[];
extern  VTBL_ENTRY _ZTV7S7935C1[];
Class_Descriptor cd_S7935C1 = {  "S7935C1", // class name
  bases_S7935C1, 2,
  &(vtc_S7935C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(488,320), // object size
  NSPAIRA(_ZTI7S7935C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7935C1),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  S7883C3_nt  {
  void  mf7883c3(); // _ZN10S7883C3_nt8mf7883c3Ev
  virtual  ~S7883C3_nt(); // _ZN10S7883C3_ntD1Ev
  S7883C3_nt(); // tgen
};
//SIG(-1 S7883C3_nt) C1{ vd m}


void  S7883C3_nt ::mf7883c3(){}
 S7883C3_nt ::~S7883C3_nt(){ note_dtor("S7883C3_nt", this);}
S7883C3_nt ::S7883C3_nt(){ note_ctor("S7883C3_nt", this);} // tgen

//skip512 S7883C3_nt

#else // __cplusplus

extern void _ZN10S7883C3_ntC1Ev();
extern void _ZN10S7883C3_ntD1Ev();
Name_Map name_map_S7883C3_nt[] = {
  NSPAIR(_ZN10S7883C3_ntC1Ev),
  NSPAIR(_ZN10S7883C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern void _ZN10S7883C3_ntD1Ev();
extern void _ZN10S7883C3_ntD0Ev();
static  VTBL_ENTRY vtc_S7883C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7883C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S7883C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S7883C3_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
VTBL_ENTRY *P__ZTI10S7883C3_nt = _ZTI10S7883C3_nt; 
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
Class_Descriptor cd_S7883C3_nt = {  "S7883C3_nt", // class name
  0,0,//no base classes
  &(vtc_S7883C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S7883C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7883C3_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  S7883C7  : virtual S7883C3_nt , virtual S3216C8_nt , S4677C37 {
  int s7883c7f0;
  ~S7883C7(); // tgen
  S7883C7(); // tgen
};
//SIG(-1 S7883C7) C1{ VBC2{ vd m} VBC3{ m Fi} BC4{ m} Fi}


S7883C7 ::~S7883C7(){ note_dtor("S7883C7", this);} // tgen
S7883C7 ::S7883C7(){ note_ctor("S7883C7", this);} // tgen

static void Test_S7883C7()
{
  extern Class_Descriptor cd_S7883C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7883C7, buf);
    S7883C7 *dp, &lv = *(dp=new (buf) S7883C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7883C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7883C7)");
    check_base_class_offset(lv, (S7883C3_nt*), 0, "S7883C7");
    check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(12,8), "S7883C7");
    check_base_class_offset(lv, (S4677C37*), 0, "S7883C7");
    check_field_offset(lv, s7883c7f0, ABISELECT(8,4), "S7883C7.s7883c7f0");
    test_class_info(&lv, &cd_S7883C7);
    dp->~S7883C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7883C7(Test_S7883C7, "S7883C7", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7883C7C1Ev();
extern void _ZN7S7883C7D1Ev();
Name_Map name_map_S7883C7[] = {
  NSPAIR(_ZN7S7883C7C1Ev),
  NSPAIR(_ZN7S7883C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
static Base_Class bases_S7883C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7883C7[];
extern void _ZN7S7883C7D1Ev();
extern void _ZN7S7883C7D0Ev();
static  VTBL_ENTRY vtc_S7883C7[] = {
  ABISELECT(12,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7883C7D0Ev,
};
extern VTBL_ENTRY _ZTV7S7883C7[];
static  VTT_ENTRY vtt_S7883C7[] = {
  {&(_ZTV7S7883C7[5]),  5,7},
  {&(_ZTV7S7883C7[5]),  5,7},
};
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
Class_Descriptor cd_S7883C7 = {  "S7883C7", // class name
  bases_S7883C7, 3,
  &(vtc_S7883C7[0]), // expected_vtbl_contents
  &(vtt_S7883C7[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7883C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7883C7),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7883C7),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  S7883C6  : S7883C7 {
  int s7883c6f0;
  ~S7883C6(); // tgen
  S7883C6(); // tgen
};
//SIG(-1 S7883C6) C1{ BC2{ VBC3{ vd m} VBC4{ m Fi} BC5{ m} Fi} Fi}


S7883C6 ::~S7883C6(){ note_dtor("S7883C6", this);} // tgen
S7883C6 ::S7883C6(){ note_ctor("S7883C6", this);} // tgen

static void Test_S7883C6()
{
  extern Class_Descriptor cd_S7883C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7883C6, buf);
    S7883C6 *dp, &lv = *(dp=new (buf) S7883C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7883C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7883C6)");
    check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*), 0, "S7883C6");
    check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*), ABISELECT(16,12), "S7883C6");
    check_base_class_offset(lv, (S4677C37*)(S7883C7*), 0, "S7883C6");
    check_base_class_offset(lv, (S7883C7*), 0, "S7883C6");
    check_field_offset(lv, s7883c6f0, ABISELECT(12,8), "S7883C6.s7883c6f0");
    test_class_info(&lv, &cd_S7883C6);
    dp->~S7883C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7883C6(Test_S7883C6, "S7883C6", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S7883C6C1Ev();
extern void _ZN7S7883C6D1Ev();
Name_Map name_map_S7883C6[] = {
  NSPAIR(_ZN7S7883C6C1Ev),
  NSPAIR(_ZN7S7883C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
static Base_Class bases_S7883C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7883C7,    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 _ZTI7S7883C6[];
extern void _ZN7S7883C6D1Ev();
extern void _ZN7S7883C6D0Ev();
static  VTBL_ENTRY vtc_S7883C6[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&_ZN7S7883C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7883C6D0Ev,
};
extern VTBL_ENTRY _ZTV7S7883C6[];
extern void _ZN7S7883C7D1Ev();
extern void _ZN7S7883C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7883C7__7S7883C6[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7883C7D0Ev,
};
static  VTT_ENTRY vtt_S7883C6[] = {
  {&(_ZTV7S7883C6[5]),  5,7},
  {&(_tg__ZTV7S7883C7__7S7883C6[5]),  5,7},
  {&(_tg__ZTV7S7883C7__7S7883C6[5]),  5,7},
  {&(_ZTV7S7883C6[5]),  5,7},
};
extern VTBL_ENTRY _ZTI7S7883C6[];
extern  VTBL_ENTRY _ZTV7S7883C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C6[];
Class_Descriptor cd_S7883C6 = {  "S7883C6", // class name
  bases_S7883C6, 4,
  &(vtc_S7883C6[0]), // expected_vtbl_contents
  &(vtt_S7883C6[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S7883C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7883C6),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7883C6),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7883C5  : virtual S7883C6 , S4677C37 {
  ~S7883C5(); // tgen
  S7883C5(); // tgen
};
//SIG(-1 S7883C5) C1{ VBC2{ BC3{ VBC4{ vd m} VBC5{ m Fi} BC6{ m} Fi} Fi} BC6}


S7883C5 ::~S7883C5(){ note_dtor("S7883C5", this);} // tgen
S7883C5 ::S7883C5(){ note_ctor("S7883C5", this);} // tgen

static void Test_S7883C5()
{
  extern Class_Descriptor cd_S7883C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S7883C5, buf);
    S7883C5 *dp, &lv = *(dp=new (buf) S7883C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S7883C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7883C5)");
    check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C6*), 0, "S7883C5");
    check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C6*), ABISELECT(24,16), "S7883C5");
    check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C6*), ABISELECT(8,4), "S7883C5");
    check_base_class_offset(lv, (S7883C7*)(S7883C6*), ABISELECT(8,4), "S7883C5");
    check_base_class_offset(lv, (S7883C6*), ABISELECT(8,4), "S7883C5");
    /*is_ambiguous_... S7883C5::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*), 0, "S7883C5");
    test_class_info(&lv, &cd_S7883C5);
    dp->~S7883C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7883C5(Test_S7883C5, "S7883C5", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S7883C5C1Ev();
extern void _ZN7S7883C5D1Ev();
Name_Map name_map_S7883C5[] = {
  NSPAIR(_ZN7S7883C5C1Ev),
  NSPAIR(_ZN7S7883C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C6;
extern VTBL_ENTRY _ZTI7S7883C6[];
extern  VTBL_ENTRY _ZTV7S7883C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
static Base_Class bases_S7883C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7883C7,    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
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7883C6,    ABISELECT(8,4), //bcp->offset
    8, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7883C5[];
extern void _ZN7S7883C5D1Ev();
extern void _ZN7S7883C5D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZThn8_N7S7883C5D1Ev,_ZThn4_N7S7883C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void ABISELECT(_ZThn8_N7S7883C5D0Ev,_ZThn4_N7S7883C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7883C5[] = {
  ABISELECT(24,16),
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&_ZN7S7883C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7883C5D0Ev,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern VTBL_ENTRY _ZTV7S7883C5[];
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void _ZN7S7883C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
extern void _ZN7S7883C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C5[] = {
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C6__7S7883C5[] = {
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C6__7S7883C5[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C6__7S7883C5[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
static  VTT_ENTRY vtt_S7883C5[] = {
  {&(_ZTV7S7883C5[6]),  6,15},
  {&(_ZTV7S7883C5[13]),  13,15},
  {&(_ZTV7S7883C5[6]),  6,15},
  {&(_tg__ZTV7S7883C6__7S7883C5[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C6__7S7883C5[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C6__7S7883C5[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C6__7S7883C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7883C5[];
extern  VTBL_ENTRY _ZTV7S7883C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C5[];
static VTBL_ENTRY alt_thunk_names33[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7883C5D0Ev,_ZThn4_N7S7883C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7883C5D1Ev,_ZThn4_N7S7883C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7883C5 = {  "S7883C5", // class name
  bases_S7883C5, 6,
  &(vtc_S7883C5[0]), // expected_vtbl_contents
  &(vtt_S7883C5[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S7883C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7883C5),15, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7883C5),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names33,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7883C2  : virtual S7883C3_nt , S3216C8_nt , S7883C5 , virtual S4677C37 , S7883C7 {
  virtual  ~S7883C2(); // _ZN7S7883C2D2Ev
  S7883C2(); // tgen
};
//SIG(-1 S7883C2) C1{ VBC2{ vd m} BC3{ m Fi} BC4{ VBC5{ BC6{ VBC2 VBC3 BC7{ m} Fi} Fi} BC7} VBC7 BC6 vd}


 S7883C2 ::~S7883C2(){ note_dtor("S7883C2", this);}
S7883C2 ::S7883C2(){ note_ctor("S7883C2", this);} // tgen

static void Test_S7883C2()
{
  extern Class_Descriptor cd_S7883C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S7883C2, buf);
    S7883C2 *dp, &lv = *(dp=new (buf) S7883C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S7883C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7883C2)");
    check_base_class_offset(lv, (S7883C3_nt*), 0, "S7883C2");
    check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C6*), 0, "S7883C2");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*), 0, "S7883C2");
    /*is_ambiguous_... S7883C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(8,4), "S7883C2");
    check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C6*), ABISELECT(48,28), "S7883C2");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*), ABISELECT(48,28), "S7883C2");
    check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C6*), ABISELECT(32,16), "S7883C2");
    check_base_class_offset(lv, (S7883C7*)(S7883C6*), ABISELECT(32,16), "S7883C2");
    check_base_class_offset(lv, (S7883C6*)(S7883C5*), ABISELECT(32,16), "S7883C2");
    /*is_ambiguous_... S7883C5::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C5*), 0, "S7883C2");
    check_base_class_offset(lv, (S7883C5*), 0, "S7883C2");
    /*is_ambiguous_... S7883C2::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*), ABISELECT(52,32), "S7883C2");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*), ABISELECT(16,8), "S7883C2");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S7883C7*), ABISELECT(16,8), "S7883C2");
    test_class_info(&lv, &cd_S7883C2);
    dp->~S7883C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7883C2(Test_S7883C2, "S7883C2", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN7S7883C2C1Ev();
extern void _ZN7S7883C2D2Ev();
Name_Map name_map_S7883C2[] = {
  NSPAIR(_ZN7S7883C2C1Ev),
  NSPAIR(_ZN7S7883C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C6;
extern VTBL_ENTRY _ZTI7S7883C6[];
extern  VTBL_ENTRY _ZTV7S7883C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C5;
extern VTBL_ENTRY _ZTI7S7883C5[];
extern  VTBL_ENTRY _ZTV7S7883C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C5[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
static Base_Class bases_S7883C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_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_S3216C8_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
    4, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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_S7883C7,    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
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7883C6,    ABISELECT(32,16), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7883C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4677C37,    ABISELECT(52,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_S4677C37,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7883C2[];
extern void _ZN7S7883C2D1Ev();
extern void _ZN7S7883C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S7883C2D1Ev,_ZThn8_N7S7883C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void ABISELECT(_ZThn16_N7S7883C2D0Ev,_ZThn8_N7S7883C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZThn32_N7S7883C2D1Ev,_ZThn16_N7S7883C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void ABISELECT(_ZThn32_N7S7883C2D0Ev,_ZThn16_N7S7883C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7883C2[] = {
  ABISELECT(52,32),
  ABISELECT(48,28),
  0,
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&_ZN7S7883C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7883C2D0Ev,
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S7883C2[];
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void _ZN7S7883C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void _ZN7S7883C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C5__7S7883C2[] = {
  ABISELECT(48,28),
  0,
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7883C5D1Ev,_ZThn16_N7S7883C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7883C5D0Ev,_ZThn16_N7S7883C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C5__7S7883C2[] = {
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C7__A1__7S7883C2[] = {
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C7__A1__7S7883C2[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void _ZN7S7883C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
extern void _ZN7S7883C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C2[] = {
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C6__7S7883C2[] = {
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C6__7S7883C2[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C6__7S7883C2[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
static  VTT_ENTRY vtt_S7883C2[] = {
  {&(_ZTV7S7883C2[7]),  7,23},
  {&(_tg__ZTV7S7883C5__7S7883C2[6]),  6,8},
  {&(_tg__ZTV7S7883C6__7S7883C5__7S7883C2[5]),  5,7},
  {&(_tg__ZTV7S7883C5__7S7883C2[6]),  6,8},
  {&(_tg__ZTV7S7883C7__A1__7S7883C2[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C7__A1__7S7883C2[3]),  3,5},
  {&(_ZTV7S7883C2[7]),  7,23},
  {&(_ZTV7S7883C2[21]),  21,23},
  {&(_ZTV7S7883C2[14]),  14,23},
  {&(_tg__ZTV7S7883C6__7S7883C2[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C6__7S7883C2[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C6__7S7883C2[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C6__7S7883C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7883C2[];
extern  VTBL_ENTRY _ZTV7S7883C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C2[];
static VTBL_ENTRY alt_thunk_names34[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7883C5D0Ev,_ZThn16_N7S7883C5D0Ev),
  (VTBL_ENTRY)_ZN7S7883C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7883C5D1Ev,_ZThn16_N7S7883C5D1Ev),
  (VTBL_ENTRY)_ZN7S7883C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7883C2D0Ev,_ZThn16_N7S7883C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C2D0Ev,_ZThn8_N7S7883C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7883C2D1Ev,_ZThn16_N7S7883C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C2D1Ev,_ZThn8_N7S7883C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7883C2 = {  "S7883C2", // class name
  bases_S7883C2, 11,
  &(vtc_S7883C2[0]), // expected_vtbl_contents
  &(vtt_S7883C2[0]), // expected_vtt_contents
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI7S7883C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7883C2),23, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7883C2),13, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names34,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7883C10  : S7883C6 {
  ~S7883C10(); // tgen
  S7883C10(); // tgen
};
//SIG(-1 S7883C10) C1{ BC2{ BC3{ VBC4{ vd m} VBC5{ m Fi} BC6{ m} Fi} Fi}}


S7883C10 ::~S7883C10(){ note_dtor("S7883C10", this);} // tgen
S7883C10 ::S7883C10(){ note_ctor("S7883C10", this);} // tgen

static void Test_S7883C10()
{
  extern Class_Descriptor cd_S7883C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7883C10, buf);
    S7883C10 *dp, &lv = *(dp=new (buf) S7883C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7883C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7883C10)");
    check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C6*), 0, "S7883C10");
    check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C6*), ABISELECT(16,12), "S7883C10");
    check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C6*), 0, "S7883C10");
    check_base_class_offset(lv, (S7883C7*)(S7883C6*), 0, "S7883C10");
    check_base_class_offset(lv, (S7883C6*), 0, "S7883C10");
    test_class_info(&lv, &cd_S7883C10);
    dp->~S7883C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7883C10(Test_S7883C10, "S7883C10", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S7883C10C1Ev();
extern void _ZN8S7883C10D1Ev();
Name_Map name_map_S7883C10[] = {
  NSPAIR(_ZN8S7883C10C1Ev),
  NSPAIR(_ZN8S7883C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C6;
extern VTBL_ENTRY _ZTI7S7883C6[];
extern  VTBL_ENTRY _ZTV7S7883C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C6[];
static Base_Class bases_S7883C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7883C7,    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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7883C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7883C10[];
extern void _ZN8S7883C10D1Ev();
extern void _ZN8S7883C10D0Ev();
static  VTBL_ENTRY vtc_S7883C10[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C10[0]),
  (VTBL_ENTRY)&_ZN8S7883C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7883C10D0Ev,
};
extern VTBL_ENTRY _ZTV8S7883C10[];
extern void _ZN7S7883C6D1Ev();
extern void _ZN7S7883C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C10[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&_ZN7S7883C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7883C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C6__8S7883C10[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
static  VTT_ENTRY vtt_S7883C10[] = {
  {&(_ZTV8S7883C10[5]),  5,7},
  {&(_tg__ZTV7S7883C6__8S7883C10[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C6__8S7883C10[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C6__8S7883C10[5]),  5,7},
  {&(_tg__ZTV7S7883C6__8S7883C10[5]),  5,7},
  {&(_ZTV8S7883C10[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S7883C10[];
extern  VTBL_ENTRY _ZTV8S7883C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C10[];
static VTBL_ENTRY alt_thunk_names35[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7883C10 = {  "S7883C10", // class name
  bases_S7883C10, 5,
  &(vtc_S7883C10[0]), // expected_vtbl_contents
  &(vtt_S7883C10[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S7883C10),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S7883C10),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7883C10),6, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names35,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7883C11  : virtual S7883C5 {
  void *s7883c11f0;
  ~S7883C11(); // tgen
  S7883C11(); // tgen
};
//SIG(-1 S7883C11) C1{ VBC2{ VBC3{ BC4{ VBC5{ vd m} VBC6{ m Fi} BC7{ m} Fi} Fi} BC7} Fp}


S7883C11 ::~S7883C11(){ note_dtor("S7883C11", this);} // tgen
S7883C11 ::S7883C11(){ note_ctor("S7883C11", this);} // tgen

static void Test_S7883C11()
{
  extern Class_Descriptor cd_S7883C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S7883C11, buf);
    S7883C11 *dp, &lv = *(dp=new (buf) S7883C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S7883C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7883C11)");
    check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C6*), 0, "S7883C11");
    check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C6*), ABISELECT(32,20), "S7883C11");
    check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C6*), ABISELECT(16,8), "S7883C11");
    check_base_class_offset(lv, (S7883C7*)(S7883C6*), ABISELECT(16,8), "S7883C11");
    check_base_class_offset(lv, (S7883C6*)(S7883C5*), ABISELECT(16,8), "S7883C11");
    /*is_ambiguous_... S7883C5::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C5*), 0, "S7883C11");
    check_base_class_offset(lv, (S7883C5*), 0, "S7883C11");
    check_field_offset(lv, s7883c11f0, ABISELECT(8,4), "S7883C11.s7883c11f0");
    test_class_info(&lv, &cd_S7883C11);
    dp->~S7883C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7883C11(Test_S7883C11, "S7883C11", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S7883C11C1Ev();
extern void _ZN8S7883C11D1Ev();
Name_Map name_map_S7883C11[] = {
  NSPAIR(_ZN8S7883C11C1Ev),
  NSPAIR(_ZN8S7883C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C6;
extern VTBL_ENTRY _ZTI7S7883C6[];
extern  VTBL_ENTRY _ZTV7S7883C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C5;
extern VTBL_ENTRY _ZTI7S7883C5[];
extern  VTBL_ENTRY _ZTV7S7883C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C5[];
static Base_Class bases_S7883C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_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
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7883C7,    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
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7883C6,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7883C5,    0, //bcp->offset
    -1, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7883C11[];
extern void _ZN8S7883C11D1Ev();
extern void _ZN8S7883C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S7883C11D1Ev,_ZTv0_n12_N8S7883C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S7883C11D1Ev,_ZThn8_N8S7883C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C11D0Ev,_ZTv0_n12_N8S7883C11D0Ev)();
extern void ABISELECT(_ZThn16_N8S7883C11D0Ev,_ZThn8_N8S7883C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7883C11[] = {
  0,
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C11[0]),
  (VTBL_ENTRY)&_ZN8S7883C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7883C11D0Ev,
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7883C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C11D1Ev,_ZTv0_n12_N8S7883C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C11D0Ev,_ZTv0_n12_N8S7883C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S7883C11[];
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void _ZN7S7883C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void _ZN7S7883C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C5__8S7883C11[] = {
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S7883C5D1Ev,_ZThn8_N7S7883C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S7883C5D0Ev,_ZThn8_N7S7883C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C5__8S7883C11[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void _ZN7S7883C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
extern void _ZN7S7883C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C11[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C6__8S7883C11[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C6__8S7883C11[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C6__8S7883C11[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
static  VTT_ENTRY vtt_S7883C11[] = {
  {&(_ZTV8S7883C11[7]),  7,16},
  {&(_ZTV8S7883C11[7]),  7,16},
  {&(_ZTV8S7883C11[14]),  14,16},
  {&(_ZTV8S7883C11[7]),  7,16},
  {&(_tg__ZTV7S7883C5__8S7883C11[6]),  6,8},
  {&(_tg__ZTV7S7883C6__7S7883C5__8S7883C11[5]),  5,7},
  {&(_tg__ZTV7S7883C5__8S7883C11[6]),  6,8},
  {&(_tg__ZTV7S7883C6__8S7883C11[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C6__8S7883C11[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C6__8S7883C11[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C6__8S7883C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7883C11[];
extern  VTBL_ENTRY _ZTV8S7883C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C11[];
static VTBL_ENTRY alt_thunk_names36[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C5D0Ev,_ZThn8_N7S7883C5D0Ev),
  (VTBL_ENTRY)_ZN7S7883C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C5D1Ev,_ZThn8_N7S7883C5D1Ev),
  (VTBL_ENTRY)_ZN7S7883C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C11D0Ev,_ZTv0_n12_N8S7883C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C11D0Ev,_ZThn8_N8S7883C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C11D1Ev,_ZTv0_n12_N8S7883C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C11D1Ev,_ZThn8_N8S7883C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7883C11 = {  "S7883C11", // class name
  bases_S7883C11, 7,
  &(vtc_S7883C11[0]), // expected_vtbl_contents
  &(vtt_S7883C11[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S7883C11),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7883C11),16, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7883C11),11, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names36,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7883C15  : virtual S7883C2 {
  virtual  ~S7883C15(); // _ZN8S7883C15D2Ev
  S7883C15(); // tgen
};
//SIG(-1 S7883C15) C1{ VBC2{ VBC3{ vd m} BC4{ m Fi} BC5{ VBC6{ BC7{ VBC3 VBC4 BC8{ m} Fi} Fi} BC8} VBC8 BC7 vd} vd}


 S7883C15 ::~S7883C15(){ note_dtor("S7883C15", this);}
S7883C15 ::S7883C15(){ note_ctor("S7883C15", this);} // tgen

static void Test_S7883C15()
{
  extern Class_Descriptor cd_S7883C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S7883C15, buf);
    S7883C15 *dp, &lv = *(dp=new (buf) S7883C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S7883C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7883C15)");
    check_base_class_offset(lv, (S7883C3_nt*)(S7883C2*), 0, "S7883C15");
    check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C6*), 0, "S7883C15");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C2*), 0, "S7883C15");
    /*is_ambiguous_... S7883C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C2*), ABISELECT(16,8), "S7883C15");
    check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C6*), ABISELECT(56,32), "S7883C15");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C2*), ABISELECT(56,32), "S7883C15");
    check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C6*), ABISELECT(40,20), "S7883C15");
    check_base_class_offset(lv, (S7883C7*)(S7883C6*), ABISELECT(40,20), "S7883C15");
    check_base_class_offset(lv, (S7883C6*)(S7883C5*)(S7883C2*), ABISELECT(40,20), "S7883C15");
    /*is_ambiguous_... S7883C5::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C5*)(S7883C2*), ABISELECT(8,4), "S7883C15");
    check_base_class_offset(lv, (S7883C5*)(S7883C2*), ABISELECT(8,4), "S7883C15");
    /*is_ambiguous_... S7883C2::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C2*), 0, "S7883C15");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C2*), ABISELECT(24,12), "S7883C15");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C2*), ABISELECT(24,12), "S7883C15");
    check_base_class_offset(lv, (S7883C2*), ABISELECT(8,4), "S7883C15");
    test_class_info(&lv, &cd_S7883C15);
    dp->~S7883C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7883C15(Test_S7883C15, "S7883C15", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S7883C15C1Ev();
extern void _ZN8S7883C15D2Ev();
Name_Map name_map_S7883C15[] = {
  NSPAIR(_ZN8S7883C15C1Ev),
  NSPAIR(_ZN8S7883C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C6;
extern VTBL_ENTRY _ZTI7S7883C6[];
extern  VTBL_ENTRY _ZTV7S7883C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C5;
extern VTBL_ENTRY _ZTI7S7883C5[];
extern  VTBL_ENTRY _ZTV7S7883C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C5[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C2;
extern VTBL_ENTRY _ZTI7S7883C2[];
extern  VTBL_ENTRY _ZTV7S7883C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C2[];
static Base_Class bases_S7883C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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_S7883C7,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //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
    5, //immediately_derived
  0, 0},
  {&cd_S7883C6,    ABISELECT(40,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7883C5,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4677C37,    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_S7883C7,    ABISELECT(24,12), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7883C2,    ABISELECT(8,4), //bcp->offset
    10, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7883C15[];
extern void _ZN8S7883C15D1Ev();
extern void _ZN8S7883C15D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev)();
extern void ABISELECT(_ZThn8_N8S7883C15D1Ev,_ZThn4_N8S7883C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev)();
extern void ABISELECT(_ZThn8_N8S7883C15D0Ev,_ZThn4_N8S7883C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev)();
extern void ABISELECT(_ZThn24_N8S7883C15D1Ev,_ZThn12_N8S7883C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev)();
extern void ABISELECT(_ZThn24_N8S7883C15D0Ev,_ZThn12_N8S7883C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev)();
extern void ABISELECT(_ZThn40_N8S7883C15D1Ev,_ZThn20_N8S7883C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev)();
extern void ABISELECT(_ZThn40_N8S7883C15D0Ev,_ZThn20_N8S7883C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7883C15[] = {
  0,
  ABISELECT(56,32),
  ABISELECT(40,20),
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C15[0]),
  (VTBL_ENTRY)&_ZN8S7883C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7883C15D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7883C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev),
  ABISELECT(32,20),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7883C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev),
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7883C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev),
};
extern VTBL_ENTRY _ZTV8S7883C15[];
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void _ZN7S7883C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void _ZN7S7883C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C2__8S7883C15[] = {
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void _ZN7S7883C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void _ZN7S7883C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C57S7883C2__8S7883C15[] = {
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7883C5D1Ev,_ZThn16_N7S7883C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7883C5D0Ev,_ZThn16_N7S7883C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C57S7883C2__8S7883C15[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C57S7883C2__8S7883C15[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C2__A1__8S7883C15[] = {
  ABISELECT(32,20),
  ABISELECT(-24,-12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C2__A1__8S7883C15[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C2__8S7883C15[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZThn32_N7S7883C2D1Ev,_ZThn16_N7S7883C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void ABISELECT(_ZThn32_N7S7883C2D0Ev,_ZThn16_N7S7883C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C2__8S7883C15[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S7883C2D1Ev,_ZThn8_N7S7883C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void ABISELECT(_ZThn16_N7S7883C2D0Ev,_ZThn8_N7S7883C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C7__A1__7S7883C2__8S7883C15[] = {
  ABISELECT(32,20),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void _ZN7S7883C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
extern void _ZN7S7883C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C15[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C6__8S7883C15[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C6__8S7883C15[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C6__8S7883C15[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
static  VTT_ENTRY vtt_S7883C15[] = {
  {&(_ZTV8S7883C15[8]),  8,33},
  {&(_ZTV8S7883C15[17]),  17,33},
  {&(_ZTV8S7883C15[8]),  8,33},
  {&(_ZTV8S7883C15[31]),  31,33},
  {&(_ZTV8S7883C15[24]),  24,33},
  {&(_tg__ZTV7S7883C2__8S7883C15[7]),  7,9},
  {&(_tg__ZTV7S7883C57S7883C2__8S7883C15[6]),  6,8},
  {&(_tg__ZTV7S7883C6__7S7883C57S7883C2__8S7883C15[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C57S7883C2__8S7883C15[3]),  3,5},
  {&(_tg__ZTV7S7883C77S7883C2__A1__8S7883C15[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C2__A1__8S7883C15[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C2__8S7883C15[3]),  3,5},
  {&(_tg__ZTV7S7883C6__7S7883C2__8S7883C15[5]),  5,7},
  {&(_tg__ZTV7S7883C7__A1__7S7883C2__8S7883C15[5]),  5,7},
  {&(_tg__ZTV7S7883C6__8S7883C15[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C6__8S7883C15[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C6__8S7883C15[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C6__8S7883C15[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7883C15[];
extern  VTBL_ENTRY _ZTV8S7883C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C15[];
static VTBL_ENTRY alt_thunk_names37[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7883C5D0Ev,_ZThn16_N7S7883C5D0Ev),
  (VTBL_ENTRY)_ZN7S7883C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7883C5D1Ev,_ZThn16_N7S7883C5D1Ev),
  (VTBL_ENTRY)_ZN7S7883C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C2D0Ev,_ZThn8_N7S7883C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7883C2D0Ev,_ZThn16_N7S7883C2D0Ev),
  (VTBL_ENTRY)_ZN7S7883C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C2D1Ev,_ZThn8_N7S7883C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7883C2D1Ev,_ZThn16_N7S7883C2D1Ev),
  (VTBL_ENTRY)_ZN7S7883C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7883C15D0Ev,_ZThn20_N8S7883C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C15D0Ev,_ZThn12_N8S7883C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7883C15D0Ev,_ZThn4_N8S7883C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7883C15D1Ev,_ZThn20_N8S7883C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C15D1Ev,_ZThn12_N8S7883C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7883C15D1Ev,_ZThn4_N8S7883C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7883C15 = {  "S7883C15", // class name
  bases_S7883C15, 12,
  &(vtc_S7883C15[0]), // expected_vtbl_contents
  &(vtt_S7883C15[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S7883C15),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7883C15),33, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7883C15),18, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names37,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7883C17  : virtual S7883C5 {
  ::S3216C8_nt s7883c17f0;
  ~S7883C17(); // tgen
  S7883C17(); // tgen
};
//SIG(-1 S7883C17) C1{ VBC2{ VBC3{ BC4{ VBC5{ vd m} VBC6{ m Fi} BC7{ m} Fi} Fi} BC7} FC6}


S7883C17 ::~S7883C17(){ note_dtor("S7883C17", this);} // tgen
S7883C17 ::S7883C17(){ note_ctor("S7883C17", this);} // tgen

static void Test_S7883C17()
{
  extern Class_Descriptor cd_S7883C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S7883C17, buf);
    S7883C17 *dp, &lv = *(dp=new (buf) S7883C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S7883C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7883C17)");
    check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C6*), 0, "S7883C17");
    check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C6*), ABISELECT(32,20), "S7883C17");
    check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C6*), ABISELECT(16,8), "S7883C17");
    check_base_class_offset(lv, (S7883C7*)(S7883C6*), ABISELECT(16,8), "S7883C17");
    check_base_class_offset(lv, (S7883C6*)(S7883C5*), ABISELECT(16,8), "S7883C17");
    /*is_ambiguous_... S7883C5::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C5*), 0, "S7883C17");
    check_base_class_offset(lv, (S7883C5*), 0, "S7883C17");
    check_field_offset(lv, s7883c17f0, ABISELECT(8,4), "S7883C17.s7883c17f0");
    test_class_info(&lv, &cd_S7883C17);
    dp->~S7883C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7883C17(Test_S7883C17, "S7883C17", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S7883C17C1Ev();
extern void _ZN8S7883C17D1Ev();
Name_Map name_map_S7883C17[] = {
  NSPAIR(_ZN8S7883C17C1Ev),
  NSPAIR(_ZN8S7883C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C6;
extern VTBL_ENTRY _ZTI7S7883C6[];
extern  VTBL_ENTRY _ZTV7S7883C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C5;
extern VTBL_ENTRY _ZTI7S7883C5[];
extern  VTBL_ENTRY _ZTV7S7883C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C5[];
static Base_Class bases_S7883C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_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
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7883C7,    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
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7883C6,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7883C5,    0, //bcp->offset
    -1, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7883C17[];
extern void _ZN8S7883C17D1Ev();
extern void _ZN8S7883C17D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev)();
extern void ABISELECT(_ZThn16_N8S7883C17D1Ev,_ZThn8_N8S7883C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev)();
extern void ABISELECT(_ZThn16_N8S7883C17D0Ev,_ZThn8_N8S7883C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7883C17[] = {
  0,
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C17[0]),
  (VTBL_ENTRY)&_ZN8S7883C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7883C17D0Ev,
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7883C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev),
};
extern VTBL_ENTRY _ZTV8S7883C17[];
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void _ZN7S7883C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void _ZN7S7883C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C5__8S7883C17[] = {
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S7883C5D1Ev,_ZThn8_N7S7883C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S7883C5D0Ev,_ZThn8_N7S7883C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C5__8S7883C17[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void _ZN7S7883C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
extern void _ZN7S7883C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C17[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C6__8S7883C17[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C6__8S7883C17[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C6__8S7883C17[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
static  VTT_ENTRY vtt_S7883C17[] = {
  {&(_ZTV8S7883C17[7]),  7,16},
  {&(_ZTV8S7883C17[7]),  7,16},
  {&(_ZTV8S7883C17[14]),  14,16},
  {&(_ZTV8S7883C17[7]),  7,16},
  {&(_tg__ZTV7S7883C5__8S7883C17[6]),  6,8},
  {&(_tg__ZTV7S7883C6__7S7883C5__8S7883C17[5]),  5,7},
  {&(_tg__ZTV7S7883C5__8S7883C17[6]),  6,8},
  {&(_tg__ZTV7S7883C6__8S7883C17[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C6__8S7883C17[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C6__8S7883C17[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C6__8S7883C17[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7883C17[];
extern  VTBL_ENTRY _ZTV8S7883C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C17[];
static VTBL_ENTRY alt_thunk_names38[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C5D0Ev,_ZThn8_N7S7883C5D0Ev),
  (VTBL_ENTRY)_ZN7S7883C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C5D1Ev,_ZThn8_N7S7883C5D1Ev),
  (VTBL_ENTRY)_ZN7S7883C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C17D0Ev,_ZThn8_N8S7883C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C17D1Ev,_ZThn8_N8S7883C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7883C17 = {  "S7883C17", // class name
  bases_S7883C17, 7,
  &(vtc_S7883C17[0]), // expected_vtbl_contents
  &(vtt_S7883C17[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S7883C17),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7883C17),16, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7883C17),11, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names38,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7883C18  : virtual S3216C8_nt {
  virtual  ~S7883C18(); // _ZN8S7883C18D2Ev
  S7883C18(); // tgen
};
//SIG(-1 S7883C18) C1{ VBC2{ m Fi} vd}


 S7883C18 ::~S7883C18(){ note_dtor("S7883C18", this);}
S7883C18 ::S7883C18(){ note_ctor("S7883C18", this);} // tgen

static void Test_S7883C18()
{
  extern Class_Descriptor cd_S7883C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7883C18, buf);
    S7883C18 *dp, &lv = *(dp=new (buf) S7883C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7883C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7883C18)");
    check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(8,4), "S7883C18");
    test_class_info(&lv, &cd_S7883C18);
    dp->~S7883C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7883C18(Test_S7883C18, "S7883C18", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S7883C18C1Ev();
extern void _ZN8S7883C18D2Ev();
Name_Map name_map_S7883C18[] = {
  NSPAIR(_ZN8S7883C18C1Ev),
  NSPAIR(_ZN8S7883C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S7883C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7883C18[];
extern void _ZN8S7883C18D1Ev();
extern void _ZN8S7883C18D0Ev();
static  VTBL_ENTRY vtc_S7883C18[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C18[0]),
  (VTBL_ENTRY)&_ZN8S7883C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7883C18D0Ev,
};
extern VTBL_ENTRY _ZTV8S7883C18[];
static  VTT_ENTRY vtt_S7883C18[] = {
  {&(_ZTV8S7883C18[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7883C18[];
extern  VTBL_ENTRY _ZTV8S7883C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C18[];
Class_Descriptor cd_S7883C18 = {  "S7883C18", // class name
  bases_S7883C18, 1,
  &(vtc_S7883C18[0]), // expected_vtbl_contents
  &(vtt_S7883C18[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S7883C18),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7883C18),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7883C18),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  S7883C16  : virtual S3216C8_nt , virtual S7883C17 , virtual S7883C18 , virtual S4677C37 , S7883C7 {
  int s7883c16f0;
  void *s7883c16f1;
  virtual  ~S7883C16(); // _ZN8S7883C16D2Ev
  S7883C16(); // tgen
};
//SIG(-1 S7883C16) C1{ VBC2{ m Fi} VBC3{ VBC4{ VBC5{ BC6{ VBC7{ vd m} VBC2 BC8{ m} Fi} Fi} BC8} FC2} VBC9{ VBC2 vd} VBC8 BC6 vd Fi Fp}


 S7883C16 ::~S7883C16(){ note_dtor("S7883C16", this);}
S7883C16 ::S7883C16(){ note_ctor("S7883C16", this);} // tgen

static void Test_S7883C16()
{
  extern Class_Descriptor cd_S7883C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S7883C16, buf);
    S7883C16 *dp, &lv = *(dp=new (buf) S7883C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S7883C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7883C16)");
    check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(24,16), "S7883C16");
    check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C6*), ABISELECT(24,16), "S7883C16");
    check_base_class_offset(lv, (S3216C8_nt*)(S7883C18*), ABISELECT(24,16), "S7883C16");
    /*is_ambiguous_... S7883C16::S7883C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*), ABISELECT(24,16), "S7883C16");
    check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C6*), ABISELECT(32,20), "S7883C16");
    /*is_ambiguous_... S7883C16::S7883C7 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*), ABISELECT(32,20), "S7883C16");
    check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C6*), ABISELECT(48,28), "S7883C16");
    check_base_class_offset(lv, (S7883C7*)(S7883C6*), ABISELECT(48,28), "S7883C16");
    check_base_class_offset(lv, (S7883C6*)(S7883C5*), ABISELECT(48,28), "S7883C16");
    /*is_ambiguous_... S7883C5::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C5*), ABISELECT(32,20), "S7883C16");
    check_base_class_offset(lv, (S7883C5*)(S7883C17*), ABISELECT(32,20), "S7883C16");
    check_base_class_offset(lv, (S7883C17*), ABISELECT(32,20), "S7883C16");
    check_base_class_offset(lv, (S7883C18*), ABISELECT(64,40), "S7883C16");
    /*is_ambiguous_... S7883C16::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*), ABISELECT(72,44), "S7883C16");
    /*is_ambiguous_... S7883C16::S7883C7 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*), 0, "S7883C16");
    /*is_ambiguous_... S7883C16::S7883C7 */ AMB_check_base_class_offset(lv, (S7883C7*), 0, "S7883C16");
    check_field_offset(lv, s7883c16f0, ABISELECT(12,8), "S7883C16.s7883c16f0");
    check_field_offset(lv, s7883c16f1, ABISELECT(16,12), "S7883C16.s7883c16f1");
    test_class_info(&lv, &cd_S7883C16);
    dp->~S7883C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7883C16(Test_S7883C16, "S7883C16", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN8S7883C16C1Ev();
extern void _ZN8S7883C16D2Ev();
Name_Map name_map_S7883C16[] = {
  NSPAIR(_ZN8S7883C16C1Ev),
  NSPAIR(_ZN8S7883C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C6;
extern VTBL_ENTRY _ZTI7S7883C6[];
extern  VTBL_ENTRY _ZTV7S7883C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C5;
extern VTBL_ENTRY _ZTI7S7883C5[];
extern  VTBL_ENTRY _ZTV7S7883C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C5[];
extern Class_Descriptor cd_S7883C17;
extern VTBL_ENTRY _ZTI8S7883C17[];
extern  VTBL_ENTRY _ZTV8S7883C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C17[];
extern Class_Descriptor cd_S7883C18;
extern VTBL_ENTRY _ZTI8S7883C18[];
extern  VTBL_ENTRY _ZTV8S7883C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C18[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
static Base_Class bases_S7883C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7883C3_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7883C6,    ABISELECT(48,28), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7883C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7883C17,    ABISELECT(32,20), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7883C18,    ABISELECT(64,40), //bcp->offset
    28, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7883C7,    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},
  {0}};
extern VTBL_ENTRY _ZTI8S7883C16[];
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void _ZN8S7883C16D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
extern void _ZN8S7883C16D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void ABISELECT(_ZThn32_N8S7883C16D1Ev,_ZThn20_N8S7883C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
extern void ABISELECT(_ZThn32_N8S7883C16D0Ev,_ZThn20_N8S7883C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void ABISELECT(_ZThn48_N8S7883C16D1Ev,_ZThn28_N8S7883C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
extern void ABISELECT(_ZThn48_N8S7883C16D0Ev,_ZThn28_N8S7883C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7883C16D1Ev,_ZTv0_n16_N8S7883C16D1Ev)();
extern void ABISELECT(_ZThn64_N8S7883C16D1Ev,_ZThn40_N8S7883C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7883C16D0Ev,_ZTv0_n16_N8S7883C16D0Ev)();
extern void ABISELECT(_ZThn64_N8S7883C16D0Ev,_ZThn40_N8S7883C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7883C16[] = {
  ABISELECT(72,44),
  ABISELECT(64,40),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(32,20),
  ABISELECT(24,16),
  ABISELECT(32,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
  0,
  ABISELECT(-8,-4),
  0,
  ABISELECT(16,8),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C16D1Ev,_ZTv0_n16_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C16D0Ev,_ZTv0_n16_N8S7883C16D0Ev),
};
extern VTBL_ENTRY _ZTV8S7883C16[];
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C7__A1__8S7883C16[] = {
  ABISELECT(24,16),
  ABISELECT(32,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZThn32_N7S7883C7D1Ev,_ZThn20_N7S7883C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void ABISELECT(_ZThn32_N7S7883C7D0Ev,_ZThn20_N7S7883C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C7__A1__8S7883C16[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev)();
extern void _ZN8S7883C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev)();
extern void _ZN8S7883C17D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C17__8S7883C16[] = {
  0,
  ABISELECT(-8,-4),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev)();
extern void ABISELECT(_ZThn16_N8S7883C17D1Ev,_ZThn8_N8S7883C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev)();
extern void ABISELECT(_ZThn16_N8S7883C17D0Ev,_ZThn8_N8S7883C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C17__8S7883C16[] = {
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7883C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void _ZN7S7883C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void _ZN7S7883C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C5__8S7883C16[] = {
  ABISELECT(-8,-4),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S7883C5D1Ev,_ZThn8_N7S7883C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S7883C5D0Ev,_ZThn8_N7S7883C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C5__8S7883C16[] = {
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void _ZN7S7883C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
extern void _ZN7S7883C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C16[] = {
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C6__8S7883C16[] = {
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C6__8S7883C16[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C6__8S7883C16[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void _ZN8S7883C18D1Ev();
extern void _ZN8S7883C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7883C18__8S7883C16[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C18[0]),
  (VTBL_ENTRY)&_ZN8S7883C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7883C18D0Ev,
};
static  VTT_ENTRY vtt_S7883C16[] = {
  {&(_ZTV8S7883C16[10]),  10,34},
  {&(_tg__ZTV7S7883C7__A1__8S7883C16[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C7__A1__8S7883C16[3]),  3,5},
  {&(_ZTV8S7883C16[19]),  19,34},
  {&(_ZTV8S7883C16[19]),  19,34},
  {&(_ZTV8S7883C16[26]),  26,34},
  {&(_ZTV8S7883C16[19]),  19,34},
  {&(_ZTV8S7883C16[32]),  32,34},
  {&(_tg__ZTV8S7883C17__8S7883C16[7]),  7,9},
  {&(_tg__ZTV8S7883C17__8S7883C16[7]),  7,9},
  {&(_tg__ZTV7S7883C6__8S7883C17__8S7883C16[5]),  5,7},
  {&(_tg__ZTV8S7883C17__8S7883C16[7]),  7,9},
  {&(_tg__ZTV7S7883C5__8S7883C16[6]),  6,8},
  {&(_tg__ZTV7S7883C6__7S7883C5__8S7883C16[5]),  5,7},
  {&(_tg__ZTV7S7883C5__8S7883C16[6]),  6,8},
  {&(_tg__ZTV7S7883C6__8S7883C16[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C6__8S7883C16[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C6__8S7883C16[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C6__8S7883C16[3]),  3,5},
  {&(_tg__ZTV8S7883C18__8S7883C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7883C16[];
extern  VTBL_ENTRY _ZTV8S7883C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C16[];
static VTBL_ENTRY alt_thunk_names39[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C5D0Ev,_ZThn8_N7S7883C5D0Ev),
  (VTBL_ENTRY)_ZN7S7883C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C5D1Ev,_ZThn8_N7S7883C5D1Ev),
  (VTBL_ENTRY)_ZN7S7883C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C17D0Ev,_ZThn8_N8S7883C17D0Ev),
  (VTBL_ENTRY)_ZN8S7883C17D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C17D1Ev,_ZThn8_N8S7883C17D1Ev),
  (VTBL_ENTRY)_ZN8S7883C17D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7883C7D0Ev,_ZThn20_N7S7883C7D0Ev),
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7883C7D1Ev,_ZThn20_N7S7883C7D1Ev),
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C16D0Ev,_ZTv0_n16_N8S7883C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7883C16D0Ev,_ZThn40_N8S7883C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C16D1Ev,_ZTv0_n16_N8S7883C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7883C16D1Ev,_ZThn40_N8S7883C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7883C16D0Ev,_ZThn28_N8S7883C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7883C16D0Ev,_ZThn20_N8S7883C16D0Ev),
  (VTBL_ENTRY)_ZN8S7883C16D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7883C16D1Ev,_ZThn28_N8S7883C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7883C16D1Ev,_ZThn20_N8S7883C16D1Ev),
  (VTBL_ENTRY)_ZN8S7883C16D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7883C16 = {  "S7883C16", // class name
  bases_S7883C16, 12,
  &(vtc_S7883C16[0]), // expected_vtbl_contents
  &(vtt_S7883C16[0]), // expected_vtt_contents
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI8S7883C16),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7883C16),34, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7883C16),20, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names39,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7883C21  : S7883C2 , S3216C8_nt {
  int s7883c21f0;
  virtual  ~S7883C21(); // _ZN8S7883C21D2Ev
  S7883C21(); // tgen
};
//SIG(-1 S7883C21) C1{ BC2{ VBC3{ vd m} BC4{ m Fi} BC5{ VBC6{ BC7{ VBC3 VBC4 BC8{ m} Fi} Fi} BC8} VBC8 BC7 vd} BC4 vd Fi}


 S7883C21 ::~S7883C21(){ note_dtor("S7883C21", this);}
S7883C21 ::S7883C21(){ note_ctor("S7883C21", this);} // tgen

static void Test_S7883C21()
{
  extern Class_Descriptor cd_S7883C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S7883C21, buf);
    S7883C21 *dp, &lv = *(dp=new (buf) S7883C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S7883C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7883C21)");
    check_base_class_offset(lv, (S7883C3_nt*)(S7883C2*), 0, "S7883C21");
    check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C6*), 0, "S7883C21");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C2*), 0, "S7883C21");
    /*is_ambiguous_... S7883C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C2*), ABISELECT(8,4), "S7883C21");
    check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C6*), ABISELECT(56,36), "S7883C21");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C2*), ABISELECT(56,36), "S7883C21");
    check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C6*), ABISELECT(40,24), "S7883C21");
    check_base_class_offset(lv, (S7883C7*)(S7883C6*), ABISELECT(40,24), "S7883C21");
    check_base_class_offset(lv, (S7883C6*)(S7883C5*)(S7883C2*), ABISELECT(40,24), "S7883C21");
    /*is_ambiguous_... S7883C5::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C5*)(S7883C2*), 0, "S7883C21");
    check_base_class_offset(lv, (S7883C5*)(S7883C2*), 0, "S7883C21");
    /*is_ambiguous_... S7883C2::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C2*), ABISELECT(60,40), "S7883C21");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C2*), ABISELECT(16,8), "S7883C21");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C2*), ABISELECT(16,8), "S7883C21");
    check_base_class_offset(lv, (S7883C2*), 0, "S7883C21");
    /*is_ambiguous_... S7883C21::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(28,16), "S7883C21");
    check_field_offset(lv, s7883c21f0, ABISELECT(32,20), "S7883C21.s7883c21f0");
    test_class_info(&lv, &cd_S7883C21);
    dp->~S7883C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7883C21(Test_S7883C21, "S7883C21", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN8S7883C21C1Ev();
extern void _ZN8S7883C21D2Ev();
Name_Map name_map_S7883C21[] = {
  NSPAIR(_ZN8S7883C21C1Ev),
  NSPAIR(_ZN8S7883C21D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C6;
extern VTBL_ENTRY _ZTI7S7883C6[];
extern  VTBL_ENTRY _ZTV7S7883C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C5;
extern VTBL_ENTRY _ZTI7S7883C5[];
extern  VTBL_ENTRY _ZTV7S7883C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C5[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C2;
extern VTBL_ENTRY _ZTI7S7883C2[];
extern  VTBL_ENTRY _ZTV7S7883C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S7883C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    4, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7883C6,    ABISELECT(40,24), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7883C5,    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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(60,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7883C2,    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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7883C21[];
extern void _ZN8S7883C21D1Ev();
extern void _ZN8S7883C21D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev)();
extern void ABISELECT(_ZThn16_N8S7883C21D1Ev,_ZThn8_N8S7883C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev)();
extern void ABISELECT(_ZThn16_N8S7883C21D0Ev,_ZThn8_N8S7883C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev)();
extern void ABISELECT(_ZThn40_N8S7883C21D1Ev,_ZThn24_N8S7883C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev)();
extern void ABISELECT(_ZThn40_N8S7883C21D0Ev,_ZThn24_N8S7883C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7883C21[] = {
  ABISELECT(60,40),
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C21[0]),
  (VTBL_ENTRY)&_ZN8S7883C21D1Ev,
  (VTBL_ENTRY)&_ZN8S7883C21D0Ev,
  ABISELECT(40,28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7883C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev),
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7883C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev),
};
extern VTBL_ENTRY _ZTV8S7883C21[];
extern void _ZN7S7883C2D1Ev();
extern void _ZN7S7883C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7883C2__8S7883C21[] = {
  ABISELECT(60,40),
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&_ZN7S7883C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7883C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void _ZN7S7883C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void _ZN7S7883C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C57S7883C2__8S7883C21[] = {
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZThn40_N7S7883C5D1Ev,_ZThn24_N7S7883C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void ABISELECT(_ZThn40_N7S7883C5D0Ev,_ZThn24_N7S7883C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C57S7883C2__8S7883C21[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C2__A1__8S7883C21[] = {
  ABISELECT(40,28),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C2__A1__8S7883C21[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZThn40_N7S7883C2D1Ev,_ZThn24_N7S7883C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void ABISELECT(_ZThn40_N7S7883C2D0Ev,_ZThn24_N7S7883C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C2__8S7883C21[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S7883C2D1Ev,_ZThn8_N7S7883C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void ABISELECT(_ZThn16_N7S7883C2D0Ev,_ZThn8_N7S7883C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C7__A1__7S7883C2__8S7883C21[] = {
  ABISELECT(40,28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void _ZN7S7883C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
extern void _ZN7S7883C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C21[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C6__8S7883C21[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C6__8S7883C21[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C6__8S7883C21[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
static  VTT_ENTRY vtt_S7883C21[] = {
  {&(_ZTV8S7883C21[7]),  7,23},
  {&(_tg__ZTV7S7883C2__8S7883C21[7]),  7,9},
  {&(_tg__ZTV7S7883C57S7883C2__8S7883C21[6]),  6,8},
  {&(_tg__ZTV7S7883C6__7S7883C57S7883C2__8S7883C21[5]),  5,7},
  {&(_tg__ZTV7S7883C57S7883C2__8S7883C21[6]),  6,8},
  {&(_tg__ZTV7S7883C77S7883C2__A1__8S7883C21[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C2__A1__8S7883C21[3]),  3,5},
  {&(_tg__ZTV7S7883C2__8S7883C21[7]),  7,9},
  {&(_tg__ZTV7S7883C6__7S7883C2__8S7883C21[5]),  5,7},
  {&(_tg__ZTV7S7883C7__A1__7S7883C2__8S7883C21[5]),  5,7},
  {&(_ZTV8S7883C21[7]),  7,23},
  {&(_ZTV8S7883C21[21]),  21,23},
  {&(_ZTV8S7883C21[14]),  14,23},
  {&(_tg__ZTV7S7883C6__8S7883C21[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C6__8S7883C21[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C6__8S7883C21[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C6__8S7883C21[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7883C21[];
extern  VTBL_ENTRY _ZTV8S7883C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C21[];
static VTBL_ENTRY alt_thunk_names40[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C2D0Ev,_ZThn8_N7S7883C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7883C2D0Ev,_ZThn24_N7S7883C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C2D1Ev,_ZThn8_N7S7883C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7883C2D1Ev,_ZThn24_N7S7883C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7883C5D0Ev,_ZThn24_N7S7883C5D0Ev),
  (VTBL_ENTRY)_ZN7S7883C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7883C5D1Ev,_ZThn24_N7S7883C5D1Ev),
  (VTBL_ENTRY)_ZN7S7883C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7883C21D0Ev,_ZThn24_N8S7883C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C21D0Ev,_ZThn8_N8S7883C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7883C21D1Ev,_ZThn24_N8S7883C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C21D1Ev,_ZThn8_N8S7883C21D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7883C21 = {  "S7883C21", // class name
  bases_S7883C21, 13,
  &(vtc_S7883C21[0]), // expected_vtbl_contents
  &(vtt_S7883C21[0]), // expected_vtt_contents
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI8S7883C21),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7883C21),23, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7883C21),17, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names40,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7883C20  : S7883C21 {
  virtual  ~S7883C20(); // _ZN8S7883C20D2Ev
  S7883C20(); // tgen
};
//SIG(-1 S7883C20) C1{ BC2{ BC3{ VBC4{ vd m} BC5{ m Fi} BC6{ VBC7{ BC8{ VBC4 VBC5 BC9{ m} Fi} Fi} BC9} VBC9 BC8 vd} BC5 vd Fi} vd}


 S7883C20 ::~S7883C20(){ note_dtor("S7883C20", this);}
S7883C20 ::S7883C20(){ note_ctor("S7883C20", this);} // tgen

static void Test_S7883C20()
{
  extern Class_Descriptor cd_S7883C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S7883C20, buf);
    S7883C20 *dp, &lv = *(dp=new (buf) S7883C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S7883C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7883C20)");
    check_base_class_offset(lv, (S7883C3_nt*)(S7883C2*)(S7883C21*), 0, "S7883C20");
    check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C6*), 0, "S7883C20");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C2*)(S7883C21*), 0, "S7883C20");
    /*is_ambiguous_... S7883C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C2*)(S7883C21*), ABISELECT(8,4), "S7883C20");
    check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C6*), ABISELECT(56,36), "S7883C20");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C2*)(S7883C21*), ABISELECT(56,36), "S7883C20");
    check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C6*), ABISELECT(40,24), "S7883C20");
    check_base_class_offset(lv, (S7883C7*)(S7883C6*), ABISELECT(40,24), "S7883C20");
    check_base_class_offset(lv, (S7883C6*)(S7883C5*)(S7883C2*)(S7883C21*), ABISELECT(40,24), "S7883C20");
    /*is_ambiguous_... S7883C5::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C5*)(S7883C2*)(S7883C21*), 0, "S7883C20");
    check_base_class_offset(lv, (S7883C5*)(S7883C2*)(S7883C21*), 0, "S7883C20");
    /*is_ambiguous_... S7883C2::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C2*)(S7883C21*), ABISELECT(60,40), "S7883C20");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C2*)(S7883C21*), ABISELECT(16,8), "S7883C20");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C2*)(S7883C21*), ABISELECT(16,8), "S7883C20");
    check_base_class_offset(lv, (S7883C2*)(S7883C21*), 0, "S7883C20");
    /*is_ambiguous_... S7883C21::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C21*), ABISELECT(28,16), "S7883C20");
    check_base_class_offset(lv, (S7883C21*), 0, "S7883C20");
    test_class_info(&lv, &cd_S7883C20);
    dp->~S7883C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7883C20(Test_S7883C20, "S7883C20", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN8S7883C20C1Ev();
extern void _ZN8S7883C20D2Ev();
Name_Map name_map_S7883C20[] = {
  NSPAIR(_ZN8S7883C20C1Ev),
  NSPAIR(_ZN8S7883C20D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C6;
extern VTBL_ENTRY _ZTI7S7883C6[];
extern  VTBL_ENTRY _ZTV7S7883C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C5;
extern VTBL_ENTRY _ZTI7S7883C5[];
extern  VTBL_ENTRY _ZTV7S7883C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C5[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C2;
extern VTBL_ENTRY _ZTI7S7883C2[];
extern  VTBL_ENTRY _ZTV7S7883C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7883C21;
extern VTBL_ENTRY _ZTI8S7883C21[];
extern  VTBL_ENTRY _ZTV8S7883C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C21[];
static Base_Class bases_S7883C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //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
    4, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    4, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(40,24), //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
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7883C6,    ABISELECT(40,24), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7883C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(60,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7883C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7883C21,    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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7883C20[];
extern void _ZN8S7883C20D1Ev();
extern void _ZN8S7883C20D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev)();
extern void ABISELECT(_ZThn16_N8S7883C20D1Ev,_ZThn8_N8S7883C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev)();
extern void ABISELECT(_ZThn16_N8S7883C20D0Ev,_ZThn8_N8S7883C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev)();
extern void ABISELECT(_ZThn40_N8S7883C20D1Ev,_ZThn24_N8S7883C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev)();
extern void ABISELECT(_ZThn40_N8S7883C20D0Ev,_ZThn24_N8S7883C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7883C20[] = {
  ABISELECT(60,40),
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C20[0]),
  (VTBL_ENTRY)&_ZN8S7883C20D1Ev,
  (VTBL_ENTRY)&_ZN8S7883C20D0Ev,
  ABISELECT(40,28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7883C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev),
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7883C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev),
};
extern VTBL_ENTRY _ZTV8S7883C20[];
extern void _ZN8S7883C21D1Ev();
extern void _ZN8S7883C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7883C21__8S7883C20[] = {
  ABISELECT(60,40),
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C21[0]),
  (VTBL_ENTRY)&_ZN8S7883C21D1Ev,
  (VTBL_ENTRY)&_ZN8S7883C21D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void _ZN7S7883C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void _ZN7S7883C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C28S7883C21__8S7883C20[] = {
  ABISELECT(60,40),
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void _ZN7S7883C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void _ZN7S7883C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C57S7883C28S7883C21__8S7883C20[] = {
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZThn40_N7S7883C5D1Ev,_ZThn24_N7S7883C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void ABISELECT(_ZThn40_N7S7883C5D0Ev,_ZThn24_N7S7883C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C57S7883C28S7883C21__8S7883C20[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C28S7883C21__A1__8S7883C20[] = {
  ABISELECT(40,28),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C28S7883C21__A1__8S7883C20[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZThn40_N7S7883C2D1Ev,_ZThn24_N7S7883C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void ABISELECT(_ZThn40_N7S7883C2D0Ev,_ZThn24_N7S7883C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C28S7883C21__8S7883C20[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S7883C2D1Ev,_ZThn8_N7S7883C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void ABISELECT(_ZThn16_N7S7883C2D0Ev,_ZThn8_N7S7883C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C7__A1__7S7883C28S7883C21__8S7883C20[] = {
  ABISELECT(40,28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev)();
extern void ABISELECT(_ZThn40_N8S7883C21D1Ev,_ZThn24_N8S7883C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev)();
extern void ABISELECT(_ZThn40_N8S7883C21D0Ev,_ZThn24_N8S7883C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C21__8S7883C20[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7883C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev)();
extern void ABISELECT(_ZThn16_N8S7883C21D1Ev,_ZThn8_N8S7883C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev)();
extern void ABISELECT(_ZThn16_N8S7883C21D0Ev,_ZThn8_N8S7883C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C2__A1__8S7883C21__8S7883C20[] = {
  ABISELECT(40,28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7883C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void _ZN7S7883C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
extern void _ZN7S7883C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C20[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C6__8S7883C20[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C6__8S7883C20[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C6__8S7883C20[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
static  VTT_ENTRY vtt_S7883C20[] = {
  {&(_ZTV8S7883C20[7]),  7,23},
  {&(_tg__ZTV8S7883C21__8S7883C20[7]),  7,9},
  {&(_tg__ZTV7S7883C28S7883C21__8S7883C20[7]),  7,9},
  {&(_tg__ZTV7S7883C57S7883C28S7883C21__8S7883C20[6]),  6,8},
  {&(_tg__ZTV7S7883C6__7S7883C57S7883C28S7883C21__8S7883C20[5]),  5,7},
  {&(_tg__ZTV7S7883C57S7883C28S7883C21__8S7883C20[6]),  6,8},
  {&(_tg__ZTV7S7883C77S7883C28S7883C21__A1__8S7883C20[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C28S7883C21__A1__8S7883C20[3]),  3,5},
  {&(_tg__ZTV7S7883C28S7883C21__8S7883C20[7]),  7,9},
  {&(_tg__ZTV7S7883C6__7S7883C28S7883C21__8S7883C20[5]),  5,7},
  {&(_tg__ZTV7S7883C7__A1__7S7883C28S7883C21__8S7883C20[5]),  5,7},
  {&(_tg__ZTV8S7883C21__8S7883C20[7]),  7,9},
  {&(_tg__ZTV7S7883C6__8S7883C21__8S7883C20[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C2__A1__8S7883C21__8S7883C20[5]),  5,7},
  {&(_ZTV8S7883C20[7]),  7,23},
  {&(_ZTV8S7883C20[21]),  21,23},
  {&(_ZTV8S7883C20[14]),  14,23},
  {&(_tg__ZTV7S7883C6__8S7883C20[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C6__8S7883C20[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C6__8S7883C20[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C6__8S7883C20[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7883C20[];
extern  VTBL_ENTRY _ZTV8S7883C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C20[];
static VTBL_ENTRY alt_thunk_names41[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C21D0Ev,_ZThn8_N8S7883C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7883C21D0Ev,_ZThn24_N8S7883C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C21D1Ev,_ZThn8_N8S7883C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7883C21D1Ev,_ZThn24_N8S7883C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7883C5D0Ev,_ZThn24_N7S7883C5D0Ev),
  (VTBL_ENTRY)_ZN7S7883C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7883C5D1Ev,_ZThn24_N7S7883C5D1Ev),
  (VTBL_ENTRY)_ZN7S7883C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C2D0Ev,_ZThn8_N7S7883C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7883C2D0Ev,_ZThn24_N7S7883C2D0Ev),
  (VTBL_ENTRY)_ZN7S7883C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C2D1Ev,_ZThn8_N7S7883C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7883C2D1Ev,_ZThn24_N7S7883C2D1Ev),
  (VTBL_ENTRY)_ZN7S7883C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7883C20D0Ev,_ZThn24_N8S7883C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C20D0Ev,_ZThn8_N8S7883C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7883C20D1Ev,_ZThn24_N8S7883C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C20D1Ev,_ZThn8_N8S7883C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7883C20 = {  "S7883C20", // class name
  bases_S7883C20, 14,
  &(vtc_S7883C20[0]), // expected_vtbl_contents
  &(vtt_S7883C20[0]), // expected_vtt_contents
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI8S7883C20),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S7883C20),23, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7883C20),21, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names41,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7883C22  : S7883C10 , virtual S7883C16 {
  int s7883c22f0;
  virtual  ~S7883C22(); // _ZN8S7883C22D2Ev
  S7883C22(); // tgen
};
//SIG(-1 S7883C22) C1{ BC2{ BC3{ BC4{ VBC5{ vd m} VBC6{ m Fi} BC7{ m} Fi} Fi}} VBC8{ VBC6 VBC9{ VBC10{ VBC3 BC7} FC6} VBC11{ VBC6 vd} VBC7 BC4 vd Fi Fp} vd Fi}


 S7883C22 ::~S7883C22(){ note_dtor("S7883C22", this);}
S7883C22 ::S7883C22(){ note_ctor("S7883C22", this);} // tgen

static void Test_S7883C22()
{
  extern Class_Descriptor cd_S7883C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,17)];
    init_test(&cd_S7883C22, buf);
    S7883C22 *dp, &lv = *(dp=new (buf) S7883C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,64), "sizeof(S7883C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7883C22)");
    check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C6*)(S7883C10*), 0, "S7883C22");
    /*is_ambiguous_... S7883C22::S7883C6 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C6*), 0, "S7883C22");
    /*is_ambiguous_... S7883C16::S7883C7 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C16*), 0, "S7883C22");
    check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C6*)(S7883C10*), ABISELECT(20,16), "S7883C22");
    check_base_class_offset(lv, (S3216C8_nt*)(S7883C16*), ABISELECT(20,16), "S7883C22");
    /*is_ambiguous_... S7883C22::S7883C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C6*), ABISELECT(20,16), "S7883C22");
    check_base_class_offset(lv, (S3216C8_nt*)(S7883C18*), ABISELECT(20,16), "S7883C22");
    /*is_ambiguous_... S7883C16::S7883C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C16*), ABISELECT(20,16), "S7883C22");
    check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C6*)(S7883C10*), 0, "S7883C22");
    check_base_class_offset(lv, (S7883C7*)(S7883C6*)(S7883C10*), 0, "S7883C22");
    check_base_class_offset(lv, (S7883C6*)(S7883C10*), 0, "S7883C22");
    check_base_class_offset(lv, (S7883C10*), 0, "S7883C22");
    /*is_ambiguous_... S7883C22::S7883C6 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C6*), ABISELECT(64,44), "S7883C22");
    /*is_ambiguous_... S7883C22::S7883C6 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C6*), ABISELECT(64,44), "S7883C22");
    check_base_class_offset(lv, (S7883C6*)(S7883C5*), ABISELECT(64,44), "S7883C22");
    /*is_ambiguous_... S7883C5::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C5*), ABISELECT(48,36), "S7883C22");
    check_base_class_offset(lv, (S7883C5*)(S7883C17*), ABISELECT(48,36), "S7883C22");
    check_base_class_offset(lv, (S7883C17*)(S7883C16*), ABISELECT(48,36), "S7883C22");
    check_base_class_offset(lv, (S7883C18*)(S7883C16*), ABISELECT(80,56), "S7883C22");
    /*is_ambiguous_... S7883C16::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C16*), ABISELECT(88,60), "S7883C22");
    /*is_ambiguous_... S7883C16::S7883C7 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C16*), ABISELECT(24,20), "S7883C22");
    /*is_ambiguous_... S7883C16::S7883C7 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C16*), ABISELECT(24,20), "S7883C22");
    check_base_class_offset(lv, (S7883C16*), ABISELECT(24,20), "S7883C22");
    check_field_offset(lv, s7883c22f0, ABISELECT(16,12), "S7883C22.s7883c22f0");
    test_class_info(&lv, &cd_S7883C22);
    dp->~S7883C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7883C22(Test_S7883C22, "S7883C22", ABISELECT(96,64));

#else // __cplusplus

extern void _ZN8S7883C22C1Ev();
extern void _ZN8S7883C22D2Ev();
Name_Map name_map_S7883C22[] = {
  NSPAIR(_ZN8S7883C22C1Ev),
  NSPAIR(_ZN8S7883C22D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C6;
extern VTBL_ENTRY _ZTI7S7883C6[];
extern  VTBL_ENTRY _ZTV7S7883C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C6[];
extern Class_Descriptor cd_S7883C10;
extern VTBL_ENTRY _ZTI8S7883C10[];
extern  VTBL_ENTRY _ZTV8S7883C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C10[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C6;
extern VTBL_ENTRY _ZTI7S7883C6[];
extern  VTBL_ENTRY _ZTV7S7883C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C5;
extern VTBL_ENTRY _ZTI7S7883C5[];
extern  VTBL_ENTRY _ZTV7S7883C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C5[];
extern Class_Descriptor cd_S7883C17;
extern VTBL_ENTRY _ZTI8S7883C17[];
extern  VTBL_ENTRY _ZTV8S7883C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C17[];
extern Class_Descriptor cd_S7883C18;
extern VTBL_ENTRY _ZTI8S7883C18[];
extern  VTBL_ENTRY _ZTV8S7883C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C18[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C16;
extern VTBL_ENTRY _ZTI8S7883C16[];
extern  VTBL_ENTRY _ZTV8S7883C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C16[];
static Base_Class bases_S7883C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(20,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7883C7,    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
    9, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7883C6,    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
    10, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7883C10,    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_S4677C37,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7883C7,    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
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7883C6,    ABISELECT(64,44), //bcp->offset
    34, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7883C5,    ABISELECT(48,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7883C17,    ABISELECT(48,36), //bcp->offset
    25, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7883C18,    ABISELECT(80,56), //bcp->offset
    41, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    16, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(24,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
    15, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(24,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7883C16,    ABISELECT(24,20), //bcp->offset
    13, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7883C22[];
extern void _ZN8S7883C22D1Ev();
extern void _ZN8S7883C22D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev)();
extern void ABISELECT(_ZThn24_N8S7883C22D1Ev,_ZThn20_N8S7883C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev)();
extern void ABISELECT(_ZThn24_N8S7883C22D0Ev,_ZThn20_N8S7883C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev)();
extern void ABISELECT(_ZThn48_N8S7883C22D1Ev,_ZThn36_N8S7883C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev)();
extern void ABISELECT(_ZThn48_N8S7883C22D0Ev,_ZThn36_N8S7883C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev)();
extern void ABISELECT(_ZThn64_N8S7883C22D1Ev,_ZThn44_N8S7883C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev)();
extern void ABISELECT(_ZThn64_N8S7883C22D0Ev,_ZThn44_N8S7883C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7883C22D1Ev,_ZTv0_n16_N8S7883C22D1Ev)();
extern void ABISELECT(_ZThn80_N8S7883C22D1Ev,_ZThn56_N8S7883C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7883C22D0Ev,_ZTv0_n16_N8S7883C22D0Ev)();
extern void ABISELECT(_ZThn80_N8S7883C22D0Ev,_ZThn56_N8S7883C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7883C22[] = {
  ABISELECT(88,60),
  ABISELECT(80,56),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(24,20),
  ABISELECT(20,16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&_ZN8S7883C22D1Ev,
  (VTBL_ENTRY)&_ZN8S7883C22D0Ev,
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(24,16),
  -4,
  ABISELECT(-24,-20),
  ABISELECT(-24,-20),
  ABISELECT(-24,-20),
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev),
  0,
  ABISELECT(-28,-20),
  ABISELECT(-48,-36),
  ABISELECT(16,8),
  ABISELECT(-48,-36),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev),
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev),
  ABISELECT(-80,-56),
  ABISELECT(-60,-40),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C22D1Ev,_ZTv0_n16_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C22D0Ev,_ZTv0_n16_N8S7883C22D0Ev),
};
extern VTBL_ENTRY _ZTV8S7883C22[];
extern void _ZN8S7883C10D1Ev();
extern void _ZN8S7883C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7883C10__8S7883C22[] = {
  ABISELECT(20,16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C10[0]),
  (VTBL_ENTRY)&_ZN8S7883C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7883C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void _ZN7S7883C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
extern void _ZN7S7883C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C68S7883C10__8S7883C22[] = {
  ABISELECT(20,16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C68S7883C10__8S7883C22[] = {
  ABISELECT(20,16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void _ZN8S7883C16D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
extern void _ZN8S7883C16D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C16__8S7883C22[] = {
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(24,16),
  -4,
  ABISELECT(-24,-20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C78S7883C16__A2__8S7883C22[] = {
  -4,
  ABISELECT(-24,-20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C78S7883C16__A2__8S7883C22[] = {
  ABISELECT(24,20),
  ABISELECT(24,20),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void ABISELECT(_ZThn24_N8S7883C16D1Ev,_ZThn16_N8S7883C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
extern void ABISELECT(_ZThn24_N8S7883C16D0Ev,_ZThn16_N8S7883C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C17__8S7883C16__8S7883C22[] = {
  0,
  ABISELECT(-28,-20),
  ABISELECT(-48,-36),
  ABISELECT(16,8),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void ABISELECT(_ZThn40_N8S7883C16D1Ev,_ZThn24_N8S7883C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
extern void ABISELECT(_ZThn40_N8S7883C16D0Ev,_ZThn24_N8S7883C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C16__8S7883C22[] = {
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C16__8S7883C22[] = {
  ABISELECT(24,20),
  ABISELECT(24,20),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7883C16D1Ev,_ZTv0_n16_N8S7883C16D1Ev)();
extern void ABISELECT(_ZThn56_N8S7883C16D1Ev,_ZThn36_N8S7883C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7883C16D0Ev,_ZTv0_n16_N8S7883C16D0Ev)();
extern void ABISELECT(_ZThn56_N8S7883C16D0Ev,_ZThn36_N8S7883C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C18__8S7883C16__8S7883C22[] = {
  ABISELECT(-56,-36),
  ABISELECT(-60,-40),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C16D1Ev,_ZTv0_n16_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C16D0Ev,_ZTv0_n16_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev)();
extern void _ZN8S7883C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev)();
extern void _ZN8S7883C17D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C17__8S7883C22[] = {
  0,
  ABISELECT(-28,-20),
  ABISELECT(-48,-36),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev)();
extern void ABISELECT(_ZThn16_N8S7883C17D1Ev,_ZThn8_N8S7883C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev)();
extern void ABISELECT(_ZThn16_N8S7883C17D0Ev,_ZThn8_N8S7883C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C17__8S7883C22[] = {
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7883C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C17__8S7883C22[] = {
  ABISELECT(48,36),
  ABISELECT(48,36),
  (VTBL_ENTRY)&(_ZTI8S7883C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void _ZN7S7883C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void _ZN7S7883C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C5__8S7883C22[] = {
  ABISELECT(-28,-20),
  ABISELECT(-48,-36),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S7883C5D1Ev,_ZThn8_N7S7883C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S7883C5D0Ev,_ZThn8_N7S7883C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C5__8S7883C22[] = {
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C5__8S7883C22[] = {
  ABISELECT(48,36),
  ABISELECT(48,36),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void _ZN7S7883C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
extern void _ZN7S7883C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__A1__8S7883C22[] = {
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C6__A1__8S7883C22[] = {
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C6__A1__8S7883C22[] = {
  ABISELECT(64,44),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C6__A1__8S7883C22[] = {
  ABISELECT(64,44),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void _ZN8S7883C18D1Ev();
extern void _ZN8S7883C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7883C18__8S7883C22[] = {
  ABISELECT(-60,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C18[0]),
  (VTBL_ENTRY)&_ZN8S7883C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7883C18D0Ev,
};
static  VTT_ENTRY vtt_S7883C22[] = {
  {&(_ZTV8S7883C22[11]),  11,47},
  {&(_tg__ZTV8S7883C10__8S7883C22[5]),  5,7},
  {&(_tg__ZTV7S7883C68S7883C10__8S7883C22[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C68S7883C10__8S7883C22[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C68S7883C10__8S7883C22[5]),  5,7},
  {&(_tg__ZTV7S7883C68S7883C10__8S7883C22[5]),  5,7},
  {&(_tg__ZTV8S7883C10__8S7883C22[5]),  5,7},
  {&(_ZTV8S7883C22[11]),  11,47},
  {&(_ZTV8S7883C22[23]),  23,47},
  {&(_ZTV8S7883C22[32]),  32,47},
  {&(_ZTV8S7883C22[32]),  32,47},
  {&(_ZTV8S7883C22[39]),  39,47},
  {&(_ZTV8S7883C22[45]),  45,47},
  {&(_tg__ZTV8S7883C16__8S7883C22[10]),  10,12},
  {&(_tg__ZTV7S7883C78S7883C16__A2__8S7883C22[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C78S7883C16__A2__8S7883C22[3]),  3,5},
  {&(_tg__ZTV8S7883C17__8S7883C16__8S7883C22[7]),  7,9},
  {&(_tg__ZTV8S7883C17__8S7883C16__8S7883C22[7]),  7,9},
  {&(_tg__ZTV7S7883C6__8S7883C16__8S7883C22[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S7883C16__8S7883C22[3]),  3,5},
  {&(_tg__ZTV8S7883C18__8S7883C16__8S7883C22[4]),  4,6},
  {&(_tg__ZTV8S7883C17__8S7883C22[7]),  7,9},
  {&(_tg__ZTV8S7883C17__8S7883C22[7]),  7,9},
  {&(_tg__ZTV7S7883C6__8S7883C17__8S7883C22[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S7883C17__8S7883C22[3]),  3,5},
  {&(_tg__ZTV7S7883C5__8S7883C22[6]),  6,8},
  {&(_tg__ZTV7S7883C6__7S7883C5__8S7883C22[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C5__8S7883C22[3]),  3,5},
  {&(_tg__ZTV7S7883C6__A1__8S7883C22[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C6__A1__8S7883C22[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C6__A1__8S7883C22[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C6__A1__8S7883C22[3]),  3,5},
  {&(_tg__ZTV8S7883C18__8S7883C22[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7883C22[];
extern  VTBL_ENTRY _ZTV8S7883C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C22[];
static VTBL_ENTRY alt_thunk_names42[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C5D0Ev,_ZThn8_N7S7883C5D0Ev),
  (VTBL_ENTRY)_ZN7S7883C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C5D1Ev,_ZThn8_N7S7883C5D1Ev),
  (VTBL_ENTRY)_ZN7S7883C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C17D0Ev,_ZThn8_N8S7883C17D0Ev),
  (VTBL_ENTRY)_ZN8S7883C17D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C17D1Ev,_ZThn8_N8S7883C17D1Ev),
  (VTBL_ENTRY)_ZN8S7883C17D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C16D0Ev,_ZTv0_n16_N8S7883C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7883C16D0Ev,_ZThn36_N8S7883C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C16D1Ev,_ZTv0_n16_N8S7883C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7883C16D1Ev,_ZThn36_N8S7883C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7883C16D0Ev,_ZThn24_N8S7883C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C16D0Ev,_ZThn16_N8S7883C16D0Ev),
  (VTBL_ENTRY)_ZN8S7883C16D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7883C16D1Ev,_ZThn24_N8S7883C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C16D1Ev,_ZThn16_N8S7883C16D1Ev),
  (VTBL_ENTRY)_ZN8S7883C16D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C6D0Ev,
  (VTBL_ENTRY)_ZN7S7883C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C6D1Ev,
  (VTBL_ENTRY)_ZN7S7883C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C22D0Ev,_ZTv0_n16_N8S7883C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7883C22D0Ev,_ZThn56_N8S7883C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C22D1Ev,_ZTv0_n16_N8S7883C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7883C22D1Ev,_ZThn56_N8S7883C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7883C22D0Ev,_ZThn44_N8S7883C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7883C22D0Ev,_ZThn36_N8S7883C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C22D0Ev,_ZThn20_N8S7883C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7883C22D1Ev,_ZThn44_N8S7883C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7883C22D1Ev,_ZThn36_N8S7883C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C22D1Ev,_ZThn20_N8S7883C22D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7883C22 = {  "S7883C22", // class name
  bases_S7883C22, 17,
  &(vtc_S7883C22[0]), // expected_vtbl_contents
  &(vtt_S7883C22[0]), // expected_vtt_contents
  ABISELECT(96,64), // object size
  NSPAIRA(_ZTI8S7883C22),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7883C22),47, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7883C22),33, //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  S7883C19  : virtual S7883C3_nt , virtual S7883C10 , virtual S7883C20 , virtual S7883C22 {
  int s7883c19f0;
  virtual  ~S7883C19(); // _ZN8S7883C19D2Ev
  S7883C19(); // tgen
};
//SIG(-1 S7883C19) C1{ VBC2{ vd m} VBC3{ BC4{ BC5{ VBC2 VBC6{ m Fi} BC7{ m} Fi} Fi}} VBC8{ BC9{ BC10{ VBC2 BC6 BC11{ VBC4 BC7} VBC7 BC5 vd} BC6 vd Fi} vd} VBC12{ BC3 VBC13{ VBC6 VBC14{ VBC11 FC6} VBC15{ VBC6 vd} VBC7 BC5 vd Fi Fp} vd Fi} vd Fi}


 S7883C19 ::~S7883C19(){ note_dtor("S7883C19", this);}
S7883C19 ::S7883C19(){ note_ctor("S7883C19", this);} // tgen

static void Test_S7883C19()
{
  extern Class_Descriptor cd_S7883C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,26)];
    init_test(&cd_S7883C19, buf);
    S7883C19 *dp, &lv = *(dp=new (buf) S7883C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,100), "sizeof(S7883C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7883C19)");
    check_base_class_offset(lv, (S7883C3_nt*), ABISELECT(16,8), "S7883C19");
    /*is_ambiguous_... S7883C19::S7883C10 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C6*)(S7883C10*), ABISELECT(16,8), "S7883C19");
    check_base_class_offset(lv, (S7883C3_nt*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(16,8), "S7883C19");
    /*is_ambiguous_... S7883C19::S7883C6 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C6*), ABISELECT(16,8), "S7883C19");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(16,8), "S7883C19");
    check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C6*)(S7883C10*)(S7883C22*), ABISELECT(16,8), "S7883C19");
    /*is_ambiguous_... S7883C16::S7883C7 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C16*), ABISELECT(16,8), "S7883C19");
    /*is_ambiguous_... S7883C19::S7883C10 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C6*)(S7883C10*), ABISELECT(32,20), "S7883C19");
    /*is_ambiguous_... S7883C19::S7883C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C6*), ABISELECT(32,20), "S7883C19");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(32,20), "S7883C19");
    check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C6*)(S7883C10*)(S7883C22*), ABISELECT(32,20), "S7883C19");
    check_base_class_offset(lv, (S3216C8_nt*)(S7883C16*), ABISELECT(32,20), "S7883C19");
    check_base_class_offset(lv, (S3216C8_nt*)(S7883C18*), ABISELECT(32,20), "S7883C19");
    /*is_ambiguous_... S7883C16::S7883C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C16*), ABISELECT(32,20), "S7883C19");
    /*is_ambiguous_... S7883C19::S7883C10 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C6*)(S7883C10*), ABISELECT(16,8), "S7883C19");
    /*is_ambiguous_... S7883C19::S7883C10 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C6*)(S7883C10*), ABISELECT(16,8), "S7883C19");
    /*is_ambiguous_... S7883C19::S7883C10 */ AMB_check_base_class_offset(lv, (S7883C6*)(S7883C10*), ABISELECT(16,8), "S7883C19");
    /*is_ambiguous_... S7883C19::S7883C10 */ AMB_check_base_class_offset(lv, (S7883C10*), ABISELECT(16,8), "S7883C19");
    /*is_ambiguous_... S7883C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(48,28), "S7883C19");
    /*is_ambiguous_... S7883C19::S7883C6 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C6*), ABISELECT(80,48), "S7883C19");
    /*is_ambiguous_... S7883C19::S7883C6 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C6*), ABISELECT(80,48), "S7883C19");
    check_base_class_offset(lv, (S7883C6*)(S7883C5*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(80,48), "S7883C19");
    /*is_ambiguous_... S7883C19::S7883C5 */ AMB_check_base_class_offset(lv, (S7883C6*)(S7883C5*), ABISELECT(80,48), "S7883C19");
    /*is_ambiguous_... S7883C5::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C5*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(40,24), "S7883C19");
    check_base_class_offset(lv, (S7883C5*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(40,24), "S7883C19");
    /*is_ambiguous_... S7883C2::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C2*)(S7883C21*)(S7883C20*), 0, "S7883C19");
    /*is_ambiguous_... S7883C16::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C16*), 0, "S7883C19");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(56,32), "S7883C19");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(56,32), "S7883C19");
    check_base_class_offset(lv, (S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(40,24), "S7883C19");
    /*is_ambiguous_... S7883C21::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C21*)(S7883C20*), ABISELECT(68,40), "S7883C19");
    check_base_class_offset(lv, (S7883C21*)(S7883C20*), ABISELECT(40,24), "S7883C19");
    check_base_class_offset(lv, (S7883C20*), ABISELECT(40,24), "S7883C19");
    check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C6*)(S7883C10*)(S7883C22*), ABISELECT(96,60), "S7883C19");
    check_base_class_offset(lv, (S7883C7*)(S7883C6*)(S7883C10*)(S7883C22*), ABISELECT(96,60), "S7883C19");
    check_base_class_offset(lv, (S7883C6*)(S7883C10*)(S7883C22*), ABISELECT(96,60), "S7883C19");
    check_base_class_offset(lv, (S7883C10*)(S7883C22*), ABISELECT(96,60), "S7883C19");
    /*is_ambiguous_... S7883C19::S7883C5 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C5*), ABISELECT(144,92), "S7883C19");
    check_base_class_offset(lv, (S7883C5*)(S7883C17*), ABISELECT(144,92), "S7883C19");
    check_base_class_offset(lv, (S7883C17*)(S7883C16*), ABISELECT(144,92), "S7883C19");
    check_base_class_offset(lv, (S7883C18*)(S7883C16*), 0, "S7883C19");
    /*is_ambiguous_... S7883C16::S7883C7 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C16*), ABISELECT(120,76), "S7883C19");
    /*is_ambiguous_... S7883C16::S7883C7 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C16*), ABISELECT(120,76), "S7883C19");
    check_base_class_offset(lv, (S7883C16*)(S7883C22*), ABISELECT(120,76), "S7883C19");
    check_base_class_offset(lv, (S7883C22*), ABISELECT(96,60), "S7883C19");
    check_field_offset(lv, s7883c19f0, ABISELECT(8,4), "S7883C19.s7883c19f0");
    test_class_info(&lv, &cd_S7883C19);
    dp->~S7883C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7883C19(Test_S7883C19, "S7883C19", ABISELECT(160,100));

#else // __cplusplus

extern void _ZN8S7883C19C1Ev();
extern void _ZN8S7883C19D2Ev();
Name_Map name_map_S7883C19[] = {
  NSPAIR(_ZN8S7883C19C1Ev),
  NSPAIR(_ZN8S7883C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C6;
extern VTBL_ENTRY _ZTI7S7883C6[];
extern  VTBL_ENTRY _ZTV7S7883C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C6[];
extern Class_Descriptor cd_S7883C10;
extern VTBL_ENTRY _ZTI8S7883C10[];
extern  VTBL_ENTRY _ZTV8S7883C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C10[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C6;
extern VTBL_ENTRY _ZTI7S7883C6[];
extern  VTBL_ENTRY _ZTV7S7883C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C5;
extern VTBL_ENTRY _ZTI7S7883C5[];
extern  VTBL_ENTRY _ZTV7S7883C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C5[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C2;
extern VTBL_ENTRY _ZTI7S7883C2[];
extern  VTBL_ENTRY _ZTV7S7883C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7883C21;
extern VTBL_ENTRY _ZTI8S7883C21[];
extern  VTBL_ENTRY _ZTV8S7883C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C21[];
extern Class_Descriptor cd_S7883C20;
extern VTBL_ENTRY _ZTI8S7883C20[];
extern  VTBL_ENTRY _ZTV8S7883C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C20[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C6;
extern VTBL_ENTRY _ZTI7S7883C6[];
extern  VTBL_ENTRY _ZTV7S7883C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C6[];
extern Class_Descriptor cd_S7883C10;
extern VTBL_ENTRY _ZTI8S7883C10[];
extern  VTBL_ENTRY _ZTV8S7883C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C10[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C5;
extern VTBL_ENTRY _ZTI7S7883C5[];
extern  VTBL_ENTRY _ZTV7S7883C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C5[];
extern Class_Descriptor cd_S7883C17;
extern VTBL_ENTRY _ZTI8S7883C17[];
extern  VTBL_ENTRY _ZTV8S7883C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C17[];
extern Class_Descriptor cd_S7883C18;
extern VTBL_ENTRY _ZTI8S7883C18[];
extern  VTBL_ENTRY _ZTV8S7883C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C18[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C16;
extern VTBL_ENTRY _ZTI8S7883C16[];
extern  VTBL_ENTRY _ZTV8S7883C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C16[];
extern Class_Descriptor cd_S7883C22;
extern VTBL_ENTRY _ZTI8S7883C22[];
extern  VTBL_ENTRY _ZTV8S7883C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C22[];
static Base_Class bases_S7883C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_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
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7883C7,    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
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7883C6,    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
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7883C10,    ABISELECT(16,8), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_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
    15, //immediately_derived
  0, 0},
  {&cd_S4677C37,    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
    8, //immediately_derived
  0, 0},
  {&cd_S7883C7,    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
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7883C6,    ABISELECT(80,48), //bcp->offset
    39, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7883C5,    ABISELECT(40,24), //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
    7, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(56,32), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7883C2,    ABISELECT(40,24), //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
    17, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(68,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7883C21,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7883C20,    ABISELECT(40,24), //bcp->offset
    23, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    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
    20, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(96,60), //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
    17, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7883C6,    ABISELECT(96,60), //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
    18, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7883C10,    ABISELECT(96,60), //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
    19, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S4677C37,    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_S7883C5,    ABISELECT(144,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S7883C17,    ABISELECT(144,92), //bcp->offset
    71, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S7883C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    28, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(120,76), //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
    15, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7883C16,    ABISELECT(120,76), //bcp->offset
    59, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S7883C22,    ABISELECT(96,60), //bcp->offset
    46, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7883C19[];
extern void _ZN8S7883C19D1Ev();
extern void _ZN8S7883C19D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn16_N8S7883C19D1Ev,_ZThn8_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn16_N8S7883C19D0Ev,_ZThn8_N8S7883C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn40_N8S7883C19D1Ev,_ZThn24_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn40_N8S7883C19D0Ev,_ZThn24_N8S7883C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn56_N8S7883C19D1Ev,_ZThn32_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn56_N8S7883C19D0Ev,_ZThn32_N8S7883C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn80_N8S7883C19D1Ev,_ZThn48_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn80_N8S7883C19D0Ev,_ZThn48_N8S7883C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn96_N8S7883C19D1Ev,_ZThn60_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn96_N8S7883C19D0Ev,_ZThn60_N8S7883C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn120_N8S7883C19D1Ev,_ZThn76_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn120_N8S7883C19D0Ev,_ZThn76_N8S7883C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn144_N8S7883C19D1Ev,_ZThn92_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn144_N8S7883C19D0Ev,_ZThn92_N8S7883C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7883C19[] = {
  0,
  ABISELECT(144,92),
  ABISELECT(144,92),
  ABISELECT(120,76),
  ABISELECT(96,60),
  0,
  ABISELECT(80,48),
  ABISELECT(40,24),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&_ZN8S7883C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7883C19D0Ev,
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(40,24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-40,-24),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-16,-12),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(24,16),
  ABISELECT(-64,-40),
  ABISELECT(-80,-52),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
  ABISELECT(-120,-76),
  ABISELECT(-120,-76),
  ABISELECT(-40,-28),
  ABISELECT(24,16),
  ABISELECT(24,16),
  ABISELECT(-88,-56),
  ABISELECT(-104,-68),
  ABISELECT(-120,-76),
  ABISELECT(-120,-76),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
  0,
  ABISELECT(-112,-72),
  ABISELECT(-128,-84),
  ABISELECT(-64,-44),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
};
extern VTBL_ENTRY _ZTV8S7883C19[];
extern void ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev)();
extern void _ZN8S7883C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev)();
extern void _ZN8S7883C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C10__8S7883C19[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void _ZN7S7883C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
extern void _ZN7S7883C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C68S7883C10__8S7883C19[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C68S7883C10__8S7883C19[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev)();
extern void _ZN8S7883C20D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev)();
extern void _ZN8S7883C20D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C20__8S7883C19[] = {
  ABISELECT(-40,-24),
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev)();
extern void _ZN8S7883C21D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev)();
extern void _ZN8S7883C21D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C218S7883C20__8S7883C19[] = {
  ABISELECT(-40,-24),
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void _ZN7S7883C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void _ZN7S7883C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C28S7883C218S7883C20__8S7883C19[] = {
  ABISELECT(-40,-24),
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void _ZN7S7883C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void _ZN7S7883C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C57S7883C28S7883C218S7883C20__8S7883C19[] = {
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZThn40_N7S7883C5D1Ev,_ZThn24_N7S7883C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void ABISELECT(_ZThn40_N7S7883C5D0Ev,_ZThn24_N7S7883C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C57S7883C28S7883C218S7883C20__8S7883C19[] = {
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C57S7883C28S7883C218S7883C20__8S7883C19[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C28S7883C218S7883C20__A2__8S7883C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(-40,-24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C28S7883C218S7883C20__A2__8S7883C19[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C28S7883C218S7883C20__8S7883C19[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZThn40_N7S7883C2D1Ev,_ZThn24_N7S7883C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void ABISELECT(_ZThn40_N7S7883C2D0Ev,_ZThn24_N7S7883C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C28S7883C218S7883C20__8S7883C19[] = {
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S7883C2D1Ev,_ZThn8_N7S7883C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void ABISELECT(_ZThn16_N7S7883C2D0Ev,_ZThn8_N7S7883C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C7__A1__7S7883C28S7883C218S7883C20__8S7883C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(-40,-24),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C218S7883C20__8S7883C19[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S7883C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev)();
extern void ABISELECT(_ZThn40_N8S7883C21D1Ev,_ZThn24_N8S7883C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev)();
extern void ABISELECT(_ZThn40_N8S7883C21D0Ev,_ZThn24_N8S7883C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C218S7883C20__8S7883C19[] = {
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7883C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev)();
extern void ABISELECT(_ZThn16_N8S7883C21D1Ev,_ZThn8_N8S7883C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev)();
extern void ABISELECT(_ZThn16_N8S7883C21D0Ev,_ZThn8_N8S7883C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C2__A1__8S7883C218S7883C20__8S7883C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(-40,-24),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7883C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C20__8S7883C19[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S7883C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev)();
extern void ABISELECT(_ZThn40_N8S7883C20D1Ev,_ZThn24_N8S7883C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev)();
extern void ABISELECT(_ZThn40_N8S7883C20D0Ev,_ZThn24_N8S7883C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C20__8S7883C19[] = {
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7883C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev)();
extern void ABISELECT(_ZThn16_N8S7883C20D1Ev,_ZThn8_N8S7883C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev)();
extern void ABISELECT(_ZThn16_N8S7883C20D0Ev,_ZThn8_N8S7883C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C28S7883C21__A1__8S7883C20__8S7883C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(-40,-24),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7883C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void _ZN7S7883C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
extern void _ZN7S7883C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__A1__8S7883C19[] = {
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C6__A1__8S7883C19[] = {
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C6__A1__8S7883C19[] = {
  ABISELECT(64,40),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C6__A1__8S7883C19[] = {
  ABISELECT(64,40),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev)();
extern void _ZN8S7883C22D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev)();
extern void _ZN8S7883C22D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C22__8S7883C19[] = {
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-16,-12),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(24,16),
  ABISELECT(-64,-40),
  ABISELECT(-80,-52),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev)();
extern void _ZN8S7883C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev)();
extern void _ZN8S7883C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C108S7883C22__A1__8S7883C19[] = {
  ABISELECT(-64,-40),
  ABISELECT(-80,-52),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void _ZN7S7883C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
extern void _ZN7S7883C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C68S7883C108S7883C22__A2__8S7883C19[] = {
  ABISELECT(-64,-40),
  ABISELECT(-80,-52),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C68S7883C108S7883C22__A3__8S7883C19[] = {
  ABISELECT(-64,-40),
  ABISELECT(-80,-52),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C68S7883C108S7883C22__A3__8S7883C19[] = {
  ABISELECT(80,52),
  ABISELECT(80,52),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C68S7883C108S7883C22__A2__8S7883C19[] = {
  ABISELECT(80,52),
  ABISELECT(80,52),
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C108S7883C22__A1__8S7883C19[] = {
  ABISELECT(80,52),
  ABISELECT(80,52),
  (VTBL_ENTRY)&(_ZTI8S7883C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C22__8S7883C19[] = {
  ABISELECT(80,52),
  ABISELECT(80,52),
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev)();
extern void ABISELECT(_ZThn24_N8S7883C22D1Ev,_ZThn16_N8S7883C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev)();
extern void ABISELECT(_ZThn24_N8S7883C22D0Ev,_ZThn16_N8S7883C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C16__8S7883C22__8S7883C19[] = {
  ABISELECT(-120,-76),
  ABISELECT(-120,-76),
  ABISELECT(-40,-28),
  ABISELECT(24,16),
  ABISELECT(24,16),
  ABISELECT(-88,-56),
  ABISELECT(-104,-68),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev)();
extern void ABISELECT(_ZThn48_N8S7883C22D1Ev,_ZThn32_N8S7883C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev)();
extern void ABISELECT(_ZThn48_N8S7883C22D0Ev,_ZThn32_N8S7883C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C17__8S7883C22__8S7883C19[] = {
  0,
  ABISELECT(-112,-72),
  ABISELECT(-128,-84),
  ABISELECT(-64,-44),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__A1__8S7883C22__8S7883C19[] = {
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7883C22D1Ev,_ZTv0_n16_N8S7883C22D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7883C22D0Ev,_ZTv0_n16_N8S7883C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7883C18__8S7883C22__8S7883C19[] = {
  ABISELECT(96,60),
  ABISELECT(32,20),
  ABISELECT(96,60),
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C22D1Ev,_ZTv0_n16_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C22D0Ev,_ZTv0_n16_N8S7883C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void _ZN8S7883C16D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
extern void _ZN8S7883C16D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C16__8S7883C19[] = {
  ABISELECT(-120,-76),
  ABISELECT(-120,-76),
  ABISELECT(-40,-28),
  ABISELECT(24,16),
  ABISELECT(24,16),
  ABISELECT(-88,-56),
  ABISELECT(-104,-68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C78S7883C16__A4__8S7883C19[] = {
  ABISELECT(-88,-56),
  ABISELECT(-104,-68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C78S7883C16__A4__8S7883C19[] = {
  ABISELECT(104,68),
  ABISELECT(104,68),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void ABISELECT(_ZThn24_N8S7883C16D1Ev,_ZThn16_N8S7883C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
extern void ABISELECT(_ZThn24_N8S7883C16D0Ev,_ZThn16_N8S7883C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C17__8S7883C16__8S7883C19[] = {
  0,
  ABISELECT(-112,-72),
  ABISELECT(-128,-84),
  ABISELECT(-64,-44),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C16__8S7883C19[] = {
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  ABISELECT(40,28),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C16__8S7883C19[] = {
  ABISELECT(104,68),
  ABISELECT(104,68),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7883C16D1Ev,_ZTv0_n16_N8S7883C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7883C16D0Ev,_ZTv0_n16_N8S7883C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7883C18__8S7883C16__8S7883C19[] = {
  ABISELECT(120,76),
  ABISELECT(32,20),
  ABISELECT(120,76),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C16D1Ev,_ZTv0_n16_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C16D0Ev,_ZTv0_n16_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev)();
extern void _ZN8S7883C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev)();
extern void _ZN8S7883C17D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C17__8S7883C19[] = {
  0,
  ABISELECT(-112,-72),
  ABISELECT(-128,-84),
  ABISELECT(-64,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C17__8S7883C19[] = {
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  ABISELECT(64,44),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S7883C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C17__8S7883C19[] = {
  ABISELECT(128,84),
  ABISELECT(128,84),
  (VTBL_ENTRY)&(_ZTI8S7883C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void _ZN7S7883C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void _ZN7S7883C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C5__A1__8S7883C19[] = {
  ABISELECT(-112,-72),
  ABISELECT(-128,-84),
  ABISELECT(-64,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C5__A1__8S7883C19[] = {
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  ABISELECT(64,44),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C5__A1__8S7883C19[] = {
  ABISELECT(128,84),
  ABISELECT(128,84),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void _ZN8S7883C18D1Ev();
extern void _ZN8S7883C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7883C18__8S7883C19[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C18[0]),
  (VTBL_ENTRY)&_ZN8S7883C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7883C18D0Ev,
};
static  VTT_ENTRY vtt_S7883C19[] = {
  {&(_ZTV8S7883C19[14]),  14,80},
  {&(_ZTV8S7883C19[21]),  21,80},
  {&(_ZTV8S7883C19[21]),  21,80},
  {&(_ZTV8S7883C19[30]),  30,80},
  {&(_ZTV8S7883C19[44]),  44,80},
  {&(_ZTV8S7883C19[37]),  37,80},
  {&(_ZTV8S7883C19[57]),  57,80},
  {&(_ZTV8S7883C19[69]),  69,80},
  {&(_ZTV8S7883C19[78]),  78,80},
  {&(_ZTV8S7883C19[78]),  78,80},
  {&(_ZTV8S7883C19[14]),  14,80},
  {&(_tg__ZTV8S7883C10__8S7883C19[5]),  5,7},
  {&(_tg__ZTV7S7883C68S7883C10__8S7883C19[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C68S7883C10__8S7883C19[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C68S7883C10__8S7883C19[5]),  5,7},
  {&(_tg__ZTV7S7883C68S7883C10__8S7883C19[5]),  5,7},
  {&(_tg__ZTV8S7883C10__8S7883C19[5]),  5,7},
  {&(_tg__ZTV8S7883C20__8S7883C19[7]),  7,9},
  {&(_tg__ZTV8S7883C218S7883C20__8S7883C19[7]),  7,9},
  {&(_tg__ZTV7S7883C28S7883C218S7883C20__8S7883C19[7]),  7,9},
  {&(_tg__ZTV7S7883C57S7883C28S7883C218S7883C20__8S7883C19[6]),  6,8},
  {&(_tg__ZTV7S7883C6__7S7883C57S7883C28S7883C218S7883C20__8S7883C19[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C57S7883C28S7883C218S7883C20__8S7883C19[3]),  3,5},
  {&(_tg__ZTV7S7883C77S7883C28S7883C218S7883C20__A2__8S7883C19[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C28S7883C218S7883C20__A2__8S7883C19[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C28S7883C218S7883C20__8S7883C19[3]),  3,5},
  {&(_tg__ZTV7S7883C6__7S7883C28S7883C218S7883C20__8S7883C19[5]),  5,7},
  {&(_tg__ZTV7S7883C7__A1__7S7883C28S7883C218S7883C20__8S7883C19[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S7883C218S7883C20__8S7883C19[3]),  3,5},
  {&(_tg__ZTV7S7883C6__8S7883C218S7883C20__8S7883C19[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C2__A1__8S7883C218S7883C20__8S7883C19[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S7883C20__8S7883C19[3]),  3,5},
  {&(_tg__ZTV7S7883C6__8S7883C20__8S7883C19[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C28S7883C21__A1__8S7883C20__8S7883C19[5]),  5,7},
  {&(_tg__ZTV7S7883C6__A1__8S7883C19[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C6__A1__8S7883C19[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C6__A1__8S7883C19[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C6__A1__8S7883C19[3]),  3,5},
  {&(_tg__ZTV8S7883C22__8S7883C19[11]),  11,13},
  {&(_tg__ZTV8S7883C108S7883C22__A1__8S7883C19[5]),  5,7},
  {&(_tg__ZTV7S7883C68S7883C108S7883C22__A2__8S7883C19[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C68S7883C108S7883C22__A3__8S7883C19[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C68S7883C108S7883C22__A3__8S7883C19[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C68S7883C108S7883C22__A2__8S7883C19[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S7883C108S7883C22__A1__8S7883C19[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S7883C22__8S7883C19[3]),  3,5},
  {&(_tg__ZTV8S7883C16__8S7883C22__8S7883C19[10]),  10,12},
  {&(_tg__ZTV8S7883C17__8S7883C22__8S7883C19[7]),  7,9},
  {&(_tg__ZTV8S7883C17__8S7883C22__8S7883C19[7]),  7,9},
  {&(_tg__ZTV7S7883C6__A1__8S7883C22__8S7883C19[5]),  5,7},
  {&(_tg__ZTV8S7883C18__8S7883C22__8S7883C19[4]),  4,6},
  {&(_tg__ZTV8S7883C16__8S7883C19[10]),  10,12},
  {&(_tg__ZTV7S7883C78S7883C16__A4__8S7883C19[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C78S7883C16__A4__8S7883C19[3]),  3,5},
  {&(_tg__ZTV8S7883C17__8S7883C16__8S7883C19[7]),  7,9},
  {&(_tg__ZTV8S7883C17__8S7883C16__8S7883C19[7]),  7,9},
  {&(_tg__ZTV7S7883C6__8S7883C16__8S7883C19[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S7883C16__8S7883C19[3]),  3,5},
  {&(_tg__ZTV8S7883C18__8S7883C16__8S7883C19[4]),  4,6},
  {&(_tg__ZTV8S7883C17__8S7883C19[7]),  7,9},
  {&(_tg__ZTV8S7883C17__8S7883C19[7]),  7,9},
  {&(_tg__ZTV7S7883C6__8S7883C17__8S7883C19[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S7883C17__8S7883C19[3]),  3,5},
  {&(_tg__ZTV7S7883C5__A1__8S7883C19[6]),  6,8},
  {&(_tg__ZTV7S7883C6__7S7883C5__A1__8S7883C19[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C5__A1__8S7883C19[3]),  3,5},
  {&(_tg__ZTV8S7883C18__8S7883C19[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7883C19[];
extern  VTBL_ENTRY _ZTV8S7883C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C19[];
static VTBL_ENTRY alt_thunk_names43[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev), // 
  (VTBL_ENTRY)_ZN8S7883C17D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev), // 
  (VTBL_ENTRY)_ZN8S7883C17D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C16D0Ev,_ZThn16_N8S7883C16D0Ev),
  (VTBL_ENTRY)_ZN8S7883C16D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C16D1Ev,_ZThn16_N8S7883C16D1Ev),
  (VTBL_ENTRY)_ZN8S7883C16D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7883C22D0Ev,_ZThn32_N8S7883C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C22D0Ev,_ZThn16_N8S7883C22D0Ev),
  (VTBL_ENTRY)_ZN8S7883C22D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7883C22D1Ev,_ZThn32_N8S7883C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C22D1Ev,_ZThn16_N8S7883C22D1Ev),
  (VTBL_ENTRY)_ZN8S7883C22D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C5D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7883C5D0Ev,_ZThn24_N7S7883C5D0Ev),
  (VTBL_ENTRY)_ZN7S7883C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C5D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7883C5D1Ev,_ZThn24_N7S7883C5D1Ev),
  (VTBL_ENTRY)_ZN7S7883C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C2D0Ev,_ZThn8_N7S7883C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7883C2D0Ev,_ZThn24_N7S7883C2D0Ev),
  (VTBL_ENTRY)_ZN7S7883C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C2D1Ev,_ZThn8_N7S7883C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7883C2D1Ev,_ZThn24_N7S7883C2D1Ev),
  (VTBL_ENTRY)_ZN7S7883C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C21D0Ev,_ZThn8_N8S7883C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7883C21D0Ev,_ZThn24_N8S7883C21D0Ev),
  (VTBL_ENTRY)_ZN8S7883C21D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C21D1Ev,_ZThn8_N8S7883C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7883C21D1Ev,_ZThn24_N8S7883C21D1Ev),
  (VTBL_ENTRY)_ZN8S7883C21D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C20D0Ev,_ZThn8_N8S7883C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7883C20D0Ev,_ZThn24_N8S7883C20D0Ev),
  (VTBL_ENTRY)_ZN8S7883C20D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C20D1Ev,_ZThn8_N8S7883C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7883C20D1Ev,_ZThn24_N8S7883C20D1Ev),
  (VTBL_ENTRY)_ZN8S7883C20D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C6D0Ev,
  (VTBL_ENTRY)_ZN7S7883C6D0Ev,
  (VTBL_ENTRY)_ZN7S7883C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C6D1Ev,
  (VTBL_ENTRY)_ZN7S7883C6D1Ev,
  (VTBL_ENTRY)_ZN7S7883C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev), // 
  (VTBL_ENTRY)_ZN8S7883C10D0Ev,
  (VTBL_ENTRY)_ZN8S7883C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev), // 
  (VTBL_ENTRY)_ZN8S7883C10D1Ev,
  (VTBL_ENTRY)_ZN8S7883C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7883C19D0Ev,_ZThn92_N8S7883C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7883C19D0Ev,_ZThn76_N8S7883C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7883C19D0Ev,_ZThn60_N8S7883C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7883C19D0Ev,_ZThn48_N8S7883C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7883C19D0Ev,_ZThn32_N8S7883C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7883C19D0Ev,_ZThn24_N8S7883C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C19D0Ev,_ZThn8_N8S7883C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7883C19D1Ev,_ZThn92_N8S7883C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7883C19D1Ev,_ZThn76_N8S7883C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7883C19D1Ev,_ZThn60_N8S7883C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7883C19D1Ev,_ZThn48_N8S7883C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7883C19D1Ev,_ZThn32_N8S7883C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7883C19D1Ev,_ZThn24_N8S7883C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C19D1Ev,_ZThn8_N8S7883C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7883C19 = {  "S7883C19", // class name
  bases_S7883C19, 31,
  &(vtc_S7883C19[0]), // expected_vtbl_contents
  &(vtt_S7883C19[0]), // expected_vtt_contents
  ABISELECT(160,100), // object size
  NSPAIRA(_ZTI8S7883C19),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7883C19),80, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7883C19),67, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names43,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7883C14  : S7883C3_nt , virtual S7883C15 , S7883C16 , S7883C19 {
  int s7883c14f0;
  virtual  ~S7883C14(); // _ZN8S7883C14D2Ev
  S7883C14(); // tgen
};
//SIG(-1 S7883C14) C1{ BC2{ vd m} VBC3{ VBC4{ VBC2 BC5{ m Fi} BC6{ VBC7{ BC8{ VBC2 VBC5 BC9{ m} Fi} Fi} BC9} VBC9 BC8 vd} vd} BC10{ VBC5 VBC11{ VBC6 FC5} VBC12{ VBC5 vd} VBC9 BC8 vd Fi Fp} BC13{ VBC2 VBC14{ BC7} VBC15{ BC16{ BC4 BC5 vd Fi} vd} VBC17{ BC14 VBC10 vd Fi} vd Fi} vd Fi}


 S7883C14 ::~S7883C14(){ note_dtor("S7883C14", this);}
S7883C14 ::S7883C14(){ note_ctor("S7883C14", this);} // tgen

static void Test_S7883C14()
{
  extern Class_Descriptor cd_S7883C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,37)];
    init_test(&cd_S7883C14, buf);
    S7883C14 *dp, &lv = *(dp=new (buf) S7883C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,144), "sizeof(S7883C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7883C14)");
    /*is_ambiguous_... S7883C14::S7883C3_nt */ AMB_check_base_class_offset(lv, (S7883C3_nt*), 0, "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C2 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C2*), ABISELECT(48,32), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C6 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C6*), ABISELECT(48,32), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C2 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C2*), ABISELECT(48,32), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C16*), ABISELECT(48,32), "S7883C14");
    check_base_class_offset(lv, (S7883C3_nt*)(S7883C19*), ABISELECT(48,32), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C10 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C6*)(S7883C10*), ABISELECT(48,32), "S7883C14");
    check_base_class_offset(lv, (S7883C3_nt*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(48,32), "S7883C14");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(48,32), "S7883C14");
    check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C6*)(S7883C10*)(S7883C22*), ABISELECT(48,32), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C16*), ABISELECT(48,32), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C2*), ABISELECT(64,40), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C6*), ABISELECT(104,64), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C2*), ABISELECT(104,64), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C16*), ABISELECT(104,64), "S7883C14");
    check_base_class_offset(lv, (S3216C8_nt*)(S7883C18*), ABISELECT(104,64), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C16*), ABISELECT(104,64), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C10 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C6*)(S7883C10*), ABISELECT(104,64), "S7883C14");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(104,64), "S7883C14");
    check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C6*)(S7883C10*)(S7883C22*), ABISELECT(104,64), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C16*), ABISELECT(104,64), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C16*), ABISELECT(104,64), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C6 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C6*), ABISELECT(88,52), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C6 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C6*), ABISELECT(88,52), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C2 */ AMB_check_base_class_offset(lv, (S7883C6*)(S7883C5*)(S7883C2*), ABISELECT(88,52), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C5 */ AMB_check_base_class_offset(lv, (S7883C6*)(S7883C5*), ABISELECT(88,52), "S7883C14");
    check_base_class_offset(lv, (S7883C6*)(S7883C5*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(88,52), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C2 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C5*)(S7883C2*), ABISELECT(56,36), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C2 */ AMB_check_base_class_offset(lv, (S7883C5*)(S7883C2*), ABISELECT(56,36), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C2 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C2*), 0, "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C16*), 0, "S7883C14");
    /*is_ambiguous_... S7883C2::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C2*)(S7883C21*)(S7883C20*), 0, "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C16*), 0, "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C2 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C2*), ABISELECT(72,44), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C2 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C2*), ABISELECT(72,44), "S7883C14");
    check_base_class_offset(lv, (S7883C2*)(S7883C15*), ABISELECT(56,36), "S7883C14");
    check_base_class_offset(lv, (S7883C15*), ABISELECT(48,32), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C5 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C5*), ABISELECT(112,68), "S7883C14");
    check_base_class_offset(lv, (S7883C5*)(S7883C17*), ABISELECT(112,68), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C17*)(S7883C16*), ABISELECT(112,68), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C17*)(S7883C16*), ABISELECT(112,68), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C18*)(S7883C16*), ABISELECT(32,20), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C18*)(S7883C16*), ABISELECT(32,20), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C16*), ABISELECT(8,4), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C16*), ABISELECT(8,4), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C16*), ABISELECT(8,4), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C10 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C6*)(S7883C10*), ABISELECT(128,76), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C10 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C6*)(S7883C10*), ABISELECT(128,76), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C10 */ AMB_check_base_class_offset(lv, (S7883C6*)(S7883C10*), ABISELECT(128,76), "S7883C14");
    /*is_ambiguous_... S7883C19::S7883C10 */ AMB_check_base_class_offset(lv, (S7883C10*)(S7883C19*), ABISELECT(128,76), "S7883C14");
    /*is_ambiguous_... S7883C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(152,92), "S7883C14");
    /*is_ambiguous_... S7883C5::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C5*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(144,88), "S7883C14");
    check_base_class_offset(lv, (S7883C5*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(144,88), "S7883C14");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(160,96), "S7883C14");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(160,96), "S7883C14");
    check_base_class_offset(lv, (S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(144,88), "S7883C14");
    /*is_ambiguous_... S7883C21::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C21*)(S7883C20*), ABISELECT(172,104), "S7883C14");
    check_base_class_offset(lv, (S7883C21*)(S7883C20*), ABISELECT(144,88), "S7883C14");
    check_base_class_offset(lv, (S7883C20*)(S7883C19*), ABISELECT(144,88), "S7883C14");
    check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C6*)(S7883C10*)(S7883C22*), ABISELECT(184,112), "S7883C14");
    check_base_class_offset(lv, (S7883C7*)(S7883C6*)(S7883C10*)(S7883C22*), ABISELECT(184,112), "S7883C14");
    check_base_class_offset(lv, (S7883C6*)(S7883C10*)(S7883C22*), ABISELECT(184,112), "S7883C14");
    check_base_class_offset(lv, (S7883C10*)(S7883C22*), ABISELECT(184,112), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C16*), ABISELECT(208,128), "S7883C14");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C16*), ABISELECT(208,128), "S7883C14");
    check_base_class_offset(lv, (S7883C16*)(S7883C22*), ABISELECT(208,128), "S7883C14");
    check_base_class_offset(lv, (S7883C22*)(S7883C19*), ABISELECT(184,112), "S7883C14");
    check_base_class_offset(lv, (S7883C19*), ABISELECT(32,20), "S7883C14");
    check_field_offset(lv, s7883c14f0, ABISELECT(44,28), "S7883C14.s7883c14f0");
    test_class_info(&lv, &cd_S7883C14);
    dp->~S7883C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7883C14(Test_S7883C14, "S7883C14", ABISELECT(232,144));

#else // __cplusplus

extern void _ZN8S7883C14C1Ev();
extern void _ZN8S7883C14D2Ev();
Name_Map name_map_S7883C14[] = {
  NSPAIR(_ZN8S7883C14C1Ev),
  NSPAIR(_ZN8S7883C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C6;
extern VTBL_ENTRY _ZTI7S7883C6[];
extern  VTBL_ENTRY _ZTV7S7883C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C5;
extern VTBL_ENTRY _ZTI7S7883C5[];
extern  VTBL_ENTRY _ZTV7S7883C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C5[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C2;
extern VTBL_ENTRY _ZTI7S7883C2[];
extern  VTBL_ENTRY _ZTV7S7883C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C2[];
extern Class_Descriptor cd_S7883C15;
extern VTBL_ENTRY _ZTI8S7883C15[];
extern  VTBL_ENTRY _ZTV8S7883C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C15[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C5;
extern VTBL_ENTRY _ZTI7S7883C5[];
extern  VTBL_ENTRY _ZTV7S7883C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C5[];
extern Class_Descriptor cd_S7883C17;
extern VTBL_ENTRY _ZTI8S7883C17[];
extern  VTBL_ENTRY _ZTV8S7883C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C17[];
extern Class_Descriptor cd_S7883C18;
extern VTBL_ENTRY _ZTI8S7883C18[];
extern  VTBL_ENTRY _ZTV8S7883C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C18[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C16;
extern VTBL_ENTRY _ZTI8S7883C16[];
extern  VTBL_ENTRY _ZTV8S7883C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C16[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C6;
extern VTBL_ENTRY _ZTI7S7883C6[];
extern  VTBL_ENTRY _ZTV7S7883C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C6[];
extern Class_Descriptor cd_S7883C10;
extern VTBL_ENTRY _ZTI8S7883C10[];
extern  VTBL_ENTRY _ZTV8S7883C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C10[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C5;
extern VTBL_ENTRY _ZTI7S7883C5[];
extern  VTBL_ENTRY _ZTV7S7883C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C5[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C2;
extern VTBL_ENTRY _ZTI7S7883C2[];
extern  VTBL_ENTRY _ZTV7S7883C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7883C21;
extern VTBL_ENTRY _ZTI8S7883C21[];
extern  VTBL_ENTRY _ZTV8S7883C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C21[];
extern Class_Descriptor cd_S7883C20;
extern VTBL_ENTRY _ZTI8S7883C20[];
extern  VTBL_ENTRY _ZTV8S7883C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C20[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C6;
extern VTBL_ENTRY _ZTI7S7883C6[];
extern  VTBL_ENTRY _ZTV7S7883C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C6[];
extern Class_Descriptor cd_S7883C10;
extern VTBL_ENTRY _ZTI8S7883C10[];
extern  VTBL_ENTRY _ZTV8S7883C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C10[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C16;
extern VTBL_ENTRY _ZTI8S7883C16[];
extern  VTBL_ENTRY _ZTV8S7883C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C16[];
extern Class_Descriptor cd_S7883C22;
extern VTBL_ENTRY _ZTI8S7883C22[];
extern  VTBL_ENTRY _ZTV8S7883C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C22[];
extern Class_Descriptor cd_S7883C19;
extern VTBL_ENTRY _ZTI8S7883C19[];
extern  VTBL_ENTRY _ZTV8S7883C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C19[];
static Base_Class bases_S7883C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7883C3_nt,    ABISELECT(48,32), //bcp->offset
    -1, //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
    5, //immediately_derived
  0, 1},
  {&cd_S3216C8_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
    12, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(88,52), //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
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7883C6,    ABISELECT(88,52), //bcp->offset
    71, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    8, //immediately_derived
  0, 0},
  {&cd_S7883C5,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4677C37,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(72,44), //bcp->offset
    64, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7883C2,    ABISELECT(56,36), //bcp->offset
    55, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7883C15,    ABISELECT(48,32), //bcp->offset
    45, //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
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7883C5,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7883C17,    ABISELECT(112,68), //bcp->offset
    78, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7883C18,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7883C7,    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
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7883C16,    ABISELECT(8,4), //bcp->offset
    17, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4677C37,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7883C6,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7883C10,    ABISELECT(128,76), //bcp->offset
    87, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(152,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
    30, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7883C5,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(160,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(160,96), //bcp->offset
    103, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7883C2,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(172,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
    32, //immediately_derived
  0, 0},
  {&cd_S7883C21,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7883C20,    ABISELECT(144,88), //bcp->offset
    94, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(184,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(184,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7883C6,    ABISELECT(184,112), //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
    22, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7883C10,    ABISELECT(184,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(208,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(208,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7883C16,    ABISELECT(208,128), //bcp->offset
    123, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S7883C22,    ABISELECT(184,112), //bcp->offset
    110, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7883C19,    ABISELECT(32,20), //bcp->offset
    29, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7883C14[];
extern void _ZN8S7883C14D1Ev();
extern void _ZN8S7883C14D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn8_N8S7883C14D1Ev,_ZThn4_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn8_N8S7883C14D0Ev,_ZThn4_N8S7883C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7883C14D1Ev,_ZTv0_n16_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn32_N8S7883C14D1Ev,_ZThn20_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7883C14D0Ev,_ZTv0_n16_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn32_N8S7883C14D0Ev,_ZThn20_N8S7883C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S7883C14D1Ev,_ZThn32_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn48_N8S7883C14D0Ev,_ZThn32_N8S7883C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn56_N8S7883C14D1Ev,_ZThn36_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn56_N8S7883C14D0Ev,_ZThn36_N8S7883C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn72_N8S7883C14D1Ev,_ZThn44_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn72_N8S7883C14D0Ev,_ZThn44_N8S7883C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn88_N8S7883C14D1Ev,_ZThn52_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn88_N8S7883C14D0Ev,_ZThn52_N8S7883C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn112_N8S7883C14D1Ev,_ZThn68_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn112_N8S7883C14D0Ev,_ZThn68_N8S7883C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn128_N8S7883C14D1Ev,_ZThn76_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn128_N8S7883C14D0Ev,_ZThn76_N8S7883C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn144_N8S7883C14D1Ev,_ZThn88_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn144_N8S7883C14D0Ev,_ZThn88_N8S7883C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn160_N8S7883C14D1Ev,_ZThn96_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn160_N8S7883C14D0Ev,_ZThn96_N8S7883C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn184_N8S7883C14D1Ev,_ZThn112_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn184_N8S7883C14D0Ev,_ZThn112_N8S7883C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn208_N8S7883C14D1Ev,_ZThn128_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn208_N8S7883C14D0Ev,_ZThn128_N8S7883C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7883C14[] = {
  ABISELECT(208,128),
  ABISELECT(184,112),
  ABISELECT(144,88),
  ABISELECT(128,76),
  ABISELECT(32,20),
  ABISELECT(112,68),
  ABISELECT(112,68),
  0,
  ABISELECT(104,64),
  ABISELECT(88,52),
  ABISELECT(48,32),
  ABISELECT(56,36),
  ABISELECT(48,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&_ZN8S7883C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7883C14D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(24,16),
  ABISELECT(80,48),
  ABISELECT(104,64),
  ABISELECT(104,64),
  ABISELECT(96,60),
  ABISELECT(40,28),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
  0,
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(176,108),
  ABISELECT(152,92),
  ABISELECT(-32,-20),
  ABISELECT(56,32),
  ABISELECT(112,68),
  ABISELECT(96,56),
  ABISELECT(16,12),
  ABISELECT(-32,-20),
  ABISELECT(72,44),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C14D1Ev,_ZTv0_n16_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C14D0Ev,_ZTv0_n16_N8S7883C14D0Ev),
  ABISELECT(-48,-32),
  ABISELECT(56,32),
  ABISELECT(40,20),
  0,
  ABISELECT(8,4),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
  ABISELECT(-56,-36),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
  ABISELECT(32,20),
  ABISELECT(-24,-12),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(-88,-52),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
  0,
  ABISELECT(-8,-4),
  ABISELECT(-64,-36),
  ABISELECT(-24,-16),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-80,-44),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
  ABISELECT(-144,-88),
  ABISELECT(-40,-24),
  ABISELECT(-96,-56),
  ABISELECT(-56,-36),
  ABISELECT(-144,-88),
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
  ABISELECT(-56,-32),
  ABISELECT(-112,-64),
  ABISELECT(-160,-96),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
  ABISELECT(-184,-112),
  ABISELECT(-152,-92),
  ABISELECT(-96,-60),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(24,16),
  ABISELECT(-80,-48),
  ABISELECT(-136,-80),
  ABISELECT(-184,-112),
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
  ABISELECT(-208,-128),
  ABISELECT(-176,-108),
  ABISELECT(-120,-76),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-104,-64),
  ABISELECT(-160,-96),
  ABISELECT(-208,-128),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern VTBL_ENTRY _ZTV8S7883C14[];
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void _ZN8S7883C16D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
extern void _ZN8S7883C16D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C16__A__8S7883C14[] = {
  ABISELECT(-8,-4),
  ABISELECT(24,16),
  ABISELECT(80,48),
  ABISELECT(104,64),
  ABISELECT(104,64),
  ABISELECT(96,60),
  ABISELECT(40,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C78S7883C16__A2__8S7883C14[] = {
  ABISELECT(96,60),
  ABISELECT(40,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZThn40_N7S7883C7D1Ev,_ZThn28_N7S7883C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void ABISELECT(_ZThn40_N7S7883C7D0Ev,_ZThn28_N7S7883C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C78S7883C16__A2__8S7883C14[] = {
  ABISELECT(-40,-28),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void ABISELECT(_ZThn104_N8S7883C16D1Ev,_ZThn64_N8S7883C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
extern void ABISELECT(_ZThn104_N8S7883C16D0Ev,_ZThn64_N8S7883C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C17__8S7883C16__A__8S7883C14[] = {
  0,
  ABISELECT(-8,-4),
  ABISELECT(-64,-36),
  ABISELECT(-24,-16),
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void ABISELECT(_ZThn80_N8S7883C16D1Ev,_ZThn48_N8S7883C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
extern void ABISELECT(_ZThn80_N8S7883C16D0Ev,_ZThn48_N8S7883C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C16__A__8S7883C14[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void ABISELECT(_ZThn40_N8S7883C16D1Ev,_ZThn28_N8S7883C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
extern void ABISELECT(_ZThn40_N8S7883C16D0Ev,_ZThn28_N8S7883C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C16__A__8S7883C14[] = {
  ABISELECT(-40,-28),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7883C16D1Ev,_ZTv0_n16_N8S7883C16D1Ev)();
extern void ABISELECT(_ZThn24_N8S7883C16D1Ev,_ZThn16_N8S7883C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7883C16D0Ev,_ZTv0_n16_N8S7883C16D0Ev)();
extern void ABISELECT(_ZThn24_N8S7883C16D0Ev,_ZThn16_N8S7883C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C18__8S7883C16__A__8S7883C14[] = {
  ABISELECT(-24,-16),
  ABISELECT(72,44),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C16D1Ev,_ZTv0_n16_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C16D0Ev,_ZTv0_n16_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7883C19D1Ev,_ZTv0_n16_N8S7883C19D1Ev)();
extern void _ZN8S7883C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7883C19D0Ev,_ZTv0_n16_N8S7883C19D0Ev)();
extern void _ZN8S7883C19D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C19__8S7883C14[] = {
  0,
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(176,108),
  ABISELECT(152,92),
  ABISELECT(-32,-20),
  ABISELECT(56,32),
  ABISELECT(112,68),
  ABISELECT(96,56),
  ABISELECT(16,12),
  0,
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C19D1Ev,_ZTv0_n16_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C19D0Ev,_ZTv0_n16_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn16_N8S7883C19D1Ev,_ZThn12_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn16_N8S7883C19D0Ev,_ZThn12_N8S7883C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C19__8S7883C14[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn96_N8S7883C19D1Ev,_ZThn56_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn96_N8S7883C19D0Ev,_ZThn56_N8S7883C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C10__8S7883C19__8S7883C14[] = {
  ABISELECT(-24,-12),
  ABISELECT(-80,-44),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn112_N8S7883C19D1Ev,_ZThn68_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn112_N8S7883C19D0Ev,_ZThn68_N8S7883C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C20__8S7883C19__8S7883C14[] = {
  ABISELECT(-144,-88),
  ABISELECT(-40,-24),
  ABISELECT(-96,-56),
  ABISELECT(-56,-36),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn56_N8S7883C19D1Ev,_ZThn32_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn56_N8S7883C19D0Ev,_ZThn32_N8S7883C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__A1__8S7883C19__8S7883C14[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn128_N8S7883C19D1Ev,_ZThn76_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn128_N8S7883C19D0Ev,_ZThn76_N8S7883C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C28S7883C218S7883C20__A2__8S7883C19__8S7883C14[] = {
  ABISELECT(-56,-32),
  ABISELECT(-112,-64),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn152_N8S7883C19D1Ev,_ZThn92_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn152_N8S7883C19D0Ev,_ZThn92_N8S7883C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C22__8S7883C19__8S7883C14[] = {
  ABISELECT(-184,-112),
  ABISELECT(-152,-92),
  ABISELECT(-96,-60),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(24,16),
  ABISELECT(-80,-48),
  ABISELECT(-136,-80),
  ABISELECT(-152,-92),
  ABISELECT(-152,-92),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn176_N8S7883C19D1Ev,_ZThn108_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn176_N8S7883C19D0Ev,_ZThn108_N8S7883C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C16__8S7883C19__8S7883C14[] = {
  ABISELECT(-208,-128),
  ABISELECT(-176,-108),
  ABISELECT(-120,-76),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-104,-64),
  ABISELECT(-160,-96),
  ABISELECT(-176,-108),
  ABISELECT(-176,-108),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn80_N8S7883C19D1Ev,_ZThn48_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn80_N8S7883C19D0Ev,_ZThn48_N8S7883C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C17__8S7883C19__8S7883C14[] = {
  0,
  ABISELECT(-8,-4),
  ABISELECT(-64,-36),
  ABISELECT(-24,-16),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev)();
extern void _ZN8S7883C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev)();
extern void _ZN8S7883C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C15__8S7883C14[] = {
  ABISELECT(-48,-32),
  ABISELECT(56,32),
  ABISELECT(40,20),
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev)();
extern void ABISELECT(_ZThn8_N8S7883C15D1Ev,_ZThn4_N8S7883C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev)();
extern void ABISELECT(_ZThn8_N8S7883C15D0Ev,_ZThn4_N8S7883C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C2__8S7883C15__8S7883C14[] = {
  ABISELECT(-56,-36),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7883C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev)();
extern void ABISELECT(_ZThn40_N8S7883C15D1Ev,_ZThn20_N8S7883C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev)();
extern void ABISELECT(_ZThn40_N8S7883C15D0Ev,_ZThn20_N8S7883C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C15__8S7883C14[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7883C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev)();
extern void ABISELECT(_ZThn24_N8S7883C15D1Ev,_ZThn12_N8S7883C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev)();
extern void ABISELECT(_ZThn24_N8S7883C15D0Ev,_ZThn12_N8S7883C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C2__A1__8S7883C15__8S7883C14[] = {
  ABISELECT(32,20),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7883C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void _ZN7S7883C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void _ZN7S7883C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C2__8S7883C14[] = {
  ABISELECT(-56,-36),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void _ZN7S7883C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void _ZN7S7883C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C57S7883C2__8S7883C14[] = {
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7883C5D1Ev,_ZThn16_N7S7883C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7883C5D0Ev,_ZThn16_N7S7883C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C57S7883C2__8S7883C14[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C57S7883C2__8S7883C14[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C2__A1__8S7883C14[] = {
  ABISELECT(32,20),
  ABISELECT(-24,-12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C2__A1__8S7883C14[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C2__8S7883C14[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZThn32_N7S7883C2D1Ev,_ZThn16_N7S7883C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void ABISELECT(_ZThn32_N7S7883C2D0Ev,_ZThn16_N7S7883C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C2__8S7883C14[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S7883C2D1Ev,_ZThn8_N7S7883C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void ABISELECT(_ZThn16_N7S7883C2D0Ev,_ZThn8_N7S7883C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C7__A1__7S7883C2__8S7883C14[] = {
  ABISELECT(32,20),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void _ZN7S7883C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
extern void _ZN7S7883C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C14[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C6__8S7883C14[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C6__8S7883C14[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C6__8S7883C14[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev)();
extern void _ZN8S7883C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev)();
extern void _ZN8S7883C17D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C17__8S7883C14[] = {
  0,
  ABISELECT(-8,-4),
  ABISELECT(-64,-36),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C17__8S7883C14[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S7883C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C17__8S7883C14[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7883C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void _ZN7S7883C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void _ZN7S7883C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C5__A1__8S7883C14[] = {
  ABISELECT(-8,-4),
  ABISELECT(-64,-36),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C5__A1__8S7883C14[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C5__A1__8S7883C14[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void _ZN8S7883C18D1Ev();
extern void _ZN8S7883C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7883C18__8S7883C14[] = {
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C18[0]),
  (VTBL_ENTRY)&_ZN8S7883C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7883C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev)();
extern void _ZN8S7883C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev)();
extern void _ZN8S7883C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C10__8S7883C14[] = {
  ABISELECT(-24,-12),
  ABISELECT(-80,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void _ZN7S7883C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
extern void _ZN7S7883C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C68S7883C10__A1__8S7883C14[] = {
  ABISELECT(-24,-12),
  ABISELECT(-80,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C68S7883C10__A3__8S7883C14[] = {
  ABISELECT(-24,-12),
  ABISELECT(-80,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C68S7883C10__A3__8S7883C14[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C68S7883C10__A1__8S7883C14[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C10__8S7883C14[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S7883C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev)();
extern void _ZN8S7883C20D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev)();
extern void _ZN8S7883C20D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C20__8S7883C14[] = {
  ABISELECT(-144,-88),
  ABISELECT(-40,-24),
  ABISELECT(-96,-56),
  ABISELECT(-56,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev)();
extern void _ZN8S7883C21D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev)();
extern void _ZN8S7883C21D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C218S7883C20__8S7883C14[] = {
  ABISELECT(-144,-88),
  ABISELECT(-40,-24),
  ABISELECT(-96,-56),
  ABISELECT(-56,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void _ZN7S7883C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void _ZN7S7883C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C28S7883C218S7883C20__A1__8S7883C14[] = {
  ABISELECT(-144,-88),
  ABISELECT(-40,-24),
  ABISELECT(-96,-56),
  ABISELECT(-56,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void _ZN7S7883C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void _ZN7S7883C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C57S7883C28S7883C218S7883C20__A2__8S7883C14[] = {
  ABISELECT(-40,-24),
  ABISELECT(-96,-56),
  ABISELECT(-56,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C57S7883C28S7883C218S7883C20__A2__8S7883C14[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(56,36),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C57S7883C28S7883C218S7883C20__A2__8S7883C14[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C28S7883C218S7883C20__A4__8S7883C14[] = {
  ABISELECT(-56,-32),
  ABISELECT(-112,-64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C28S7883C218S7883C20__A4__8S7883C14[] = {
  ABISELECT(112,64),
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C28S7883C218S7883C20__A1__8S7883C14[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C28S7883C218S7883C20__A1__8S7883C14[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(56,36),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S7883C2D1Ev,_ZThn8_N7S7883C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void ABISELECT(_ZThn16_N7S7883C2D0Ev,_ZThn8_N7S7883C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C7__A1__7S7883C28S7883C218S7883C20__A1__8S7883C14[] = {
  ABISELECT(-56,-32),
  ABISELECT(-112,-64),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C218S7883C20__8S7883C14[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S7883C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C218S7883C20__8S7883C14[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(56,36),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI8S7883C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev)();
extern void ABISELECT(_ZThn16_N8S7883C21D1Ev,_ZThn8_N8S7883C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev)();
extern void ABISELECT(_ZThn16_N8S7883C21D0Ev,_ZThn8_N8S7883C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C2__A1__8S7883C218S7883C20__8S7883C14[] = {
  ABISELECT(-56,-32),
  ABISELECT(-112,-64),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7883C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C20__8S7883C14[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S7883C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C20__8S7883C14[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(56,36),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI8S7883C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev)();
extern void ABISELECT(_ZThn16_N8S7883C20D1Ev,_ZThn8_N8S7883C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev)();
extern void ABISELECT(_ZThn16_N8S7883C20D0Ev,_ZThn8_N8S7883C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C28S7883C21__A1__8S7883C20__8S7883C14[] = {
  ABISELECT(-56,-32),
  ABISELECT(-112,-64),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7883C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev)();
extern void _ZN8S7883C22D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev)();
extern void _ZN8S7883C22D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C22__8S7883C14[] = {
  ABISELECT(-184,-112),
  ABISELECT(-152,-92),
  ABISELECT(-96,-60),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(24,16),
  ABISELECT(-80,-48),
  ABISELECT(-136,-80),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev)();
extern void _ZN8S7883C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev)();
extern void _ZN8S7883C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C108S7883C22__A1__8S7883C14[] = {
  ABISELECT(-80,-48),
  ABISELECT(-136,-80),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void _ZN7S7883C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
extern void _ZN7S7883C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C68S7883C108S7883C22__A2__8S7883C14[] = {
  ABISELECT(-80,-48),
  ABISELECT(-136,-80),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C68S7883C108S7883C22__A5__8S7883C14[] = {
  ABISELECT(-80,-48),
  ABISELECT(-136,-80),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C68S7883C108S7883C22__A5__8S7883C14[] = {
  ABISELECT(136,80),
  ABISELECT(136,80),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C68S7883C108S7883C22__A2__8S7883C14[] = {
  ABISELECT(136,80),
  ABISELECT(136,80),
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C108S7883C22__A1__8S7883C14[] = {
  ABISELECT(136,80),
  ABISELECT(136,80),
  (VTBL_ENTRY)&(_ZTI8S7883C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C22__8S7883C14[] = {
  ABISELECT(136,80),
  ABISELECT(136,80),
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev)();
extern void ABISELECT(_ZThn24_N8S7883C22D1Ev,_ZThn16_N8S7883C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev)();
extern void ABISELECT(_ZThn24_N8S7883C22D0Ev,_ZThn16_N8S7883C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C16__8S7883C22__8S7883C14[] = {
  ABISELECT(-208,-128),
  ABISELECT(-176,-108),
  ABISELECT(-120,-76),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-104,-64),
  ABISELECT(-160,-96),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7883C17__8S7883C22__8S7883C14[] = {
  0,
  ABISELECT(-8,-4),
  ABISELECT(-64,-36),
  ABISELECT(-24,-16),
  ABISELECT(72,44),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__A1__8S7883C22__8S7883C14[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(96,60),
  ABISELECT(96,60),
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7883C22D1Ev,_ZTv0_n16_N8S7883C22D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7883C22D0Ev,_ZTv0_n16_N8S7883C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7883C18__8S7883C22__8S7883C14[] = {
  ABISELECT(152,92),
  ABISELECT(72,44),
  ABISELECT(152,92),
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C22D1Ev,_ZTv0_n16_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C22D0Ev,_ZTv0_n16_N8S7883C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void _ZN8S7883C16D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
extern void _ZN8S7883C16D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C16__A1__8S7883C14[] = {
  ABISELECT(-208,-128),
  ABISELECT(-176,-108),
  ABISELECT(-120,-76),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-104,-64),
  ABISELECT(-160,-96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C78S7883C16__A6__8S7883C14[] = {
  ABISELECT(-104,-64),
  ABISELECT(-160,-96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C78S7883C16__A6__8S7883C14[] = {
  ABISELECT(160,96),
  ABISELECT(160,96),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7883C17__8S7883C16__A1__8S7883C14[] = {
  0,
  ABISELECT(-8,-4),
  ABISELECT(-64,-36),
  ABISELECT(-24,-16),
  ABISELECT(96,60),
  ABISELECT(96,60),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C16__A1__8S7883C14[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(120,76),
  ABISELECT(120,76),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C16__A1__8S7883C14[] = {
  ABISELECT(160,96),
  ABISELECT(160,96),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7883C16D1Ev,_ZTv0_n16_N8S7883C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7883C16D0Ev,_ZTv0_n16_N8S7883C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7883C18__8S7883C16__A1__8S7883C14[] = {
  ABISELECT(176,108),
  ABISELECT(72,44),
  ABISELECT(176,108),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C16D1Ev,_ZTv0_n16_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C16D0Ev,_ZTv0_n16_N8S7883C16D0Ev),
};
static  VTT_ENTRY vtt_S7883C14[] = {
  {&(_ZTV8S7883C14[15]),  15,135},
  {&(_tg__ZTV8S7883C16__A__8S7883C14[10]),  10,12},
  {&(_tg__ZTV7S7883C78S7883C16__A2__8S7883C14[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C78S7883C16__A2__8S7883C14[3]),  3,5},
  {&(_tg__ZTV8S7883C17__8S7883C16__A__8S7883C14[7]),  7,9},
  {&(_tg__ZTV8S7883C17__8S7883C16__A__8S7883C14[7]),  7,9},
  {&(_tg__ZTV7S7883C6__8S7883C16__A__8S7883C14[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S7883C16__A__8S7883C14[3]),  3,5},
  {&(_tg__ZTV8S7883C18__8S7883C16__A__8S7883C14[4]),  4,6},
  {&(_tg__ZTV8S7883C19__8S7883C14[14]),  14,16},
  {&(_tg__ZTV10S7883C3_nt__8S7883C19__8S7883C14[3]),  3,5},
  {&(_tg__ZTV8S7883C10__8S7883C19__8S7883C14[5]),  5,7},
  {&(_tg__ZTV8S7883C20__8S7883C19__8S7883C14[7]),  7,9},
  {&(_tg__ZTV7S7883C6__A1__8S7883C19__8S7883C14[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C28S7883C218S7883C20__A2__8S7883C19__8S7883C14[5]),  5,7},
  {&(_tg__ZTV8S7883C22__8S7883C19__8S7883C14[11]),  11,13},
  {&(_tg__ZTV8S7883C16__8S7883C19__8S7883C14[10]),  10,12},
  {&(_tg__ZTV8S7883C17__8S7883C19__8S7883C14[7]),  7,9},
  {&(_tg__ZTV8S7883C17__8S7883C19__8S7883C14[7]),  7,9},
  {&(_tg__ZTV8S7883C19__8S7883C14[14]),  14,16},
  {&(_ZTV8S7883C14[53]),  53,135},
  {&(_ZTV8S7883C14[62]),  62,135},
  {&(_ZTV8S7883C14[53]),  53,135},
  {&(_ZTV8S7883C14[76]),  76,135},
  {&(_ZTV8S7883C14[69]),  69,135},
  {&(_ZTV8S7883C14[27]),  27,135},
  {&(_ZTV8S7883C14[85]),  85,135},
  {&(_ZTV8S7883C14[85]),  85,135},
  {&(_ZTV8S7883C14[43]),  43,135},
  {&(_ZTV8S7883C14[43]),  43,135},
  {&(_ZTV8S7883C14[92]),  92,135},
  {&(_ZTV8S7883C14[101]),  101,135},
  {&(_ZTV8S7883C14[108]),  108,135},
  {&(_ZTV8S7883C14[121]),  121,135},
  {&(_ZTV8S7883C14[133]),  133,135},
  {&(_tg__ZTV8S7883C15__8S7883C14[8]),  8,10},
  {&(_tg__ZTV7S7883C2__8S7883C15__8S7883C14[7]),  7,9},
  {&(_tg__ZTV8S7883C15__8S7883C14[8]),  8,10},
  {&(_tg__ZTV7S7883C6__8S7883C15__8S7883C14[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C2__A1__8S7883C15__8S7883C14[5]),  5,7},
  {&(_tg__ZTV7S7883C2__8S7883C14[7]),  7,9},
  {&(_tg__ZTV7S7883C57S7883C2__8S7883C14[6]),  6,8},
  {&(_tg__ZTV7S7883C6__7S7883C57S7883C2__8S7883C14[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C57S7883C2__8S7883C14[3]),  3,5},
  {&(_tg__ZTV7S7883C77S7883C2__A1__8S7883C14[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C2__A1__8S7883C14[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C2__8S7883C14[3]),  3,5},
  {&(_tg__ZTV7S7883C6__7S7883C2__8S7883C14[5]),  5,7},
  {&(_tg__ZTV7S7883C7__A1__7S7883C2__8S7883C14[5]),  5,7},
  {&(_tg__ZTV7S7883C6__8S7883C14[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C6__8S7883C14[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C6__8S7883C14[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C6__8S7883C14[3]),  3,5},
  {&(_tg__ZTV8S7883C17__8S7883C14[7]),  7,9},
  {&(_tg__ZTV8S7883C17__8S7883C14[7]),  7,9},
  {&(_tg__ZTV7S7883C6__8S7883C17__8S7883C14[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S7883C17__8S7883C14[3]),  3,5},
  {&(_tg__ZTV7S7883C5__A1__8S7883C14[6]),  6,8},
  {&(_tg__ZTV7S7883C6__7S7883C5__A1__8S7883C14[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C5__A1__8S7883C14[3]),  3,5},
  {&(_tg__ZTV8S7883C18__8S7883C14[3]),  3,5},
  {&(_tg__ZTV8S7883C10__8S7883C14[5]),  5,7},
  {&(_tg__ZTV7S7883C68S7883C10__A1__8S7883C14[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C68S7883C10__A3__8S7883C14[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C68S7883C10__A3__8S7883C14[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C68S7883C10__A1__8S7883C14[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S7883C10__8S7883C14[3]),  3,5},
  {&(_tg__ZTV8S7883C20__8S7883C14[7]),  7,9},
  {&(_tg__ZTV8S7883C218S7883C20__8S7883C14[7]),  7,9},
  {&(_tg__ZTV7S7883C28S7883C218S7883C20__A1__8S7883C14[7]),  7,9},
  {&(_tg__ZTV7S7883C57S7883C28S7883C218S7883C20__A2__8S7883C14[6]),  6,8},
  {&(_tg__ZTV7S7883C6__7S7883C57S7883C28S7883C218S7883C20__A2__8S7883C14[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C57S7883C28S7883C218S7883C20__A2__8S7883C14[3]),  3,5},
  {&(_tg__ZTV7S7883C77S7883C28S7883C218S7883C20__A4__8S7883C14[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C28S7883C218S7883C20__A4__8S7883C14[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C28S7883C218S7883C20__A1__8S7883C14[3]),  3,5},
  {&(_tg__ZTV7S7883C6__7S7883C28S7883C218S7883C20__A1__8S7883C14[5]),  5,7},
  {&(_tg__ZTV7S7883C7__A1__7S7883C28S7883C218S7883C20__A1__8S7883C14[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S7883C218S7883C20__8S7883C14[3]),  3,5},
  {&(_tg__ZTV7S7883C6__8S7883C218S7883C20__8S7883C14[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C2__A1__8S7883C218S7883C20__8S7883C14[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S7883C20__8S7883C14[3]),  3,5},
  {&(_tg__ZTV7S7883C6__8S7883C20__8S7883C14[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C28S7883C21__A1__8S7883C20__8S7883C14[5]),  5,7},
  {&(_tg__ZTV8S7883C22__8S7883C14[11]),  11,13},
  {&(_tg__ZTV8S7883C108S7883C22__A1__8S7883C14[5]),  5,7},
  {&(_tg__ZTV7S7883C68S7883C108S7883C22__A2__8S7883C14[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C68S7883C108S7883C22__A5__8S7883C14[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C68S7883C108S7883C22__A5__8S7883C14[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C68S7883C108S7883C22__A2__8S7883C14[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S7883C108S7883C22__A1__8S7883C14[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S7883C22__8S7883C14[3]),  3,5},
  {&(_tg__ZTV8S7883C16__8S7883C22__8S7883C14[10]),  10,12},
  {&(_tg__ZTV8S7883C17__8S7883C22__8S7883C14[7]),  7,9},
  {&(_tg__ZTV8S7883C17__8S7883C22__8S7883C14[7]),  7,9},
  {&(_tg__ZTV7S7883C6__A1__8S7883C22__8S7883C14[5]),  5,7},
  {&(_tg__ZTV8S7883C18__8S7883C22__8S7883C14[4]),  4,6},
  {&(_tg__ZTV8S7883C16__A1__8S7883C14[10]),  10,12},
  {&(_tg__ZTV7S7883C78S7883C16__A6__8S7883C14[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C78S7883C16__A6__8S7883C14[3]),  3,5},
  {&(_tg__ZTV8S7883C17__8S7883C16__A1__8S7883C14[7]),  7,9},
  {&(_tg__ZTV8S7883C17__8S7883C16__A1__8S7883C14[7]),  7,9},
  {&(_tg__ZTV7S7883C6__8S7883C16__A1__8S7883C14[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S7883C16__A1__8S7883C14[3]),  3,5},
  {&(_tg__ZTV8S7883C18__8S7883C16__A1__8S7883C14[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S7883C14[];
extern  VTBL_ENTRY _ZTV8S7883C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C14[];
static VTBL_ENTRY alt_thunk_names44[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C22D0Ev,_ZThn16_N8S7883C22D0Ev),
  (VTBL_ENTRY)_ZN8S7883C22D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C22D1Ev,_ZThn16_N8S7883C22D1Ev),
  (VTBL_ENTRY)_ZN8S7883C22D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C21D0Ev,_ZThn8_N8S7883C21D0Ev),
  (VTBL_ENTRY)_ZN8S7883C21D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C21D1Ev,_ZThn8_N8S7883C21D1Ev),
  (VTBL_ENTRY)_ZN8S7883C21D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C20D0Ev,_ZThn8_N8S7883C20D0Ev),
  (VTBL_ENTRY)_ZN8S7883C20D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C20D1Ev,_ZThn8_N8S7883C20D1Ev),
  (VTBL_ENTRY)_ZN8S7883C20D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev), // 
  (VTBL_ENTRY)_ZN8S7883C10D0Ev,
  (VTBL_ENTRY)_ZN8S7883C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev), // 
  (VTBL_ENTRY)_ZN8S7883C10D1Ev,
  (VTBL_ENTRY)_ZN8S7883C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev), // 
  (VTBL_ENTRY)_ZN8S7883C17D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev), // 
  (VTBL_ENTRY)_ZN8S7883C17D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C6D0Ev,
  (VTBL_ENTRY)_ZN7S7883C6D0Ev,
  (VTBL_ENTRY)_ZN7S7883C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C6D1Ev,
  (VTBL_ENTRY)_ZN7S7883C6D1Ev,
  (VTBL_ENTRY)_ZN7S7883C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C5D0Ev,
  (VTBL_ENTRY)_ZN7S7883C5D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7883C5D0Ev,_ZThn16_N7S7883C5D0Ev),
  (VTBL_ENTRY)_ZN7S7883C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C5D1Ev,
  (VTBL_ENTRY)_ZN7S7883C5D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7883C5D1Ev,_ZThn16_N7S7883C5D1Ev),
  (VTBL_ENTRY)_ZN7S7883C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C2D0Ev,_ZThn8_N7S7883C2D0Ev),
  (VTBL_ENTRY)_ZN7S7883C2D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C2D0Ev,_ZThn8_N7S7883C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7883C2D0Ev,_ZThn16_N7S7883C2D0Ev),
  (VTBL_ENTRY)_ZN7S7883C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C2D1Ev,_ZThn8_N7S7883C2D1Ev),
  (VTBL_ENTRY)_ZN7S7883C2D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C2D1Ev,_ZThn8_N7S7883C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7883C2D1Ev,_ZThn16_N7S7883C2D1Ev),
  (VTBL_ENTRY)_ZN7S7883C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C15D0Ev,_ZThn12_N8S7883C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7883C15D0Ev,_ZThn20_N8S7883C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7883C15D0Ev,_ZThn4_N8S7883C15D0Ev),
  (VTBL_ENTRY)_ZN8S7883C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C15D1Ev,_ZThn12_N8S7883C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7883C15D1Ev,_ZThn20_N8S7883C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7883C15D1Ev,_ZThn4_N8S7883C15D1Ev),
  (VTBL_ENTRY)_ZN8S7883C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7883C19D0Ev,_ZThn48_N8S7883C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7883C19D0Ev,_ZThn108_N8S7883C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7883C19D0Ev,_ZThn92_N8S7883C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7883C19D0Ev,_ZThn76_N8S7883C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7883C19D0Ev,_ZThn32_N8S7883C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7883C19D0Ev,_ZThn68_N8S7883C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7883C19D0Ev,_ZThn56_N8S7883C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C19D0Ev,_ZThn12_N8S7883C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7883C19D1Ev,_ZThn48_N8S7883C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7883C19D1Ev,_ZThn108_N8S7883C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7883C19D1Ev,_ZThn92_N8S7883C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7883C19D1Ev,_ZThn76_N8S7883C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7883C19D1Ev,_ZThn32_N8S7883C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7883C19D1Ev,_ZThn68_N8S7883C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7883C19D1Ev,_ZThn56_N8S7883C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C19D1Ev,_ZThn12_N8S7883C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C19D0Ev,_ZTv0_n16_N8S7883C19D0Ev), // 
  (VTBL_ENTRY)_ZN8S7883C19D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C19D1Ev,_ZTv0_n16_N8S7883C19D1Ev), // 
  (VTBL_ENTRY)_ZN8S7883C19D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C16D0Ev,_ZTv0_n16_N8S7883C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C16D0Ev,_ZThn16_N8S7883C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C16D1Ev,_ZTv0_n16_N8S7883C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C16D1Ev,_ZThn16_N8S7883C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7883C7D0Ev,_ZThn28_N7S7883C7D0Ev),
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7883C7D1Ev,_ZThn28_N7S7883C7D1Ev),
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev), // 
  (VTBL_ENTRY)_ZN8S7883C16D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7883C16D0Ev,_ZThn28_N8S7883C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7883C16D0Ev,_ZThn48_N8S7883C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7883C16D0Ev,_ZThn64_N8S7883C16D0Ev),
  (VTBL_ENTRY)_ZN8S7883C16D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev), // 
  (VTBL_ENTRY)_ZN8S7883C16D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7883C16D1Ev,_ZThn28_N8S7883C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7883C16D1Ev,_ZThn48_N8S7883C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7883C16D1Ev,_ZThn64_N8S7883C16D1Ev),
  (VTBL_ENTRY)_ZN8S7883C16D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C14D0Ev,_ZTv0_n16_N8S7883C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7883C14D0Ev,_ZThn20_N8S7883C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C14D1Ev,_ZTv0_n16_N8S7883C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7883C14D1Ev,_ZThn20_N8S7883C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7883C14D0Ev,_ZThn128_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7883C14D0Ev,_ZThn112_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7883C14D0Ev,_ZThn96_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7883C14D0Ev,_ZThn88_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7883C14D0Ev,_ZThn76_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7883C14D0Ev,_ZThn68_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7883C14D0Ev,_ZThn52_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7883C14D0Ev,_ZThn44_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7883C14D0Ev,_ZThn36_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7883C14D0Ev,_ZThn32_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7883C14D0Ev,_ZThn4_N8S7883C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7883C14D1Ev,_ZThn128_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7883C14D1Ev,_ZThn112_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7883C14D1Ev,_ZThn96_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7883C14D1Ev,_ZThn88_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7883C14D1Ev,_ZThn76_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7883C14D1Ev,_ZThn68_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7883C14D1Ev,_ZThn52_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7883C14D1Ev,_ZThn44_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7883C14D1Ev,_ZThn36_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7883C14D1Ev,_ZThn32_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7883C14D1Ev,_ZThn4_N8S7883C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7883C14 = {  "S7883C14", // class name
  bases_S7883C14, 43,
  &(vtc_S7883C14[0]), // expected_vtbl_contents
  &(vtt_S7883C14[0]), // expected_vtt_contents
  ABISELECT(232,144), // object size
  NSPAIRA(_ZTI8S7883C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7883C14),135, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7883C14),105, //virtual table table var
  28, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names44,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7883C13  : virtual S7883C5 , virtual S7883C14 , virtual S4677C27 {
  ~S7883C13(); // tgen
  S7883C13(); // tgen
};
//SIG(-1 S7883C13) C1{ VBC2{ VBC3{ BC4{ VBC5{ vd m} VBC6{ m Fi} BC7{ m} Fi} Fi} BC7} VBC8{ BC5 VBC9{ VBC10{ VBC5 BC6 BC2 VBC7 BC4 vd} vd} BC11{ VBC6 VBC12{ VBC2 FC6} VBC13{ VBC6 vd} VBC7 BC4 vd Fi Fp} BC14{ VBC5 VBC15{ BC3} VBC16{ BC17{ BC10 BC6 vd Fi} vd} VBC18{ BC15 VBC11 vd Fi} vd Fi} vd Fi} VBC19{ m}}


S7883C13 ::~S7883C13(){ note_dtor("S7883C13", this);} // tgen
S7883C13 ::S7883C13(){ note_ctor("S7883C13", this);} // tgen

static void Test_S7883C13()
{
  extern Class_Descriptor cd_S7883C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,37)];
    init_test(&cd_S7883C13, buf);
    S7883C13 *dp, &lv = *(dp=new (buf) S7883C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,144), "sizeof(S7883C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7883C13)");
    /*is_ambiguous_... S7883C13::S7883C6 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C6*), ABISELECT(112,68), "S7883C13");
    /*is_ambiguous_... S7883C13::S7883C2 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C2*), ABISELECT(112,68), "S7883C13");
    /*is_ambiguous_... S7883C13::S7883C2 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C2*), ABISELECT(112,68), "S7883C13");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C16*)(S7883C14*), ABISELECT(112,68), "S7883C13");
    check_base_class_offset(lv, (S7883C3_nt*)(S7883C19*)(S7883C14*), ABISELECT(112,68), "S7883C13");
    /*is_ambiguous_... S7883C13::S7883C10 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C6*)(S7883C10*), ABISELECT(112,68), "S7883C13");
    check_base_class_offset(lv, (S7883C3_nt*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(112,68), "S7883C13");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(112,68), "S7883C13");
    check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C6*)(S7883C10*)(S7883C22*), ABISELECT(112,68), "S7883C13");
    /*is_ambiguous_... S7883C13::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C16*), ABISELECT(112,68), "S7883C13");
    /*is_ambiguous_... S7883C13::S7883C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C6*), ABISELECT(24,16), "S7883C13");
    /*is_ambiguous_... S7883C13::S7883C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C2*), ABISELECT(24,16), "S7883C13");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C16*)(S7883C14*), ABISELECT(24,16), "S7883C13");
    check_base_class_offset(lv, (S3216C8_nt*)(S7883C18*), ABISELECT(24,16), "S7883C13");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C16*)(S7883C14*), ABISELECT(24,16), "S7883C13");
    /*is_ambiguous_... S7883C13::S7883C10 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C6*)(S7883C10*), ABISELECT(24,16), "S7883C13");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(24,16), "S7883C13");
    check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C6*)(S7883C10*)(S7883C22*), ABISELECT(24,16), "S7883C13");
    /*is_ambiguous_... S7883C13::S7883C16 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C16*), ABISELECT(24,16), "S7883C13");
    /*is_ambiguous_... S7883C13::S7883C16 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C16*), ABISELECT(24,16), "S7883C13");
    /*is_ambiguous_... S7883C13::S7883C6 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C6*), ABISELECT(8,4), "S7883C13");
    /*is_ambiguous_... S7883C13::S7883C6 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C6*), ABISELECT(8,4), "S7883C13");
    /*is_ambiguous_... S7883C13::S7883C5 */ AMB_check_base_class_offset(lv, (S7883C6*)(S7883C5*), ABISELECT(8,4), "S7883C13");
    /*is_ambiguous_... S7883C13::S7883C2 */ AMB_check_base_class_offset(lv, (S7883C6*)(S7883C5*)(S7883C2*), ABISELECT(8,4), "S7883C13");
    check_base_class_offset(lv, (S7883C6*)(S7883C5*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(8,4), "S7883C13");
    /*is_ambiguous_... S7883C13::S7883C5 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C5*), ABISELECT(112,68), "S7883C13");
    /*is_ambiguous_... S7883C13::S7883C5 */ AMB_check_base_class_offset(lv, (S7883C5*), ABISELECT(112,68), "S7883C13");
    check_base_class_offset(lv, (S7883C5*)(S7883C17*), ABISELECT(112,68), "S7883C13");
    /*is_ambiguous_... S7883C14::S7883C3_nt */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C14*), ABISELECT(32,20), "S7883C13");
    /*is_ambiguous_... S7883C13::S7883C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C2*), ABISELECT(88,56), "S7883C13");
    /*is_ambiguous_... S7883C13::S7883C2 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C5*)(S7883C2*), ABISELECT(80,52), "S7883C13");
    /*is_ambiguous_... S7883C13::S7883C2 */ AMB_check_base_class_offset(lv, (S7883C5*)(S7883C2*), ABISELECT(80,52), "S7883C13");
    /*is_ambiguous_... S7883C13::S7883C2 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C2*), 0, "S7883C13");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C16*)(S7883C14*), 0, "S7883C13");
    /*is_ambiguous_... S7883C2::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C2*)(S7883C21*)(S7883C20*), 0, "S7883C13");
    /*is_ambiguous_... S7883C13::S7883C16 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C16*), 0, "S7883C13");
    /*is_ambiguous_... S7883C13::S7883C2 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C2*), ABISELECT(96,60), "S7883C13");
    /*is_ambiguous_... S7883C13::S7883C2 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C2*), ABISELECT(96,60), "S7883C13");
    check_base_class_offset(lv, (S7883C2*)(S7883C15*), ABISELECT(80,52), "S7883C13");
    check_base_class_offset(lv, (S7883C15*)(S7883C14*), 0, "S7883C13");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C17*)(S7883C16*)(S7883C14*), ABISELECT(112,68), "S7883C13");
    /*is_ambiguous_... S7883C13::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C17*)(S7883C16*), ABISELECT(112,68), "S7883C13");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C18*)(S7883C16*)(S7883C14*), ABISELECT(64,40), "S7883C13");
    /*is_ambiguous_... S7883C13::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C18*)(S7883C16*), ABISELECT(64,40), "S7883C13");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C16*)(S7883C14*), ABISELECT(40,24), "S7883C13");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C16*)(S7883C14*), ABISELECT(40,24), "S7883C13");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C16*)(S7883C14*), ABISELECT(40,24), "S7883C13");
    /*is_ambiguous_... S7883C13::S7883C10 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C6*)(S7883C10*), ABISELECT(128,76), "S7883C13");
    /*is_ambiguous_... S7883C13::S7883C10 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C6*)(S7883C10*), ABISELECT(128,76), "S7883C13");
    /*is_ambiguous_... S7883C13::S7883C10 */ AMB_check_base_class_offset(lv, (S7883C6*)(S7883C10*), ABISELECT(128,76), "S7883C13");
    /*is_ambiguous_... S7883C19::S7883C10 */ AMB_check_base_class_offset(lv, (S7883C10*)(S7883C19*)(S7883C14*), ABISELECT(128,76), "S7883C13");
    /*is_ambiguous_... S7883C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(152,92), "S7883C13");
    /*is_ambiguous_... S7883C5::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C5*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(144,88), "S7883C13");
    check_base_class_offset(lv, (S7883C5*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(144,88), "S7883C13");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(160,96), "S7883C13");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(160,96), "S7883C13");
    check_base_class_offset(lv, (S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(144,88), "S7883C13");
    /*is_ambiguous_... S7883C21::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C21*)(S7883C20*), ABISELECT(172,104), "S7883C13");
    check_base_class_offset(lv, (S7883C21*)(S7883C20*), ABISELECT(144,88), "S7883C13");
    check_base_class_offset(lv, (S7883C20*)(S7883C19*)(S7883C14*), ABISELECT(144,88), "S7883C13");
    check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C6*)(S7883C10*)(S7883C22*), ABISELECT(184,112), "S7883C13");
    check_base_class_offset(lv, (S7883C7*)(S7883C6*)(S7883C10*)(S7883C22*), ABISELECT(184,112), "S7883C13");
    check_base_class_offset(lv, (S7883C6*)(S7883C10*)(S7883C22*), ABISELECT(184,112), "S7883C13");
    check_base_class_offset(lv, (S7883C10*)(S7883C22*), ABISELECT(184,112), "S7883C13");
    /*is_ambiguous_... S7883C13::S7883C16 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C16*), ABISELECT(208,128), "S7883C13");
    /*is_ambiguous_... S7883C13::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C16*), ABISELECT(208,128), "S7883C13");
    check_base_class_offset(lv, (S7883C16*)(S7883C22*), ABISELECT(208,128), "S7883C13");
    check_base_class_offset(lv, (S7883C22*)(S7883C19*)(S7883C14*), ABISELECT(184,112), "S7883C13");
    check_base_class_offset(lv, (S7883C19*)(S7883C14*), ABISELECT(64,40), "S7883C13");
    check_base_class_offset(lv, (S7883C14*), ABISELECT(32,20), "S7883C13");
    check_base_class_offset(lv, (S4677C27*), 0, "S7883C13");
    test_class_info(&lv, &cd_S7883C13);
    dp->~S7883C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7883C13(Test_S7883C13, "S7883C13", ABISELECT(232,144));

#else // __cplusplus

extern void _ZN8S7883C13C1Ev();
extern void _ZN8S7883C13D1Ev();
Name_Map name_map_S7883C13[] = {
  NSPAIR(_ZN8S7883C13C1Ev),
  NSPAIR(_ZN8S7883C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C6;
extern VTBL_ENTRY _ZTI7S7883C6[];
extern  VTBL_ENTRY _ZTV7S7883C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C5;
extern VTBL_ENTRY _ZTI7S7883C5[];
extern  VTBL_ENTRY _ZTV7S7883C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C5[];
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C5;
extern VTBL_ENTRY _ZTI7S7883C5[];
extern  VTBL_ENTRY _ZTV7S7883C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C5[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C2;
extern VTBL_ENTRY _ZTI7S7883C2[];
extern  VTBL_ENTRY _ZTV7S7883C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C2[];
extern Class_Descriptor cd_S7883C15;
extern VTBL_ENTRY _ZTI8S7883C15[];
extern  VTBL_ENTRY _ZTV8S7883C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C15[];
extern Class_Descriptor cd_S7883C17;
extern VTBL_ENTRY _ZTI8S7883C17[];
extern  VTBL_ENTRY _ZTV8S7883C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C17[];
extern Class_Descriptor cd_S7883C18;
extern VTBL_ENTRY _ZTI8S7883C18[];
extern  VTBL_ENTRY _ZTV8S7883C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C18[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C16;
extern VTBL_ENTRY _ZTI8S7883C16[];
extern  VTBL_ENTRY _ZTV8S7883C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C16[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C6;
extern VTBL_ENTRY _ZTI7S7883C6[];
extern  VTBL_ENTRY _ZTV7S7883C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C6[];
extern Class_Descriptor cd_S7883C10;
extern VTBL_ENTRY _ZTI8S7883C10[];
extern  VTBL_ENTRY _ZTV8S7883C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C10[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C5;
extern VTBL_ENTRY _ZTI7S7883C5[];
extern  VTBL_ENTRY _ZTV7S7883C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C5[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C2;
extern VTBL_ENTRY _ZTI7S7883C2[];
extern  VTBL_ENTRY _ZTV7S7883C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7883C21;
extern VTBL_ENTRY _ZTI8S7883C21[];
extern  VTBL_ENTRY _ZTV8S7883C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C21[];
extern Class_Descriptor cd_S7883C20;
extern VTBL_ENTRY _ZTI8S7883C20[];
extern  VTBL_ENTRY _ZTV8S7883C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C20[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C6;
extern VTBL_ENTRY _ZTI7S7883C6[];
extern  VTBL_ENTRY _ZTV7S7883C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C6[];
extern Class_Descriptor cd_S7883C10;
extern VTBL_ENTRY _ZTI8S7883C10[];
extern  VTBL_ENTRY _ZTV8S7883C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C10[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C16;
extern VTBL_ENTRY _ZTI8S7883C16[];
extern  VTBL_ENTRY _ZTV8S7883C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C16[];
extern Class_Descriptor cd_S7883C22;
extern VTBL_ENTRY _ZTI8S7883C22[];
extern  VTBL_ENTRY _ZTV8S7883C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C22[];
extern Class_Descriptor cd_S7883C19;
extern VTBL_ENTRY _ZTI8S7883C19[];
extern  VTBL_ENTRY _ZTV8S7883C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C19[];
extern Class_Descriptor cd_S7883C14;
extern VTBL_ENTRY _ZTI8S7883C14[];
extern  VTBL_ENTRY _ZTV8S7883C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C14[];
extern Class_Descriptor cd_S4677C27;
extern VTBL_ENTRY _ZTI8S4677C27[];
static Base_Class bases_S7883C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7883C7,    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
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7883C6,    ABISELECT(8,4), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7883C5,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7883C3_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
    25, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(88,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7883C5,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4677C37,    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
    13, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(96,60), //bcp->offset
    82, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7883C2,    ABISELECT(80,52), //bcp->offset
    73, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7883C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    43, //immediately_derived
  0, 1},
  {&cd_S7883C17,    ABISELECT(112,68), //bcp->offset
    89, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7883C18,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    19, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7883C16,    ABISELECT(40,24), //bcp->offset
    45, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7883C6,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //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
    24, //immediately_derived
  0, 0},
  {&cd_S7883C10,    ABISELECT(128,76), //bcp->offset
    98, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(152,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
    30, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7883C5,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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
    30, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(160,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(160,96), //bcp->offset
    114, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7883C2,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(172,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
    32, //immediately_derived
  0, 0},
  {&cd_S7883C21,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7883C20,    ABISELECT(144,88), //bcp->offset
    105, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(184,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(184,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7883C6,    ABISELECT(184,112), //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
    22, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7883C10,    ABISELECT(184,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(208,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(208,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7883C16,    ABISELECT(208,128), //bcp->offset
    134, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S7883C22,    ABISELECT(184,112), //bcp->offset
    121, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    102, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7883C19,    ABISELECT(64,40), //bcp->offset
    57, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7883C14,    ABISELECT(32,20), //bcp->offset
    27, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S7883C13[];
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void _ZN8S7883C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
extern void _ZN8S7883C13D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn8_N8S7883C13D1Ev,_ZThn4_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn8_N8S7883C13D0Ev,_ZThn4_N8S7883C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7883C13D1Ev,_ZTv0_n64_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn32_N8S7883C13D1Ev,_ZThn20_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7883C13D0Ev,_ZTv0_n64_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn32_N8S7883C13D0Ev,_ZThn20_N8S7883C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn40_N8S7883C13D1Ev,_ZThn24_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn40_N8S7883C13D0Ev,_ZThn24_N8S7883C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7883C13D1Ev,_ZTv0_n16_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn64_N8S7883C13D1Ev,_ZThn40_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7883C13D0Ev,_ZTv0_n16_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn64_N8S7883C13D0Ev,_ZThn40_N8S7883C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn80_N8S7883C13D1Ev,_ZThn52_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn80_N8S7883C13D0Ev,_ZThn52_N8S7883C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn96_N8S7883C13D1Ev,_ZThn60_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn96_N8S7883C13D0Ev,_ZThn60_N8S7883C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn112_N8S7883C13D1Ev,_ZThn68_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn112_N8S7883C13D0Ev,_ZThn68_N8S7883C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn128_N8S7883C13D1Ev,_ZThn76_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn128_N8S7883C13D0Ev,_ZThn76_N8S7883C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn144_N8S7883C13D1Ev,_ZThn88_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn144_N8S7883C13D0Ev,_ZThn88_N8S7883C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn160_N8S7883C13D1Ev,_ZThn96_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn160_N8S7883C13D0Ev,_ZThn96_N8S7883C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn184_N8S7883C13D1Ev,_ZThn112_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn184_N8S7883C13D0Ev,_ZThn112_N8S7883C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn208_N8S7883C13D1Ev,_ZThn128_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn208_N8S7883C13D0Ev,_ZThn128_N8S7883C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7883C13[] = {
  0,
  ABISELECT(208,128),
  ABISELECT(184,112),
  ABISELECT(144,88),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(112,68),
  0,
  ABISELECT(32,20),
  ABISELECT(112,68),
  0,
  ABISELECT(24,16),
  ABISELECT(8,4),
  ABISELECT(112,68),
  ABISELECT(80,52),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(176,108),
  ABISELECT(152,92),
  ABISELECT(112,68),
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(-32,-20),
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(80,48),
  ABISELECT(48,32),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7883C13D1Ev,_ZTv0_n64_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7883C13D0Ev,_ZTv0_n64_N8S7883C13D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(24,16),
  ABISELECT(-32,-20),
  ABISELECT(72,44),
  ABISELECT(72,44),
  ABISELECT(-16,-8),
  ABISELECT(72,44),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
  0,
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(144,88),
  ABISELECT(120,72),
  ABISELECT(-64,-40),
  ABISELECT(-56,-36),
  ABISELECT(80,48),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(-64,-40),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C13D1Ev,_ZTv0_n16_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C13D0Ev,_ZTv0_n16_N8S7883C13D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(-56,-36),
  ABISELECT(32,16),
  ABISELECT(-72,-48),
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
  ABISELECT(-72,-44),
  ABISELECT(16,8),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
  0,
  ABISELECT(-88,-52),
  0,
  ABISELECT(-104,-64),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
  ABISELECT(-104,-60),
  ABISELECT(-16,-8),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
  ABISELECT(-144,-88),
  ABISELECT(-120,-72),
  ABISELECT(-32,-20),
  ABISELECT(-136,-84),
  ABISELECT(-144,-88),
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
  ABISELECT(-136,-80),
  ABISELECT(-48,-28),
  ABISELECT(-160,-96),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
  ABISELECT(-184,-112),
  ABISELECT(-120,-72),
  ABISELECT(-176,-108),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(24,16),
  ABISELECT(-160,-96),
  ABISELECT(-72,-44),
  ABISELECT(-184,-112),
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
  ABISELECT(-208,-128),
  ABISELECT(-144,-88),
  ABISELECT(-200,-124),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-184,-112),
  ABISELECT(-96,-60),
  ABISELECT(-208,-128),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
};
extern VTBL_ENTRY _ZTV8S7883C13[];
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void _ZN7S7883C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void _ZN7S7883C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C5__8S7883C13[] = {
  ABISELECT(-88,-52),
  0,
  ABISELECT(-104,-64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C5__8S7883C13[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(104,64),
  ABISELECT(104,64),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void _ZN7S7883C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
extern void _ZN7S7883C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C13[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C6__8S7883C13[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZThn104_N7S7883C7D1Ev,_ZThn64_N7S7883C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void ABISELECT(_ZThn104_N7S7883C7D0Ev,_ZThn64_N7S7883C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C6__8S7883C13[] = {
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void ABISELECT(_ZThn104_N7S7883C6D1Ev,_ZThn64_N7S7883C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
extern void ABISELECT(_ZThn104_N7S7883C6D0Ev,_ZThn64_N7S7883C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C6__8S7883C13[] = {
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void _ZN8S7883C14D1Ev();
extern void _ZN8S7883C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7883C14__8S7883C13[] = {
  ABISELECT(176,108),
  ABISELECT(152,92),
  ABISELECT(112,68),
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(-32,-20),
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(80,48),
  ABISELECT(48,32),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&_ZN8S7883C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7883C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void _ZN8S7883C16D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
extern void _ZN8S7883C16D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C168S7883C14__8S7883C13[] = {
  ABISELECT(-40,-24),
  ABISELECT(24,16),
  ABISELECT(-32,-20),
  ABISELECT(72,44),
  ABISELECT(72,44),
  ABISELECT(-16,-8),
  ABISELECT(72,44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C78S7883C168S7883C14__A2__8S7883C13[] = {
  ABISELECT(-16,-8),
  ABISELECT(72,44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZThn72_N7S7883C7D1Ev,_ZThn44_N7S7883C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void ABISELECT(_ZThn72_N7S7883C7D0Ev,_ZThn44_N7S7883C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C78S7883C168S7883C14__A2__8S7883C13[] = {
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void ABISELECT(_ZThn72_N8S7883C16D1Ev,_ZThn44_N8S7883C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
extern void ABISELECT(_ZThn72_N8S7883C16D0Ev,_ZThn44_N8S7883C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C17__8S7883C168S7883C14__8S7883C13[] = {
  0,
  ABISELECT(-88,-52),
  0,
  ABISELECT(-104,-64),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C168S7883C14__8S7883C13[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7883C16D1Ev,_ZTv0_n16_N8S7883C16D1Ev)();
extern void ABISELECT(_ZThn24_N8S7883C16D1Ev,_ZThn16_N8S7883C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7883C16D0Ev,_ZTv0_n16_N8S7883C16D0Ev)();
extern void ABISELECT(_ZThn24_N8S7883C16D0Ev,_ZThn16_N8S7883C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C18__8S7883C168S7883C14__8S7883C13[] = {
  ABISELECT(-24,-16),
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C16D1Ev,_ZTv0_n16_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C16D0Ev,_ZTv0_n16_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7883C19D1Ev,_ZTv0_n16_N8S7883C19D1Ev)();
extern void _ZN8S7883C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7883C19D0Ev,_ZTv0_n16_N8S7883C19D0Ev)();
extern void _ZN8S7883C19D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C198S7883C14__8S7883C13[] = {
  0,
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(144,88),
  ABISELECT(120,72),
  ABISELECT(-64,-40),
  ABISELECT(-56,-36),
  ABISELECT(80,48),
  ABISELECT(64,36),
  ABISELECT(48,28),
  0,
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C19D1Ev,_ZTv0_n16_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C19D0Ev,_ZTv0_n16_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn48_N8S7883C19D1Ev,_ZThn28_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn48_N8S7883C19D0Ev,_ZThn28_N8S7883C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C17__8S7883C198S7883C14__8S7883C13[] = {
  0,
  ABISELECT(-88,-52),
  0,
  ABISELECT(-104,-64),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn64_N8S7883C19D1Ev,_ZThn36_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn64_N8S7883C19D0Ev,_ZThn36_N8S7883C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C10__8S7883C198S7883C14__8S7883C13[] = {
  ABISELECT(-104,-60),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn80_N8S7883C19D1Ev,_ZThn48_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn80_N8S7883C19D0Ev,_ZThn48_N8S7883C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C20__8S7883C198S7883C14__8S7883C13[] = {
  ABISELECT(-144,-88),
  ABISELECT(-120,-72),
  ABISELECT(-32,-20),
  ABISELECT(-136,-84),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__A1__8S7883C198S7883C14__8S7883C13[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(56,36),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn96_N8S7883C19D1Ev,_ZThn56_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn96_N8S7883C19D0Ev,_ZThn56_N8S7883C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C28S7883C218S7883C20__A2__8S7883C198S7883C14__8S7883C13[] = {
  ABISELECT(-136,-80),
  ABISELECT(-48,-28),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn120_N8S7883C19D1Ev,_ZThn72_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn120_N8S7883C19D0Ev,_ZThn72_N8S7883C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C22__8S7883C198S7883C14__8S7883C13[] = {
  ABISELECT(-184,-112),
  ABISELECT(-120,-72),
  ABISELECT(-176,-108),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(24,16),
  ABISELECT(-160,-96),
  ABISELECT(-72,-44),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn144_N8S7883C19D1Ev,_ZThn88_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn144_N8S7883C19D0Ev,_ZThn88_N8S7883C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C16__8S7883C198S7883C14__8S7883C13[] = {
  ABISELECT(-208,-128),
  ABISELECT(-144,-88),
  ABISELECT(-200,-124),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-184,-112),
  ABISELECT(-96,-60),
  ABISELECT(-144,-88),
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7883C15__8S7883C14__8S7883C13[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(8,4),
  ABISELECT(112,68),
  ABISELECT(80,52),
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S7883C14D1Ev,_ZThn32_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn48_N8S7883C14D0Ev,_ZThn32_N8S7883C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C2__8S7883C14__8S7883C13[] = {
  ABISELECT(-80,-52),
  ABISELECT(-56,-36),
  ABISELECT(32,16),
  ABISELECT(-72,-48),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn80_N8S7883C14D1Ev,_ZThn48_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn80_N8S7883C14D0Ev,_ZThn48_N8S7883C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C17__8S7883C14__8S7883C13[] = {
  0,
  ABISELECT(-88,-52),
  0,
  ABISELECT(-104,-64),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C14__8S7883C13[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S7883C14D1Ev,_ZThn40_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn64_N8S7883C14D0Ev,_ZThn40_N8S7883C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C2__A1__8S7883C14__8S7883C13[] = {
  ABISELECT(-72,-44),
  ABISELECT(16,8),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn8_N8S7883C14D1Ev,_ZThn4_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn8_N8S7883C14D0Ev,_ZThn4_N8S7883C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C16__A__8S7883C14__8S7883C13[] = {
  ABISELECT(-40,-24),
  ABISELECT(24,16),
  ABISELECT(-32,-20),
  ABISELECT(72,44),
  ABISELECT(72,44),
  ABISELECT(-16,-8),
  ABISELECT(72,44),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7883C14D1Ev,_ZTv0_n16_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn32_N8S7883C14D1Ev,_ZThn20_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7883C14D0Ev,_ZTv0_n16_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn32_N8S7883C14D0Ev,_ZThn20_N8S7883C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C19__8S7883C14__8S7883C13[] = {
  0,
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(144,88),
  ABISELECT(120,72),
  ABISELECT(-64,-40),
  ABISELECT(-56,-36),
  ABISELECT(80,48),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(-32,-20),
  ABISELECT(-40,-24),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C14D1Ev,_ZTv0_n16_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C14D0Ev,_ZTv0_n16_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn96_N8S7883C14D1Ev,_ZThn56_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn96_N8S7883C14D0Ev,_ZThn56_N8S7883C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C10__8S7883C14__8S7883C13[] = {
  ABISELECT(-104,-60),
  ABISELECT(-16,-8),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn112_N8S7883C14D1Ev,_ZThn68_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn112_N8S7883C14D0Ev,_ZThn68_N8S7883C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C20__8S7883C14__8S7883C13[] = {
  ABISELECT(-144,-88),
  ABISELECT(-120,-72),
  ABISELECT(-32,-20),
  ABISELECT(-136,-84),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn128_N8S7883C14D1Ev,_ZThn76_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn128_N8S7883C14D0Ev,_ZThn76_N8S7883C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C28S7883C218S7883C20__A4__8S7883C14__8S7883C13[] = {
  ABISELECT(-136,-80),
  ABISELECT(-48,-28),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn152_N8S7883C14D1Ev,_ZThn92_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn152_N8S7883C14D0Ev,_ZThn92_N8S7883C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C22__8S7883C14__8S7883C13[] = {
  ABISELECT(-184,-112),
  ABISELECT(-120,-72),
  ABISELECT(-176,-108),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(24,16),
  ABISELECT(-160,-96),
  ABISELECT(-72,-44),
  ABISELECT(-152,-92),
  ABISELECT(-152,-92),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn176_N8S7883C14D1Ev,_ZThn108_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn176_N8S7883C14D0Ev,_ZThn108_N8S7883C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C16__A1__8S7883C14__8S7883C13[] = {
  ABISELECT(-208,-128),
  ABISELECT(-144,-88),
  ABISELECT(-200,-124),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-184,-112),
  ABISELECT(-96,-60),
  ABISELECT(-176,-108),
  ABISELECT(-176,-108),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev)();
extern void _ZN8S7883C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev)();
extern void _ZN8S7883C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C15__8S7883C13[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(8,4),
  ABISELECT(112,68),
  ABISELECT(80,52),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev)();
extern void ABISELECT(_ZThn80_N8S7883C15D1Ev,_ZThn52_N8S7883C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev)();
extern void ABISELECT(_ZThn80_N8S7883C15D0Ev,_ZThn52_N8S7883C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C2__8S7883C15__8S7883C13[] = {
  ABISELECT(-80,-52),
  ABISELECT(-56,-36),
  ABISELECT(32,16),
  ABISELECT(-72,-48),
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S7883C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev)();
extern void ABISELECT(_ZThn112_N8S7883C15D1Ev,_ZThn68_N8S7883C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev)();
extern void ABISELECT(_ZThn112_N8S7883C15D0Ev,_ZThn68_N8S7883C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C15__8S7883C13[] = {
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S7883C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev)();
extern void ABISELECT(_ZThn8_N8S7883C15D1Ev,_ZThn4_N8S7883C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev)();
extern void ABISELECT(_ZThn8_N8S7883C15D0Ev,_ZThn4_N8S7883C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C15__8S7883C13[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7883C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev)();
extern void ABISELECT(_ZThn96_N8S7883C15D1Ev,_ZThn60_N8S7883C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev)();
extern void ABISELECT(_ZThn96_N8S7883C15D0Ev,_ZThn60_N8S7883C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C2__A1__8S7883C15__8S7883C13[] = {
  ABISELECT(-72,-44),
  ABISELECT(16,8),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S7883C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void _ZN7S7883C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void _ZN7S7883C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C2__8S7883C13[] = {
  ABISELECT(-80,-52),
  ABISELECT(-56,-36),
  ABISELECT(32,16),
  ABISELECT(-72,-48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void _ZN7S7883C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void _ZN7S7883C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C57S7883C2__A1__8S7883C13[] = {
  ABISELECT(-56,-36),
  ABISELECT(32,16),
  ABISELECT(-72,-48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C57S7883C2__A1__8S7883C13[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(72,48),
  ABISELECT(72,48),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7883C5D1Ev,_ZThn16_N7S7883C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7883C5D0Ev,_ZThn16_N7S7883C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C57S7883C2__A1__8S7883C13[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C2__A1__8S7883C13[] = {
  ABISELECT(-72,-44),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S7883C7D1Ev,_ZThn8_N7S7883C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void ABISELECT(_ZThn16_N7S7883C7D0Ev,_ZThn8_N7S7883C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C2__A1__8S7883C13[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZThn32_N7S7883C2D1Ev,_ZThn16_N7S7883C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void ABISELECT(_ZThn32_N7S7883C2D0Ev,_ZThn16_N7S7883C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C2__8S7883C13[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C2__8S7883C13[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(72,48),
  ABISELECT(72,48),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S7883C2D1Ev,_ZThn8_N7S7883C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void ABISELECT(_ZThn16_N7S7883C2D0Ev,_ZThn8_N7S7883C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C7__A1__7S7883C2__8S7883C13[] = {
  ABISELECT(-72,-44),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev)();
extern void _ZN8S7883C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev)();
extern void _ZN8S7883C17D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C17__8S7883C13[] = {
  0,
  ABISELECT(-88,-52),
  0,
  ABISELECT(-104,-64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C17__8S7883C13[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(104,64),
  ABISELECT(104,64),
  (VTBL_ENTRY)&(_ZTI8S7883C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev),
};
extern void _ZN8S7883C18D1Ev();
extern void _ZN8S7883C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7883C18__8S7883C13[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C18[0]),
  (VTBL_ENTRY)&_ZN8S7883C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7883C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev)();
extern void _ZN8S7883C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev)();
extern void _ZN8S7883C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C10__8S7883C13[] = {
  ABISELECT(-104,-60),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void _ZN7S7883C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
extern void _ZN7S7883C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C68S7883C10__A1__8S7883C13[] = {
  ABISELECT(-104,-60),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C68S7883C10__A3__8S7883C13[] = {
  ABISELECT(-104,-60),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C68S7883C10__A3__8S7883C13[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C68S7883C10__A1__8S7883C13[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C10__8S7883C13[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7883C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev)();
extern void _ZN8S7883C20D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev)();
extern void _ZN8S7883C20D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C20__8S7883C13[] = {
  ABISELECT(-144,-88),
  ABISELECT(-120,-72),
  ABISELECT(-32,-20),
  ABISELECT(-136,-84),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev)();
extern void _ZN8S7883C21D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev)();
extern void _ZN8S7883C21D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C218S7883C20__8S7883C13[] = {
  ABISELECT(-144,-88),
  ABISELECT(-120,-72),
  ABISELECT(-32,-20),
  ABISELECT(-136,-84),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void _ZN7S7883C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void _ZN7S7883C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C28S7883C218S7883C20__A1__8S7883C13[] = {
  ABISELECT(-144,-88),
  ABISELECT(-120,-72),
  ABISELECT(-32,-20),
  ABISELECT(-136,-84),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void _ZN7S7883C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void _ZN7S7883C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C57S7883C28S7883C218S7883C20__A2__8S7883C13[] = {
  ABISELECT(-120,-72),
  ABISELECT(-32,-20),
  ABISELECT(-136,-84),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C57S7883C28S7883C218S7883C20__A2__8S7883C13[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(136,84),
  ABISELECT(136,84),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C57S7883C28S7883C218S7883C20__A2__8S7883C13[] = {
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C28S7883C218S7883C20__A4__8S7883C13[] = {
  ABISELECT(-136,-80),
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C28S7883C218S7883C20__A4__8S7883C13[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C28S7883C218S7883C20__A1__8S7883C13[] = {
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C28S7883C218S7883C20__A1__8S7883C13[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(136,84),
  ABISELECT(136,84),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S7883C2D1Ev,_ZThn8_N7S7883C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void ABISELECT(_ZThn16_N7S7883C2D0Ev,_ZThn8_N7S7883C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C7__A1__7S7883C28S7883C218S7883C20__A1__8S7883C13[] = {
  ABISELECT(-136,-80),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C218S7883C20__8S7883C13[] = {
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S7883C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C218S7883C20__8S7883C13[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(136,84),
  ABISELECT(136,84),
  (VTBL_ENTRY)&(_ZTI8S7883C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev)();
extern void ABISELECT(_ZThn16_N8S7883C21D1Ev,_ZThn8_N8S7883C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev)();
extern void ABISELECT(_ZThn16_N8S7883C21D0Ev,_ZThn8_N8S7883C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C2__A1__8S7883C218S7883C20__8S7883C13[] = {
  ABISELECT(-136,-80),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7883C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C20__8S7883C13[] = {
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S7883C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C20__8S7883C13[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(136,84),
  ABISELECT(136,84),
  (VTBL_ENTRY)&(_ZTI8S7883C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev)();
extern void ABISELECT(_ZThn16_N8S7883C20D1Ev,_ZThn8_N8S7883C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev)();
extern void ABISELECT(_ZThn16_N8S7883C20D0Ev,_ZThn8_N8S7883C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C28S7883C21__A1__8S7883C20__8S7883C13[] = {
  ABISELECT(-136,-80),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7883C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev)();
extern void _ZN8S7883C22D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev)();
extern void _ZN8S7883C22D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C22__8S7883C13[] = {
  ABISELECT(-184,-112),
  ABISELECT(-120,-72),
  ABISELECT(-176,-108),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(24,16),
  ABISELECT(-160,-96),
  ABISELECT(-72,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev)();
extern void _ZN8S7883C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev)();
extern void _ZN8S7883C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C108S7883C22__A1__8S7883C13[] = {
  ABISELECT(-160,-96),
  ABISELECT(-72,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void _ZN7S7883C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
extern void _ZN7S7883C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C68S7883C108S7883C22__A2__8S7883C13[] = {
  ABISELECT(-160,-96),
  ABISELECT(-72,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C68S7883C108S7883C22__A5__8S7883C13[] = {
  ABISELECT(-160,-96),
  ABISELECT(-72,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C68S7883C108S7883C22__A5__8S7883C13[] = {
  ABISELECT(72,44),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C68S7883C108S7883C22__A2__8S7883C13[] = {
  ABISELECT(72,44),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C108S7883C22__A1__8S7883C13[] = {
  ABISELECT(72,44),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI8S7883C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7883C17__8S7883C22__8S7883C13[] = {
  0,
  ABISELECT(-88,-52),
  0,
  ABISELECT(-104,-64),
  ABISELECT(72,44),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev)();
extern void ABISELECT(_ZThn24_N8S7883C22D1Ev,_ZThn16_N8S7883C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev)();
extern void ABISELECT(_ZThn24_N8S7883C22D0Ev,_ZThn16_N8S7883C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C16__8S7883C22__8S7883C13[] = {
  ABISELECT(-208,-128),
  ABISELECT(-144,-88),
  ABISELECT(-200,-124),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-184,-112),
  ABISELECT(-96,-60),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__A1__8S7883C22__8S7883C13[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(176,108),
  ABISELECT(176,108),
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7883C22D1Ev,_ZTv0_n16_N8S7883C22D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7883C22D0Ev,_ZTv0_n16_N8S7883C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7883C18__8S7883C22__8S7883C13[] = {
  ABISELECT(120,72),
  ABISELECT(-40,-24),
  ABISELECT(120,72),
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C22D1Ev,_ZTv0_n16_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C22D0Ev,_ZTv0_n16_N8S7883C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void _ZN8S7883C16D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
extern void _ZN8S7883C16D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C16__A1__8S7883C13[] = {
  ABISELECT(-208,-128),
  ABISELECT(-144,-88),
  ABISELECT(-200,-124),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-184,-112),
  ABISELECT(-96,-60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C78S7883C16__A6__8S7883C13[] = {
  ABISELECT(-184,-112),
  ABISELECT(-96,-60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C78S7883C16__A6__8S7883C13[] = {
  ABISELECT(96,60),
  ABISELECT(96,60),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7883C17__8S7883C16__A1__8S7883C13[] = {
  0,
  ABISELECT(-88,-52),
  0,
  ABISELECT(-104,-64),
  ABISELECT(96,60),
  ABISELECT(96,60),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C16__A1__8S7883C13[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(200,124),
  ABISELECT(200,124),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7883C16D1Ev,_ZTv0_n16_N8S7883C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7883C16D0Ev,_ZTv0_n16_N8S7883C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7883C18__8S7883C16__A1__8S7883C13[] = {
  ABISELECT(144,88),
  ABISELECT(-40,-24),
  ABISELECT(144,88),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C16D1Ev,_ZTv0_n16_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C16D0Ev,_ZTv0_n16_N8S7883C16D0Ev),
};
static  VTT_ENTRY vtt_S7883C13[] = {
  {&(_ZTV8S7883C13[18]),  18,146},
  {&(_ZTV8S7883C13[96]),  96,146},
  {&(_ZTV8S7883C13[25]),  25,146},
  {&(_ZTV8S7883C13[96]),  96,146},
  {&(_ZTV8S7883C13[43]),  43,146},
  {&(_ZTV8S7883C13[18]),  18,146},
  {&(_ZTV8S7883C13[80]),  80,146},
  {&(_ZTV8S7883C13[87]),  87,146},
  {&(_ZTV8S7883C13[55]),  55,146},
  {&(_ZTV8S7883C13[96]),  96,146},
  {&(_ZTV8S7883C13[71]),  71,146},
  {&(_ZTV8S7883C13[71]),  71,146},
  {&(_ZTV8S7883C13[103]),  103,146},
  {&(_ZTV8S7883C13[112]),  112,146},
  {&(_ZTV8S7883C13[119]),  119,146},
  {&(_ZTV8S7883C13[132]),  132,146},
  {&(_ZTV8S7883C13[144]),  144,146},
  {&(_tg__ZTV7S7883C5__8S7883C13[6]),  6,8},
  {&(_tg__ZTV7S7883C6__7S7883C5__8S7883C13[5]),  5,7},
  {&(_tg__ZTV7S7883C5__8S7883C13[6]),  6,8},
  {&(_tg__ZTV7S7883C6__8S7883C13[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C6__8S7883C13[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C6__8S7883C13[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C6__8S7883C13[3]),  3,5},
  {&(_tg__ZTV8S7883C14__8S7883C13[15]),  15,17},
  {&(_tg__ZTV8S7883C168S7883C14__8S7883C13[10]),  10,12},
  {&(_tg__ZTV7S7883C78S7883C168S7883C14__A2__8S7883C13[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C78S7883C168S7883C14__A2__8S7883C13[3]),  3,5},
  {&(_tg__ZTV8S7883C17__8S7883C168S7883C14__8S7883C13[7]),  7,9},
  {&(_tg__ZTV8S7883C17__8S7883C168S7883C14__8S7883C13[7]),  7,9},
  {&(_tg__ZTV7S7883C6__8S7883C168S7883C14__8S7883C13[5]),  5,7},
  {&(_tg__ZTV8S7883C17__8S7883C168S7883C14__8S7883C13[7]),  7,9},
  {&(_tg__ZTV8S7883C18__8S7883C168S7883C14__8S7883C13[4]),  4,6},
  {&(_tg__ZTV8S7883C198S7883C14__8S7883C13[14]),  14,16},
  {&(_tg__ZTV8S7883C17__8S7883C198S7883C14__8S7883C13[7]),  7,9},
  {&(_tg__ZTV8S7883C10__8S7883C198S7883C14__8S7883C13[5]),  5,7},
  {&(_tg__ZTV8S7883C20__8S7883C198S7883C14__8S7883C13[7]),  7,9},
  {&(_tg__ZTV7S7883C6__A1__8S7883C198S7883C14__8S7883C13[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C28S7883C218S7883C20__A2__8S7883C198S7883C14__8S7883C13[5]),  5,7},
  {&(_tg__ZTV8S7883C22__8S7883C198S7883C14__8S7883C13[11]),  11,13},
  {&(_tg__ZTV8S7883C16__8S7883C198S7883C14__8S7883C13[10]),  10,12},
  {&(_tg__ZTV8S7883C17__8S7883C198S7883C14__8S7883C13[7]),  7,9},
  {&(_tg__ZTV8S7883C17__8S7883C198S7883C14__8S7883C13[7]),  7,9},
  {&(_tg__ZTV8S7883C198S7883C14__8S7883C13[14]),  14,16},
  {&(_tg__ZTV8S7883C15__8S7883C14__8S7883C13[8]),  8,10},
  {&(_tg__ZTV7S7883C2__8S7883C14__8S7883C13[7]),  7,9},
  {&(_tg__ZTV8S7883C17__8S7883C14__8S7883C13[7]),  7,9},
  {&(_tg__ZTV7S7883C6__8S7883C14__8S7883C13[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C2__A1__8S7883C14__8S7883C13[5]),  5,7},
  {&(_tg__ZTV8S7883C16__A__8S7883C14__8S7883C13[10]),  10,12},
  {&(_tg__ZTV8S7883C17__8S7883C14__8S7883C13[7]),  7,9},
  {&(_tg__ZTV8S7883C17__8S7883C14__8S7883C13[7]),  7,9},
  {&(_tg__ZTV8S7883C19__8S7883C14__8S7883C13[14]),  14,16},
  {&(_tg__ZTV8S7883C19__8S7883C14__8S7883C13[14]),  14,16},
  {&(_tg__ZTV8S7883C10__8S7883C14__8S7883C13[5]),  5,7},
  {&(_tg__ZTV8S7883C20__8S7883C14__8S7883C13[7]),  7,9},
  {&(_tg__ZTV7S7883C77S7883C28S7883C218S7883C20__A4__8S7883C14__8S7883C13[5]),  5,7},
  {&(_tg__ZTV8S7883C22__8S7883C14__8S7883C13[11]),  11,13},
  {&(_tg__ZTV8S7883C16__A1__8S7883C14__8S7883C13[10]),  10,12},
  {&(_tg__ZTV8S7883C15__8S7883C13[8]),  8,10},
  {&(_tg__ZTV7S7883C2__8S7883C15__8S7883C13[7]),  7,9},
  {&(_tg__ZTV10S7883C3_nt__8S7883C15__8S7883C13[3]),  3,5},
  {&(_tg__ZTV7S7883C6__8S7883C15__8S7883C13[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C2__A1__8S7883C15__8S7883C13[5]),  5,7},
  {&(_tg__ZTV7S7883C2__8S7883C13[7]),  7,9},
  {&(_tg__ZTV7S7883C57S7883C2__A1__8S7883C13[6]),  6,8},
  {&(_tg__ZTV7S7883C6__7S7883C57S7883C2__A1__8S7883C13[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C57S7883C2__A1__8S7883C13[3]),  3,5},
  {&(_tg__ZTV7S7883C77S7883C2__A1__8S7883C13[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C2__A1__8S7883C13[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C2__8S7883C13[3]),  3,5},
  {&(_tg__ZTV7S7883C6__7S7883C2__8S7883C13[5]),  5,7},
  {&(_tg__ZTV7S7883C7__A1__7S7883C2__8S7883C13[5]),  5,7},
  {&(_tg__ZTV8S7883C17__8S7883C13[7]),  7,9},
  {&(_tg__ZTV8S7883C17__8S7883C13[7]),  7,9},
  {&(_tg__ZTV7S7883C6__8S7883C17__8S7883C13[5]),  5,7},
  {&(_tg__ZTV8S7883C17__8S7883C13[7]),  7,9},
  {&(_tg__ZTV8S7883C18__8S7883C13[3]),  3,5},
  {&(_tg__ZTV8S7883C10__8S7883C13[5]),  5,7},
  {&(_tg__ZTV7S7883C68S7883C10__A1__8S7883C13[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C68S7883C10__A3__8S7883C13[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C68S7883C10__A3__8S7883C13[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C68S7883C10__A1__8S7883C13[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S7883C10__8S7883C13[3]),  3,5},
  {&(_tg__ZTV8S7883C20__8S7883C13[7]),  7,9},
  {&(_tg__ZTV8S7883C218S7883C20__8S7883C13[7]),  7,9},
  {&(_tg__ZTV7S7883C28S7883C218S7883C20__A1__8S7883C13[7]),  7,9},
  {&(_tg__ZTV7S7883C57S7883C28S7883C218S7883C20__A2__8S7883C13[6]),  6,8},
  {&(_tg__ZTV7S7883C6__7S7883C57S7883C28S7883C218S7883C20__A2__8S7883C13[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C57S7883C28S7883C218S7883C20__A2__8S7883C13[3]),  3,5},
  {&(_tg__ZTV7S7883C77S7883C28S7883C218S7883C20__A4__8S7883C13[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C28S7883C218S7883C20__A4__8S7883C13[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C28S7883C218S7883C20__A1__8S7883C13[3]),  3,5},
  {&(_tg__ZTV7S7883C6__7S7883C28S7883C218S7883C20__A1__8S7883C13[5]),  5,7},
  {&(_tg__ZTV7S7883C7__A1__7S7883C28S7883C218S7883C20__A1__8S7883C13[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S7883C218S7883C20__8S7883C13[3]),  3,5},
  {&(_tg__ZTV7S7883C6__8S7883C218S7883C20__8S7883C13[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C2__A1__8S7883C218S7883C20__8S7883C13[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S7883C20__8S7883C13[3]),  3,5},
  {&(_tg__ZTV7S7883C6__8S7883C20__8S7883C13[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C28S7883C21__A1__8S7883C20__8S7883C13[5]),  5,7},
  {&(_tg__ZTV8S7883C22__8S7883C13[11]),  11,13},
  {&(_tg__ZTV8S7883C108S7883C22__A1__8S7883C13[5]),  5,7},
  {&(_tg__ZTV7S7883C68S7883C108S7883C22__A2__8S7883C13[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C68S7883C108S7883C22__A5__8S7883C13[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C68S7883C108S7883C22__A5__8S7883C13[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C68S7883C108S7883C22__A2__8S7883C13[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S7883C108S7883C22__A1__8S7883C13[3]),  3,5},
  {&(_tg__ZTV8S7883C17__8S7883C22__8S7883C13[7]),  7,9},
  {&(_tg__ZTV8S7883C16__8S7883C22__8S7883C13[10]),  10,12},
  {&(_tg__ZTV8S7883C17__8S7883C22__8S7883C13[7]),  7,9},
  {&(_tg__ZTV8S7883C17__8S7883C22__8S7883C13[7]),  7,9},
  {&(_tg__ZTV7S7883C6__A1__8S7883C22__8S7883C13[5]),  5,7},
  {&(_tg__ZTV8S7883C18__8S7883C22__8S7883C13[4]),  4,6},
  {&(_tg__ZTV8S7883C16__A1__8S7883C13[10]),  10,12},
  {&(_tg__ZTV7S7883C78S7883C16__A6__8S7883C13[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C78S7883C16__A6__8S7883C13[3]),  3,5},
  {&(_tg__ZTV8S7883C17__8S7883C16__A1__8S7883C13[7]),  7,9},
  {&(_tg__ZTV8S7883C17__8S7883C16__A1__8S7883C13[7]),  7,9},
  {&(_tg__ZTV7S7883C6__8S7883C16__A1__8S7883C13[5]),  5,7},
  {&(_tg__ZTV8S7883C17__8S7883C16__A1__8S7883C13[7]),  7,9},
  {&(_tg__ZTV8S7883C18__8S7883C16__A1__8S7883C13[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S7883C13[];
extern  VTBL_ENTRY _ZTV8S7883C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C13[];
static VTBL_ENTRY alt_thunk_names45[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C22D0Ev,_ZThn16_N8S7883C22D0Ev),
  (VTBL_ENTRY)_ZN8S7883C22D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C22D1Ev,_ZThn16_N8S7883C22D1Ev),
  (VTBL_ENTRY)_ZN8S7883C22D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C21D0Ev,_ZThn8_N8S7883C21D0Ev),
  (VTBL_ENTRY)_ZN8S7883C21D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C21D1Ev,_ZThn8_N8S7883C21D1Ev),
  (VTBL_ENTRY)_ZN8S7883C21D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C20D0Ev,_ZThn8_N8S7883C20D0Ev),
  (VTBL_ENTRY)_ZN8S7883C20D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C20D1Ev,_ZThn8_N8S7883C20D1Ev),
  (VTBL_ENTRY)_ZN8S7883C20D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev), // 
  (VTBL_ENTRY)_ZN8S7883C10D0Ev,
  (VTBL_ENTRY)_ZN8S7883C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev), // 
  (VTBL_ENTRY)_ZN8S7883C10D1Ev,
  (VTBL_ENTRY)_ZN8S7883C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev), // 
  (VTBL_ENTRY)_ZN8S7883C17D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev), // 
  (VTBL_ENTRY)_ZN8S7883C17D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C2D0Ev,_ZThn8_N7S7883C2D0Ev),
  (VTBL_ENTRY)_ZN7S7883C2D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C2D0Ev,_ZThn8_N7S7883C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7883C2D0Ev,_ZThn16_N7S7883C2D0Ev),
  (VTBL_ENTRY)_ZN7S7883C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C2D1Ev,_ZThn8_N7S7883C2D1Ev),
  (VTBL_ENTRY)_ZN7S7883C2D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C2D1Ev,_ZThn8_N7S7883C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7883C2D1Ev,_ZThn16_N7S7883C2D1Ev),
  (VTBL_ENTRY)_ZN7S7883C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7883C15D0Ev,_ZThn60_N8S7883C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7883C15D0Ev,_ZThn4_N8S7883C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7883C15D0Ev,_ZThn68_N8S7883C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7883C15D0Ev,_ZThn52_N8S7883C15D0Ev),
  (VTBL_ENTRY)_ZN8S7883C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7883C15D1Ev,_ZThn60_N8S7883C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7883C15D1Ev,_ZThn4_N8S7883C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7883C15D1Ev,_ZThn68_N8S7883C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7883C15D1Ev,_ZThn52_N8S7883C15D1Ev),
  (VTBL_ENTRY)_ZN8S7883C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C14D0Ev,_ZTv0_n16_N8S7883C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7883C14D0Ev,_ZThn20_N8S7883C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C14D1Ev,_ZTv0_n16_N8S7883C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7883C14D1Ev,_ZThn20_N8S7883C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7883C14D0Ev,_ZThn108_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7883C14D0Ev,_ZThn92_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7883C14D0Ev,_ZThn76_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7883C14D0Ev,_ZThn68_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7883C14D0Ev,_ZThn56_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7883C14D0Ev,_ZThn4_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7883C14D0Ev,_ZThn40_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7883C14D0Ev,_ZThn48_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7883C14D0Ev,_ZThn32_N8S7883C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7883C14D1Ev,_ZThn108_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7883C14D1Ev,_ZThn92_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7883C14D1Ev,_ZThn76_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7883C14D1Ev,_ZThn68_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7883C14D1Ev,_ZThn56_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7883C14D1Ev,_ZThn4_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7883C14D1Ev,_ZThn40_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7883C14D1Ev,_ZThn48_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7883C14D1Ev,_ZThn32_N8S7883C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7883C19D0Ev,_ZThn88_N8S7883C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7883C19D0Ev,_ZThn72_N8S7883C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7883C19D0Ev,_ZThn56_N8S7883C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7883C19D0Ev,_ZThn48_N8S7883C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7883C19D0Ev,_ZThn36_N8S7883C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7883C19D0Ev,_ZThn28_N8S7883C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7883C19D1Ev,_ZThn88_N8S7883C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7883C19D1Ev,_ZThn72_N8S7883C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7883C19D1Ev,_ZThn56_N8S7883C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7883C19D1Ev,_ZThn48_N8S7883C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7883C19D1Ev,_ZThn36_N8S7883C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7883C19D1Ev,_ZThn28_N8S7883C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C19D0Ev,_ZTv0_n16_N8S7883C19D0Ev), // 
  (VTBL_ENTRY)_ZN8S7883C19D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C19D1Ev,_ZTv0_n16_N8S7883C19D1Ev), // 
  (VTBL_ENTRY)_ZN8S7883C19D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C16D0Ev,_ZTv0_n16_N8S7883C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C16D0Ev,_ZThn16_N8S7883C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C16D1Ev,_ZTv0_n16_N8S7883C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C16D1Ev,_ZThn16_N8S7883C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev), // 
  (VTBL_ENTRY)_ZN8S7883C16D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7883C16D0Ev,_ZThn44_N8S7883C16D0Ev),
  (VTBL_ENTRY)_ZN8S7883C16D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev), // 
  (VTBL_ENTRY)_ZN8S7883C16D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7883C16D1Ev,_ZThn44_N8S7883C16D1Ev),
  (VTBL_ENTRY)_ZN8S7883C16D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C7D0Ev,_ZThn8_N7S7883C7D0Ev),
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7883C7D0Ev,_ZThn44_N7S7883C7D0Ev),
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7883C7D0Ev,_ZThn64_N7S7883C7D0Ev),
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C7D1Ev,_ZThn8_N7S7883C7D1Ev),
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7883C7D1Ev,_ZThn44_N7S7883C7D1Ev),
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7883C7D1Ev,_ZThn64_N7S7883C7D1Ev),
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C6D0Ev,
  (VTBL_ENTRY)_ZN7S7883C6D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7883C6D0Ev,_ZThn64_N7S7883C6D0Ev),
  (VTBL_ENTRY)_ZN7S7883C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C6D1Ev,
  (VTBL_ENTRY)_ZN7S7883C6D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7883C6D1Ev,_ZThn64_N7S7883C6D1Ev),
  (VTBL_ENTRY)_ZN7S7883C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C5D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7883C5D0Ev,_ZThn16_N7S7883C5D0Ev),
  (VTBL_ENTRY)_ZN7S7883C5D0Ev,
  (VTBL_ENTRY)_ZN7S7883C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C5D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7883C5D1Ev,_ZThn16_N7S7883C5D1Ev),
  (VTBL_ENTRY)_ZN7S7883C5D1Ev,
  (VTBL_ENTRY)_ZN7S7883C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C13D0Ev,_ZTv0_n16_N8S7883C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7883C13D0Ev,_ZThn40_N8S7883C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C13D1Ev,_ZTv0_n16_N8S7883C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7883C13D1Ev,_ZThn40_N8S7883C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7883C13D0Ev,_ZTv0_n64_N8S7883C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7883C13D0Ev,_ZThn20_N8S7883C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7883C13D1Ev,_ZTv0_n64_N8S7883C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7883C13D1Ev,_ZThn20_N8S7883C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7883C13D0Ev,_ZThn128_N8S7883C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7883C13D0Ev,_ZThn112_N8S7883C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7883C13D0Ev,_ZThn96_N8S7883C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7883C13D0Ev,_ZThn88_N8S7883C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7883C13D0Ev,_ZThn76_N8S7883C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7883C13D0Ev,_ZThn68_N8S7883C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7883C13D0Ev,_ZThn60_N8S7883C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7883C13D0Ev,_ZThn52_N8S7883C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7883C13D0Ev,_ZThn24_N8S7883C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7883C13D0Ev,_ZThn4_N8S7883C13D0Ev),
  (VTBL_ENTRY)_ZN8S7883C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7883C13D1Ev,_ZThn128_N8S7883C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7883C13D1Ev,_ZThn112_N8S7883C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7883C13D1Ev,_ZThn96_N8S7883C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7883C13D1Ev,_ZThn88_N8S7883C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7883C13D1Ev,_ZThn76_N8S7883C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7883C13D1Ev,_ZThn68_N8S7883C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7883C13D1Ev,_ZThn60_N8S7883C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7883C13D1Ev,_ZThn52_N8S7883C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7883C13D1Ev,_ZThn24_N8S7883C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7883C13D1Ev,_ZThn4_N8S7883C13D1Ev),
  (VTBL_ENTRY)_ZN8S7883C13D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7883C13 = {  "S7883C13", // class name
  bases_S7883C13, 45,
  &(vtc_S7883C13[0]), // expected_vtbl_contents
  &(vtt_S7883C13[0]), // expected_vtt_contents
  ABISELECT(232,144), // object size
  NSPAIRA(_ZTI8S7883C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7883C13),146, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7883C13),122, //virtual table table var
  29, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names45,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7883C24  : S7883C17 , S3216C8_nt {
  void *s7883c24f0;
  ~S7883C24(); // tgen
  S7883C24(); // tgen
};
//SIG(-1 S7883C24) C1{ BC2{ VBC3{ VBC4{ BC5{ VBC6{ vd m} VBC7{ m Fi} BC8{ m} Fi} Fi} BC8} FC7} BC7 Fp}


S7883C24 ::~S7883C24(){ note_dtor("S7883C24", this);} // tgen
S7883C24 ::S7883C24(){ note_ctor("S7883C24", this);} // tgen

static void Test_S7883C24()
{
  extern Class_Descriptor cd_S7883C24;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S7883C24, buf);
    S7883C24 *dp, &lv = *(dp=new (buf) S7883C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S7883C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7883C24)");
    check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C6*), 0, "S7883C24");
    check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C6*), ABISELECT(40,28), "S7883C24");
    check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C6*), ABISELECT(24,16), "S7883C24");
    check_base_class_offset(lv, (S7883C7*)(S7883C6*), ABISELECT(24,16), "S7883C24");
    check_base_class_offset(lv, (S7883C6*)(S7883C5*), ABISELECT(24,16), "S7883C24");
    /*is_ambiguous_... S7883C5::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C5*), 0, "S7883C24");
    check_base_class_offset(lv, (S7883C5*)(S7883C17*), 0, "S7883C24");
    check_base_class_offset(lv, (S7883C17*), 0, "S7883C24");
    /*is_ambiguous_... S7883C24::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(12,8), "S7883C24");
    check_field_offset(lv, s7883c24f0, ABISELECT(16,12), "S7883C24.s7883c24f0");
    test_class_info(&lv, &cd_S7883C24);
    dp->~S7883C24();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7883C24(Test_S7883C24, "S7883C24", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN8S7883C24C1Ev();
extern void _ZN8S7883C24D1Ev();
Name_Map name_map_S7883C24[] = {
  NSPAIR(_ZN8S7883C24C1Ev),
  NSPAIR(_ZN8S7883C24D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C6;
extern VTBL_ENTRY _ZTI7S7883C6[];
extern  VTBL_ENTRY _ZTV7S7883C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C5;
extern VTBL_ENTRY _ZTI7S7883C5[];
extern  VTBL_ENTRY _ZTV7S7883C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C5[];
extern Class_Descriptor cd_S7883C17;
extern VTBL_ENTRY _ZTI8S7883C17[];
extern  VTBL_ENTRY _ZTV8S7883C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C17[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S7883C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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_S7883C7,    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
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7883C6,    ABISELECT(24,16), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7883C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7883C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7883C24[];
extern void _ZN8S7883C24D1Ev();
extern void _ZN8S7883C24D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S7883C24D1Ev,_ZTv0_n12_N8S7883C24D1Ev)();
extern void ABISELECT(_ZThn24_N8S7883C24D1Ev,_ZThn16_N8S7883C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C24D0Ev,_ZTv0_n12_N8S7883C24D0Ev)();
extern void ABISELECT(_ZThn24_N8S7883C24D0Ev,_ZThn16_N8S7883C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7883C24[] = {
  0,
  ABISELECT(40,28),
  0,
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C24[0]),
  (VTBL_ENTRY)&_ZN8S7883C24D1Ev,
  (VTBL_ENTRY)&_ZN8S7883C24D0Ev,
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7883C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C24D1Ev,_ZTv0_n12_N8S7883C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C24D0Ev,_ZTv0_n12_N8S7883C24D0Ev),
};
extern VTBL_ENTRY _ZTV8S7883C24[];
extern void _ZN8S7883C17D1Ev();
extern void _ZN8S7883C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7883C17__8S7883C24[] = {
  0,
  ABISELECT(40,28),
  0,
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C17[0]),
  (VTBL_ENTRY)&_ZN8S7883C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7883C17D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev)();
extern void ABISELECT(_ZThn24_N8S7883C17D1Ev,_ZThn16_N8S7883C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev)();
extern void ABISELECT(_ZThn24_N8S7883C17D0Ev,_ZThn16_N8S7883C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C17__8S7883C24[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7883C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void _ZN7S7883C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void _ZN7S7883C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C5__8S7883C24[] = {
  ABISELECT(40,28),
  0,
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZThn24_N7S7883C5D1Ev,_ZThn16_N7S7883C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void ABISELECT(_ZThn24_N7S7883C5D0Ev,_ZThn16_N7S7883C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C5__8S7883C24[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void _ZN7S7883C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
extern void _ZN7S7883C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C24[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C6__8S7883C24[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C6__8S7883C24[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C6__8S7883C24[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
static  VTT_ENTRY vtt_S7883C24[] = {
  {&(_ZTV8S7883C24[7]),  7,16},
  {&(_tg__ZTV8S7883C17__8S7883C24[7]),  7,9},
  {&(_tg__ZTV8S7883C17__8S7883C24[7]),  7,9},
  {&(_tg__ZTV7S7883C6__8S7883C17__8S7883C24[5]),  5,7},
  {&(_tg__ZTV8S7883C17__8S7883C24[7]),  7,9},
  {&(_ZTV8S7883C24[7]),  7,16},
  {&(_ZTV8S7883C24[14]),  14,16},
  {&(_ZTV8S7883C24[7]),  7,16},
  {&(_tg__ZTV7S7883C5__8S7883C24[6]),  6,8},
  {&(_tg__ZTV7S7883C6__7S7883C5__8S7883C24[5]),  5,7},
  {&(_tg__ZTV7S7883C5__8S7883C24[6]),  6,8},
  {&(_tg__ZTV7S7883C6__8S7883C24[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C6__8S7883C24[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C6__8S7883C24[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C6__8S7883C24[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7883C24[];
extern  VTBL_ENTRY _ZTV8S7883C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C24[];
static VTBL_ENTRY alt_thunk_names46[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7883C5D0Ev,_ZThn16_N7S7883C5D0Ev),
  (VTBL_ENTRY)_ZN7S7883C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7883C5D1Ev,_ZThn16_N7S7883C5D1Ev),
  (VTBL_ENTRY)_ZN7S7883C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C17D0Ev,_ZThn16_N8S7883C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C17D1Ev,_ZThn16_N8S7883C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C24D0Ev,_ZTv0_n12_N8S7883C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C24D0Ev,_ZThn16_N8S7883C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C24D1Ev,_ZTv0_n12_N8S7883C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C24D1Ev,_ZThn16_N8S7883C24D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7883C24 = {  "S7883C24", // class name
  bases_S7883C24, 9,
  &(vtc_S7883C24[0]), // expected_vtbl_contents
  &(vtt_S7883C24[0]), // expected_vtt_contents
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI8S7883C24),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7883C24),16, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7883C24),15, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names46,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7883C23  : virtual S7883C6 , S7883C24 , virtual S7883C10 {
  virtual  ~S7883C23(); // _ZN8S7883C23D2Ev
  S7883C23(); // tgen
};
//SIG(-1 S7883C23) C1{ VBC2{ BC3{ VBC4{ vd m} VBC5{ m Fi} BC6{ m} Fi} Fi} BC7{ BC8{ VBC9{ VBC2 BC6} FC5} BC5 Fp} VBC10{ BC2} vd}


 S7883C23 ::~S7883C23(){ note_dtor("S7883C23", this);}
S7883C23 ::S7883C23(){ note_ctor("S7883C23", this);} // tgen

static void Test_S7883C23()
{
  extern Class_Descriptor cd_S7883C23;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S7883C23, buf);
    S7883C23 *dp, &lv = *(dp=new (buf) S7883C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S7883C23)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7883C23)");
    /*is_ambiguous_... S7883C23::S7883C6 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C6*), ABISELECT(24,16), "S7883C23");
    check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C6*)(S7883C10*), ABISELECT(24,16), "S7883C23");
    /*is_ambiguous_... S7883C23::S7883C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C6*), ABISELECT(40,28), "S7883C23");
    check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C6*)(S7883C10*), ABISELECT(40,28), "S7883C23");
    /*is_ambiguous_... S7883C23::S7883C6 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C6*), ABISELECT(24,16), "S7883C23");
    /*is_ambiguous_... S7883C23::S7883C6 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C6*), ABISELECT(24,16), "S7883C23");
    /*is_ambiguous_... S7883C23::S7883C6 */ AMB_check_base_class_offset(lv, (S7883C6*), ABISELECT(24,16), "S7883C23");
    check_base_class_offset(lv, (S7883C6*)(S7883C5*), ABISELECT(24,16), "S7883C23");
    /*is_ambiguous_... S7883C5::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C5*), 0, "S7883C23");
    check_base_class_offset(lv, (S7883C5*)(S7883C17*)(S7883C24*), 0, "S7883C23");
    check_base_class_offset(lv, (S7883C17*)(S7883C24*), 0, "S7883C23");
    /*is_ambiguous_... S7883C24::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C24*), ABISELECT(12,8), "S7883C23");
    check_base_class_offset(lv, (S7883C24*), 0, "S7883C23");
    check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C6*)(S7883C10*), ABISELECT(48,32), "S7883C23");
    check_base_class_offset(lv, (S7883C7*)(S7883C6*)(S7883C10*), ABISELECT(48,32), "S7883C23");
    check_base_class_offset(lv, (S7883C6*)(S7883C10*), ABISELECT(48,32), "S7883C23");
    check_base_class_offset(lv, (S7883C10*), ABISELECT(48,32), "S7883C23");
    test_class_info(&lv, &cd_S7883C23);
    dp->~S7883C23();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7883C23(Test_S7883C23, "S7883C23", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN8S7883C23C1Ev();
extern void _ZN8S7883C23D2Ev();
Name_Map name_map_S7883C23[] = {
  NSPAIR(_ZN8S7883C23C1Ev),
  NSPAIR(_ZN8S7883C23D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C6;
extern VTBL_ENTRY _ZTI7S7883C6[];
extern  VTBL_ENTRY _ZTV7S7883C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C5;
extern VTBL_ENTRY _ZTI7S7883C5[];
extern  VTBL_ENTRY _ZTV7S7883C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C5[];
extern Class_Descriptor cd_S7883C17;
extern VTBL_ENTRY _ZTI8S7883C17[];
extern  VTBL_ENTRY _ZTV8S7883C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C17[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7883C24;
extern VTBL_ENTRY _ZTI8S7883C24[];
extern  VTBL_ENTRY _ZTV8S7883C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C24[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C6;
extern VTBL_ENTRY _ZTI7S7883C6[];
extern  VTBL_ENTRY _ZTV7S7883C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C6[];
extern Class_Descriptor cd_S7883C10;
extern VTBL_ENTRY _ZTI8S7883C10[];
extern  VTBL_ENTRY _ZTV8S7883C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C10[];
static Base_Class bases_S7883C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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_S7883C7,    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
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7883C6,    ABISELECT(24,16), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7883C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7883C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7883C24,    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_S4677C37,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7883C6,    ABISELECT(48,32), //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
    13, //immediately_derived
  0, 0},
  {&cd_S7883C10,    ABISELECT(48,32), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7883C23[];
extern void ABISELECT(_ZTv0_n24_N8S7883C23D1Ev,_ZTv0_n12_N8S7883C23D1Ev)();
extern void _ZN8S7883C23D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C23D0Ev,_ZTv0_n12_N8S7883C23D0Ev)();
extern void _ZN8S7883C23D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C23D1Ev,_ZTv0_n12_N8S7883C23D1Ev)();
extern void ABISELECT(_ZThn24_N8S7883C23D1Ev,_ZThn16_N8S7883C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C23D0Ev,_ZTv0_n12_N8S7883C23D0Ev)();
extern void ABISELECT(_ZThn24_N8S7883C23D0Ev,_ZThn16_N8S7883C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C23D1Ev,_ZTv0_n12_N8S7883C23D1Ev)();
extern void ABISELECT(_ZThn48_N8S7883C23D1Ev,_ZThn32_N8S7883C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C23D0Ev,_ZTv0_n12_N8S7883C23D0Ev)();
extern void ABISELECT(_ZThn48_N8S7883C23D0Ev,_ZThn32_N8S7883C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7883C23[] = {
  ABISELECT(48,32),
  0,
  ABISELECT(40,28),
  ABISELECT(24,16),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C23D1Ev,_ZTv0_n12_N8S7883C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C23D0Ev,_ZTv0_n12_N8S7883C23D0Ev),
  ABISELECT(16,12),
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7883C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C23D1Ev,_ZTv0_n12_N8S7883C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C23D0Ev,_ZTv0_n12_N8S7883C23D0Ev),
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S7883C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C23D1Ev,_ZTv0_n12_N8S7883C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C23D0Ev,_ZTv0_n12_N8S7883C23D0Ev),
};
extern VTBL_ENTRY _ZTV8S7883C23[];
extern void ABISELECT(_ZTv0_n24_N8S7883C24D1Ev,_ZTv0_n12_N8S7883C24D1Ev)();
extern void _ZN8S7883C24D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C24D0Ev,_ZTv0_n12_N8S7883C24D0Ev)();
extern void _ZN8S7883C24D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C24__8S7883C23[] = {
  0,
  ABISELECT(40,28),
  ABISELECT(24,16),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C24D1Ev,_ZTv0_n12_N8S7883C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C24D0Ev,_ZTv0_n12_N8S7883C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev)();
extern void _ZN8S7883C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev)();
extern void _ZN8S7883C17D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C178S7883C24__8S7883C23[] = {
  0,
  ABISELECT(40,28),
  ABISELECT(24,16),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev)();
extern void ABISELECT(_ZThn24_N8S7883C17D1Ev,_ZThn16_N8S7883C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev)();
extern void ABISELECT(_ZThn24_N8S7883C17D0Ev,_ZThn16_N8S7883C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C178S7883C24__8S7883C23[] = {
  ABISELECT(16,12),
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7883C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C24D1Ev,_ZTv0_n12_N8S7883C24D1Ev)();
extern void ABISELECT(_ZThn24_N8S7883C24D1Ev,_ZThn16_N8S7883C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C24D0Ev,_ZTv0_n12_N8S7883C24D0Ev)();
extern void ABISELECT(_ZThn24_N8S7883C24D0Ev,_ZThn16_N8S7883C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C24__8S7883C23[] = {
  ABISELECT(16,12),
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7883C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C24D1Ev,_ZTv0_n12_N8S7883C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C24D0Ev,_ZTv0_n12_N8S7883C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void _ZN7S7883C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
extern void _ZN7S7883C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C23[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C6__8S7883C23[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void _ZN7S7883C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void _ZN7S7883C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C5__8S7883C23[] = {
  ABISELECT(40,28),
  ABISELECT(24,16),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZThn24_N7S7883C5D1Ev,_ZThn16_N7S7883C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void ABISELECT(_ZThn24_N7S7883C5D0Ev,_ZThn16_N7S7883C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C5__8S7883C23[] = {
  ABISELECT(16,12),
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev)();
extern void _ZN8S7883C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev)();
extern void _ZN8S7883C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C10__8S7883C23[] = {
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void _ZN7S7883C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
extern void _ZN7S7883C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C68S7883C10__A1__8S7883C23[] = {
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C68S7883C10__A1__8S7883C23[] = {
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C68S7883C10__A1__8S7883C23[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C68S7883C10__A1__8S7883C23[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C10__8S7883C23[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S7883C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev),
};
static  VTT_ENTRY vtt_S7883C23[] = {
  {&(_ZTV8S7883C23[8]),  8,24},
  {&(_tg__ZTV8S7883C24__8S7883C23[7]),  7,9},
  {&(_tg__ZTV8S7883C178S7883C24__8S7883C23[7]),  7,9},
  {&(_tg__ZTV8S7883C178S7883C24__8S7883C23[7]),  7,9},
  {&(_tg__ZTV7S7883C6__8S7883C178S7883C24__8S7883C23[5]),  5,7},
  {&(_tg__ZTV7S7883C6__8S7883C178S7883C24__8S7883C23[5]),  5,7},
  {&(_tg__ZTV8S7883C24__8S7883C23[7]),  7,9},
  {&(_tg__ZTV7S7883C6__8S7883C24__8S7883C23[5]),  5,7},
  {&(_tg__ZTV7S7883C6__8S7883C24__8S7883C23[5]),  5,7},
  {&(_ZTV8S7883C23[15]),  15,24},
  {&(_ZTV8S7883C23[15]),  15,24},
  {&(_ZTV8S7883C23[8]),  8,24},
  {&(_ZTV8S7883C23[22]),  22,24},
  {&(_tg__ZTV7S7883C6__8S7883C23[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C6__8S7883C23[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C6__8S7883C23[5]),  5,7},
  {&(_tg__ZTV7S7883C6__8S7883C23[5]),  5,7},
  {&(_tg__ZTV7S7883C5__8S7883C23[6]),  6,8},
  {&(_tg__ZTV7S7883C6__7S7883C5__8S7883C23[5]),  5,7},
  {&(_tg__ZTV7S7883C6__7S7883C5__8S7883C23[5]),  5,7},
  {&(_tg__ZTV8S7883C10__8S7883C23[5]),  5,7},
  {&(_tg__ZTV7S7883C68S7883C10__A1__8S7883C23[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C68S7883C10__A1__8S7883C23[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C68S7883C10__A1__8S7883C23[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C68S7883C10__A1__8S7883C23[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S7883C10__8S7883C23[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7883C23[];
extern  VTBL_ENTRY _ZTV8S7883C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C23[];
static VTBL_ENTRY alt_thunk_names47[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev), // 
  (VTBL_ENTRY)_ZN8S7883C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev), // 
  (VTBL_ENTRY)_ZN8S7883C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7883C5D0Ev,_ZThn16_N7S7883C5D0Ev),
  (VTBL_ENTRY)_ZN7S7883C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7883C5D1Ev,_ZThn16_N7S7883C5D1Ev),
  (VTBL_ENTRY)_ZN7S7883C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C6D0Ev,
  (VTBL_ENTRY)_ZN7S7883C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C6D1Ev,
  (VTBL_ENTRY)_ZN7S7883C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C17D0Ev,_ZThn16_N8S7883C17D0Ev),
  (VTBL_ENTRY)_ZN8S7883C17D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C17D1Ev,_ZThn16_N8S7883C17D1Ev),
  (VTBL_ENTRY)_ZN8S7883C17D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C24D0Ev,_ZTv0_n12_N8S7883C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C24D0Ev,_ZThn16_N8S7883C24D0Ev),
  (VTBL_ENTRY)_ZN8S7883C24D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C24D1Ev,_ZTv0_n12_N8S7883C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C24D1Ev,_ZThn16_N8S7883C24D1Ev),
  (VTBL_ENTRY)_ZN8S7883C24D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C23D0Ev,_ZTv0_n12_N8S7883C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7883C23D0Ev,_ZThn32_N8S7883C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C23D0Ev,_ZThn16_N8S7883C23D0Ev),
  (VTBL_ENTRY)_ZN8S7883C23D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C23D1Ev,_ZTv0_n12_N8S7883C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7883C23D1Ev,_ZThn32_N8S7883C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C23D1Ev,_ZThn16_N8S7883C23D1Ev),
  (VTBL_ENTRY)_ZN8S7883C23D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7883C23 = {  "S7883C23", // class name
  bases_S7883C23, 14,
  &(vtc_S7883C23[0]), // expected_vtbl_contents
  &(vtt_S7883C23[0]), // expected_vtt_contents
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI8S7883C23),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7883C23),24, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7883C23),26, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names47,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7883C12  : S7883C13 , virtual S7883C23 {
  ~S7883C12(); // tgen
  S7883C12(); // tgen
};
//SIG(-1 S7883C12) C1{ BC2{ VBC3{ VBC4{ BC5{ VBC6{ vd m} VBC7{ m Fi} BC8{ m} Fi} Fi} BC8} VBC9{ BC6 VBC10{ VBC11{ VBC6 BC7 BC3 VBC8 BC5 vd} vd} BC12{ VBC7 VBC13{ VBC3 FC7} VBC14{ VBC7 vd} VBC8 BC5 vd Fi Fp} BC15{ VBC6 VBC16{ BC4} VBC17{ BC18{ BC11 BC7 vd Fi} vd} VBC19{ BC16 VBC12 vd Fi} vd Fi} vd Fi} VBC20{ m}} VBC21{ VBC4 BC22{ BC13 BC7 Fp} VBC16 vd}}


S7883C12 ::~S7883C12(){ note_dtor("S7883C12", this);} // tgen
S7883C12 ::S7883C12(){ note_ctor("S7883C12", this);} // tgen

static void Test_S7883C12()
{
  extern Class_Descriptor cd_S7883C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(33,41)];
    init_test(&cd_S7883C12, buf);
    S7883C12 *dp, &lv = *(dp=new (buf) S7883C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,160), "sizeof(S7883C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7883C12)");
    /*is_ambiguous_... S7883C12::S7883C6 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C6*), ABISELECT(112,68), "S7883C12");
    /*is_ambiguous_... S7883C12::S7883C2 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C2*), ABISELECT(112,68), "S7883C12");
    /*is_ambiguous_... S7883C12::S7883C2 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C2*), ABISELECT(112,68), "S7883C12");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C16*)(S7883C14*), ABISELECT(112,68), "S7883C12");
    check_base_class_offset(lv, (S7883C3_nt*)(S7883C19*)(S7883C14*), ABISELECT(112,68), "S7883C12");
    /*is_ambiguous_... S7883C12::S7883C10 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C6*)(S7883C10*), ABISELECT(112,68), "S7883C12");
    check_base_class_offset(lv, (S7883C3_nt*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(112,68), "S7883C12");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(112,68), "S7883C12");
    check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C6*)(S7883C10*)(S7883C22*), ABISELECT(112,68), "S7883C12");
    /*is_ambiguous_... S7883C12::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C16*), ABISELECT(112,68), "S7883C12");
    /*is_ambiguous_... S7883C12::S7883C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C6*), ABISELECT(24,16), "S7883C12");
    /*is_ambiguous_... S7883C12::S7883C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C2*), ABISELECT(24,16), "S7883C12");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C16*)(S7883C14*), ABISELECT(24,16), "S7883C12");
    check_base_class_offset(lv, (S3216C8_nt*)(S7883C18*), ABISELECT(24,16), "S7883C12");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C16*)(S7883C14*), ABISELECT(24,16), "S7883C12");
    /*is_ambiguous_... S7883C12::S7883C10 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C6*)(S7883C10*), ABISELECT(24,16), "S7883C12");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(24,16), "S7883C12");
    check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C6*)(S7883C10*)(S7883C22*), ABISELECT(24,16), "S7883C12");
    /*is_ambiguous_... S7883C12::S7883C16 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C16*), ABISELECT(24,16), "S7883C12");
    /*is_ambiguous_... S7883C12::S7883C16 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C16*), ABISELECT(24,16), "S7883C12");
    /*is_ambiguous_... S7883C12::S7883C6 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C6*), ABISELECT(8,4), "S7883C12");
    /*is_ambiguous_... S7883C12::S7883C6 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C6*), ABISELECT(8,4), "S7883C12");
    /*is_ambiguous_... S7883C12::S7883C5 */ AMB_check_base_class_offset(lv, (S7883C6*)(S7883C5*), ABISELECT(8,4), "S7883C12");
    /*is_ambiguous_... S7883C12::S7883C2 */ AMB_check_base_class_offset(lv, (S7883C6*)(S7883C5*)(S7883C2*), ABISELECT(8,4), "S7883C12");
    check_base_class_offset(lv, (S7883C6*)(S7883C5*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(8,4), "S7883C12");
    /*is_ambiguous_... S7883C23::S7883C6 */ AMB_check_base_class_offset(lv, (S7883C6*)(S7883C23*), ABISELECT(8,4), "S7883C12");
    /*is_ambiguous_... S7883C12::S7883C5 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C5*), ABISELECT(112,68), "S7883C12");
    /*is_ambiguous_... S7883C13::S7883C5 */ AMB_check_base_class_offset(lv, (S7883C5*)(S7883C13*), ABISELECT(112,68), "S7883C12");
    /*is_ambiguous_... S7883C12::S7883C17 */ AMB_check_base_class_offset(lv, (S7883C5*)(S7883C17*), ABISELECT(112,68), "S7883C12");
    check_base_class_offset(lv, (S7883C5*)(S7883C17*)(S7883C24*)(S7883C23*), ABISELECT(112,68), "S7883C12");
    /*is_ambiguous_... S7883C14::S7883C3_nt */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C14*), ABISELECT(32,20), "S7883C12");
    /*is_ambiguous_... S7883C12::S7883C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C2*), ABISELECT(88,56), "S7883C12");
    /*is_ambiguous_... S7883C12::S7883C2 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C5*)(S7883C2*), ABISELECT(80,52), "S7883C12");
    /*is_ambiguous_... S7883C12::S7883C2 */ AMB_check_base_class_offset(lv, (S7883C5*)(S7883C2*), ABISELECT(80,52), "S7883C12");
    /*is_ambiguous_... S7883C12::S7883C2 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C2*), 0, "S7883C12");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C16*)(S7883C14*), 0, "S7883C12");
    /*is_ambiguous_... S7883C2::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C2*)(S7883C21*)(S7883C20*), 0, "S7883C12");
    /*is_ambiguous_... S7883C12::S7883C16 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C16*), 0, "S7883C12");
    /*is_ambiguous_... S7883C12::S7883C2 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C2*), ABISELECT(96,60), "S7883C12");
    /*is_ambiguous_... S7883C12::S7883C2 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C2*), ABISELECT(96,60), "S7883C12");
    check_base_class_offset(lv, (S7883C2*)(S7883C15*), ABISELECT(80,52), "S7883C12");
    check_base_class_offset(lv, (S7883C15*)(S7883C14*), 0, "S7883C12");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C17*)(S7883C16*)(S7883C14*), ABISELECT(112,68), "S7883C12");
    /*is_ambiguous_... S7883C12::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C17*)(S7883C16*), ABISELECT(112,68), "S7883C12");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C18*)(S7883C16*)(S7883C14*), ABISELECT(64,40), "S7883C12");
    /*is_ambiguous_... S7883C12::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C18*)(S7883C16*), ABISELECT(64,40), "S7883C12");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C16*)(S7883C14*), ABISELECT(40,24), "S7883C12");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C16*)(S7883C14*), ABISELECT(40,24), "S7883C12");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C16*)(S7883C14*), ABISELECT(40,24), "S7883C12");
    /*is_ambiguous_... S7883C12::S7883C10 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C6*)(S7883C10*), ABISELECT(128,76), "S7883C12");
    /*is_ambiguous_... S7883C12::S7883C10 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C6*)(S7883C10*), ABISELECT(128,76), "S7883C12");
    /*is_ambiguous_... S7883C12::S7883C10 */ AMB_check_base_class_offset(lv, (S7883C6*)(S7883C10*), ABISELECT(128,76), "S7883C12");
    /*is_ambiguous_... S7883C19::S7883C10 */ AMB_check_base_class_offset(lv, (S7883C10*)(S7883C19*)(S7883C14*), ABISELECT(128,76), "S7883C12");
    check_base_class_offset(lv, (S7883C10*)(S7883C23*), ABISELECT(128,76), "S7883C12");
    /*is_ambiguous_... S7883C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(152,92), "S7883C12");
    /*is_ambiguous_... S7883C5::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C5*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(144,88), "S7883C12");
    check_base_class_offset(lv, (S7883C5*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(144,88), "S7883C12");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(160,96), "S7883C12");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(160,96), "S7883C12");
    check_base_class_offset(lv, (S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(144,88), "S7883C12");
    /*is_ambiguous_... S7883C21::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C21*)(S7883C20*), ABISELECT(172,104), "S7883C12");
    check_base_class_offset(lv, (S7883C21*)(S7883C20*), ABISELECT(144,88), "S7883C12");
    check_base_class_offset(lv, (S7883C20*)(S7883C19*)(S7883C14*), ABISELECT(144,88), "S7883C12");
    check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C6*)(S7883C10*)(S7883C22*), ABISELECT(184,112), "S7883C12");
    check_base_class_offset(lv, (S7883C7*)(S7883C6*)(S7883C10*)(S7883C22*), ABISELECT(184,112), "S7883C12");
    check_base_class_offset(lv, (S7883C6*)(S7883C10*)(S7883C22*), ABISELECT(184,112), "S7883C12");
    check_base_class_offset(lv, (S7883C10*)(S7883C22*), ABISELECT(184,112), "S7883C12");
    /*is_ambiguous_... S7883C12::S7883C16 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C16*), ABISELECT(208,128), "S7883C12");
    /*is_ambiguous_... S7883C12::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C16*), ABISELECT(208,128), "S7883C12");
    check_base_class_offset(lv, (S7883C16*)(S7883C22*), ABISELECT(208,128), "S7883C12");
    check_base_class_offset(lv, (S7883C22*)(S7883C19*)(S7883C14*), ABISELECT(184,112), "S7883C12");
    check_base_class_offset(lv, (S7883C19*)(S7883C14*), ABISELECT(64,40), "S7883C12");
    check_base_class_offset(lv, (S7883C14*)(S7883C13*), ABISELECT(32,20), "S7883C12");
    check_base_class_offset(lv, (S4677C27*)(S7883C13*), 0, "S7883C12");
    check_base_class_offset(lv, (S7883C13*), 0, "S7883C12");
    check_base_class_offset(lv, (S7883C17*)(S7883C24*)(S7883C23*), ABISELECT(232,144), "S7883C12");
    /*is_ambiguous_... S7883C24::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C24*)(S7883C23*), ABISELECT(244,152), "S7883C12");
    check_base_class_offset(lv, (S7883C24*)(S7883C23*), ABISELECT(232,144), "S7883C12");
    check_base_class_offset(lv, (S7883C23*), ABISELECT(232,144), "S7883C12");
    test_class_info(&lv, &cd_S7883C12);
    dp->~S7883C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7883C12(Test_S7883C12, "S7883C12", ABISELECT(256,160));

#else // __cplusplus

extern void _ZN8S7883C12C1Ev();
extern void _ZN8S7883C12D1Ev();
Name_Map name_map_S7883C12[] = {
  NSPAIR(_ZN8S7883C12C1Ev),
  NSPAIR(_ZN8S7883C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C6;
extern VTBL_ENTRY _ZTI7S7883C6[];
extern  VTBL_ENTRY _ZTV7S7883C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C5;
extern VTBL_ENTRY _ZTI7S7883C5[];
extern  VTBL_ENTRY _ZTV7S7883C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C5[];
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C5;
extern VTBL_ENTRY _ZTI7S7883C5[];
extern  VTBL_ENTRY _ZTV7S7883C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C5[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C2;
extern VTBL_ENTRY _ZTI7S7883C2[];
extern  VTBL_ENTRY _ZTV7S7883C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C2[];
extern Class_Descriptor cd_S7883C15;
extern VTBL_ENTRY _ZTI8S7883C15[];
extern  VTBL_ENTRY _ZTV8S7883C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C15[];
extern Class_Descriptor cd_S7883C17;
extern VTBL_ENTRY _ZTI8S7883C17[];
extern  VTBL_ENTRY _ZTV8S7883C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C17[];
extern Class_Descriptor cd_S7883C18;
extern VTBL_ENTRY _ZTI8S7883C18[];
extern  VTBL_ENTRY _ZTV8S7883C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C18[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C16;
extern VTBL_ENTRY _ZTI8S7883C16[];
extern  VTBL_ENTRY _ZTV8S7883C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C16[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C6;
extern VTBL_ENTRY _ZTI7S7883C6[];
extern  VTBL_ENTRY _ZTV7S7883C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C6[];
extern Class_Descriptor cd_S7883C10;
extern VTBL_ENTRY _ZTI8S7883C10[];
extern  VTBL_ENTRY _ZTV8S7883C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C10[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C5;
extern VTBL_ENTRY _ZTI7S7883C5[];
extern  VTBL_ENTRY _ZTV7S7883C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C5[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C2;
extern VTBL_ENTRY _ZTI7S7883C2[];
extern  VTBL_ENTRY _ZTV7S7883C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7883C21;
extern VTBL_ENTRY _ZTI8S7883C21[];
extern  VTBL_ENTRY _ZTV8S7883C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C21[];
extern Class_Descriptor cd_S7883C20;
extern VTBL_ENTRY _ZTI8S7883C20[];
extern  VTBL_ENTRY _ZTV8S7883C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C20[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C6;
extern VTBL_ENTRY _ZTI7S7883C6[];
extern  VTBL_ENTRY _ZTV7S7883C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C6[];
extern Class_Descriptor cd_S7883C10;
extern VTBL_ENTRY _ZTI8S7883C10[];
extern  VTBL_ENTRY _ZTV8S7883C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C10[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C16;
extern VTBL_ENTRY _ZTI8S7883C16[];
extern  VTBL_ENTRY _ZTV8S7883C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C16[];
extern Class_Descriptor cd_S7883C22;
extern VTBL_ENTRY _ZTI8S7883C22[];
extern  VTBL_ENTRY _ZTV8S7883C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C22[];
extern Class_Descriptor cd_S7883C19;
extern VTBL_ENTRY _ZTI8S7883C19[];
extern  VTBL_ENTRY _ZTV8S7883C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C19[];
extern Class_Descriptor cd_S7883C14;
extern VTBL_ENTRY _ZTI8S7883C14[];
extern  VTBL_ENTRY _ZTV8S7883C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C14[];
extern Class_Descriptor cd_S4677C27;
extern VTBL_ENTRY _ZTI8S4677C27[];
extern Class_Descriptor cd_S7883C13;
extern VTBL_ENTRY _ZTI8S7883C13[];
extern  VTBL_ENTRY _ZTV8S7883C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C13[];
extern Class_Descriptor cd_S7883C17;
extern VTBL_ENTRY _ZTI8S7883C17[];
extern  VTBL_ENTRY _ZTV8S7883C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C17[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7883C24;
extern VTBL_ENTRY _ZTI8S7883C24[];
extern  VTBL_ENTRY _ZTV8S7883C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C24[];
extern Class_Descriptor cd_S7883C23;
extern VTBL_ENTRY _ZTI8S7883C23[];
extern  VTBL_ENTRY _ZTV8S7883C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C23[];
static Base_Class bases_S7883C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    ABISELECT(112,68), //bcp->offset
    -1, //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
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7883C7,    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
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7883C6,    ABISELECT(8,4), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7883C5,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7883C3_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
    25, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(88,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7883C5,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4677C37,    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
    13, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(96,60), //bcp->offset
    83, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7883C2,    ABISELECT(80,52), //bcp->offset
    74, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7883C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    43, //immediately_derived
  0, 1},
  {&cd_S7883C17,    ABISELECT(112,68), //bcp->offset
    90, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7883C18,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    19, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7883C16,    ABISELECT(40,24), //bcp->offset
    46, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7883C6,    ABISELECT(128,76), //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
    12, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7883C10,    ABISELECT(128,76), //bcp->offset
    99, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(152,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
    30, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7883C5,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(160,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(160,96), //bcp->offset
    115, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7883C2,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(172,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
    32, //immediately_derived
  0, 0},
  {&cd_S7883C21,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    104, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7883C20,    ABISELECT(144,88), //bcp->offset
    106, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(184,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(184,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    123, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7883C6,    ABISELECT(184,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    122, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7883C10,    ABISELECT(184,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //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
    41, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(208,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(208,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //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
    40, //immediately_derived
  0, 0},
  {&cd_S7883C16,    ABISELECT(208,128), //bcp->offset
    135, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    133, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S7883C22,    ABISELECT(184,112), //bcp->offset
    122, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7883C19,    ABISELECT(64,40), //bcp->offset
    58, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S7883C14,    ABISELECT(32,20), //bcp->offset
    28, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S4677C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S7883C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7883C17,    ABISELECT(232,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    143, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(244,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
    48, //immediately_derived
  0, 0},
  {&cd_S7883C24,    ABISELECT(232,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    142, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S7883C23,    ABISELECT(232,144), //bcp->offset
    147, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    141, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7883C12[];
extern void ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev)();
extern void _ZN8S7883C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev)();
extern void _ZN8S7883C12D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev)();
extern void ABISELECT(_ZThn8_N8S7883C12D1Ev,_ZThn4_N8S7883C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev)();
extern void ABISELECT(_ZThn8_N8S7883C12D0Ev,_ZThn4_N8S7883C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7883C12D1Ev,_ZTv0_n64_N8S7883C12D1Ev)();
extern void ABISELECT(_ZThn32_N8S7883C12D1Ev,_ZThn20_N8S7883C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7883C12D0Ev,_ZTv0_n64_N8S7883C12D0Ev)();
extern void ABISELECT(_ZThn32_N8S7883C12D0Ev,_ZThn20_N8S7883C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev)();
extern void ABISELECT(_ZThn40_N8S7883C12D1Ev,_ZThn24_N8S7883C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev)();
extern void ABISELECT(_ZThn40_N8S7883C12D0Ev,_ZThn24_N8S7883C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7883C12D1Ev,_ZTv0_n16_N8S7883C12D1Ev)();
extern void ABISELECT(_ZThn64_N8S7883C12D1Ev,_ZThn40_N8S7883C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7883C12D0Ev,_ZTv0_n16_N8S7883C12D0Ev)();
extern void ABISELECT(_ZThn64_N8S7883C12D0Ev,_ZThn40_N8S7883C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev)();
extern void ABISELECT(_ZThn80_N8S7883C12D1Ev,_ZThn52_N8S7883C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev)();
extern void ABISELECT(_ZThn80_N8S7883C12D0Ev,_ZThn52_N8S7883C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev)();
extern void ABISELECT(_ZThn96_N8S7883C12D1Ev,_ZThn60_N8S7883C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev)();
extern void ABISELECT(_ZThn96_N8S7883C12D0Ev,_ZThn60_N8S7883C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev)();
extern void ABISELECT(_ZThn112_N8S7883C12D1Ev,_ZThn68_N8S7883C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev)();
extern void ABISELECT(_ZThn112_N8S7883C12D0Ev,_ZThn68_N8S7883C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev)();
extern void ABISELECT(_ZThn128_N8S7883C12D1Ev,_ZThn76_N8S7883C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev)();
extern void ABISELECT(_ZThn128_N8S7883C12D0Ev,_ZThn76_N8S7883C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev)();
extern void ABISELECT(_ZThn144_N8S7883C12D1Ev,_ZThn88_N8S7883C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev)();
extern void ABISELECT(_ZThn144_N8S7883C12D0Ev,_ZThn88_N8S7883C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev)();
extern void ABISELECT(_ZThn160_N8S7883C12D1Ev,_ZThn96_N8S7883C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev)();
extern void ABISELECT(_ZThn160_N8S7883C12D0Ev,_ZThn96_N8S7883C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev)();
extern void ABISELECT(_ZThn184_N8S7883C12D1Ev,_ZThn112_N8S7883C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev)();
extern void ABISELECT(_ZThn184_N8S7883C12D0Ev,_ZThn112_N8S7883C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev)();
extern void ABISELECT(_ZThn208_N8S7883C12D1Ev,_ZThn128_N8S7883C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev)();
extern void ABISELECT(_ZThn208_N8S7883C12D0Ev,_ZThn128_N8S7883C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev)();
extern void ABISELECT(_ZThn232_N8S7883C12D1Ev,_ZThn144_N8S7883C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev)();
extern void ABISELECT(_ZThn232_N8S7883C12D0Ev,_ZThn144_N8S7883C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7883C12[] = {
  ABISELECT(232,144),
  0,
  ABISELECT(208,128),
  ABISELECT(184,112),
  ABISELECT(144,88),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(112,68),
  0,
  ABISELECT(32,20),
  ABISELECT(112,68),
  0,
  ABISELECT(24,16),
  ABISELECT(8,4),
  ABISELECT(112,68),
  ABISELECT(80,52),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev),
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7883C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(176,108),
  ABISELECT(152,92),
  ABISELECT(112,68),
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(-32,-20),
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(80,48),
  ABISELECT(48,32),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7883C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7883C12D1Ev,_ZTv0_n64_N8S7883C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7883C12D0Ev,_ZTv0_n64_N8S7883C12D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(24,16),
  ABISELECT(-32,-20),
  ABISELECT(72,44),
  ABISELECT(72,44),
  ABISELECT(-16,-8),
  ABISELECT(72,44),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7883C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev),
  0,
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(144,88),
  ABISELECT(120,72),
  ABISELECT(-64,-40),
  ABISELECT(-56,-36),
  ABISELECT(80,48),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(-64,-40),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7883C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C12D1Ev,_ZTv0_n16_N8S7883C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C12D0Ev,_ZTv0_n16_N8S7883C12D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(-56,-36),
  ABISELECT(32,16),
  ABISELECT(-72,-48),
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S7883C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev),
  ABISELECT(-72,-44),
  ABISELECT(16,8),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S7883C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev),
  0,
  ABISELECT(-88,-52),
  0,
  ABISELECT(-104,-64),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S7883C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev),
  ABISELECT(-104,-60),
  ABISELECT(-16,-8),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S7883C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev),
  ABISELECT(-144,-88),
  ABISELECT(-120,-72),
  ABISELECT(-32,-20),
  ABISELECT(-136,-84),
  ABISELECT(-144,-88),
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI8S7883C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev),
  ABISELECT(-136,-80),
  ABISELECT(-48,-28),
  ABISELECT(-160,-96),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S7883C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev),
  ABISELECT(-184,-112),
  ABISELECT(-120,-72),
  ABISELECT(-176,-108),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(24,16),
  ABISELECT(-160,-96),
  ABISELECT(-72,-44),
  ABISELECT(-184,-112),
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI8S7883C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev),
  ABISELECT(-208,-128),
  ABISELECT(-144,-88),
  ABISELECT(-200,-124),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-184,-112),
  ABISELECT(-96,-60),
  ABISELECT(-208,-128),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S7883C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev),
  ABISELECT(-104,-68),
  ABISELECT(-120,-76),
  ABISELECT(-208,-128),
  ABISELECT(-120,-76),
  ABISELECT(-224,-140),
  ABISELECT(-232,-144),
  ABISELECT(-232,-144),
  (VTBL_ENTRY)&(_ZTI8S7883C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev),
};
extern VTBL_ENTRY _ZTV8S7883C12[];
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void _ZN8S7883C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
extern void _ZN8S7883C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C13__8S7883C12[] = {
  0,
  ABISELECT(208,128),
  ABISELECT(184,112),
  ABISELECT(144,88),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(112,68),
  0,
  ABISELECT(32,20),
  ABISELECT(112,68),
  0,
  ABISELECT(24,16),
  ABISELECT(8,4),
  ABISELECT(112,68),
  ABISELECT(80,52),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn112_N8S7883C13D1Ev,_ZThn68_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn112_N8S7883C13D0Ev,_ZThn68_N8S7883C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C17__8S7883C13__8S7883C12[] = {
  0,
  ABISELECT(-88,-52),
  0,
  ABISELECT(-104,-64),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn8_N8S7883C13D1Ev,_ZThn4_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn8_N8S7883C13D0Ev,_ZThn4_N8S7883C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C13__8S7883C12[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N8S7883C13D1Ev,_ZTv0_n64_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn32_N8S7883C13D1Ev,_ZThn20_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7883C13D0Ev,_ZTv0_n64_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn32_N8S7883C13D0Ev,_ZThn20_N8S7883C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C14__8S7883C13__8S7883C12[] = {
  ABISELECT(-32,-20),
  ABISELECT(176,108),
  ABISELECT(152,92),
  ABISELECT(112,68),
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(-32,-20),
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(80,48),
  ABISELECT(48,32),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7883C13D1Ev,_ZTv0_n64_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7883C13D0Ev,_ZTv0_n64_N8S7883C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn80_N8S7883C13D1Ev,_ZThn52_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn80_N8S7883C13D0Ev,_ZThn52_N8S7883C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C2__8S7883C13__8S7883C12[] = {
  ABISELECT(-80,-52),
  ABISELECT(-56,-36),
  ABISELECT(32,16),
  ABISELECT(-72,-48),
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn96_N8S7883C13D1Ev,_ZThn60_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn96_N8S7883C13D0Ev,_ZThn60_N8S7883C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C2__A1__8S7883C13__8S7883C12[] = {
  ABISELECT(-72,-44),
  ABISELECT(16,8),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn40_N8S7883C13D1Ev,_ZThn24_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn40_N8S7883C13D0Ev,_ZThn24_N8S7883C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C168S7883C14__8S7883C13__8S7883C12[] = {
  ABISELECT(-40,-24),
  ABISELECT(24,16),
  ABISELECT(-32,-20),
  ABISELECT(72,44),
  ABISELECT(72,44),
  ABISELECT(-16,-8),
  ABISELECT(72,44),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7883C13D1Ev,_ZTv0_n16_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn64_N8S7883C13D1Ev,_ZThn40_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7883C13D0Ev,_ZTv0_n16_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn64_N8S7883C13D0Ev,_ZThn40_N8S7883C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C198S7883C14__8S7883C13__8S7883C12[] = {
  0,
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(144,88),
  ABISELECT(120,72),
  ABISELECT(-64,-40),
  ABISELECT(-56,-36),
  ABISELECT(80,48),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(-64,-40),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C13D1Ev,_ZTv0_n16_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C13D0Ev,_ZTv0_n16_N8S7883C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn128_N8S7883C13D1Ev,_ZThn76_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn128_N8S7883C13D0Ev,_ZThn76_N8S7883C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C10__8S7883C13__8S7883C12[] = {
  ABISELECT(-104,-60),
  ABISELECT(-16,-8),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn144_N8S7883C13D1Ev,_ZThn88_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn144_N8S7883C13D0Ev,_ZThn88_N8S7883C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C20__8S7883C13__8S7883C12[] = {
  ABISELECT(-144,-88),
  ABISELECT(-120,-72),
  ABISELECT(-32,-20),
  ABISELECT(-136,-84),
  ABISELECT(-144,-88),
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn160_N8S7883C13D1Ev,_ZThn96_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn160_N8S7883C13D0Ev,_ZThn96_N8S7883C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C28S7883C218S7883C20__A4__8S7883C13__8S7883C12[] = {
  ABISELECT(-136,-80),
  ABISELECT(-48,-28),
  ABISELECT(-160,-96),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn184_N8S7883C13D1Ev,_ZThn112_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn184_N8S7883C13D0Ev,_ZThn112_N8S7883C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C22__8S7883C13__8S7883C12[] = {
  ABISELECT(-184,-112),
  ABISELECT(-120,-72),
  ABISELECT(-176,-108),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(24,16),
  ABISELECT(-160,-96),
  ABISELECT(-72,-44),
  ABISELECT(-184,-112),
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn208_N8S7883C13D1Ev,_ZThn128_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn208_N8S7883C13D0Ev,_ZThn128_N8S7883C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C16__A1__8S7883C13__8S7883C12[] = {
  ABISELECT(-208,-128),
  ABISELECT(-144,-88),
  ABISELECT(-200,-124),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-184,-112),
  ABISELECT(-96,-60),
  ABISELECT(-208,-128),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void _ZN7S7883C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void _ZN7S7883C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C5__8S7883C12[] = {
  ABISELECT(-88,-52),
  0,
  ABISELECT(-104,-64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C5__8S7883C12[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(104,64),
  ABISELECT(104,64),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void _ZN7S7883C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
extern void _ZN7S7883C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C12[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C6__8S7883C12[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZThn104_N7S7883C7D1Ev,_ZThn64_N7S7883C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void ABISELECT(_ZThn104_N7S7883C7D0Ev,_ZThn64_N7S7883C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C6__8S7883C12[] = {
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void ABISELECT(_ZThn104_N7S7883C6D1Ev,_ZThn64_N7S7883C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
extern void ABISELECT(_ZThn104_N7S7883C6D0Ev,_ZThn64_N7S7883C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C6__8S7883C12[] = {
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void _ZN8S7883C14D1Ev();
extern void _ZN8S7883C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7883C14__8S7883C12[] = {
  ABISELECT(176,108),
  ABISELECT(152,92),
  ABISELECT(112,68),
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(-32,-20),
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(80,48),
  ABISELECT(48,32),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&_ZN8S7883C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7883C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void _ZN8S7883C16D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
extern void _ZN8S7883C16D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C168S7883C14__8S7883C12[] = {
  ABISELECT(-40,-24),
  ABISELECT(24,16),
  ABISELECT(-32,-20),
  ABISELECT(72,44),
  ABISELECT(72,44),
  ABISELECT(-16,-8),
  ABISELECT(72,44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C78S7883C168S7883C14__A2__8S7883C12[] = {
  ABISELECT(-16,-8),
  ABISELECT(72,44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZThn72_N7S7883C7D1Ev,_ZThn44_N7S7883C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void ABISELECT(_ZThn72_N7S7883C7D0Ev,_ZThn44_N7S7883C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C78S7883C168S7883C14__A2__8S7883C12[] = {
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void ABISELECT(_ZThn72_N8S7883C16D1Ev,_ZThn44_N8S7883C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
extern void ABISELECT(_ZThn72_N8S7883C16D0Ev,_ZThn44_N8S7883C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C17__8S7883C168S7883C14__8S7883C12[] = {
  0,
  ABISELECT(-88,-52),
  0,
  ABISELECT(-104,-64),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C168S7883C14__8S7883C12[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7883C16D1Ev,_ZTv0_n16_N8S7883C16D1Ev)();
extern void ABISELECT(_ZThn24_N8S7883C16D1Ev,_ZThn16_N8S7883C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7883C16D0Ev,_ZTv0_n16_N8S7883C16D0Ev)();
extern void ABISELECT(_ZThn24_N8S7883C16D0Ev,_ZThn16_N8S7883C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C18__8S7883C168S7883C14__8S7883C12[] = {
  ABISELECT(-24,-16),
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C16D1Ev,_ZTv0_n16_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C16D0Ev,_ZTv0_n16_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7883C19D1Ev,_ZTv0_n16_N8S7883C19D1Ev)();
extern void _ZN8S7883C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7883C19D0Ev,_ZTv0_n16_N8S7883C19D0Ev)();
extern void _ZN8S7883C19D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C198S7883C14__8S7883C12[] = {
  0,
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(144,88),
  ABISELECT(120,72),
  ABISELECT(-64,-40),
  ABISELECT(-56,-36),
  ABISELECT(80,48),
  ABISELECT(64,36),
  ABISELECT(48,28),
  0,
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C19D1Ev,_ZTv0_n16_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C19D0Ev,_ZTv0_n16_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn48_N8S7883C19D1Ev,_ZThn28_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn48_N8S7883C19D0Ev,_ZThn28_N8S7883C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C17__8S7883C198S7883C14__8S7883C12[] = {
  0,
  ABISELECT(-88,-52),
  0,
  ABISELECT(-104,-64),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn64_N8S7883C19D1Ev,_ZThn36_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn64_N8S7883C19D0Ev,_ZThn36_N8S7883C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C10__8S7883C198S7883C14__8S7883C12[] = {
  ABISELECT(-104,-60),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn80_N8S7883C19D1Ev,_ZThn48_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn80_N8S7883C19D0Ev,_ZThn48_N8S7883C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C20__8S7883C198S7883C14__8S7883C12[] = {
  ABISELECT(-144,-88),
  ABISELECT(-120,-72),
  ABISELECT(-32,-20),
  ABISELECT(-136,-84),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__A1__8S7883C198S7883C14__8S7883C12[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(56,36),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn96_N8S7883C19D1Ev,_ZThn56_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn96_N8S7883C19D0Ev,_ZThn56_N8S7883C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C28S7883C218S7883C20__A2__8S7883C198S7883C14__8S7883C12[] = {
  ABISELECT(-136,-80),
  ABISELECT(-48,-28),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn120_N8S7883C19D1Ev,_ZThn72_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn120_N8S7883C19D0Ev,_ZThn72_N8S7883C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C22__8S7883C198S7883C14__8S7883C12[] = {
  ABISELECT(-184,-112),
  ABISELECT(-120,-72),
  ABISELECT(-176,-108),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(24,16),
  ABISELECT(-160,-96),
  ABISELECT(-72,-44),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn144_N8S7883C19D1Ev,_ZThn88_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn144_N8S7883C19D0Ev,_ZThn88_N8S7883C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C16__8S7883C198S7883C14__8S7883C12[] = {
  ABISELECT(-208,-128),
  ABISELECT(-144,-88),
  ABISELECT(-200,-124),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-184,-112),
  ABISELECT(-96,-60),
  ABISELECT(-144,-88),
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7883C15__8S7883C14__8S7883C12[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(8,4),
  ABISELECT(112,68),
  ABISELECT(80,52),
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S7883C14D1Ev,_ZThn32_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn48_N8S7883C14D0Ev,_ZThn32_N8S7883C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C2__8S7883C14__8S7883C12[] = {
  ABISELECT(-80,-52),
  ABISELECT(-56,-36),
  ABISELECT(32,16),
  ABISELECT(-72,-48),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn80_N8S7883C14D1Ev,_ZThn48_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn80_N8S7883C14D0Ev,_ZThn48_N8S7883C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C17__8S7883C14__8S7883C12[] = {
  0,
  ABISELECT(-88,-52),
  0,
  ABISELECT(-104,-64),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C14__8S7883C12[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S7883C14D1Ev,_ZThn40_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn64_N8S7883C14D0Ev,_ZThn40_N8S7883C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C2__A1__8S7883C14__8S7883C12[] = {
  ABISELECT(-72,-44),
  ABISELECT(16,8),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn8_N8S7883C14D1Ev,_ZThn4_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn8_N8S7883C14D0Ev,_ZThn4_N8S7883C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C16__A__8S7883C14__8S7883C12[] = {
  ABISELECT(-40,-24),
  ABISELECT(24,16),
  ABISELECT(-32,-20),
  ABISELECT(72,44),
  ABISELECT(72,44),
  ABISELECT(-16,-8),
  ABISELECT(72,44),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7883C14D1Ev,_ZTv0_n16_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn32_N8S7883C14D1Ev,_ZThn20_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7883C14D0Ev,_ZTv0_n16_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn32_N8S7883C14D0Ev,_ZThn20_N8S7883C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C19__8S7883C14__8S7883C12[] = {
  0,
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(144,88),
  ABISELECT(120,72),
  ABISELECT(-64,-40),
  ABISELECT(-56,-36),
  ABISELECT(80,48),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(-32,-20),
  ABISELECT(-40,-24),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C14D1Ev,_ZTv0_n16_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C14D0Ev,_ZTv0_n16_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn96_N8S7883C14D1Ev,_ZThn56_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn96_N8S7883C14D0Ev,_ZThn56_N8S7883C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C10__8S7883C14__8S7883C12[] = {
  ABISELECT(-104,-60),
  ABISELECT(-16,-8),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn112_N8S7883C14D1Ev,_ZThn68_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn112_N8S7883C14D0Ev,_ZThn68_N8S7883C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C20__8S7883C14__8S7883C12[] = {
  ABISELECT(-144,-88),
  ABISELECT(-120,-72),
  ABISELECT(-32,-20),
  ABISELECT(-136,-84),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn128_N8S7883C14D1Ev,_ZThn76_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn128_N8S7883C14D0Ev,_ZThn76_N8S7883C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C28S7883C218S7883C20__A4__8S7883C14__8S7883C12[] = {
  ABISELECT(-136,-80),
  ABISELECT(-48,-28),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn152_N8S7883C14D1Ev,_ZThn92_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn152_N8S7883C14D0Ev,_ZThn92_N8S7883C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C22__8S7883C14__8S7883C12[] = {
  ABISELECT(-184,-112),
  ABISELECT(-120,-72),
  ABISELECT(-176,-108),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(24,16),
  ABISELECT(-160,-96),
  ABISELECT(-72,-44),
  ABISELECT(-152,-92),
  ABISELECT(-152,-92),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn176_N8S7883C14D1Ev,_ZThn108_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn176_N8S7883C14D0Ev,_ZThn108_N8S7883C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C16__A1__8S7883C14__8S7883C12[] = {
  ABISELECT(-208,-128),
  ABISELECT(-144,-88),
  ABISELECT(-200,-124),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-184,-112),
  ABISELECT(-96,-60),
  ABISELECT(-176,-108),
  ABISELECT(-176,-108),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev)();
extern void _ZN8S7883C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev)();
extern void _ZN8S7883C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C15__8S7883C12[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(8,4),
  ABISELECT(112,68),
  ABISELECT(80,52),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev)();
extern void ABISELECT(_ZThn80_N8S7883C15D1Ev,_ZThn52_N8S7883C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev)();
extern void ABISELECT(_ZThn80_N8S7883C15D0Ev,_ZThn52_N8S7883C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C2__8S7883C15__8S7883C12[] = {
  ABISELECT(-80,-52),
  ABISELECT(-56,-36),
  ABISELECT(32,16),
  ABISELECT(-72,-48),
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S7883C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev)();
extern void ABISELECT(_ZThn112_N8S7883C15D1Ev,_ZThn68_N8S7883C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev)();
extern void ABISELECT(_ZThn112_N8S7883C15D0Ev,_ZThn68_N8S7883C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C15__8S7883C12[] = {
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S7883C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev)();
extern void ABISELECT(_ZThn8_N8S7883C15D1Ev,_ZThn4_N8S7883C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev)();
extern void ABISELECT(_ZThn8_N8S7883C15D0Ev,_ZThn4_N8S7883C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C15__8S7883C12[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7883C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev)();
extern void ABISELECT(_ZThn96_N8S7883C15D1Ev,_ZThn60_N8S7883C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev)();
extern void ABISELECT(_ZThn96_N8S7883C15D0Ev,_ZThn60_N8S7883C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C2__A1__8S7883C15__8S7883C12[] = {
  ABISELECT(-72,-44),
  ABISELECT(16,8),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S7883C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void _ZN7S7883C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void _ZN7S7883C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C2__8S7883C12[] = {
  ABISELECT(-80,-52),
  ABISELECT(-56,-36),
  ABISELECT(32,16),
  ABISELECT(-72,-48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void _ZN7S7883C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void _ZN7S7883C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C57S7883C2__A1__8S7883C12[] = {
  ABISELECT(-56,-36),
  ABISELECT(32,16),
  ABISELECT(-72,-48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C57S7883C2__A1__8S7883C12[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(72,48),
  ABISELECT(72,48),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7883C5D1Ev,_ZThn16_N7S7883C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7883C5D0Ev,_ZThn16_N7S7883C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C57S7883C2__A1__8S7883C12[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C2__A1__8S7883C12[] = {
  ABISELECT(-72,-44),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S7883C7D1Ev,_ZThn8_N7S7883C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void ABISELECT(_ZThn16_N7S7883C7D0Ev,_ZThn8_N7S7883C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C2__A1__8S7883C12[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZThn32_N7S7883C2D1Ev,_ZThn16_N7S7883C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void ABISELECT(_ZThn32_N7S7883C2D0Ev,_ZThn16_N7S7883C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C2__8S7883C12[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C2__8S7883C12[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(72,48),
  ABISELECT(72,48),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S7883C2D1Ev,_ZThn8_N7S7883C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void ABISELECT(_ZThn16_N7S7883C2D0Ev,_ZThn8_N7S7883C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C7__A1__7S7883C2__8S7883C12[] = {
  ABISELECT(-72,-44),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev)();
extern void _ZN8S7883C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev)();
extern void _ZN8S7883C17D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C17__8S7883C12[] = {
  0,
  ABISELECT(-88,-52),
  0,
  ABISELECT(-104,-64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C17__8S7883C12[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(104,64),
  ABISELECT(104,64),
  (VTBL_ENTRY)&(_ZTI8S7883C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev),
};
extern void _ZN8S7883C18D1Ev();
extern void _ZN8S7883C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7883C18__8S7883C12[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C18[0]),
  (VTBL_ENTRY)&_ZN8S7883C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7883C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev)();
extern void _ZN8S7883C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev)();
extern void _ZN8S7883C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C10__8S7883C12[] = {
  ABISELECT(-104,-60),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void _ZN7S7883C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
extern void _ZN7S7883C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C68S7883C10__A1__8S7883C12[] = {
  ABISELECT(-104,-60),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C68S7883C10__A3__8S7883C12[] = {
  ABISELECT(-104,-60),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C68S7883C10__A3__8S7883C12[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C68S7883C10__A1__8S7883C12[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C10__8S7883C12[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7883C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev)();
extern void _ZN8S7883C20D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev)();
extern void _ZN8S7883C20D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C20__8S7883C12[] = {
  ABISELECT(-144,-88),
  ABISELECT(-120,-72),
  ABISELECT(-32,-20),
  ABISELECT(-136,-84),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev)();
extern void _ZN8S7883C21D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev)();
extern void _ZN8S7883C21D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C218S7883C20__8S7883C12[] = {
  ABISELECT(-144,-88),
  ABISELECT(-120,-72),
  ABISELECT(-32,-20),
  ABISELECT(-136,-84),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void _ZN7S7883C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void _ZN7S7883C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C28S7883C218S7883C20__A1__8S7883C12[] = {
  ABISELECT(-144,-88),
  ABISELECT(-120,-72),
  ABISELECT(-32,-20),
  ABISELECT(-136,-84),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void _ZN7S7883C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void _ZN7S7883C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C57S7883C28S7883C218S7883C20__A2__8S7883C12[] = {
  ABISELECT(-120,-72),
  ABISELECT(-32,-20),
  ABISELECT(-136,-84),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C57S7883C28S7883C218S7883C20__A2__8S7883C12[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(136,84),
  ABISELECT(136,84),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C57S7883C28S7883C218S7883C20__A2__8S7883C12[] = {
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C28S7883C218S7883C20__A4__8S7883C12[] = {
  ABISELECT(-136,-80),
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C28S7883C218S7883C20__A4__8S7883C12[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C28S7883C218S7883C20__A1__8S7883C12[] = {
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C28S7883C218S7883C20__A1__8S7883C12[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(136,84),
  ABISELECT(136,84),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S7883C2D1Ev,_ZThn8_N7S7883C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void ABISELECT(_ZThn16_N7S7883C2D0Ev,_ZThn8_N7S7883C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C7__A1__7S7883C28S7883C218S7883C20__A1__8S7883C12[] = {
  ABISELECT(-136,-80),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C218S7883C20__8S7883C12[] = {
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S7883C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C218S7883C20__8S7883C12[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(136,84),
  ABISELECT(136,84),
  (VTBL_ENTRY)&(_ZTI8S7883C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev)();
extern void ABISELECT(_ZThn16_N8S7883C21D1Ev,_ZThn8_N8S7883C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev)();
extern void ABISELECT(_ZThn16_N8S7883C21D0Ev,_ZThn8_N8S7883C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C2__A1__8S7883C218S7883C20__8S7883C12[] = {
  ABISELECT(-136,-80),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7883C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C20__8S7883C12[] = {
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S7883C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C20__8S7883C12[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(136,84),
  ABISELECT(136,84),
  (VTBL_ENTRY)&(_ZTI8S7883C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev)();
extern void ABISELECT(_ZThn16_N8S7883C20D1Ev,_ZThn8_N8S7883C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev)();
extern void ABISELECT(_ZThn16_N8S7883C20D0Ev,_ZThn8_N8S7883C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C28S7883C21__A1__8S7883C20__8S7883C12[] = {
  ABISELECT(-136,-80),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7883C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev)();
extern void _ZN8S7883C22D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev)();
extern void _ZN8S7883C22D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C22__8S7883C12[] = {
  ABISELECT(-184,-112),
  ABISELECT(-120,-72),
  ABISELECT(-176,-108),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(24,16),
  ABISELECT(-160,-96),
  ABISELECT(-72,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev)();
extern void _ZN8S7883C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev)();
extern void _ZN8S7883C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C108S7883C22__A1__8S7883C12[] = {
  ABISELECT(-160,-96),
  ABISELECT(-72,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void _ZN7S7883C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
extern void _ZN7S7883C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C68S7883C108S7883C22__A2__8S7883C12[] = {
  ABISELECT(-160,-96),
  ABISELECT(-72,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C68S7883C108S7883C22__A5__8S7883C12[] = {
  ABISELECT(-160,-96),
  ABISELECT(-72,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C68S7883C108S7883C22__A5__8S7883C12[] = {
  ABISELECT(72,44),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C68S7883C108S7883C22__A2__8S7883C12[] = {
  ABISELECT(72,44),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C108S7883C22__A1__8S7883C12[] = {
  ABISELECT(72,44),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI8S7883C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7883C17__8S7883C22__8S7883C12[] = {
  0,
  ABISELECT(-88,-52),
  0,
  ABISELECT(-104,-64),
  ABISELECT(72,44),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev)();
extern void ABISELECT(_ZThn24_N8S7883C22D1Ev,_ZThn16_N8S7883C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev)();
extern void ABISELECT(_ZThn24_N8S7883C22D0Ev,_ZThn16_N8S7883C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C16__8S7883C22__8S7883C12[] = {
  ABISELECT(-208,-128),
  ABISELECT(-144,-88),
  ABISELECT(-200,-124),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-184,-112),
  ABISELECT(-96,-60),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__A1__8S7883C22__8S7883C12[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(176,108),
  ABISELECT(176,108),
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7883C22D1Ev,_ZTv0_n16_N8S7883C22D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7883C22D0Ev,_ZTv0_n16_N8S7883C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7883C18__8S7883C22__8S7883C12[] = {
  ABISELECT(120,72),
  ABISELECT(-40,-24),
  ABISELECT(120,72),
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C22D1Ev,_ZTv0_n16_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C22D0Ev,_ZTv0_n16_N8S7883C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void _ZN8S7883C16D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
extern void _ZN8S7883C16D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C16__A1__8S7883C12[] = {
  ABISELECT(-208,-128),
  ABISELECT(-144,-88),
  ABISELECT(-200,-124),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-184,-112),
  ABISELECT(-96,-60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C78S7883C16__A6__8S7883C12[] = {
  ABISELECT(-184,-112),
  ABISELECT(-96,-60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C78S7883C16__A6__8S7883C12[] = {
  ABISELECT(96,60),
  ABISELECT(96,60),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7883C17__8S7883C16__A1__8S7883C12[] = {
  0,
  ABISELECT(-88,-52),
  0,
  ABISELECT(-104,-64),
  ABISELECT(96,60),
  ABISELECT(96,60),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C16__A1__8S7883C12[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(200,124),
  ABISELECT(200,124),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7883C16D1Ev,_ZTv0_n16_N8S7883C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7883C16D0Ev,_ZTv0_n16_N8S7883C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7883C18__8S7883C16__A1__8S7883C12[] = {
  ABISELECT(144,88),
  ABISELECT(-40,-24),
  ABISELECT(144,88),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C16D1Ev,_ZTv0_n16_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C16D0Ev,_ZTv0_n16_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C23D1Ev,_ZTv0_n12_N8S7883C23D1Ev)();
extern void _ZN8S7883C23D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C23D0Ev,_ZTv0_n12_N8S7883C23D0Ev)();
extern void _ZN8S7883C23D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C23__8S7883C12[] = {
  ABISELECT(-104,-68),
  ABISELECT(-120,-76),
  ABISELECT(-208,-128),
  ABISELECT(-120,-76),
  ABISELECT(-224,-140),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C23D1Ev,_ZTv0_n12_N8S7883C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C23D0Ev,_ZTv0_n12_N8S7883C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C24D1Ev,_ZTv0_n12_N8S7883C24D1Ev)();
extern void _ZN8S7883C24D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C24D0Ev,_ZTv0_n12_N8S7883C24D0Ev)();
extern void _ZN8S7883C24D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C248S7883C23__8S7883C12[] = {
  ABISELECT(-120,-76),
  ABISELECT(-208,-128),
  ABISELECT(-120,-76),
  ABISELECT(-224,-140),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C24D1Ev,_ZTv0_n12_N8S7883C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C24D0Ev,_ZTv0_n12_N8S7883C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev)();
extern void _ZN8S7883C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev)();
extern void _ZN8S7883C17D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C178S7883C248S7883C23__A1__8S7883C12[] = {
  ABISELECT(-120,-76),
  ABISELECT(-208,-128),
  ABISELECT(-120,-76),
  ABISELECT(-224,-140),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C5__8S7883C178S7883C248S7883C23__A1__8S7883C12[] = {
  ABISELECT(-88,-52),
  0,
  ABISELECT(-104,-64),
  ABISELECT(120,76),
  ABISELECT(120,76),
  (VTBL_ENTRY)&(_ZTI8S7883C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C178S7883C248S7883C23__A1__8S7883C12[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(224,140),
  ABISELECT(224,140),
  (VTBL_ENTRY)&(_ZTI8S7883C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C24D1Ev,_ZTv0_n12_N8S7883C24D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C24D0Ev,_ZTv0_n12_N8S7883C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C5__8S7883C248S7883C23__8S7883C12[] = {
  ABISELECT(-88,-52),
  0,
  ABISELECT(-104,-64),
  ABISELECT(120,76),
  ABISELECT(120,76),
  (VTBL_ENTRY)&(_ZTI8S7883C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C24D1Ev,_ZTv0_n12_N8S7883C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C24D0Ev,_ZTv0_n12_N8S7883C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C24D1Ev,_ZTv0_n12_N8S7883C24D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C24D0Ev,_ZTv0_n12_N8S7883C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C248S7883C23__8S7883C12[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(224,140),
  ABISELECT(224,140),
  (VTBL_ENTRY)&(_ZTI8S7883C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C24D1Ev,_ZTv0_n12_N8S7883C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C24D0Ev,_ZTv0_n12_N8S7883C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C23D1Ev,_ZTv0_n12_N8S7883C23D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C23D0Ev,_ZTv0_n12_N8S7883C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C23__8S7883C12[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(224,140),
  ABISELECT(224,140),
  (VTBL_ENTRY)&(_ZTI8S7883C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C23D1Ev,_ZTv0_n12_N8S7883C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C23D0Ev,_ZTv0_n12_N8S7883C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C23D1Ev,_ZTv0_n12_N8S7883C23D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C23D0Ev,_ZTv0_n12_N8S7883C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C5__8S7883C23__8S7883C12[] = {
  ABISELECT(-88,-52),
  0,
  ABISELECT(-104,-64),
  ABISELECT(120,76),
  ABISELECT(120,76),
  (VTBL_ENTRY)&(_ZTI8S7883C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C23D1Ev,_ZTv0_n12_N8S7883C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C23D0Ev,_ZTv0_n12_N8S7883C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C23D1Ev,_ZTv0_n12_N8S7883C23D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C23D0Ev,_ZTv0_n12_N8S7883C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7883C10__8S7883C23__8S7883C12[] = {
  ABISELECT(-104,-60),
  ABISELECT(-16,-8),
  ABISELECT(104,68),
  ABISELECT(104,68),
  (VTBL_ENTRY)&(_ZTI8S7883C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C23D1Ev,_ZTv0_n12_N8S7883C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C23D0Ev,_ZTv0_n12_N8S7883C23D0Ev),
};
static  VTT_ENTRY vtt_S7883C12[] = {
  {&(_ZTV8S7883C12[19]),  19,157},
  {&(_tg__ZTV8S7883C13__8S7883C12[18]),  18,20},
  {&(_tg__ZTV8S7883C17__8S7883C13__8S7883C12[7]),  7,9},
  {&(_tg__ZTV7S7883C6__8S7883C13__8S7883C12[5]),  5,7},
  {&(_tg__ZTV8S7883C17__8S7883C13__8S7883C12[7]),  7,9},
  {&(_tg__ZTV8S7883C14__8S7883C13__8S7883C12[16]),  16,18},
  {&(_tg__ZTV8S7883C13__8S7883C12[18]),  18,20},
  {&(_tg__ZTV7S7883C2__8S7883C13__8S7883C12[7]),  7,9},
  {&(_tg__ZTV7S7883C77S7883C2__A1__8S7883C13__8S7883C12[5]),  5,7},
  {&(_tg__ZTV8S7883C168S7883C14__8S7883C13__8S7883C12[10]),  10,12},
  {&(_tg__ZTV8S7883C17__8S7883C13__8S7883C12[7]),  7,9},
  {&(_tg__ZTV8S7883C198S7883C14__8S7883C13__8S7883C12[14]),  14,16},
  {&(_tg__ZTV8S7883C198S7883C14__8S7883C13__8S7883C12[14]),  14,16},
  {&(_tg__ZTV8S7883C10__8S7883C13__8S7883C12[5]),  5,7},
  {&(_tg__ZTV8S7883C20__8S7883C13__8S7883C12[7]),  7,9},
  {&(_tg__ZTV7S7883C77S7883C28S7883C218S7883C20__A4__8S7883C13__8S7883C12[5]),  5,7},
  {&(_tg__ZTV8S7883C22__8S7883C13__8S7883C12[11]),  11,13},
  {&(_tg__ZTV8S7883C16__A1__8S7883C13__8S7883C12[10]),  10,12},
  {&(_ZTV8S7883C12[97]),  97,157},
  {&(_ZTV8S7883C12[26]),  26,157},
  {&(_ZTV8S7883C12[97]),  97,157},
  {&(_ZTV8S7883C12[44]),  44,157},
  {&(_ZTV8S7883C12[19]),  19,157},
  {&(_ZTV8S7883C12[81]),  81,157},
  {&(_ZTV8S7883C12[88]),  88,157},
  {&(_ZTV8S7883C12[56]),  56,157},
  {&(_ZTV8S7883C12[97]),  97,157},
  {&(_ZTV8S7883C12[72]),  72,157},
  {&(_ZTV8S7883C12[72]),  72,157},
  {&(_ZTV8S7883C12[104]),  104,157},
  {&(_ZTV8S7883C12[113]),  113,157},
  {&(_ZTV8S7883C12[120]),  120,157},
  {&(_ZTV8S7883C12[133]),  133,157},
  {&(_ZTV8S7883C12[145]),  145,157},
  {&(_ZTV8S7883C12[155]),  155,157},
  {&(_tg__ZTV7S7883C5__8S7883C12[6]),  6,8},
  {&(_tg__ZTV7S7883C6__7S7883C5__8S7883C12[5]),  5,7},
  {&(_tg__ZTV7S7883C5__8S7883C12[6]),  6,8},
  {&(_tg__ZTV7S7883C6__8S7883C12[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C6__8S7883C12[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C6__8S7883C12[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C6__8S7883C12[3]),  3,5},
  {&(_tg__ZTV8S7883C14__8S7883C12[15]),  15,17},
  {&(_tg__ZTV8S7883C168S7883C14__8S7883C12[10]),  10,12},
  {&(_tg__ZTV7S7883C78S7883C168S7883C14__A2__8S7883C12[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C78S7883C168S7883C14__A2__8S7883C12[3]),  3,5},
  {&(_tg__ZTV8S7883C17__8S7883C168S7883C14__8S7883C12[7]),  7,9},
  {&(_tg__ZTV8S7883C17__8S7883C168S7883C14__8S7883C12[7]),  7,9},
  {&(_tg__ZTV7S7883C6__8S7883C168S7883C14__8S7883C12[5]),  5,7},
  {&(_tg__ZTV8S7883C17__8S7883C168S7883C14__8S7883C12[7]),  7,9},
  {&(_tg__ZTV8S7883C18__8S7883C168S7883C14__8S7883C12[4]),  4,6},
  {&(_tg__ZTV8S7883C198S7883C14__8S7883C12[14]),  14,16},
  {&(_tg__ZTV8S7883C17__8S7883C198S7883C14__8S7883C12[7]),  7,9},
  {&(_tg__ZTV8S7883C10__8S7883C198S7883C14__8S7883C12[5]),  5,7},
  {&(_tg__ZTV8S7883C20__8S7883C198S7883C14__8S7883C12[7]),  7,9},
  {&(_tg__ZTV7S7883C6__A1__8S7883C198S7883C14__8S7883C12[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C28S7883C218S7883C20__A2__8S7883C198S7883C14__8S7883C12[5]),  5,7},
  {&(_tg__ZTV8S7883C22__8S7883C198S7883C14__8S7883C12[11]),  11,13},
  {&(_tg__ZTV8S7883C16__8S7883C198S7883C14__8S7883C12[10]),  10,12},
  {&(_tg__ZTV8S7883C17__8S7883C198S7883C14__8S7883C12[7]),  7,9},
  {&(_tg__ZTV8S7883C17__8S7883C198S7883C14__8S7883C12[7]),  7,9},
  {&(_tg__ZTV8S7883C198S7883C14__8S7883C12[14]),  14,16},
  {&(_tg__ZTV8S7883C15__8S7883C14__8S7883C12[8]),  8,10},
  {&(_tg__ZTV7S7883C2__8S7883C14__8S7883C12[7]),  7,9},
  {&(_tg__ZTV8S7883C17__8S7883C14__8S7883C12[7]),  7,9},
  {&(_tg__ZTV7S7883C6__8S7883C14__8S7883C12[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C2__A1__8S7883C14__8S7883C12[5]),  5,7},
  {&(_tg__ZTV8S7883C16__A__8S7883C14__8S7883C12[10]),  10,12},
  {&(_tg__ZTV8S7883C17__8S7883C14__8S7883C12[7]),  7,9},
  {&(_tg__ZTV8S7883C17__8S7883C14__8S7883C12[7]),  7,9},
  {&(_tg__ZTV8S7883C19__8S7883C14__8S7883C12[14]),  14,16},
  {&(_tg__ZTV8S7883C19__8S7883C14__8S7883C12[14]),  14,16},
  {&(_tg__ZTV8S7883C10__8S7883C14__8S7883C12[5]),  5,7},
  {&(_tg__ZTV8S7883C20__8S7883C14__8S7883C12[7]),  7,9},
  {&(_tg__ZTV7S7883C77S7883C28S7883C218S7883C20__A4__8S7883C14__8S7883C12[5]),  5,7},
  {&(_tg__ZTV8S7883C22__8S7883C14__8S7883C12[11]),  11,13},
  {&(_tg__ZTV8S7883C16__A1__8S7883C14__8S7883C12[10]),  10,12},
  {&(_tg__ZTV8S7883C15__8S7883C12[8]),  8,10},
  {&(_tg__ZTV7S7883C2__8S7883C15__8S7883C12[7]),  7,9},
  {&(_tg__ZTV10S7883C3_nt__8S7883C15__8S7883C12[3]),  3,5},
  {&(_tg__ZTV7S7883C6__8S7883C15__8S7883C12[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C2__A1__8S7883C15__8S7883C12[5]),  5,7},
  {&(_tg__ZTV7S7883C2__8S7883C12[7]),  7,9},
  {&(_tg__ZTV7S7883C57S7883C2__A1__8S7883C12[6]),  6,8},
  {&(_tg__ZTV7S7883C6__7S7883C57S7883C2__A1__8S7883C12[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C57S7883C2__A1__8S7883C12[3]),  3,5},
  {&(_tg__ZTV7S7883C77S7883C2__A1__8S7883C12[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C2__A1__8S7883C12[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C2__8S7883C12[3]),  3,5},
  {&(_tg__ZTV7S7883C6__7S7883C2__8S7883C12[5]),  5,7},
  {&(_tg__ZTV7S7883C7__A1__7S7883C2__8S7883C12[5]),  5,7},
  {&(_tg__ZTV8S7883C17__8S7883C12[7]),  7,9},
  {&(_tg__ZTV8S7883C17__8S7883C12[7]),  7,9},
  {&(_tg__ZTV7S7883C6__8S7883C17__8S7883C12[5]),  5,7},
  {&(_tg__ZTV8S7883C17__8S7883C12[7]),  7,9},
  {&(_tg__ZTV8S7883C18__8S7883C12[3]),  3,5},
  {&(_tg__ZTV8S7883C10__8S7883C12[5]),  5,7},
  {&(_tg__ZTV7S7883C68S7883C10__A1__8S7883C12[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C68S7883C10__A3__8S7883C12[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C68S7883C10__A3__8S7883C12[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C68S7883C10__A1__8S7883C12[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S7883C10__8S7883C12[3]),  3,5},
  {&(_tg__ZTV8S7883C20__8S7883C12[7]),  7,9},
  {&(_tg__ZTV8S7883C218S7883C20__8S7883C12[7]),  7,9},
  {&(_tg__ZTV7S7883C28S7883C218S7883C20__A1__8S7883C12[7]),  7,9},
  {&(_tg__ZTV7S7883C57S7883C28S7883C218S7883C20__A2__8S7883C12[6]),  6,8},
  {&(_tg__ZTV7S7883C6__7S7883C57S7883C28S7883C218S7883C20__A2__8S7883C12[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C57S7883C28S7883C218S7883C20__A2__8S7883C12[3]),  3,5},
  {&(_tg__ZTV7S7883C77S7883C28S7883C218S7883C20__A4__8S7883C12[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C28S7883C218S7883C20__A4__8S7883C12[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C28S7883C218S7883C20__A1__8S7883C12[3]),  3,5},
  {&(_tg__ZTV7S7883C6__7S7883C28S7883C218S7883C20__A1__8S7883C12[5]),  5,7},
  {&(_tg__ZTV7S7883C7__A1__7S7883C28S7883C218S7883C20__A1__8S7883C12[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S7883C218S7883C20__8S7883C12[3]),  3,5},
  {&(_tg__ZTV7S7883C6__8S7883C218S7883C20__8S7883C12[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C2__A1__8S7883C218S7883C20__8S7883C12[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S7883C20__8S7883C12[3]),  3,5},
  {&(_tg__ZTV7S7883C6__8S7883C20__8S7883C12[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C28S7883C21__A1__8S7883C20__8S7883C12[5]),  5,7},
  {&(_tg__ZTV8S7883C22__8S7883C12[11]),  11,13},
  {&(_tg__ZTV8S7883C108S7883C22__A1__8S7883C12[5]),  5,7},
  {&(_tg__ZTV7S7883C68S7883C108S7883C22__A2__8S7883C12[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C68S7883C108S7883C22__A5__8S7883C12[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C68S7883C108S7883C22__A5__8S7883C12[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C68S7883C108S7883C22__A2__8S7883C12[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S7883C108S7883C22__A1__8S7883C12[3]),  3,5},
  {&(_tg__ZTV8S7883C17__8S7883C22__8S7883C12[7]),  7,9},
  {&(_tg__ZTV8S7883C16__8S7883C22__8S7883C12[10]),  10,12},
  {&(_tg__ZTV8S7883C17__8S7883C22__8S7883C12[7]),  7,9},
  {&(_tg__ZTV8S7883C17__8S7883C22__8S7883C12[7]),  7,9},
  {&(_tg__ZTV7S7883C6__A1__8S7883C22__8S7883C12[5]),  5,7},
  {&(_tg__ZTV8S7883C18__8S7883C22__8S7883C12[4]),  4,6},
  {&(_tg__ZTV8S7883C16__A1__8S7883C12[10]),  10,12},
  {&(_tg__ZTV7S7883C78S7883C16__A6__8S7883C12[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C78S7883C16__A6__8S7883C12[3]),  3,5},
  {&(_tg__ZTV8S7883C17__8S7883C16__A1__8S7883C12[7]),  7,9},
  {&(_tg__ZTV8S7883C17__8S7883C16__A1__8S7883C12[7]),  7,9},
  {&(_tg__ZTV7S7883C6__8S7883C16__A1__8S7883C12[5]),  5,7},
  {&(_tg__ZTV8S7883C17__8S7883C16__A1__8S7883C12[7]),  7,9},
  {&(_tg__ZTV8S7883C18__8S7883C16__A1__8S7883C12[4]),  4,6},
  {&(_tg__ZTV8S7883C23__8S7883C12[8]),  8,10},
  {&(_tg__ZTV8S7883C248S7883C23__8S7883C12[7]),  7,9},
  {&(_tg__ZTV8S7883C178S7883C248S7883C23__A1__8S7883C12[7]),  7,9},
  {&(_tg__ZTV7S7883C5__8S7883C178S7883C248S7883C23__A1__8S7883C12[6]),  6,8},
  {&(_tg__ZTV7S7883C6__8S7883C178S7883C248S7883C23__A1__8S7883C12[5]),  5,7},
  {&(_tg__ZTV7S7883C5__8S7883C178S7883C248S7883C23__A1__8S7883C12[6]),  6,8},
  {&(_tg__ZTV7S7883C5__8S7883C248S7883C23__8S7883C12[6]),  6,8},
  {&(_tg__ZTV7S7883C6__8S7883C248S7883C23__8S7883C12[5]),  5,7},
  {&(_tg__ZTV7S7883C5__8S7883C248S7883C23__8S7883C12[6]),  6,8},
  {&(_tg__ZTV7S7883C6__8S7883C23__8S7883C12[5]),  5,7},
  {&(_tg__ZTV7S7883C5__8S7883C23__8S7883C12[6]),  6,8},
  {&(_tg__ZTV7S7883C5__8S7883C23__8S7883C12[6]),  6,8},
  {&(_tg__ZTV8S7883C10__8S7883C23__8S7883C12[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S7883C12[];
extern  VTBL_ENTRY _ZTV8S7883C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C12[];
static VTBL_ENTRY alt_thunk_names48[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C24D0Ev,_ZTv0_n12_N8S7883C24D0Ev), // 
  (VTBL_ENTRY)_ZN8S7883C24D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C24D1Ev,_ZTv0_n12_N8S7883C24D1Ev), // 
  (VTBL_ENTRY)_ZN8S7883C24D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C23D0Ev,_ZTv0_n12_N8S7883C23D0Ev), // 
  (VTBL_ENTRY)_ZN8S7883C23D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C23D1Ev,_ZTv0_n12_N8S7883C23D1Ev), // 
  (VTBL_ENTRY)_ZN8S7883C23D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C22D0Ev,_ZThn16_N8S7883C22D0Ev),
  (VTBL_ENTRY)_ZN8S7883C22D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C22D1Ev,_ZThn16_N8S7883C22D1Ev),
  (VTBL_ENTRY)_ZN8S7883C22D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C21D0Ev,_ZThn8_N8S7883C21D0Ev),
  (VTBL_ENTRY)_ZN8S7883C21D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C21D1Ev,_ZThn8_N8S7883C21D1Ev),
  (VTBL_ENTRY)_ZN8S7883C21D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C20D0Ev,_ZThn8_N8S7883C20D0Ev),
  (VTBL_ENTRY)_ZN8S7883C20D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C20D1Ev,_ZThn8_N8S7883C20D1Ev),
  (VTBL_ENTRY)_ZN8S7883C20D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev), // 
  (VTBL_ENTRY)_ZN8S7883C10D0Ev,
  (VTBL_ENTRY)_ZN8S7883C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev), // 
  (VTBL_ENTRY)_ZN8S7883C10D1Ev,
  (VTBL_ENTRY)_ZN8S7883C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev), // 
  (VTBL_ENTRY)_ZN8S7883C17D0Ev,
  (VTBL_ENTRY)_ZN8S7883C17D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev), // 
  (VTBL_ENTRY)_ZN8S7883C17D1Ev,
  (VTBL_ENTRY)_ZN8S7883C17D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C2D0Ev,_ZThn8_N7S7883C2D0Ev),
  (VTBL_ENTRY)_ZN7S7883C2D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C2D0Ev,_ZThn8_N7S7883C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7883C2D0Ev,_ZThn16_N7S7883C2D0Ev),
  (VTBL_ENTRY)_ZN7S7883C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C2D1Ev,_ZThn8_N7S7883C2D1Ev),
  (VTBL_ENTRY)_ZN7S7883C2D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C2D1Ev,_ZThn8_N7S7883C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7883C2D1Ev,_ZThn16_N7S7883C2D1Ev),
  (VTBL_ENTRY)_ZN7S7883C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7883C15D0Ev,_ZThn60_N8S7883C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7883C15D0Ev,_ZThn4_N8S7883C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7883C15D0Ev,_ZThn68_N8S7883C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7883C15D0Ev,_ZThn52_N8S7883C15D0Ev),
  (VTBL_ENTRY)_ZN8S7883C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7883C15D1Ev,_ZThn60_N8S7883C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7883C15D1Ev,_ZThn4_N8S7883C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7883C15D1Ev,_ZThn68_N8S7883C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7883C15D1Ev,_ZThn52_N8S7883C15D1Ev),
  (VTBL_ENTRY)_ZN8S7883C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C14D0Ev,_ZTv0_n16_N8S7883C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7883C14D0Ev,_ZThn20_N8S7883C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C14D1Ev,_ZTv0_n16_N8S7883C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7883C14D1Ev,_ZThn20_N8S7883C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7883C14D0Ev,_ZThn108_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7883C14D0Ev,_ZThn92_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7883C14D0Ev,_ZThn76_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7883C14D0Ev,_ZThn68_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7883C14D0Ev,_ZThn56_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7883C14D0Ev,_ZThn4_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7883C14D0Ev,_ZThn40_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7883C14D0Ev,_ZThn48_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7883C14D0Ev,_ZThn32_N8S7883C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7883C14D1Ev,_ZThn108_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7883C14D1Ev,_ZThn92_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7883C14D1Ev,_ZThn76_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7883C14D1Ev,_ZThn68_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7883C14D1Ev,_ZThn56_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7883C14D1Ev,_ZThn4_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7883C14D1Ev,_ZThn40_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7883C14D1Ev,_ZThn48_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7883C14D1Ev,_ZThn32_N8S7883C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7883C19D0Ev,_ZThn88_N8S7883C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7883C19D0Ev,_ZThn72_N8S7883C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7883C19D0Ev,_ZThn56_N8S7883C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7883C19D0Ev,_ZThn48_N8S7883C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7883C19D0Ev,_ZThn36_N8S7883C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7883C19D0Ev,_ZThn28_N8S7883C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7883C19D1Ev,_ZThn88_N8S7883C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7883C19D1Ev,_ZThn72_N8S7883C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7883C19D1Ev,_ZThn56_N8S7883C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7883C19D1Ev,_ZThn48_N8S7883C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7883C19D1Ev,_ZThn36_N8S7883C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7883C19D1Ev,_ZThn28_N8S7883C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C19D0Ev,_ZTv0_n16_N8S7883C19D0Ev), // 
  (VTBL_ENTRY)_ZN8S7883C19D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C19D1Ev,_ZTv0_n16_N8S7883C19D1Ev), // 
  (VTBL_ENTRY)_ZN8S7883C19D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C16D0Ev,_ZTv0_n16_N8S7883C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C16D0Ev,_ZThn16_N8S7883C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C16D1Ev,_ZTv0_n16_N8S7883C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C16D1Ev,_ZThn16_N8S7883C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev), // 
  (VTBL_ENTRY)_ZN8S7883C16D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7883C16D0Ev,_ZThn44_N8S7883C16D0Ev),
  (VTBL_ENTRY)_ZN8S7883C16D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev), // 
  (VTBL_ENTRY)_ZN8S7883C16D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7883C16D1Ev,_ZThn44_N8S7883C16D1Ev),
  (VTBL_ENTRY)_ZN8S7883C16D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C7D0Ev,_ZThn8_N7S7883C7D0Ev),
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7883C7D0Ev,_ZThn44_N7S7883C7D0Ev),
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7883C7D0Ev,_ZThn64_N7S7883C7D0Ev),
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C7D1Ev,_ZThn8_N7S7883C7D1Ev),
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7883C7D1Ev,_ZThn44_N7S7883C7D1Ev),
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7883C7D1Ev,_ZThn64_N7S7883C7D1Ev),
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C6D0Ev,
  (VTBL_ENTRY)_ZN7S7883C6D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7883C6D0Ev,_ZThn64_N7S7883C6D0Ev),
  (VTBL_ENTRY)_ZN7S7883C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C6D1Ev,
  (VTBL_ENTRY)_ZN7S7883C6D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7883C6D1Ev,_ZThn64_N7S7883C6D1Ev),
  (VTBL_ENTRY)_ZN7S7883C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C5D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7883C5D0Ev,_ZThn16_N7S7883C5D0Ev),
  (VTBL_ENTRY)_ZN7S7883C5D0Ev,
  (VTBL_ENTRY)_ZN7S7883C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C5D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7883C5D1Ev,_ZThn16_N7S7883C5D1Ev),
  (VTBL_ENTRY)_ZN7S7883C5D1Ev,
  (VTBL_ENTRY)_ZN7S7883C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C13D0Ev,_ZTv0_n16_N8S7883C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7883C13D0Ev,_ZThn40_N8S7883C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C13D1Ev,_ZTv0_n16_N8S7883C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7883C13D1Ev,_ZThn40_N8S7883C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7883C13D0Ev,_ZTv0_n64_N8S7883C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7883C13D0Ev,_ZThn20_N8S7883C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7883C13D1Ev,_ZTv0_n64_N8S7883C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7883C13D1Ev,_ZThn20_N8S7883C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7883C13D0Ev,_ZThn128_N8S7883C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7883C13D0Ev,_ZThn112_N8S7883C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7883C13D0Ev,_ZThn96_N8S7883C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7883C13D0Ev,_ZThn88_N8S7883C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7883C13D0Ev,_ZThn76_N8S7883C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7883C13D0Ev,_ZThn24_N8S7883C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7883C13D0Ev,_ZThn60_N8S7883C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7883C13D0Ev,_ZThn52_N8S7883C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7883C13D0Ev,_ZThn4_N8S7883C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7883C13D0Ev,_ZThn68_N8S7883C13D0Ev),
  (VTBL_ENTRY)_ZN8S7883C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7883C13D1Ev,_ZThn128_N8S7883C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7883C13D1Ev,_ZThn112_N8S7883C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7883C13D1Ev,_ZThn96_N8S7883C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7883C13D1Ev,_ZThn88_N8S7883C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7883C13D1Ev,_ZThn76_N8S7883C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7883C13D1Ev,_ZThn24_N8S7883C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7883C13D1Ev,_ZThn60_N8S7883C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7883C13D1Ev,_ZThn52_N8S7883C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7883C13D1Ev,_ZThn4_N8S7883C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7883C13D1Ev,_ZThn68_N8S7883C13D1Ev),
  (VTBL_ENTRY)_ZN8S7883C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C12D0Ev,_ZTv0_n16_N8S7883C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7883C12D0Ev,_ZThn40_N8S7883C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C12D1Ev,_ZTv0_n16_N8S7883C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7883C12D1Ev,_ZThn40_N8S7883C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7883C12D0Ev,_ZTv0_n64_N8S7883C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7883C12D0Ev,_ZThn20_N8S7883C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7883C12D1Ev,_ZTv0_n64_N8S7883C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7883C12D1Ev,_ZThn20_N8S7883C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S7883C12D0Ev,_ZThn144_N8S7883C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7883C12D0Ev,_ZThn128_N8S7883C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7883C12D0Ev,_ZThn112_N8S7883C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7883C12D0Ev,_ZThn96_N8S7883C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7883C12D0Ev,_ZThn88_N8S7883C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7883C12D0Ev,_ZThn76_N8S7883C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7883C12D0Ev,_ZThn68_N8S7883C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7883C12D0Ev,_ZThn60_N8S7883C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7883C12D0Ev,_ZThn52_N8S7883C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7883C12D0Ev,_ZThn24_N8S7883C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7883C12D0Ev,_ZThn4_N8S7883C12D0Ev),
  (VTBL_ENTRY)_ZN8S7883C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S7883C12D1Ev,_ZThn144_N8S7883C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7883C12D1Ev,_ZThn128_N8S7883C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7883C12D1Ev,_ZThn112_N8S7883C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7883C12D1Ev,_ZThn96_N8S7883C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7883C12D1Ev,_ZThn88_N8S7883C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7883C12D1Ev,_ZThn76_N8S7883C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7883C12D1Ev,_ZThn68_N8S7883C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7883C12D1Ev,_ZThn60_N8S7883C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7883C12D1Ev,_ZThn52_N8S7883C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7883C12D1Ev,_ZThn24_N8S7883C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7883C12D1Ev,_ZThn4_N8S7883C12D1Ev),
  (VTBL_ENTRY)_ZN8S7883C12D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7883C12 = {  "S7883C12", // class name
  bases_S7883C12, 50,
  &(vtc_S7883C12[0]), // expected_vtbl_contents
  &(vtt_S7883C12[0]), // expected_vtt_contents
  ABISELECT(256,160), // object size
  NSPAIRA(_ZTI8S7883C12),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7883C12),157, //virtual function table var
  19, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7883C12),153, //virtual table table var
  33, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names48,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7883C1  : S7883C2 , virtual S4677C27 , S7883C10 , S7883C11 , virtual S7883C12 {
  ~S7883C1(); // tgen
  S7883C1(); // tgen
};
//SIG(1 S7883C1) C1{ BC2{ VBC3{ vd m} BC4{ m Fi} BC5{ VBC6{ BC7{ VBC3 VBC4 BC8{ m} Fi} Fi} BC8} VBC8 BC7 vd} VBC9{ m} BC10{ BC6} BC11{ VBC5 Fp} VBC12{ BC13{ VBC5 VBC14{ BC3 VBC15{ VBC2 vd} BC16{ VBC4 VBC17{ VBC5 FC4} VBC18{ VBC4 vd} VBC8 BC7 vd Fi Fp} BC19{ VBC3 VBC10 VBC20{ BC21{ BC2 BC4 vd Fi} vd} VBC22{ BC10 VBC16 vd Fi} vd Fi} vd Fi} VBC9} VBC23{ VBC6 BC24{ BC17 BC4 Fp} VBC10 vd}}}


S7883C1 ::~S7883C1(){ note_dtor("S7883C1", this);} // tgen
S7883C1 ::S7883C1(){ note_ctor("S7883C1", this);} // tgen

static void Test_S7883C1()
{
  extern Class_Descriptor cd_S7883C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(41,50)];
    init_test(&cd_S7883C1, buf);
    S7883C1 *dp, &lv = *(dp=new (buf) S7883C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,196), "sizeof(S7883C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7883C1)");
    /*is_ambiguous_... S7883C1::S7883C2 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C2*), 0, "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C6 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C6*), 0, "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C2 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C2*), 0, "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C10 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C6*)(S7883C10*), 0, "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C2 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C2*), 0, "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C2 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C2*), 0, "S7883C1");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C16*)(S7883C14*), 0, "S7883C1");
    check_base_class_offset(lv, (S7883C3_nt*)(S7883C19*)(S7883C14*), 0, "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C10 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C6*)(S7883C10*), 0, "S7883C1");
    check_base_class_offset(lv, (S7883C3_nt*)(S7883C2*)(S7883C21*)(S7883C20*), 0, "S7883C1");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C2*)(S7883C21*)(S7883C20*), 0, "S7883C1");
    check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C6*)(S7883C10*)(S7883C22*), 0, "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C7*)(S7883C16*), 0, "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C2*), ABISELECT(8,4), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C6*), ABISELECT(80,48), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C2*), ABISELECT(80,48), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C10 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C6*)(S7883C10*), ABISELECT(80,48), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C2*), ABISELECT(80,48), "S7883C1");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C16*)(S7883C14*), ABISELECT(80,48), "S7883C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S7883C18*), ABISELECT(80,48), "S7883C1");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C16*)(S7883C14*), ABISELECT(80,48), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C10 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C6*)(S7883C10*), ABISELECT(80,48), "S7883C1");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(80,48), "S7883C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C6*)(S7883C10*)(S7883C22*), ABISELECT(80,48), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C16 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C16*), ABISELECT(80,48), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C16 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C7*)(S7883C16*), ABISELECT(80,48), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C6 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C6*), ABISELECT(64,36), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C6 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C6*), ABISELECT(64,36), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C2 */ AMB_check_base_class_offset(lv, (S7883C6*)(S7883C5*)(S7883C2*), ABISELECT(64,36), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C5 */ AMB_check_base_class_offset(lv, (S7883C6*)(S7883C5*), ABISELECT(64,36), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C2 */ AMB_check_base_class_offset(lv, (S7883C6*)(S7883C5*)(S7883C2*), ABISELECT(64,36), "S7883C1");
    check_base_class_offset(lv, (S7883C6*)(S7883C5*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(64,36), "S7883C1");
    /*is_ambiguous_... S7883C23::S7883C6 */ AMB_check_base_class_offset(lv, (S7883C6*)(S7883C23*), ABISELECT(64,36), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C2 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C5*)(S7883C2*), 0, "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C2 */ AMB_check_base_class_offset(lv, (S7883C5*)(S7883C2*), 0, "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C2 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C2*), ABISELECT(84,52), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C2 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C2*), ABISELECT(84,52), "S7883C1");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C16*)(S7883C14*), ABISELECT(84,52), "S7883C1");
    /*is_ambiguous_... S7883C2::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(84,52), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C16 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C16*), ABISELECT(84,52), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C2 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C2*), ABISELECT(16,8), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C2 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C2*), ABISELECT(16,8), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C2 */ AMB_check_base_class_offset(lv, (S7883C2*), 0, "S7883C1");
    check_base_class_offset(lv, (S4677C27*), 0, "S7883C1");
    check_base_class_offset(lv, (S4677C27*)(S7883C13*)(S7883C12*), 0, "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C10 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C6*)(S7883C10*), ABISELECT(32,16), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C10 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C6*)(S7883C10*), ABISELECT(32,16), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C10 */ AMB_check_base_class_offset(lv, (S7883C6*)(S7883C10*), ABISELECT(32,16), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C10 */ AMB_check_base_class_offset(lv, (S7883C10*), ABISELECT(32,16), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C5 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C5*), ABISELECT(48,28), "S7883C1");
    check_base_class_offset(lv, (S7883C5*)(S7883C11*), ABISELECT(48,28), "S7883C1");
    /*is_ambiguous_... S7883C13::S7883C5 */ AMB_check_base_class_offset(lv, (S7883C5*)(S7883C13*)(S7883C12*), ABISELECT(48,28), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C17 */ AMB_check_base_class_offset(lv, (S7883C5*)(S7883C17*), ABISELECT(48,28), "S7883C1");
    check_base_class_offset(lv, (S7883C5*)(S7883C17*)(S7883C24*)(S7883C23*), ABISELECT(48,28), "S7883C1");
    check_base_class_offset(lv, (S7883C11*), ABISELECT(48,28), "S7883C1");
    /*is_ambiguous_... S7883C14::S7883C3_nt */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7883C14*), ABISELECT(96,56), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C2*), ABISELECT(152,92), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C2 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C5*)(S7883C2*), ABISELECT(144,88), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C2 */ AMB_check_base_class_offset(lv, (S7883C5*)(S7883C2*), ABISELECT(144,88), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C2 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C2*), ABISELECT(160,96), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C2 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C2*), ABISELECT(160,96), "S7883C1");
    check_base_class_offset(lv, (S7883C2*)(S7883C15*), ABISELECT(144,88), "S7883C1");
    check_base_class_offset(lv, (S7883C15*)(S7883C14*), ABISELECT(88,52), "S7883C1");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C17*)(S7883C16*)(S7883C14*), ABISELECT(176,104), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C17*)(S7883C16*), ABISELECT(176,104), "S7883C1");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C18*)(S7883C16*)(S7883C14*), ABISELECT(128,76), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C18*)(S7883C16*), ABISELECT(128,76), "S7883C1");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C16*)(S7883C14*), ABISELECT(104,60), "S7883C1");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C16*)(S7883C14*), ABISELECT(104,60), "S7883C1");
    /*is_ambiguous_... S7883C14::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C16*)(S7883C14*), ABISELECT(104,60), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C10 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C6*)(S7883C10*), ABISELECT(192,112), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C10 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C6*)(S7883C10*), ABISELECT(192,112), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C10 */ AMB_check_base_class_offset(lv, (S7883C6*)(S7883C10*), ABISELECT(192,112), "S7883C1");
    /*is_ambiguous_... S7883C19::S7883C10 */ AMB_check_base_class_offset(lv, (S7883C10*)(S7883C19*)(S7883C14*), ABISELECT(192,112), "S7883C1");
    check_base_class_offset(lv, (S7883C10*)(S7883C23*), ABISELECT(192,112), "S7883C1");
    /*is_ambiguous_... S7883C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(216,128), "S7883C1");
    /*is_ambiguous_... S7883C5::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C5*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(208,124), "S7883C1");
    check_base_class_offset(lv, (S7883C5*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(208,124), "S7883C1");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(224,132), "S7883C1");
    /*is_ambiguous_... S7883C2::S7883C7 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(224,132), "S7883C1");
    check_base_class_offset(lv, (S7883C2*)(S7883C21*)(S7883C20*), ABISELECT(208,124), "S7883C1");
    /*is_ambiguous_... S7883C21::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C21*)(S7883C20*), ABISELECT(236,140), "S7883C1");
    check_base_class_offset(lv, (S7883C21*)(S7883C20*), ABISELECT(208,124), "S7883C1");
    check_base_class_offset(lv, (S7883C20*)(S7883C19*)(S7883C14*), ABISELECT(208,124), "S7883C1");
    check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C6*)(S7883C10*)(S7883C22*), ABISELECT(248,148), "S7883C1");
    check_base_class_offset(lv, (S7883C7*)(S7883C6*)(S7883C10*)(S7883C22*), ABISELECT(248,148), "S7883C1");
    check_base_class_offset(lv, (S7883C6*)(S7883C10*)(S7883C22*), ABISELECT(248,148), "S7883C1");
    check_base_class_offset(lv, (S7883C10*)(S7883C22*), ABISELECT(248,148), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C16 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7883C7*)(S7883C16*), ABISELECT(272,164), "S7883C1");
    /*is_ambiguous_... S7883C1::S7883C16 */ AMB_check_base_class_offset(lv, (S7883C7*)(S7883C16*), ABISELECT(272,164), "S7883C1");
    check_base_class_offset(lv, (S7883C16*)(S7883C22*), ABISELECT(272,164), "S7883C1");
    check_base_class_offset(lv, (S7883C22*)(S7883C19*)(S7883C14*), ABISELECT(248,148), "S7883C1");
    check_base_class_offset(lv, (S7883C19*)(S7883C14*), ABISELECT(128,76), "S7883C1");
    check_base_class_offset(lv, (S7883C14*)(S7883C13*)(S7883C12*), ABISELECT(96,56), "S7883C1");
    check_base_class_offset(lv, (S7883C13*)(S7883C12*), ABISELECT(88,52), "S7883C1");
    check_base_class_offset(lv, (S7883C17*)(S7883C24*)(S7883C23*), ABISELECT(296,180), "S7883C1");
    /*is_ambiguous_... S7883C24::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7883C24*)(S7883C23*), ABISELECT(308,188), "S7883C1");
    check_base_class_offset(lv, (S7883C24*)(S7883C23*), ABISELECT(296,180), "S7883C1");
    check_base_class_offset(lv, (S7883C23*)(S7883C12*), ABISELECT(296,180), "S7883C1");
    check_base_class_offset(lv, (S7883C12*), ABISELECT(88,52), "S7883C1");
    test_class_info(&lv, &cd_S7883C1);
    dp->~S7883C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7883C1(Test_S7883C1, "S7883C1", ABISELECT(320,196));

#else // __cplusplus

extern void _ZN7S7883C1C1Ev();
extern void _ZN7S7883C1D1Ev();
Name_Map name_map_S7883C1[] = {
  NSPAIR(_ZN7S7883C1C1Ev),
  NSPAIR(_ZN7S7883C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C6;
extern VTBL_ENTRY _ZTI7S7883C6[];
extern  VTBL_ENTRY _ZTV7S7883C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C5;
extern VTBL_ENTRY _ZTI7S7883C5[];
extern  VTBL_ENTRY _ZTV7S7883C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C5[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C2;
extern VTBL_ENTRY _ZTI7S7883C2[];
extern  VTBL_ENTRY _ZTV7S7883C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C2[];
extern Class_Descriptor cd_S4677C27;
extern VTBL_ENTRY _ZTI8S4677C27[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C6;
extern VTBL_ENTRY _ZTI7S7883C6[];
extern  VTBL_ENTRY _ZTV7S7883C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C6[];
extern Class_Descriptor cd_S7883C10;
extern VTBL_ENTRY _ZTI8S7883C10[];
extern  VTBL_ENTRY _ZTV8S7883C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C10[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C5;
extern VTBL_ENTRY _ZTI7S7883C5[];
extern  VTBL_ENTRY _ZTV7S7883C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C5[];
extern Class_Descriptor cd_S7883C11;
extern VTBL_ENTRY _ZTI8S7883C11[];
extern  VTBL_ENTRY _ZTV8S7883C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C11[];
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C5;
extern VTBL_ENTRY _ZTI7S7883C5[];
extern  VTBL_ENTRY _ZTV7S7883C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C5[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C2;
extern VTBL_ENTRY _ZTI7S7883C2[];
extern  VTBL_ENTRY _ZTV7S7883C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C2[];
extern Class_Descriptor cd_S7883C15;
extern VTBL_ENTRY _ZTI8S7883C15[];
extern  VTBL_ENTRY _ZTV8S7883C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C15[];
extern Class_Descriptor cd_S7883C17;
extern VTBL_ENTRY _ZTI8S7883C17[];
extern  VTBL_ENTRY _ZTV8S7883C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C17[];
extern Class_Descriptor cd_S7883C18;
extern VTBL_ENTRY _ZTI8S7883C18[];
extern  VTBL_ENTRY _ZTV8S7883C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C18[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C16;
extern VTBL_ENTRY _ZTI8S7883C16[];
extern  VTBL_ENTRY _ZTV8S7883C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C16[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C6;
extern VTBL_ENTRY _ZTI7S7883C6[];
extern  VTBL_ENTRY _ZTV7S7883C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C6[];
extern Class_Descriptor cd_S7883C10;
extern VTBL_ENTRY _ZTI8S7883C10[];
extern  VTBL_ENTRY _ZTV8S7883C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C10[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C5;
extern VTBL_ENTRY _ZTI7S7883C5[];
extern  VTBL_ENTRY _ZTV7S7883C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C5[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C2;
extern VTBL_ENTRY _ZTI7S7883C2[];
extern  VTBL_ENTRY _ZTV7S7883C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7883C21;
extern VTBL_ENTRY _ZTI8S7883C21[];
extern  VTBL_ENTRY _ZTV8S7883C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C21[];
extern Class_Descriptor cd_S7883C20;
extern VTBL_ENTRY _ZTI8S7883C20[];
extern  VTBL_ENTRY _ZTV8S7883C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C20[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C6;
extern VTBL_ENTRY _ZTI7S7883C6[];
extern  VTBL_ENTRY _ZTV7S7883C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C6[];
extern Class_Descriptor cd_S7883C10;
extern VTBL_ENTRY _ZTI8S7883C10[];
extern  VTBL_ENTRY _ZTV8S7883C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C10[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C7;
extern VTBL_ENTRY _ZTI7S7883C7[];
extern  VTBL_ENTRY _ZTV7S7883C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C7[];
extern Class_Descriptor cd_S7883C16;
extern VTBL_ENTRY _ZTI8S7883C16[];
extern  VTBL_ENTRY _ZTV8S7883C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C16[];
extern Class_Descriptor cd_S7883C22;
extern VTBL_ENTRY _ZTI8S7883C22[];
extern  VTBL_ENTRY _ZTV8S7883C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C22[];
extern Class_Descriptor cd_S7883C19;
extern VTBL_ENTRY _ZTI8S7883C19[];
extern  VTBL_ENTRY _ZTV8S7883C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C19[];
extern Class_Descriptor cd_S7883C14;
extern VTBL_ENTRY _ZTI8S7883C14[];
extern  VTBL_ENTRY _ZTV8S7883C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C14[];
extern Class_Descriptor cd_S7883C13;
extern VTBL_ENTRY _ZTI8S7883C13[];
extern  VTBL_ENTRY _ZTV8S7883C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C13[];
extern Class_Descriptor cd_S7883C17;
extern VTBL_ENTRY _ZTI8S7883C17[];
extern  VTBL_ENTRY _ZTV8S7883C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C17[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7883C24;
extern VTBL_ENTRY _ZTI8S7883C24[];
extern  VTBL_ENTRY _ZTV8S7883C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C24[];
extern Class_Descriptor cd_S7883C23;
extern VTBL_ENTRY _ZTI8S7883C23[];
extern  VTBL_ENTRY _ZTV8S7883C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C23[];
extern Class_Descriptor cd_S7883C12;
extern VTBL_ENTRY _ZTI8S7883C12[];
extern  VTBL_ENTRY _ZTV8S7883C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7883C12[];
static Base_Class bases_S7883C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //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
    4, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    4, //immediately_derived
  0, 0},
  {&cd_S7883C7,    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
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7883C6,    ABISELECT(64,36), //bcp->offset
    45, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7883C5,    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
    35, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(84,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(16,8), //bcp->offset
    22, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7883C2,    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
    37, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4677C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    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
    14, //immediately_derived
  0, 0},
  {&cd_S7883C7,    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
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7883C6,    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
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7883C10,    ABISELECT(32,16), //bcp->offset
    29, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4677C37,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7883C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S7883C11,    ABISELECT(48,28), //bcp->offset
    36, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7883C3_nt,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(152,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7883C5,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    125, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(160,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(160,96), //bcp->offset
    128, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    128, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7883C2,    ABISELECT(144,88), //bcp->offset
    119, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    124, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S7883C15,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    55, //immediately_derived
  0, 1},
  {&cd_S7883C17,    ABISELECT(176,104), //bcp->offset
    135, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    133, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S7883C18,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    137, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(104,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(104,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7883C16,    ABISELECT(104,60), //bcp->offset
    91, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(192,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
    34, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(192,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    140, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7883C6,    ABISELECT(192,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    139, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7883C10,    ABISELECT(192,112), //bcp->offset
    144, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    138, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    54, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(216,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
    42, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(208,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7883C5,    ABISELECT(208,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    147, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S4677C37,    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
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(224,132), //bcp->offset
    160, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    150, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7883C2,    ABISELECT(208,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    146, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(236,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
    44, //immediately_derived
  0, 0},
  {&cd_S7883C21,    ABISELECT(208,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    145, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7883C20,    ABISELECT(208,124), //bcp->offset
    151, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    144, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    54, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(248,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
    47, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(248,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    164, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7883C6,    ABISELECT(248,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    163, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S7883C10,    ABISELECT(248,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    162, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(272,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
    51, //immediately_derived
  0, 0},
  {&cd_S7883C7,    ABISELECT(272,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    175, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7883C16,    ABISELECT(272,164), //bcp->offset
    180, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    174, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    53, //immediately_derived
  0, 1},
  {&cd_S7883C22,    ABISELECT(248,148), //bcp->offset
    167, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    161, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    54, //immediately_derived
  0, 1},
  {&cd_S7883C19,    ABISELECT(128,76), //bcp->offset
    103, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S7883C14,    ABISELECT(96,56), //bcp->offset
    73, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    56, //immediately_derived
  0, 1},
  {&cd_S7883C13,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    61, //immediately_derived
  0, 0},
  {&cd_S7883C17,    ABISELECT(296,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    184, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(308,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
    59, //immediately_derived
  0, 0},
  {&cd_S7883C24,    ABISELECT(296,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    183, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S7883C23,    ABISELECT(296,180), //bcp->offset
    192, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    182, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    61, //immediately_derived
  0, 1},
  {&cd_S7883C12,    ABISELECT(88,52), //bcp->offset
    52, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7883C1[];
extern void ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev)();
extern void _ZN7S7883C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev)();
extern void _ZN7S7883C1D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S7883C1D1Ev,_ZThn8_N7S7883C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev)();
extern void ABISELECT(_ZThn16_N7S7883C1D0Ev,_ZThn8_N7S7883C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S7883C1D1Ev,_ZThn16_N7S7883C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev)();
extern void ABISELECT(_ZThn32_N7S7883C1D0Ev,_ZThn16_N7S7883C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S7883C1D1Ev,_ZThn28_N7S7883C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev)();
extern void ABISELECT(_ZThn48_N7S7883C1D0Ev,_ZThn28_N7S7883C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S7883C1D1Ev,_ZThn36_N7S7883C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev)();
extern void ABISELECT(_ZThn64_N7S7883C1D0Ev,_ZThn36_N7S7883C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev)();
extern void ABISELECT(_ZThn88_N7S7883C1D1Ev,_ZThn52_N7S7883C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev)();
extern void ABISELECT(_ZThn88_N7S7883C1D0Ev,_ZThn52_N7S7883C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S7883C1D1Ev,_ZTv0_n64_N7S7883C1D1Ev)();
extern void ABISELECT(_ZThn96_N7S7883C1D1Ev,_ZThn56_N7S7883C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S7883C1D0Ev,_ZTv0_n64_N7S7883C1D0Ev)();
extern void ABISELECT(_ZThn96_N7S7883C1D0Ev,_ZThn56_N7S7883C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev)();
extern void ABISELECT(_ZThn104_N7S7883C1D1Ev,_ZThn60_N7S7883C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev)();
extern void ABISELECT(_ZThn104_N7S7883C1D0Ev,_ZThn60_N7S7883C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7883C1D1Ev,_ZTv0_n16_N7S7883C1D1Ev)();
extern void ABISELECT(_ZThn128_N7S7883C1D1Ev,_ZThn76_N7S7883C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7883C1D0Ev,_ZTv0_n16_N7S7883C1D0Ev)();
extern void ABISELECT(_ZThn128_N7S7883C1D0Ev,_ZThn76_N7S7883C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S7883C1D1Ev,_ZThn88_N7S7883C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev)();
extern void ABISELECT(_ZThn144_N7S7883C1D0Ev,_ZThn88_N7S7883C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev)();
extern void ABISELECT(_ZThn160_N7S7883C1D1Ev,_ZThn96_N7S7883C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev)();
extern void ABISELECT(_ZThn160_N7S7883C1D0Ev,_ZThn96_N7S7883C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev)();
extern void ABISELECT(_ZThn176_N7S7883C1D1Ev,_ZThn104_N7S7883C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev)();
extern void ABISELECT(_ZThn176_N7S7883C1D0Ev,_ZThn104_N7S7883C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev)();
extern void ABISELECT(_ZThn192_N7S7883C1D1Ev,_ZThn112_N7S7883C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev)();
extern void ABISELECT(_ZThn192_N7S7883C1D0Ev,_ZThn112_N7S7883C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev)();
extern void ABISELECT(_ZThn208_N7S7883C1D1Ev,_ZThn124_N7S7883C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev)();
extern void ABISELECT(_ZThn208_N7S7883C1D0Ev,_ZThn124_N7S7883C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev)();
extern void ABISELECT(_ZThn224_N7S7883C1D1Ev,_ZThn132_N7S7883C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev)();
extern void ABISELECT(_ZThn224_N7S7883C1D0Ev,_ZThn132_N7S7883C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev)();
extern void ABISELECT(_ZThn248_N7S7883C1D1Ev,_ZThn148_N7S7883C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev)();
extern void ABISELECT(_ZThn248_N7S7883C1D0Ev,_ZThn148_N7S7883C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev)();
extern void ABISELECT(_ZThn272_N7S7883C1D1Ev,_ZThn164_N7S7883C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev)();
extern void ABISELECT(_ZThn272_N7S7883C1D0Ev,_ZThn164_N7S7883C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev)();
extern void ABISELECT(_ZThn296_N7S7883C1D1Ev,_ZThn180_N7S7883C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev)();
extern void ABISELECT(_ZThn296_N7S7883C1D0Ev,_ZThn180_N7S7883C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7883C1[] = {
  ABISELECT(296,180),
  ABISELECT(272,164),
  ABISELECT(248,148),
  ABISELECT(208,124),
  ABISELECT(192,112),
  ABISELECT(128,76),
  ABISELECT(176,104),
  ABISELECT(144,88),
  ABISELECT(88,52),
  ABISELECT(96,56),
  ABISELECT(88,52),
  ABISELECT(48,28),
  0,
  ABISELECT(84,52),
  ABISELECT(80,48),
  0,
  ABISELECT(64,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev),
  ABISELECT(64,40),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7883C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev),
  ABISELECT(48,32),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7883C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev),
  0,
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  ABISELECT(16,8),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7883C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev),
  ABISELECT(16,12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7883C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev),
  ABISELECT(208,128),
  ABISELECT(-88,-52),
  ABISELECT(184,112),
  ABISELECT(160,96),
  ABISELECT(120,72),
  ABISELECT(104,60),
  ABISELECT(40,24),
  ABISELECT(88,52),
  0,
  ABISELECT(8,4),
  ABISELECT(-40,-24),
  ABISELECT(-4,0),
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(-88,-52),
  ABISELECT(56,36),
  ABISELECT(-88,-52),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7883C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(176,108),
  ABISELECT(152,92),
  ABISELECT(112,68),
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  ABISELECT(80,48),
  ABISELECT(-12,-4),
  ABISELECT(-16,-8),
  ABISELECT(-32,-20),
  ABISELECT(-96,-56),
  ABISELECT(48,32),
  ABISELECT(-8,-4),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7883C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7883C1D1Ev,_ZTv0_n64_N7S7883C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S7883C1D0Ev,_ZTv0_n64_N7S7883C1D0Ev),
  ABISELECT(-20,-8),
  ABISELECT(24,16),
  ABISELECT(-40,-24),
  ABISELECT(-56,-32),
  ABISELECT(72,44),
  ABISELECT(-24,-12),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI7S7883C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev),
  0,
  ABISELECT(-80,-48),
  ABISELECT(48,28),
  ABISELECT(144,88),
  ABISELECT(120,72),
  ABISELECT(-44,-24),
  ABISELECT(-64,-40),
  ABISELECT(80,48),
  ABISELECT(64,36),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-48,-28),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI7S7883C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7883C1D1Ev,_ZTv0_n16_N7S7883C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7883C1D0Ev,_ZTv0_n16_N7S7883C1D0Ev),
  ABISELECT(-60,-36),
  ABISELECT(-64,-40),
  ABISELECT(-144,-88),
  ABISELECT(-80,-52),
  ABISELECT(-144,-88),
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI7S7883C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(-160,-96),
  ABISELECT(-160,-96),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI7S7883C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev),
  ABISELECT(-128,-76),
  ABISELECT(-96,-56),
  ABISELECT(-176,-104),
  ABISELECT(-112,-68),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI7S7883C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev),
  ABISELECT(-112,-64),
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI7S7883C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev),
  ABISELECT(-124,-72),
  ABISELECT(-128,-76),
  ABISELECT(-208,-124),
  ABISELECT(-144,-88),
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI7S7883C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev),
  ABISELECT(-144,-84),
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI7S7883C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev),
  ABISELECT(-164,-96),
  ABISELECT(-120,-72),
  ABISELECT(-184,-112),
  ABISELECT(-200,-120),
  ABISELECT(-72,-44),
  ABISELECT(24,16),
  ABISELECT(-168,-100),
  ABISELECT(-248,-148),
  ABISELECT(-248,-148),
  ABISELECT(-248,-148),
  (VTBL_ENTRY)&(_ZTI7S7883C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev),
  ABISELECT(-188,-112),
  ABISELECT(-144,-88),
  ABISELECT(-208,-128),
  ABISELECT(-224,-136),
  ABISELECT(-96,-60),
  ABISELECT(-192,-116),
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  (VTBL_ENTRY)&(_ZTI7S7883C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev),
  ABISELECT(-104,-68),
  ABISELECT(-248,-152),
  ABISELECT(-216,-132),
  ABISELECT(-296,-180),
  ABISELECT(-232,-144),
  ABISELECT(-296,-180),
  ABISELECT(-296,-180),
  (VTBL_ENTRY)&(_ZTI7S7883C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7883C1[];
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void _ZN7S7883C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void _ZN7S7883C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C2__A__7S7883C1[] = {
  ABISELECT(84,52),
  ABISELECT(80,48),
  0,
  ABISELECT(64,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void _ZN7S7883C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void _ZN7S7883C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C57S7883C2__7S7883C1[] = {
  ABISELECT(80,48),
  0,
  ABISELECT(64,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZThn64_N7S7883C5D1Ev,_ZThn36_N7S7883C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void ABISELECT(_ZThn64_N7S7883C5D0Ev,_ZThn36_N7S7883C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C57S7883C2__7S7883C1[] = {
  ABISELECT(16,12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C2__A1__7S7883C1[] = {
  ABISELECT(64,40),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C2__A1__7S7883C1[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZThn64_N7S7883C2D1Ev,_ZThn36_N7S7883C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void ABISELECT(_ZThn64_N7S7883C2D0Ev,_ZThn36_N7S7883C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C2__A__7S7883C1[] = {
  ABISELECT(16,12),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S7883C2D1Ev,_ZThn8_N7S7883C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void ABISELECT(_ZThn16_N7S7883C2D0Ev,_ZThn8_N7S7883C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C7__A1__7S7883C2__A__7S7883C1[] = {
  ABISELECT(64,40),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev)();
extern void _ZN8S7883C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev)();
extern void _ZN8S7883C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C10__A__7S7883C1[] = {
  ABISELECT(48,32),
  ABISELECT(-32,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void _ZN7S7883C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
extern void _ZN7S7883C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C68S7883C10__A1__7S7883C1[] = {
  ABISELECT(48,32),
  ABISELECT(-32,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C68S7883C10__A2__7S7883C1[] = {
  ABISELECT(48,32),
  ABISELECT(-32,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C68S7883C10__A2__7S7883C1[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C68S7883C10__A1__7S7883C1[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C10__A__7S7883C1[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7883C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C11D1Ev,_ZTv0_n12_N8S7883C11D1Ev)();
extern void _ZN8S7883C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C11D0Ev,_ZTv0_n12_N8S7883C11D0Ev)();
extern void _ZN8S7883C11D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C11__7S7883C1[] = {
  0,
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C11D1Ev,_ZTv0_n12_N8S7883C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C11D0Ev,_ZTv0_n12_N8S7883C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C11D1Ev,_ZTv0_n12_N8S7883C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S7883C11D1Ev,_ZThn8_N8S7883C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C11D0Ev,_ZTv0_n12_N8S7883C11D0Ev)();
extern void ABISELECT(_ZThn16_N8S7883C11D0Ev,_ZThn8_N8S7883C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C11__7S7883C1[] = {
  ABISELECT(16,12),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7883C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C11D1Ev,_ZTv0_n12_N8S7883C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C11D0Ev,_ZTv0_n12_N8S7883C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C11D1Ev,_ZTv0_n12_N8S7883C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C11D0Ev,_ZTv0_n12_N8S7883C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C11__7S7883C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7883C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C11D1Ev,_ZTv0_n12_N8S7883C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C11D0Ev,_ZTv0_n12_N8S7883C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void _ZN7S7883C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
extern void _ZN7S7883C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C1[] = {
  ABISELECT(16,12),
  ABISELECT(-64,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C6__7S7883C1[] = {
  ABISELECT(16,12),
  ABISELECT(-64,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C6__7S7883C1[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C6__7S7883C1[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void _ZN7S7883C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void _ZN7S7883C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C5__A1__7S7883C1[] = {
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S7883C5D1Ev,_ZThn8_N7S7883C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S7883C5D0Ev,_ZThn8_N7S7883C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C5__A1__7S7883C1[] = {
  ABISELECT(16,12),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C5__A1__7S7883C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev)();
extern void _ZN8S7883C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev)();
extern void _ZN8S7883C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C12__7S7883C1[] = {
  ABISELECT(208,128),
  ABISELECT(-88,-52),
  ABISELECT(184,112),
  ABISELECT(160,96),
  ABISELECT(120,72),
  ABISELECT(104,60),
  ABISELECT(40,24),
  ABISELECT(88,52),
  0,
  ABISELECT(8,4),
  ABISELECT(-40,-24),
  ABISELECT(-4,0),
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(-88,-52),
  ABISELECT(56,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void _ZN8S7883C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
extern void _ZN8S7883C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C138S7883C12__7S7883C1[] = {
  ABISELECT(-88,-52),
  ABISELECT(184,112),
  ABISELECT(160,96),
  ABISELECT(120,72),
  ABISELECT(104,60),
  ABISELECT(40,24),
  ABISELECT(88,52),
  0,
  ABISELECT(8,4),
  ABISELECT(-40,-24),
  ABISELECT(-4,0),
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(-88,-52),
  ABISELECT(56,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C5__8S7883C138S7883C12__7S7883C1[] = {
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  ABISELECT(16,8),
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C138S7883C12__7S7883C1[] = {
  ABISELECT(16,12),
  ABISELECT(-64,-36),
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C138S7883C12__7S7883C1[] = {
  ABISELECT(88,52),
  ABISELECT(88,52),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N8S7883C13D1Ev,_ZTv0_n64_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn8_N8S7883C13D1Ev,_ZThn4_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7883C13D0Ev,_ZTv0_n64_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn8_N8S7883C13D0Ev,_ZThn4_N8S7883C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C14__8S7883C138S7883C12__7S7883C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(176,108),
  ABISELECT(152,92),
  ABISELECT(112,68),
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  ABISELECT(80,48),
  ABISELECT(-12,-4),
  ABISELECT(-16,-8),
  ABISELECT(-32,-20),
  ABISELECT(-96,-56),
  ABISELECT(48,32),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7883C13D1Ev,_ZTv0_n64_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7883C13D0Ev,_ZTv0_n64_N8S7883C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn56_N8S7883C13D1Ev,_ZThn36_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn56_N8S7883C13D0Ev,_ZThn36_N8S7883C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C2__8S7883C138S7883C12__7S7883C1[] = {
  ABISELECT(-60,-36),
  ABISELECT(-64,-40),
  ABISELECT(-144,-88),
  ABISELECT(-80,-52),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn72_N8S7883C13D1Ev,_ZThn44_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn72_N8S7883C13D0Ev,_ZThn44_N8S7883C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C2__A1__8S7883C138S7883C12__7S7883C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-160,-96),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn16_N8S7883C13D1Ev,_ZThn8_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn16_N8S7883C13D0Ev,_ZThn8_N8S7883C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C168S7883C14__8S7883C138S7883C12__7S7883C1[] = {
  ABISELECT(-20,-8),
  ABISELECT(24,16),
  ABISELECT(-40,-24),
  ABISELECT(-56,-32),
  ABISELECT(72,44),
  ABISELECT(-24,-12),
  ABISELECT(-104,-60),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn88_N8S7883C13D1Ev,_ZThn52_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn88_N8S7883C13D0Ev,_ZThn52_N8S7883C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C17__8S7883C138S7883C12__7S7883C1[] = {
  ABISELECT(-128,-76),
  ABISELECT(-96,-56),
  ABISELECT(-176,-104),
  ABISELECT(-112,-68),
  ABISELECT(-88,-52),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7883C13D1Ev,_ZTv0_n16_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn40_N8S7883C13D1Ev,_ZThn24_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7883C13D0Ev,_ZTv0_n16_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn40_N8S7883C13D0Ev,_ZThn24_N8S7883C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C198S7883C14__8S7883C138S7883C12__7S7883C1[] = {
  0,
  ABISELECT(-80,-48),
  ABISELECT(48,28),
  ABISELECT(144,88),
  ABISELECT(120,72),
  ABISELECT(-44,-24),
  ABISELECT(-64,-40),
  ABISELECT(80,48),
  ABISELECT(64,36),
  ABISELECT(-128,-76),
  ABISELECT(-40,-24),
  ABISELECT(-48,-28),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C13D1Ev,_ZTv0_n16_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C13D0Ev,_ZTv0_n16_N8S7883C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn104_N8S7883C13D1Ev,_ZThn60_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn104_N8S7883C13D0Ev,_ZThn60_N8S7883C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C10__8S7883C138S7883C12__7S7883C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-192,-112),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn120_N8S7883C13D1Ev,_ZThn72_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn120_N8S7883C13D0Ev,_ZThn72_N8S7883C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C20__8S7883C138S7883C12__7S7883C1[] = {
  ABISELECT(-124,-72),
  ABISELECT(-128,-76),
  ABISELECT(-208,-124),
  ABISELECT(-144,-88),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn136_N8S7883C13D1Ev,_ZThn80_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn136_N8S7883C13D0Ev,_ZThn80_N8S7883C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C28S7883C218S7883C20__A4__8S7883C138S7883C12__7S7883C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(-224,-132),
  ABISELECT(-136,-80),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn160_N8S7883C13D1Ev,_ZThn96_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn160_N8S7883C13D0Ev,_ZThn96_N8S7883C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C22__8S7883C138S7883C12__7S7883C1[] = {
  ABISELECT(-164,-96),
  ABISELECT(-120,-72),
  ABISELECT(-184,-112),
  ABISELECT(-200,-120),
  ABISELECT(-72,-44),
  ABISELECT(24,16),
  ABISELECT(-168,-100),
  ABISELECT(-248,-148),
  ABISELECT(-160,-96),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev)();
extern void ABISELECT(_ZThn184_N8S7883C13D1Ev,_ZThn112_N8S7883C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev)();
extern void ABISELECT(_ZThn184_N8S7883C13D0Ev,_ZThn112_N8S7883C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C16__A1__8S7883C138S7883C12__7S7883C1[] = {
  ABISELECT(-188,-112),
  ABISELECT(-144,-88),
  ABISELECT(-208,-128),
  ABISELECT(-224,-136),
  ABISELECT(-96,-60),
  ABISELECT(-192,-116),
  ABISELECT(-272,-164),
  ABISELECT(-184,-112),
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI8S7883C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C5__8S7883C12__7S7883C1[] = {
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  ABISELECT(16,8),
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S7883C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C12__7S7883C1[] = {
  ABISELECT(16,12),
  ABISELECT(-64,-36),
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S7883C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C12__7S7883C1[] = {
  ABISELECT(88,52),
  ABISELECT(88,52),
  (VTBL_ENTRY)&(_ZTI8S7883C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N8S7883C12D1Ev,_ZTv0_n64_N8S7883C12D1Ev)();
extern void ABISELECT(_ZThn8_N8S7883C12D1Ev,_ZThn4_N8S7883C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S7883C12D0Ev,_ZTv0_n64_N8S7883C12D0Ev)();
extern void ABISELECT(_ZThn8_N8S7883C12D0Ev,_ZThn4_N8S7883C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C14__8S7883C12__7S7883C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(176,108),
  ABISELECT(152,92),
  ABISELECT(112,68),
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  ABISELECT(80,48),
  ABISELECT(-12,-4),
  ABISELECT(-16,-8),
  ABISELECT(-32,-20),
  ABISELECT(-96,-56),
  ABISELECT(48,32),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7883C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7883C12D1Ev,_ZTv0_n64_N8S7883C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S7883C12D0Ev,_ZTv0_n64_N8S7883C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev)();
extern void ABISELECT(_ZThn56_N8S7883C12D1Ev,_ZThn36_N8S7883C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev)();
extern void ABISELECT(_ZThn56_N8S7883C12D0Ev,_ZThn36_N8S7883C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C2__8S7883C12__7S7883C1[] = {
  ABISELECT(-60,-36),
  ABISELECT(-64,-40),
  ABISELECT(-144,-88),
  ABISELECT(-80,-52),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S7883C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev)();
extern void ABISELECT(_ZThn72_N8S7883C12D1Ev,_ZThn44_N8S7883C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev)();
extern void ABISELECT(_ZThn72_N8S7883C12D0Ev,_ZThn44_N8S7883C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C2__A1__8S7883C12__7S7883C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-160,-96),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S7883C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev)();
extern void ABISELECT(_ZThn16_N8S7883C12D1Ev,_ZThn8_N8S7883C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev)();
extern void ABISELECT(_ZThn16_N8S7883C12D0Ev,_ZThn8_N8S7883C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C168S7883C14__8S7883C12__7S7883C1[] = {
  ABISELECT(-20,-8),
  ABISELECT(24,16),
  ABISELECT(-40,-24),
  ABISELECT(-56,-32),
  ABISELECT(72,44),
  ABISELECT(-24,-12),
  ABISELECT(-104,-60),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7883C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev)();
extern void ABISELECT(_ZThn88_N8S7883C12D1Ev,_ZThn52_N8S7883C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev)();
extern void ABISELECT(_ZThn88_N8S7883C12D0Ev,_ZThn52_N8S7883C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C17__8S7883C12__7S7883C1[] = {
  ABISELECT(-128,-76),
  ABISELECT(-96,-56),
  ABISELECT(-176,-104),
  ABISELECT(-112,-68),
  ABISELECT(-88,-52),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S7883C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7883C12D1Ev,_ZTv0_n16_N8S7883C12D1Ev)();
extern void ABISELECT(_ZThn40_N8S7883C12D1Ev,_ZThn24_N8S7883C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7883C12D0Ev,_ZTv0_n16_N8S7883C12D0Ev)();
extern void ABISELECT(_ZThn40_N8S7883C12D0Ev,_ZThn24_N8S7883C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C198S7883C14__8S7883C12__7S7883C1[] = {
  0,
  ABISELECT(-80,-48),
  ABISELECT(48,28),
  ABISELECT(144,88),
  ABISELECT(120,72),
  ABISELECT(-44,-24),
  ABISELECT(-64,-40),
  ABISELECT(80,48),
  ABISELECT(64,36),
  ABISELECT(-128,-76),
  ABISELECT(-40,-24),
  ABISELECT(-48,-28),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7883C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C12D1Ev,_ZTv0_n16_N8S7883C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C12D0Ev,_ZTv0_n16_N8S7883C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev)();
extern void ABISELECT(_ZThn104_N8S7883C12D1Ev,_ZThn60_N8S7883C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev)();
extern void ABISELECT(_ZThn104_N8S7883C12D0Ev,_ZThn60_N8S7883C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C10__8S7883C12__7S7883C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-192,-112),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI8S7883C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev)();
extern void ABISELECT(_ZThn120_N8S7883C12D1Ev,_ZThn72_N8S7883C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev)();
extern void ABISELECT(_ZThn120_N8S7883C12D0Ev,_ZThn72_N8S7883C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C20__8S7883C12__7S7883C1[] = {
  ABISELECT(-124,-72),
  ABISELECT(-128,-76),
  ABISELECT(-208,-124),
  ABISELECT(-144,-88),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI8S7883C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev)();
extern void ABISELECT(_ZThn136_N8S7883C12D1Ev,_ZThn80_N8S7883C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev)();
extern void ABISELECT(_ZThn136_N8S7883C12D0Ev,_ZThn80_N8S7883C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C28S7883C218S7883C20__A4__8S7883C12__7S7883C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(-224,-132),
  ABISELECT(-136,-80),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI8S7883C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev)();
extern void ABISELECT(_ZThn160_N8S7883C12D1Ev,_ZThn96_N8S7883C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev)();
extern void ABISELECT(_ZThn160_N8S7883C12D0Ev,_ZThn96_N8S7883C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C22__8S7883C12__7S7883C1[] = {
  ABISELECT(-164,-96),
  ABISELECT(-120,-72),
  ABISELECT(-184,-112),
  ABISELECT(-200,-120),
  ABISELECT(-72,-44),
  ABISELECT(24,16),
  ABISELECT(-168,-100),
  ABISELECT(-248,-148),
  ABISELECT(-160,-96),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S7883C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev)();
extern void ABISELECT(_ZThn184_N8S7883C12D1Ev,_ZThn112_N8S7883C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev)();
extern void ABISELECT(_ZThn184_N8S7883C12D0Ev,_ZThn112_N8S7883C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C16__A1__8S7883C12__7S7883C1[] = {
  ABISELECT(-188,-112),
  ABISELECT(-144,-88),
  ABISELECT(-208,-128),
  ABISELECT(-224,-136),
  ABISELECT(-96,-60),
  ABISELECT(-192,-116),
  ABISELECT(-272,-164),
  ABISELECT(-184,-112),
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI8S7883C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev)();
extern void ABISELECT(_ZThn208_N8S7883C12D1Ev,_ZThn128_N8S7883C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev)();
extern void ABISELECT(_ZThn208_N8S7883C12D0Ev,_ZThn128_N8S7883C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C23__8S7883C12__7S7883C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(-248,-152),
  ABISELECT(-216,-132),
  ABISELECT(-296,-180),
  ABISELECT(-232,-144),
  ABISELECT(-208,-128),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S7883C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev),
};
extern void _ZN8S7883C14D1Ev();
extern void _ZN8S7883C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7883C14__7S7883C1[] = {
  ABISELECT(176,108),
  ABISELECT(152,92),
  ABISELECT(112,68),
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  ABISELECT(80,48),
  ABISELECT(-12,-4),
  ABISELECT(-16,-8),
  ABISELECT(-32,-20),
  ABISELECT(-96,-56),
  ABISELECT(48,32),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&_ZN8S7883C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7883C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void _ZN8S7883C16D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
extern void _ZN8S7883C16D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C168S7883C14__7S7883C1[] = {
  ABISELECT(-20,-8),
  ABISELECT(24,16),
  ABISELECT(-40,-24),
  ABISELECT(-56,-32),
  ABISELECT(72,44),
  ABISELECT(-24,-12),
  ABISELECT(-104,-60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C78S7883C168S7883C14__A4__7S7883C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-104,-60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C78S7883C168S7883C14__A4__7S7883C1[] = {
  ABISELECT(104,60),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void ABISELECT(_ZThn72_N8S7883C16D1Ev,_ZThn44_N8S7883C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
extern void ABISELECT(_ZThn72_N8S7883C16D0Ev,_ZThn44_N8S7883C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C17__8S7883C168S7883C14__7S7883C1[] = {
  ABISELECT(-128,-76),
  ABISELECT(-96,-56),
  ABISELECT(-176,-104),
  ABISELECT(-112,-68),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C5__8S7883C168S7883C14__7S7883C1[] = {
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  ABISELECT(16,8),
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C168S7883C14__7S7883C1[] = {
  ABISELECT(16,12),
  ABISELECT(-64,-36),
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C168S7883C14__7S7883C1[] = {
  ABISELECT(104,60),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7883C16D1Ev,_ZTv0_n16_N8S7883C16D1Ev)();
extern void ABISELECT(_ZThn24_N8S7883C16D1Ev,_ZThn16_N8S7883C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7883C16D0Ev,_ZTv0_n16_N8S7883C16D0Ev)();
extern void ABISELECT(_ZThn24_N8S7883C16D0Ev,_ZThn16_N8S7883C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C18__8S7883C168S7883C14__7S7883C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-48,-28),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C16D1Ev,_ZTv0_n16_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C16D0Ev,_ZTv0_n16_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7883C19D1Ev,_ZTv0_n16_N8S7883C19D1Ev)();
extern void _ZN8S7883C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7883C19D0Ev,_ZTv0_n16_N8S7883C19D0Ev)();
extern void _ZN8S7883C19D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C198S7883C14__7S7883C1[] = {
  0,
  ABISELECT(-80,-48),
  ABISELECT(48,28),
  ABISELECT(144,88),
  ABISELECT(120,72),
  ABISELECT(-44,-24),
  ABISELECT(-64,-40),
  ABISELECT(80,48),
  ABISELECT(64,36),
  ABISELECT(-128,-76),
  0,
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C19D1Ev,_ZTv0_n16_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C19D0Ev,_ZTv0_n16_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C198S7883C14__7S7883C1[] = {
  ABISELECT(128,76),
  ABISELECT(128,76),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn64_N8S7883C19D1Ev,_ZThn36_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn64_N8S7883C19D0Ev,_ZThn36_N8S7883C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C10__8S7883C198S7883C14__7S7883C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-192,-112),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn80_N8S7883C19D1Ev,_ZThn48_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn80_N8S7883C19D0Ev,_ZThn48_N8S7883C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C20__8S7883C198S7883C14__7S7883C1[] = {
  ABISELECT(-124,-72),
  ABISELECT(-128,-76),
  ABISELECT(-208,-124),
  ABISELECT(-144,-88),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__A1__8S7883C198S7883C14__7S7883C1[] = {
  ABISELECT(16,12),
  ABISELECT(-64,-36),
  ABISELECT(64,40),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn96_N8S7883C19D1Ev,_ZThn56_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn96_N8S7883C19D0Ev,_ZThn56_N8S7883C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C28S7883C218S7883C20__A2__8S7883C198S7883C14__7S7883C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(-224,-132),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn120_N8S7883C19D1Ev,_ZThn72_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn120_N8S7883C19D0Ev,_ZThn72_N8S7883C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C22__8S7883C198S7883C14__7S7883C1[] = {
  ABISELECT(-164,-96),
  ABISELECT(-120,-72),
  ABISELECT(-184,-112),
  ABISELECT(-200,-120),
  ABISELECT(-72,-44),
  ABISELECT(24,16),
  ABISELECT(-168,-100),
  ABISELECT(-248,-148),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn144_N8S7883C19D1Ev,_ZThn88_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn144_N8S7883C19D0Ev,_ZThn88_N8S7883C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C16__8S7883C198S7883C14__7S7883C1[] = {
  ABISELECT(-188,-112),
  ABISELECT(-144,-88),
  ABISELECT(-208,-128),
  ABISELECT(-224,-136),
  ABISELECT(-96,-60),
  ABISELECT(-192,-116),
  ABISELECT(-272,-164),
  ABISELECT(-144,-88),
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZThn48_N8S7883C19D1Ev,_ZThn28_N8S7883C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
extern void ABISELECT(_ZThn48_N8S7883C19D0Ev,_ZThn28_N8S7883C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C17__8S7883C198S7883C14__7S7883C1[] = {
  ABISELECT(-128,-76),
  ABISELECT(-96,-56),
  ABISELECT(-176,-104),
  ABISELECT(-112,-68),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C5__A1__8S7883C198S7883C14__7S7883C1[] = {
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  ABISELECT(16,8),
  ABISELECT(80,48),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S7883C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7883C15__8S7883C14__7S7883C1[] = {
  ABISELECT(-4,0),
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(-88,-52),
  ABISELECT(56,36),
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S7883C14D1Ev,_ZThn32_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn48_N8S7883C14D0Ev,_ZThn32_N8S7883C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C2__8S7883C14__7S7883C1[] = {
  ABISELECT(-60,-36),
  ABISELECT(-64,-40),
  ABISELECT(-144,-88),
  ABISELECT(-80,-52),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__A1__8S7883C14__7S7883C1[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C14__7S7883C1[] = {
  ABISELECT(16,12),
  ABISELECT(-64,-36),
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S7883C14D1Ev,_ZThn40_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn64_N8S7883C14D0Ev,_ZThn40_N8S7883C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C2__A1__8S7883C14__7S7883C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-160,-96),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn8_N8S7883C14D1Ev,_ZThn4_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn8_N8S7883C14D0Ev,_ZThn4_N8S7883C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C16__A__8S7883C14__7S7883C1[] = {
  ABISELECT(-20,-8),
  ABISELECT(24,16),
  ABISELECT(-40,-24),
  ABISELECT(-56,-32),
  ABISELECT(72,44),
  ABISELECT(-24,-12),
  ABISELECT(-104,-60),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn80_N8S7883C14D1Ev,_ZThn48_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn80_N8S7883C14D0Ev,_ZThn48_N8S7883C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C17__8S7883C14__7S7883C1[] = {
  ABISELECT(-128,-76),
  ABISELECT(-96,-56),
  ABISELECT(-176,-104),
  ABISELECT(-112,-68),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C5__A1__8S7883C14__7S7883C1[] = {
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  ABISELECT(16,8),
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7883C14D1Ev,_ZTv0_n16_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn32_N8S7883C14D1Ev,_ZThn20_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7883C14D0Ev,_ZTv0_n16_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn32_N8S7883C14D0Ev,_ZThn20_N8S7883C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C19__8S7883C14__7S7883C1[] = {
  0,
  ABISELECT(-80,-48),
  ABISELECT(48,28),
  ABISELECT(144,88),
  ABISELECT(120,72),
  ABISELECT(-44,-24),
  ABISELECT(-64,-40),
  ABISELECT(80,48),
  ABISELECT(64,36),
  ABISELECT(-128,-76),
  ABISELECT(-32,-20),
  ABISELECT(-48,-28),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C14D1Ev,_ZTv0_n16_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C14D0Ev,_ZTv0_n16_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn96_N8S7883C14D1Ev,_ZThn56_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn96_N8S7883C14D0Ev,_ZThn56_N8S7883C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C10__8S7883C14__7S7883C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-192,-112),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn112_N8S7883C14D1Ev,_ZThn68_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn112_N8S7883C14D0Ev,_ZThn68_N8S7883C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C20__8S7883C14__7S7883C1[] = {
  ABISELECT(-124,-72),
  ABISELECT(-128,-76),
  ABISELECT(-208,-124),
  ABISELECT(-144,-88),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn128_N8S7883C14D1Ev,_ZThn76_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn128_N8S7883C14D0Ev,_ZThn76_N8S7883C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C28S7883C218S7883C20__A4__8S7883C14__7S7883C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(-224,-132),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn152_N8S7883C14D1Ev,_ZThn92_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn152_N8S7883C14D0Ev,_ZThn92_N8S7883C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C22__8S7883C14__7S7883C1[] = {
  ABISELECT(-164,-96),
  ABISELECT(-120,-72),
  ABISELECT(-184,-112),
  ABISELECT(-200,-120),
  ABISELECT(-72,-44),
  ABISELECT(24,16),
  ABISELECT(-168,-100),
  ABISELECT(-248,-148),
  ABISELECT(-152,-92),
  ABISELECT(-152,-92),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev)();
extern void ABISELECT(_ZThn176_N8S7883C14D1Ev,_ZThn108_N8S7883C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev)();
extern void ABISELECT(_ZThn176_N8S7883C14D0Ev,_ZThn108_N8S7883C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C16__A1__8S7883C14__7S7883C1[] = {
  ABISELECT(-188,-112),
  ABISELECT(-144,-88),
  ABISELECT(-208,-128),
  ABISELECT(-224,-136),
  ABISELECT(-96,-60),
  ABISELECT(-192,-116),
  ABISELECT(-272,-164),
  ABISELECT(-176,-108),
  ABISELECT(-176,-108),
  (VTBL_ENTRY)&(_ZTI8S7883C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev)();
extern void _ZN8S7883C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev)();
extern void _ZN8S7883C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C15__7S7883C1[] = {
  ABISELECT(-4,0),
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(-88,-52),
  ABISELECT(56,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev)();
extern void ABISELECT(_ZThn56_N8S7883C15D1Ev,_ZThn36_N8S7883C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev)();
extern void ABISELECT(_ZThn56_N8S7883C15D0Ev,_ZThn36_N8S7883C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C2__8S7883C15__7S7883C1[] = {
  ABISELECT(-60,-36),
  ABISELECT(-64,-40),
  ABISELECT(-144,-88),
  ABISELECT(-80,-52),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S7883C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C15__7S7883C1[] = {
  ABISELECT(88,52),
  ABISELECT(88,52),
  (VTBL_ENTRY)&(_ZTI8S7883C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C15__7S7883C1[] = {
  ABISELECT(16,12),
  ABISELECT(-64,-36),
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S7883C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev)();
extern void ABISELECT(_ZThn72_N8S7883C15D1Ev,_ZThn44_N8S7883C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev)();
extern void ABISELECT(_ZThn72_N8S7883C15D0Ev,_ZThn44_N8S7883C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C2__A1__8S7883C15__7S7883C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-160,-96),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S7883C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void _ZN7S7883C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void _ZN7S7883C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C2__A1__7S7883C1[] = {
  ABISELECT(-60,-36),
  ABISELECT(-64,-40),
  ABISELECT(-144,-88),
  ABISELECT(-80,-52),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void _ZN7S7883C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void _ZN7S7883C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C57S7883C2__A2__7S7883C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-144,-88),
  ABISELECT(-80,-52),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C57S7883C2__A2__7S7883C1[] = {
  ABISELECT(16,12),
  ABISELECT(-64,-36),
  ABISELECT(80,52),
  ABISELECT(80,52),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C57S7883C2__A2__7S7883C1[] = {
  ABISELECT(144,88),
  ABISELECT(144,88),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C2__A3__7S7883C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-160,-96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C2__A3__7S7883C1[] = {
  ABISELECT(160,96),
  ABISELECT(160,96),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C2__A1__7S7883C1[] = {
  ABISELECT(144,88),
  ABISELECT(144,88),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C2__A1__7S7883C1[] = {
  ABISELECT(16,12),
  ABISELECT(-64,-36),
  ABISELECT(80,52),
  ABISELECT(80,52),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S7883C2D1Ev,_ZThn8_N7S7883C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void ABISELECT(_ZThn16_N7S7883C2D0Ev,_ZThn8_N7S7883C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C7__A1__7S7883C2__A1__7S7883C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-160,-96),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev)();
extern void _ZN8S7883C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev)();
extern void _ZN8S7883C17D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C17__7S7883C1[] = {
  ABISELECT(-128,-76),
  ABISELECT(-96,-56),
  ABISELECT(-176,-104),
  ABISELECT(-112,-68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C5__8S7883C17__7S7883C1[] = {
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  ABISELECT(16,8),
  ABISELECT(128,76),
  ABISELECT(128,76),
  (VTBL_ENTRY)&(_ZTI8S7883C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C17__7S7883C1[] = {
  ABISELECT(16,12),
  ABISELECT(-64,-36),
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI8S7883C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C17__7S7883C1[] = {
  ABISELECT(176,104),
  ABISELECT(176,104),
  (VTBL_ENTRY)&(_ZTI8S7883C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev),
};
extern void _ZN8S7883C18D1Ev();
extern void _ZN8S7883C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7883C18__7S7883C1[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C18[0]),
  (VTBL_ENTRY)&_ZN8S7883C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7883C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev)();
extern void _ZN8S7883C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev)();
extern void _ZN8S7883C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C10__A1__7S7883C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-192,-112),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void _ZN7S7883C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
extern void _ZN7S7883C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C68S7883C10__A2__7S7883C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-192,-112),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C68S7883C10__A5__7S7883C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-192,-112),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C68S7883C10__A5__7S7883C1[] = {
  ABISELECT(192,112),
  ABISELECT(192,112),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C68S7883C10__A2__7S7883C1[] = {
  ABISELECT(192,112),
  ABISELECT(192,112),
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C10__A1__7S7883C1[] = {
  ABISELECT(192,112),
  ABISELECT(192,112),
  (VTBL_ENTRY)&(_ZTI8S7883C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev)();
extern void _ZN8S7883C20D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev)();
extern void _ZN8S7883C20D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C20__7S7883C1[] = {
  ABISELECT(-124,-72),
  ABISELECT(-128,-76),
  ABISELECT(-208,-124),
  ABISELECT(-144,-88),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev)();
extern void _ZN8S7883C21D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev)();
extern void _ZN8S7883C21D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C218S7883C20__7S7883C1[] = {
  ABISELECT(-124,-72),
  ABISELECT(-128,-76),
  ABISELECT(-208,-124),
  ABISELECT(-144,-88),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void _ZN7S7883C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void _ZN7S7883C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C28S7883C218S7883C20__A2__7S7883C1[] = {
  ABISELECT(-124,-72),
  ABISELECT(-128,-76),
  ABISELECT(-208,-124),
  ABISELECT(-144,-88),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void _ZN7S7883C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
extern void _ZN7S7883C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C57S7883C28S7883C218S7883C20__A3__7S7883C1[] = {
  ABISELECT(-128,-76),
  ABISELECT(-208,-124),
  ABISELECT(-144,-88),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C57S7883C28S7883C218S7883C20__A3__7S7883C1[] = {
  ABISELECT(16,12),
  ABISELECT(-64,-36),
  ABISELECT(144,88),
  ABISELECT(144,88),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C57S7883C28S7883C218S7883C20__A3__7S7883C1[] = {
  ABISELECT(208,124),
  ABISELECT(208,124),
  (VTBL_ENTRY)&(_ZTI7S7883C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C28S7883C218S7883C20__A6__7S7883C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(-224,-132),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C28S7883C218S7883C20__A6__7S7883C1[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C28S7883C218S7883C20__A2__7S7883C1[] = {
  ABISELECT(208,124),
  ABISELECT(208,124),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__7S7883C28S7883C218S7883C20__A2__7S7883C1[] = {
  ABISELECT(16,12),
  ABISELECT(-64,-36),
  ABISELECT(144,88),
  ABISELECT(144,88),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S7883C2D1Ev,_ZThn8_N7S7883C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev)();
extern void ABISELECT(_ZThn16_N7S7883C2D0Ev,_ZThn8_N7S7883C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C7__A1__7S7883C28S7883C218S7883C20__A2__7S7883C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(-224,-132),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7883C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C218S7883C20__7S7883C1[] = {
  ABISELECT(208,124),
  ABISELECT(208,124),
  (VTBL_ENTRY)&(_ZTI8S7883C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C218S7883C20__7S7883C1[] = {
  ABISELECT(16,12),
  ABISELECT(-64,-36),
  ABISELECT(144,88),
  ABISELECT(144,88),
  (VTBL_ENTRY)&(_ZTI8S7883C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev)();
extern void ABISELECT(_ZThn16_N8S7883C21D1Ev,_ZThn8_N8S7883C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev)();
extern void ABISELECT(_ZThn16_N8S7883C21D0Ev,_ZThn8_N8S7883C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C2__A1__8S7883C218S7883C20__7S7883C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(-224,-132),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7883C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C20__7S7883C1[] = {
  ABISELECT(208,124),
  ABISELECT(208,124),
  (VTBL_ENTRY)&(_ZTI8S7883C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C20__7S7883C1[] = {
  ABISELECT(16,12),
  ABISELECT(-64,-36),
  ABISELECT(144,88),
  ABISELECT(144,88),
  (VTBL_ENTRY)&(_ZTI8S7883C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev)();
extern void ABISELECT(_ZThn16_N8S7883C20D1Ev,_ZThn8_N8S7883C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev)();
extern void ABISELECT(_ZThn16_N8S7883C20D0Ev,_ZThn8_N8S7883C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C28S7883C21__A1__8S7883C20__7S7883C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(-224,-132),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7883C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev)();
extern void _ZN8S7883C22D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev)();
extern void _ZN8S7883C22D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C22__7S7883C1[] = {
  ABISELECT(-164,-96),
  ABISELECT(-120,-72),
  ABISELECT(-184,-112),
  ABISELECT(-200,-120),
  ABISELECT(-72,-44),
  ABISELECT(24,16),
  ABISELECT(-168,-100),
  ABISELECT(-248,-148),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev)();
extern void _ZN8S7883C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev)();
extern void _ZN8S7883C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C108S7883C22__A2__7S7883C1[] = {
  ABISELECT(-168,-100),
  ABISELECT(-248,-148),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void _ZN7S7883C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
extern void _ZN7S7883C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C68S7883C108S7883C22__A3__7S7883C1[] = {
  ABISELECT(-168,-100),
  ABISELECT(-248,-148),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C77S7883C68S7883C108S7883C22__A7__7S7883C1[] = {
  ABISELECT(-168,-100),
  ABISELECT(-248,-148),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C77S7883C68S7883C108S7883C22__A7__7S7883C1[] = {
  ABISELECT(248,148),
  ABISELECT(248,148),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C68S7883C108S7883C22__A3__7S7883C1[] = {
  ABISELECT(248,148),
  ABISELECT(248,148),
  (VTBL_ENTRY)&(_ZTI7S7883C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C108S7883C22__A2__7S7883C1[] = {
  ABISELECT(248,148),
  ABISELECT(248,148),
  (VTBL_ENTRY)&(_ZTI8S7883C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C22__7S7883C1[] = {
  ABISELECT(248,148),
  ABISELECT(248,148),
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev)();
extern void ABISELECT(_ZThn24_N8S7883C22D1Ev,_ZThn16_N8S7883C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev)();
extern void ABISELECT(_ZThn24_N8S7883C22D0Ev,_ZThn16_N8S7883C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C16__8S7883C22__7S7883C1[] = {
  ABISELECT(-188,-112),
  ABISELECT(-144,-88),
  ABISELECT(-208,-128),
  ABISELECT(-224,-136),
  ABISELECT(-96,-60),
  ABISELECT(-192,-116),
  ABISELECT(-272,-164),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7883C17__8S7883C22__7S7883C1[] = {
  ABISELECT(-128,-76),
  ABISELECT(-96,-56),
  ABISELECT(-176,-104),
  ABISELECT(-112,-68),
  ABISELECT(72,44),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C5__8S7883C22__7S7883C1[] = {
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  ABISELECT(16,8),
  ABISELECT(200,120),
  ABISELECT(200,120),
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__A1__8S7883C22__7S7883C1[] = {
  ABISELECT(16,12),
  ABISELECT(-64,-36),
  ABISELECT(184,112),
  ABISELECT(184,112),
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7883C22D1Ev,_ZTv0_n16_N8S7883C22D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7883C22D0Ev,_ZTv0_n16_N8S7883C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7883C18__8S7883C22__7S7883C1[] = {
  ABISELECT(120,72),
  ABISELECT(-48,-28),
  ABISELECT(120,72),
  (VTBL_ENTRY)&(_ZTI8S7883C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C22D1Ev,_ZTv0_n16_N8S7883C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C22D0Ev,_ZTv0_n16_N8S7883C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void _ZN8S7883C16D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
extern void _ZN8S7883C16D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C16__A1__7S7883C1[] = {
  ABISELECT(-188,-112),
  ABISELECT(-144,-88),
  ABISELECT(-208,-128),
  ABISELECT(-224,-136),
  ABISELECT(-96,-60),
  ABISELECT(-192,-116),
  ABISELECT(-272,-164),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void _ZN7S7883C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
extern void _ZN7S7883C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7883C78S7883C16__A8__7S7883C1[] = {
  ABISELECT(-192,-116),
  ABISELECT(-272,-164),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7883C78S7883C16__A8__7S7883C1[] = {
  ABISELECT(272,164),
  ABISELECT(272,164),
  (VTBL_ENTRY)&(_ZTI7S7883C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7883C17__8S7883C16__A1__7S7883C1[] = {
  ABISELECT(-128,-76),
  ABISELECT(-96,-56),
  ABISELECT(-176,-104),
  ABISELECT(-112,-68),
  ABISELECT(96,60),
  ABISELECT(96,60),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C5__8S7883C16__A1__7S7883C1[] = {
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  ABISELECT(16,8),
  ABISELECT(224,136),
  ABISELECT(224,136),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C16__A1__7S7883C1[] = {
  ABISELECT(16,12),
  ABISELECT(-64,-36),
  ABISELECT(208,128),
  ABISELECT(208,128),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C16__A1__7S7883C1[] = {
  ABISELECT(272,164),
  ABISELECT(272,164),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7883C16D1Ev,_ZTv0_n16_N8S7883C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7883C16D0Ev,_ZTv0_n16_N8S7883C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7883C18__8S7883C16__A1__7S7883C1[] = {
  ABISELECT(144,88),
  ABISELECT(-48,-28),
  ABISELECT(144,88),
  (VTBL_ENTRY)&(_ZTI8S7883C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C16D1Ev,_ZTv0_n16_N8S7883C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7883C16D0Ev,_ZTv0_n16_N8S7883C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C23D1Ev,_ZTv0_n12_N8S7883C23D1Ev)();
extern void _ZN8S7883C23D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C23D0Ev,_ZTv0_n12_N8S7883C23D0Ev)();
extern void _ZN8S7883C23D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C23__7S7883C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(-248,-152),
  ABISELECT(-216,-132),
  ABISELECT(-296,-180),
  ABISELECT(-232,-144),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C23D1Ev,_ZTv0_n12_N8S7883C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C23D0Ev,_ZTv0_n12_N8S7883C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C24D1Ev,_ZTv0_n12_N8S7883C24D1Ev)();
extern void _ZN8S7883C24D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C24D0Ev,_ZTv0_n12_N8S7883C24D0Ev)();
extern void _ZN8S7883C24D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C248S7883C23__7S7883C1[] = {
  ABISELECT(-248,-152),
  ABISELECT(-216,-132),
  ABISELECT(-296,-180),
  ABISELECT(-232,-144),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C24D1Ev,_ZTv0_n12_N8S7883C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C24D0Ev,_ZTv0_n12_N8S7883C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev)();
extern void _ZN8S7883C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev)();
extern void _ZN8S7883C17D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7883C178S7883C248S7883C23__A1__7S7883C1[] = {
  ABISELECT(-248,-152),
  ABISELECT(-216,-132),
  ABISELECT(-296,-180),
  ABISELECT(-232,-144),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7883C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C5__8S7883C178S7883C248S7883C23__A1__7S7883C1[] = {
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  ABISELECT(16,8),
  ABISELECT(248,152),
  ABISELECT(248,152),
  (VTBL_ENTRY)&(_ZTI8S7883C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C178S7883C248S7883C23__A1__7S7883C1[] = {
  ABISELECT(16,12),
  ABISELECT(-64,-36),
  ABISELECT(232,144),
  ABISELECT(232,144),
  (VTBL_ENTRY)&(_ZTI8S7883C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C178S7883C248S7883C23__A1__7S7883C1[] = {
  ABISELECT(296,180),
  ABISELECT(296,180),
  (VTBL_ENTRY)&(_ZTI8S7883C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C24D1Ev,_ZTv0_n12_N8S7883C24D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C24D0Ev,_ZTv0_n12_N8S7883C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C5__8S7883C248S7883C23__7S7883C1[] = {
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  ABISELECT(16,8),
  ABISELECT(248,152),
  ABISELECT(248,152),
  (VTBL_ENTRY)&(_ZTI8S7883C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C24D1Ev,_ZTv0_n12_N8S7883C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C24D0Ev,_ZTv0_n12_N8S7883C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C24D1Ev,_ZTv0_n12_N8S7883C24D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C24D0Ev,_ZTv0_n12_N8S7883C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C248S7883C23__7S7883C1[] = {
  ABISELECT(16,12),
  ABISELECT(-64,-36),
  ABISELECT(232,144),
  ABISELECT(232,144),
  (VTBL_ENTRY)&(_ZTI8S7883C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C24D1Ev,_ZTv0_n12_N8S7883C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C24D0Ev,_ZTv0_n12_N8S7883C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C24D1Ev,_ZTv0_n12_N8S7883C24D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C24D0Ev,_ZTv0_n12_N8S7883C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C248S7883C23__7S7883C1[] = {
  ABISELECT(296,180),
  ABISELECT(296,180),
  (VTBL_ENTRY)&(_ZTI8S7883C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C24D1Ev,_ZTv0_n12_N8S7883C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C24D0Ev,_ZTv0_n12_N8S7883C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C23D1Ev,_ZTv0_n12_N8S7883C23D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C23D0Ev,_ZTv0_n12_N8S7883C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C6__8S7883C23__7S7883C1[] = {
  ABISELECT(16,12),
  ABISELECT(-64,-36),
  ABISELECT(232,144),
  ABISELECT(232,144),
  (VTBL_ENTRY)&(_ZTI8S7883C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C23D1Ev,_ZTv0_n12_N8S7883C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C23D0Ev,_ZTv0_n12_N8S7883C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C23D1Ev,_ZTv0_n12_N8S7883C23D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C23D0Ev,_ZTv0_n12_N8S7883C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7883C23__7S7883C1[] = {
  ABISELECT(296,180),
  ABISELECT(296,180),
  (VTBL_ENTRY)&(_ZTI8S7883C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C23D1Ev,_ZTv0_n12_N8S7883C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C23D0Ev,_ZTv0_n12_N8S7883C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C23D1Ev,_ZTv0_n12_N8S7883C23D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C23D0Ev,_ZTv0_n12_N8S7883C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7883C5__8S7883C23__7S7883C1[] = {
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  ABISELECT(16,8),
  ABISELECT(248,152),
  ABISELECT(248,152),
  (VTBL_ENTRY)&(_ZTI8S7883C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C23D1Ev,_ZTv0_n12_N8S7883C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C23D0Ev,_ZTv0_n12_N8S7883C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7883C23D1Ev,_ZTv0_n12_N8S7883C23D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7883C23D0Ev,_ZTv0_n12_N8S7883C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7883C10__8S7883C23__7S7883C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-192,-112),
  ABISELECT(104,68),
  ABISELECT(104,68),
  (VTBL_ENTRY)&(_ZTI8S7883C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C23D1Ev,_ZTv0_n12_N8S7883C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7883C23D0Ev,_ZTv0_n12_N8S7883C23D0Ev),
};
static  VTT_ENTRY vtt_S7883C1[] = {
  {&(_ZTV7S7883C1[20]),  20,202},
  {&(_tg__ZTV7S7883C2__A__7S7883C1[7]),  7,9},
  {&(_tg__ZTV7S7883C57S7883C2__7S7883C1[6]),  6,8},
  {&(_tg__ZTV7S7883C6__7S7883C57S7883C2__7S7883C1[5]),  5,7},
  {&(_tg__ZTV7S7883C57S7883C2__7S7883C1[6]),  6,8},
  {&(_tg__ZTV7S7883C77S7883C2__A1__7S7883C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C2__A1__7S7883C1[3]),  3,5},
  {&(_tg__ZTV7S7883C2__A__7S7883C1[7]),  7,9},
  {&(_tg__ZTV7S7883C6__7S7883C2__A__7S7883C1[5]),  5,7},
  {&(_tg__ZTV7S7883C7__A1__7S7883C2__A__7S7883C1[5]),  5,7},
  {&(_tg__ZTV8S7883C10__A__7S7883C1[5]),  5,7},
  {&(_tg__ZTV7S7883C68S7883C10__A1__7S7883C1[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C68S7883C10__A2__7S7883C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C68S7883C10__A2__7S7883C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C68S7883C10__A1__7S7883C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S7883C10__A__7S7883C1[3]),  3,5},
  {&(_tg__ZTV8S7883C11__7S7883C1[7]),  7,9},
  {&(_tg__ZTV8S7883C11__7S7883C1[7]),  7,9},
  {&(_tg__ZTV7S7883C6__8S7883C11__7S7883C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S7883C11__7S7883C1[3]),  3,5},
  {&(_ZTV7S7883C1[20]),  20,202},
  {&(_ZTV7S7883C1[50]),  50,202},
  {&(_ZTV7S7883C1[27]),  27,202},
  {&(_ZTV7S7883C1[34]),  34,202},
  {&(_ZTV7S7883C1[43]),  43,202},
  {&(_ZTV7S7883C1[43]),  43,202},
  {&(_ZTV7S7883C1[71]),  71,202},
  {&(_ZTV7S7883C1[89]),  89,202},
  {&(_ZTV7S7883C1[71]),  71,202},
  {&(_ZTV7S7883C1[126]),  126,202},
  {&(_ZTV7S7883C1[133]),  133,202},
  {&(_ZTV7S7883C1[101]),  101,202},
  {&(_ZTV7S7883C1[142]),  142,202},
  {&(_ZTV7S7883C1[117]),  117,202},
  {&(_ZTV7S7883C1[117]),  117,202},
  {&(_ZTV7S7883C1[149]),  149,202},
  {&(_ZTV7S7883C1[158]),  158,202},
  {&(_ZTV7S7883C1[165]),  165,202},
  {&(_ZTV7S7883C1[178]),  178,202},
  {&(_ZTV7S7883C1[190]),  190,202},
  {&(_ZTV7S7883C1[200]),  200,202},
  {&(_tg__ZTV7S7883C6__7S7883C1[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C6__7S7883C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C6__7S7883C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C6__7S7883C1[3]),  3,5},
  {&(_tg__ZTV7S7883C5__A1__7S7883C1[6]),  6,8},
  {&(_tg__ZTV7S7883C6__7S7883C5__A1__7S7883C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C5__A1__7S7883C1[3]),  3,5},
  {&(_tg__ZTV8S7883C12__7S7883C1[19]),  19,21},
  {&(_tg__ZTV8S7883C138S7883C12__7S7883C1[18]),  18,20},
  {&(_tg__ZTV7S7883C5__8S7883C138S7883C12__7S7883C1[6]),  6,8},
  {&(_tg__ZTV7S7883C6__8S7883C138S7883C12__7S7883C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S7883C138S7883C12__7S7883C1[3]),  3,5},
  {&(_tg__ZTV8S7883C14__8S7883C138S7883C12__7S7883C1[16]),  16,18},
  {&(_tg__ZTV8S7883C138S7883C12__7S7883C1[18]),  18,20},
  {&(_tg__ZTV7S7883C2__8S7883C138S7883C12__7S7883C1[7]),  7,9},
  {&(_tg__ZTV7S7883C77S7883C2__A1__8S7883C138S7883C12__7S7883C1[5]),  5,7},
  {&(_tg__ZTV8S7883C168S7883C14__8S7883C138S7883C12__7S7883C1[10]),  10,12},
  {&(_tg__ZTV8S7883C17__8S7883C138S7883C12__7S7883C1[7]),  7,9},
  {&(_tg__ZTV8S7883C198S7883C14__8S7883C138S7883C12__7S7883C1[14]),  14,16},
  {&(_tg__ZTV8S7883C198S7883C14__8S7883C138S7883C12__7S7883C1[14]),  14,16},
  {&(_tg__ZTV8S7883C10__8S7883C138S7883C12__7S7883C1[5]),  5,7},
  {&(_tg__ZTV8S7883C20__8S7883C138S7883C12__7S7883C1[7]),  7,9},
  {&(_tg__ZTV7S7883C77S7883C28S7883C218S7883C20__A4__8S7883C138S7883C12__7S7883C1[5]),  5,7},
  {&(_tg__ZTV8S7883C22__8S7883C138S7883C12__7S7883C1[11]),  11,13},
  {&(_tg__ZTV8S7883C16__A1__8S7883C138S7883C12__7S7883C1[10]),  10,12},
  {&(_tg__ZTV7S7883C5__8S7883C12__7S7883C1[6]),  6,8},
  {&(_tg__ZTV7S7883C6__8S7883C12__7S7883C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S7883C12__7S7883C1[3]),  3,5},
  {&(_tg__ZTV8S7883C14__8S7883C12__7S7883C1[16]),  16,18},
  {&(_tg__ZTV8S7883C12__7S7883C1[19]),  19,21},
  {&(_tg__ZTV7S7883C2__8S7883C12__7S7883C1[7]),  7,9},
  {&(_tg__ZTV7S7883C77S7883C2__A1__8S7883C12__7S7883C1[5]),  5,7},
  {&(_tg__ZTV8S7883C168S7883C14__8S7883C12__7S7883C1[10]),  10,12},
  {&(_tg__ZTV8S7883C17__8S7883C12__7S7883C1[7]),  7,9},
  {&(_tg__ZTV8S7883C198S7883C14__8S7883C12__7S7883C1[14]),  14,16},
  {&(_tg__ZTV8S7883C198S7883C14__8S7883C12__7S7883C1[14]),  14,16},
  {&(_tg__ZTV8S7883C10__8S7883C12__7S7883C1[5]),  5,7},
  {&(_tg__ZTV8S7883C20__8S7883C12__7S7883C1[7]),  7,9},
  {&(_tg__ZTV7S7883C77S7883C28S7883C218S7883C20__A4__8S7883C12__7S7883C1[5]),  5,7},
  {&(_tg__ZTV8S7883C22__8S7883C12__7S7883C1[11]),  11,13},
  {&(_tg__ZTV8S7883C16__A1__8S7883C12__7S7883C1[10]),  10,12},
  {&(_tg__ZTV8S7883C23__8S7883C12__7S7883C1[8]),  8,10},
  {&(_tg__ZTV8S7883C14__7S7883C1[15]),  15,17},
  {&(_tg__ZTV8S7883C168S7883C14__7S7883C1[10]),  10,12},
  {&(_tg__ZTV7S7883C78S7883C168S7883C14__A4__7S7883C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C78S7883C168S7883C14__A4__7S7883C1[3]),  3,5},
  {&(_tg__ZTV8S7883C17__8S7883C168S7883C14__7S7883C1[7]),  7,9},
  {&(_tg__ZTV7S7883C5__8S7883C168S7883C14__7S7883C1[6]),  6,8},
  {&(_tg__ZTV7S7883C6__8S7883C168S7883C14__7S7883C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S7883C168S7883C14__7S7883C1[3]),  3,5},
  {&(_tg__ZTV8S7883C18__8S7883C168S7883C14__7S7883C1[4]),  4,6},
  {&(_tg__ZTV8S7883C198S7883C14__7S7883C1[14]),  14,16},
  {&(_tg__ZTV10S7883C3_nt__8S7883C198S7883C14__7S7883C1[3]),  3,5},
  {&(_tg__ZTV8S7883C10__8S7883C198S7883C14__7S7883C1[5]),  5,7},
  {&(_tg__ZTV8S7883C20__8S7883C198S7883C14__7S7883C1[7]),  7,9},
  {&(_tg__ZTV7S7883C6__A1__8S7883C198S7883C14__7S7883C1[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C28S7883C218S7883C20__A2__8S7883C198S7883C14__7S7883C1[5]),  5,7},
  {&(_tg__ZTV8S7883C22__8S7883C198S7883C14__7S7883C1[11]),  11,13},
  {&(_tg__ZTV8S7883C16__8S7883C198S7883C14__7S7883C1[10]),  10,12},
  {&(_tg__ZTV8S7883C17__8S7883C198S7883C14__7S7883C1[7]),  7,9},
  {&(_tg__ZTV7S7883C5__A1__8S7883C198S7883C14__7S7883C1[6]),  6,8},
  {&(_tg__ZTV8S7883C198S7883C14__7S7883C1[14]),  14,16},
  {&(_tg__ZTV8S7883C15__8S7883C14__7S7883C1[8]),  8,10},
  {&(_tg__ZTV7S7883C2__8S7883C14__7S7883C1[7]),  7,9},
  {&(_tg__ZTV10S7883C3_nt__A1__8S7883C14__7S7883C1[3]),  3,5},
  {&(_tg__ZTV7S7883C6__8S7883C14__7S7883C1[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C2__A1__8S7883C14__7S7883C1[5]),  5,7},
  {&(_tg__ZTV8S7883C16__A__8S7883C14__7S7883C1[10]),  10,12},
  {&(_tg__ZTV8S7883C17__8S7883C14__7S7883C1[7]),  7,9},
  {&(_tg__ZTV7S7883C5__A1__8S7883C14__7S7883C1[6]),  6,8},
  {&(_tg__ZTV8S7883C19__8S7883C14__7S7883C1[14]),  14,16},
  {&(_tg__ZTV8S7883C19__8S7883C14__7S7883C1[14]),  14,16},
  {&(_tg__ZTV8S7883C10__8S7883C14__7S7883C1[5]),  5,7},
  {&(_tg__ZTV8S7883C20__8S7883C14__7S7883C1[7]),  7,9},
  {&(_tg__ZTV7S7883C77S7883C28S7883C218S7883C20__A4__8S7883C14__7S7883C1[5]),  5,7},
  {&(_tg__ZTV8S7883C22__8S7883C14__7S7883C1[11]),  11,13},
  {&(_tg__ZTV8S7883C16__A1__8S7883C14__7S7883C1[10]),  10,12},
  {&(_tg__ZTV8S7883C15__7S7883C1[8]),  8,10},
  {&(_tg__ZTV7S7883C2__8S7883C15__7S7883C1[7]),  7,9},
  {&(_tg__ZTV10S7883C3_nt__8S7883C15__7S7883C1[3]),  3,5},
  {&(_tg__ZTV7S7883C6__8S7883C15__7S7883C1[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C2__A1__8S7883C15__7S7883C1[5]),  5,7},
  {&(_tg__ZTV7S7883C2__A1__7S7883C1[7]),  7,9},
  {&(_tg__ZTV7S7883C57S7883C2__A2__7S7883C1[6]),  6,8},
  {&(_tg__ZTV7S7883C6__7S7883C57S7883C2__A2__7S7883C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C57S7883C2__A2__7S7883C1[3]),  3,5},
  {&(_tg__ZTV7S7883C77S7883C2__A3__7S7883C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C2__A3__7S7883C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C2__A1__7S7883C1[3]),  3,5},
  {&(_tg__ZTV7S7883C6__7S7883C2__A1__7S7883C1[5]),  5,7},
  {&(_tg__ZTV7S7883C7__A1__7S7883C2__A1__7S7883C1[5]),  5,7},
  {&(_tg__ZTV8S7883C17__7S7883C1[7]),  7,9},
  {&(_tg__ZTV7S7883C5__8S7883C17__7S7883C1[6]),  6,8},
  {&(_tg__ZTV7S7883C6__8S7883C17__7S7883C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S7883C17__7S7883C1[3]),  3,5},
  {&(_tg__ZTV8S7883C18__7S7883C1[3]),  3,5},
  {&(_tg__ZTV8S7883C10__A1__7S7883C1[5]),  5,7},
  {&(_tg__ZTV7S7883C68S7883C10__A2__7S7883C1[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C68S7883C10__A5__7S7883C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C68S7883C10__A5__7S7883C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C68S7883C10__A2__7S7883C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S7883C10__A1__7S7883C1[3]),  3,5},
  {&(_tg__ZTV8S7883C20__7S7883C1[7]),  7,9},
  {&(_tg__ZTV8S7883C218S7883C20__7S7883C1[7]),  7,9},
  {&(_tg__ZTV7S7883C28S7883C218S7883C20__A2__7S7883C1[7]),  7,9},
  {&(_tg__ZTV7S7883C57S7883C28S7883C218S7883C20__A3__7S7883C1[6]),  6,8},
  {&(_tg__ZTV7S7883C6__7S7883C57S7883C28S7883C218S7883C20__A3__7S7883C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C57S7883C28S7883C218S7883C20__A3__7S7883C1[3]),  3,5},
  {&(_tg__ZTV7S7883C77S7883C28S7883C218S7883C20__A6__7S7883C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C28S7883C218S7883C20__A6__7S7883C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C28S7883C218S7883C20__A2__7S7883C1[3]),  3,5},
  {&(_tg__ZTV7S7883C6__7S7883C28S7883C218S7883C20__A2__7S7883C1[5]),  5,7},
  {&(_tg__ZTV7S7883C7__A1__7S7883C28S7883C218S7883C20__A2__7S7883C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S7883C218S7883C20__7S7883C1[3]),  3,5},
  {&(_tg__ZTV7S7883C6__8S7883C218S7883C20__7S7883C1[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C2__A1__8S7883C218S7883C20__7S7883C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S7883C20__7S7883C1[3]),  3,5},
  {&(_tg__ZTV7S7883C6__8S7883C20__7S7883C1[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C28S7883C21__A1__8S7883C20__7S7883C1[5]),  5,7},
  {&(_tg__ZTV8S7883C22__7S7883C1[11]),  11,13},
  {&(_tg__ZTV8S7883C108S7883C22__A2__7S7883C1[5]),  5,7},
  {&(_tg__ZTV7S7883C68S7883C108S7883C22__A3__7S7883C1[5]),  5,7},
  {&(_tg__ZTV7S7883C77S7883C68S7883C108S7883C22__A7__7S7883C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C77S7883C68S7883C108S7883C22__A7__7S7883C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7883C68S7883C108S7883C22__A3__7S7883C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S7883C108S7883C22__A2__7S7883C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S7883C22__7S7883C1[3]),  3,5},
  {&(_tg__ZTV8S7883C16__8S7883C22__7S7883C1[10]),  10,12},
  {&(_tg__ZTV8S7883C17__8S7883C22__7S7883C1[7]),  7,9},
  {&(_tg__ZTV7S7883C5__8S7883C22__7S7883C1[6]),  6,8},
  {&(_tg__ZTV7S7883C6__A1__8S7883C22__7S7883C1[5]),  5,7},
  {&(_tg__ZTV8S7883C18__8S7883C22__7S7883C1[4]),  4,6},
  {&(_tg__ZTV8S7883C16__A1__7S7883C1[10]),  10,12},
  {&(_tg__ZTV7S7883C78S7883C16__A8__7S7883C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7883C78S7883C16__A8__7S7883C1[3]),  3,5},
  {&(_tg__ZTV8S7883C17__8S7883C16__A1__7S7883C1[7]),  7,9},
  {&(_tg__ZTV7S7883C5__8S7883C16__A1__7S7883C1[6]),  6,8},
  {&(_tg__ZTV7S7883C6__8S7883C16__A1__7S7883C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S7883C16__A1__7S7883C1[3]),  3,5},
  {&(_tg__ZTV8S7883C18__8S7883C16__A1__7S7883C1[4]),  4,6},
  {&(_tg__ZTV8S7883C23__7S7883C1[8]),  8,10},
  {&(_tg__ZTV8S7883C248S7883C23__7S7883C1[7]),  7,9},
  {&(_tg__ZTV8S7883C178S7883C248S7883C23__A1__7S7883C1[7]),  7,9},
  {&(_tg__ZTV7S7883C5__8S7883C178S7883C248S7883C23__A1__7S7883C1[6]),  6,8},
  {&(_tg__ZTV7S7883C6__8S7883C178S7883C248S7883C23__A1__7S7883C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S7883C178S7883C248S7883C23__A1__7S7883C1[3]),  3,5},
  {&(_tg__ZTV7S7883C5__8S7883C248S7883C23__7S7883C1[6]),  6,8},
  {&(_tg__ZTV7S7883C6__8S7883C248S7883C23__7S7883C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S7883C248S7883C23__7S7883C1[3]),  3,5},
  {&(_tg__ZTV7S7883C6__8S7883C23__7S7883C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S7883C23__7S7883C1[3]),  3,5},
  {&(_tg__ZTV7S7883C5__8S7883C23__7S7883C1[6]),  6,8},
  {&(_tg__ZTV8S7883C10__8S7883C23__7S7883C1[5]),  5,7},
};
extern VTBL_ENTRY _ZTI7S7883C1[];
extern  VTBL_ENTRY _ZTV7S7883C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7883C1[];
static VTBL_ENTRY alt_thunk_names49[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C24D0Ev,_ZTv0_n12_N8S7883C24D0Ev), // 
  (VTBL_ENTRY)_ZN8S7883C24D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C24D1Ev,_ZTv0_n12_N8S7883C24D1Ev), // 
  (VTBL_ENTRY)_ZN8S7883C24D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C23D0Ev,_ZTv0_n12_N8S7883C23D0Ev), // 
  (VTBL_ENTRY)_ZN8S7883C23D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C23D1Ev,_ZTv0_n12_N8S7883C23D1Ev), // 
  (VTBL_ENTRY)_ZN8S7883C23D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C22D0Ev,_ZTv0_n12_N8S7883C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C22D0Ev,_ZThn16_N8S7883C22D0Ev),
  (VTBL_ENTRY)_ZN8S7883C22D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C22D1Ev,_ZTv0_n12_N8S7883C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C22D1Ev,_ZThn16_N8S7883C22D1Ev),
  (VTBL_ENTRY)_ZN8S7883C22D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C21D0Ev,_ZTv0_n12_N8S7883C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C21D0Ev,_ZThn8_N8S7883C21D0Ev),
  (VTBL_ENTRY)_ZN8S7883C21D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C21D1Ev,_ZTv0_n12_N8S7883C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C21D1Ev,_ZThn8_N8S7883C21D1Ev),
  (VTBL_ENTRY)_ZN8S7883C21D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C20D0Ev,_ZTv0_n12_N8S7883C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C20D0Ev,_ZThn8_N8S7883C20D0Ev),
  (VTBL_ENTRY)_ZN8S7883C20D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C20D1Ev,_ZTv0_n12_N8S7883C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C20D1Ev,_ZThn8_N8S7883C20D1Ev),
  (VTBL_ENTRY)_ZN8S7883C20D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C17D0Ev,_ZTv0_n12_N8S7883C17D0Ev), // 
  (VTBL_ENTRY)_ZN8S7883C17D0Ev,
  (VTBL_ENTRY)_ZN8S7883C17D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C17D1Ev,_ZTv0_n12_N8S7883C17D1Ev), // 
  (VTBL_ENTRY)_ZN8S7883C17D1Ev,
  (VTBL_ENTRY)_ZN8S7883C17D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C15D0Ev,_ZTv0_n12_N8S7883C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7883C15D0Ev,_ZThn44_N8S7883C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7883C15D0Ev,_ZThn36_N8S7883C15D0Ev),
  (VTBL_ENTRY)_ZN8S7883C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C15D1Ev,_ZTv0_n12_N8S7883C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7883C15D1Ev,_ZThn44_N8S7883C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7883C15D1Ev,_ZThn36_N8S7883C15D1Ev),
  (VTBL_ENTRY)_ZN8S7883C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C14D0Ev,_ZTv0_n16_N8S7883C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7883C14D0Ev,_ZThn20_N8S7883C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C14D1Ev,_ZTv0_n16_N8S7883C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7883C14D1Ev,_ZThn20_N8S7883C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C14D0Ev,_ZTv0_n12_N8S7883C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7883C14D0Ev,_ZThn108_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7883C14D0Ev,_ZThn92_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7883C14D0Ev,_ZThn76_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7883C14D0Ev,_ZThn68_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7883C14D0Ev,_ZThn56_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7883C14D0Ev,_ZThn48_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7883C14D0Ev,_ZThn4_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7883C14D0Ev,_ZThn40_N8S7883C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7883C14D0Ev,_ZThn32_N8S7883C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C14D1Ev,_ZTv0_n12_N8S7883C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7883C14D1Ev,_ZThn108_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7883C14D1Ev,_ZThn92_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7883C14D1Ev,_ZThn76_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7883C14D1Ev,_ZThn68_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7883C14D1Ev,_ZThn56_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7883C14D1Ev,_ZThn48_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7883C14D1Ev,_ZThn4_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7883C14D1Ev,_ZThn40_N8S7883C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7883C14D1Ev,_ZThn32_N8S7883C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C19D0Ev,_ZTv0_n12_N8S7883C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7883C19D0Ev,_ZThn28_N8S7883C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7883C19D0Ev,_ZThn88_N8S7883C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7883C19D0Ev,_ZThn72_N8S7883C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7883C19D0Ev,_ZThn56_N8S7883C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7883C19D0Ev,_ZThn48_N8S7883C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7883C19D0Ev,_ZThn36_N8S7883C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C19D1Ev,_ZTv0_n12_N8S7883C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7883C19D1Ev,_ZThn28_N8S7883C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7883C19D1Ev,_ZThn88_N8S7883C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7883C19D1Ev,_ZThn72_N8S7883C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7883C19D1Ev,_ZThn56_N8S7883C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7883C19D1Ev,_ZThn48_N8S7883C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7883C19D1Ev,_ZThn36_N8S7883C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C19D0Ev,_ZTv0_n16_N8S7883C19D0Ev), // 
  (VTBL_ENTRY)_ZN8S7883C19D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C19D1Ev,_ZTv0_n16_N8S7883C19D1Ev), // 
  (VTBL_ENTRY)_ZN8S7883C19D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C16D0Ev,_ZTv0_n16_N8S7883C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C16D0Ev,_ZThn16_N8S7883C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C16D1Ev,_ZTv0_n16_N8S7883C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7883C16D1Ev,_ZThn16_N8S7883C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C16D0Ev,_ZTv0_n12_N8S7883C16D0Ev), // 
  (VTBL_ENTRY)_ZN8S7883C16D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7883C16D0Ev,_ZThn44_N8S7883C16D0Ev),
  (VTBL_ENTRY)_ZN8S7883C16D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C16D1Ev,_ZTv0_n12_N8S7883C16D1Ev), // 
  (VTBL_ENTRY)_ZN8S7883C16D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7883C16D1Ev,_ZThn44_N8S7883C16D1Ev),
  (VTBL_ENTRY)_ZN8S7883C16D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C12D0Ev,_ZTv0_n16_N8S7883C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7883C12D0Ev,_ZThn24_N8S7883C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C12D1Ev,_ZTv0_n16_N8S7883C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7883C12D1Ev,_ZThn24_N8S7883C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7883C12D0Ev,_ZTv0_n64_N8S7883C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7883C12D0Ev,_ZThn4_N8S7883C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7883C12D1Ev,_ZTv0_n64_N8S7883C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7883C12D1Ev,_ZThn4_N8S7883C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C13D0Ev,_ZTv0_n16_N8S7883C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7883C13D0Ev,_ZThn24_N8S7883C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7883C13D1Ev,_ZTv0_n16_N8S7883C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7883C13D1Ev,_ZThn24_N8S7883C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7883C13D0Ev,_ZTv0_n64_N8S7883C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7883C13D0Ev,_ZThn4_N8S7883C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S7883C13D1Ev,_ZTv0_n64_N8S7883C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7883C13D1Ev,_ZThn4_N8S7883C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C13D0Ev,_ZTv0_n12_N8S7883C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7883C13D0Ev,_ZThn112_N8S7883C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7883C13D0Ev,_ZThn96_N8S7883C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7883C13D0Ev,_ZThn80_N8S7883C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7883C13D0Ev,_ZThn72_N8S7883C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7883C13D0Ev,_ZThn60_N8S7883C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7883C13D0Ev,_ZThn52_N8S7883C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C13D0Ev,_ZThn8_N8S7883C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7883C13D0Ev,_ZThn44_N8S7883C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7883C13D0Ev,_ZThn36_N8S7883C13D0Ev),
  (VTBL_ENTRY)_ZN8S7883C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C13D1Ev,_ZTv0_n12_N8S7883C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7883C13D1Ev,_ZThn112_N8S7883C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7883C13D1Ev,_ZThn96_N8S7883C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7883C13D1Ev,_ZThn80_N8S7883C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7883C13D1Ev,_ZThn72_N8S7883C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7883C13D1Ev,_ZThn60_N8S7883C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7883C13D1Ev,_ZThn52_N8S7883C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C13D1Ev,_ZThn8_N8S7883C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7883C13D1Ev,_ZThn44_N8S7883C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7883C13D1Ev,_ZThn36_N8S7883C13D1Ev),
  (VTBL_ENTRY)_ZN8S7883C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C12D0Ev,_ZTv0_n12_N8S7883C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7883C12D0Ev,_ZThn128_N8S7883C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7883C12D0Ev,_ZThn112_N8S7883C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7883C12D0Ev,_ZThn96_N8S7883C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7883C12D0Ev,_ZThn80_N8S7883C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7883C12D0Ev,_ZThn72_N8S7883C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7883C12D0Ev,_ZThn60_N8S7883C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7883C12D0Ev,_ZThn52_N8S7883C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C12D0Ev,_ZThn8_N8S7883C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7883C12D0Ev,_ZThn44_N8S7883C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7883C12D0Ev,_ZThn36_N8S7883C12D0Ev),
  (VTBL_ENTRY)_ZN8S7883C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C12D1Ev,_ZTv0_n12_N8S7883C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7883C12D1Ev,_ZThn128_N8S7883C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S7883C12D1Ev,_ZThn112_N8S7883C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7883C12D1Ev,_ZThn96_N8S7883C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7883C12D1Ev,_ZThn80_N8S7883C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7883C12D1Ev,_ZThn72_N8S7883C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7883C12D1Ev,_ZThn60_N8S7883C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7883C12D1Ev,_ZThn52_N8S7883C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C12D1Ev,_ZThn8_N8S7883C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7883C12D1Ev,_ZThn44_N8S7883C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7883C12D1Ev,_ZThn36_N8S7883C12D1Ev),
  (VTBL_ENTRY)_ZN8S7883C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C11D0Ev,_ZTv0_n12_N8S7883C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C11D0Ev,_ZThn8_N8S7883C11D0Ev),
  (VTBL_ENTRY)_ZN8S7883C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C11D1Ev,_ZTv0_n12_N8S7883C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7883C11D1Ev,_ZThn8_N8S7883C11D1Ev),
  (VTBL_ENTRY)_ZN8S7883C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C6D0Ev,_ZTv0_n12_N7S7883C6D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C6D0Ev,
  (VTBL_ENTRY)_ZN7S7883C6D0Ev,
  (VTBL_ENTRY)_ZN7S7883C6D0Ev,
  (VTBL_ENTRY)_ZN7S7883C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C6D1Ev,_ZTv0_n12_N7S7883C6D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C6D1Ev,
  (VTBL_ENTRY)_ZN7S7883C6D1Ev,
  (VTBL_ENTRY)_ZN7S7883C6D1Ev,
  (VTBL_ENTRY)_ZN7S7883C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C10D0Ev,_ZTv0_n12_N8S7883C10D0Ev), // 
  (VTBL_ENTRY)_ZN8S7883C10D0Ev,
  (VTBL_ENTRY)_ZN8S7883C10D0Ev,
  (VTBL_ENTRY)_ZN8S7883C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7883C10D1Ev,_ZTv0_n12_N8S7883C10D1Ev), // 
  (VTBL_ENTRY)_ZN8S7883C10D1Ev,
  (VTBL_ENTRY)_ZN8S7883C10D1Ev,
  (VTBL_ENTRY)_ZN8S7883C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D0Ev,_ZTv0_n12_N7S7883C7D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  (VTBL_ENTRY)_ZN7S7883C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C7D1Ev,_ZTv0_n12_N7S7883C7D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  (VTBL_ENTRY)_ZN7S7883C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C5D0Ev,_ZTv0_n12_N7S7883C5D0Ev), // 
  (VTBL_ENTRY)_ZN7S7883C5D0Ev,
  (VTBL_ENTRY)_ZN7S7883C5D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C5D0Ev,_ZThn8_N7S7883C5D0Ev),
  (VTBL_ENTRY)_ZN7S7883C5D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7883C5D0Ev,_ZThn36_N7S7883C5D0Ev),
  (VTBL_ENTRY)_ZN7S7883C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C5D1Ev,_ZTv0_n12_N7S7883C5D1Ev), // 
  (VTBL_ENTRY)_ZN7S7883C5D1Ev,
  (VTBL_ENTRY)_ZN7S7883C5D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C5D1Ev,_ZThn8_N7S7883C5D1Ev),
  (VTBL_ENTRY)_ZN7S7883C5D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7883C5D1Ev,_ZThn36_N7S7883C5D1Ev),
  (VTBL_ENTRY)_ZN7S7883C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C2D0Ev,_ZTv0_n12_N7S7883C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C2D0Ev,_ZThn8_N7S7883C2D0Ev),
  (VTBL_ENTRY)_ZN7S7883C2D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C2D0Ev,_ZThn8_N7S7883C2D0Ev),
  (VTBL_ENTRY)_ZN7S7883C2D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C2D0Ev,_ZThn8_N7S7883C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7883C2D0Ev,_ZThn36_N7S7883C2D0Ev),
  (VTBL_ENTRY)_ZN7S7883C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C2D1Ev,_ZTv0_n12_N7S7883C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C2D1Ev,_ZThn8_N7S7883C2D1Ev),
  (VTBL_ENTRY)_ZN7S7883C2D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C2D1Ev,_ZThn8_N7S7883C2D1Ev),
  (VTBL_ENTRY)_ZN7S7883C2D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C2D1Ev,_ZThn8_N7S7883C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7883C2D1Ev,_ZThn36_N7S7883C2D1Ev),
  (VTBL_ENTRY)_ZN7S7883C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7883C1D0Ev,_ZTv0_n16_N7S7883C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7883C1D0Ev,_ZThn76_N7S7883C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7883C1D1Ev,_ZTv0_n16_N7S7883C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7883C1D1Ev,_ZThn76_N7S7883C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7883C1D0Ev,_ZTv0_n64_N7S7883C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7883C1D0Ev,_ZThn56_N7S7883C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S7883C1D1Ev,_ZTv0_n64_N7S7883C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7883C1D1Ev,_ZThn56_N7S7883C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C1D0Ev,_ZTv0_n12_N7S7883C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N7S7883C1D0Ev,_ZThn180_N7S7883C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7883C1D0Ev,_ZThn164_N7S7883C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S7883C1D0Ev,_ZThn148_N7S7883C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S7883C1D0Ev,_ZThn132_N7S7883C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7883C1D0Ev,_ZThn124_N7S7883C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7883C1D0Ev,_ZThn112_N7S7883C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7883C1D0Ev,_ZThn104_N7S7883C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7883C1D0Ev,_ZThn96_N7S7883C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7883C1D0Ev,_ZThn88_N7S7883C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7883C1D0Ev,_ZThn60_N7S7883C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7883C1D0Ev,_ZThn52_N7S7883C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7883C1D0Ev,_ZThn36_N7S7883C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7883C1D0Ev,_ZThn28_N7S7883C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7883C1D0Ev,_ZThn16_N7S7883C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C1D0Ev,_ZThn8_N7S7883C1D0Ev),
  (VTBL_ENTRY)_ZN7S7883C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7883C1D1Ev,_ZTv0_n12_N7S7883C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N7S7883C1D1Ev,_ZThn180_N7S7883C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7883C1D1Ev,_ZThn164_N7S7883C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S7883C1D1Ev,_ZThn148_N7S7883C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S7883C1D1Ev,_ZThn132_N7S7883C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7883C1D1Ev,_ZThn124_N7S7883C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7883C1D1Ev,_ZThn112_N7S7883C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7883C1D1Ev,_ZThn104_N7S7883C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7883C1D1Ev,_ZThn96_N7S7883C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7883C1D1Ev,_ZThn88_N7S7883C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7883C1D1Ev,_ZThn60_N7S7883C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7883C1D1Ev,_ZThn52_N7S7883C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7883C1D1Ev,_ZThn36_N7S7883C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7883C1D1Ev,_ZThn28_N7S7883C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7883C1D1Ev,_ZThn16_N7S7883C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7883C1D1Ev,_ZThn8_N7S7883C1D1Ev),
  (VTBL_ENTRY)_ZN7S7883C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7883C1 = {  "S7883C1", // class name
  bases_S7883C1, 62,
  &(vtc_S7883C1[0]), // expected_vtbl_contents
  &(vtt_S7883C1[0]), // expected_vtt_contents
  ABISELECT(320,196), // object size
  NSPAIRA(_ZTI7S7883C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7883C1),202, //virtual function table var
  20, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7883C1),194, //virtual table table var
  41, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names49,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20987C5  : virtual S7883C3_nt , virtual S3216C8_nt , S4677C37 {
  int s20987c5f0;
  ~S20987C5(); // tgen
  S20987C5(); // tgen
};
//SIG(-1 S20987C5) C1{ VBC2{ vd m} VBC3{ m Fi} BC4{ m} Fi}


S20987C5 ::~S20987C5(){ note_dtor("S20987C5", this);} // tgen
S20987C5 ::S20987C5(){ note_ctor("S20987C5", this);} // tgen

static void Test_S20987C5()
{
  extern Class_Descriptor cd_S20987C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S20987C5, buf);
    S20987C5 *dp, &lv = *(dp=new (buf) S20987C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S20987C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20987C5)");
    check_base_class_offset(lv, (S7883C3_nt*), 0, "S20987C5");
    check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(12,8), "S20987C5");
    check_base_class_offset(lv, (S4677C37*), 0, "S20987C5");
    check_field_offset(lv, s20987c5f0, ABISELECT(8,4), "S20987C5.s20987c5f0");
    test_class_info(&lv, &cd_S20987C5);
    dp->~S20987C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20987C5(Test_S20987C5, "S20987C5", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S20987C5C1Ev();
extern void _ZN8S20987C5D1Ev();
Name_Map name_map_S20987C5[] = {
  NSPAIR(_ZN8S20987C5C1Ev),
  NSPAIR(_ZN8S20987C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
static Base_Class bases_S20987C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20987C5[];
extern void _ZN8S20987C5D1Ev();
extern void _ZN8S20987C5D0Ev();
static  VTBL_ENTRY vtc_S20987C5[] = {
  ABISELECT(12,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&_ZN8S20987C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20987C5D0Ev,
};
extern VTBL_ENTRY _ZTV8S20987C5[];
static  VTT_ENTRY vtt_S20987C5[] = {
  {&(_ZTV8S20987C5[5]),  5,7},
  {&(_ZTV8S20987C5[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
Class_Descriptor cd_S20987C5 = {  "S20987C5", // class name
  bases_S20987C5, 3,
  &(vtc_S20987C5[0]), // expected_vtbl_contents
  &(vtt_S20987C5[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S20987C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20987C5),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20987C5),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  S20987C4  : S20987C5 {
  int s20987c4f0;
  ~S20987C4(); // tgen
  S20987C4(); // tgen
};
//SIG(-1 S20987C4) C1{ BC2{ VBC3{ vd m} VBC4{ m Fi} BC5{ m} Fi} Fi}


S20987C4 ::~S20987C4(){ note_dtor("S20987C4", this);} // tgen
S20987C4 ::S20987C4(){ note_ctor("S20987C4", this);} // tgen

static void Test_S20987C4()
{
  extern Class_Descriptor cd_S20987C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20987C4, buf);
    S20987C4 *dp, &lv = *(dp=new (buf) S20987C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20987C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20987C4)");
    check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*), 0, "S20987C4");
    check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*), ABISELECT(16,12), "S20987C4");
    check_base_class_offset(lv, (S4677C37*)(S20987C5*), 0, "S20987C4");
    check_base_class_offset(lv, (S20987C5*), 0, "S20987C4");
    check_field_offset(lv, s20987c4f0, ABISELECT(12,8), "S20987C4.s20987c4f0");
    test_class_info(&lv, &cd_S20987C4);
    dp->~S20987C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20987C4(Test_S20987C4, "S20987C4", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S20987C4C1Ev();
extern void _ZN8S20987C4D1Ev();
Name_Map name_map_S20987C4[] = {
  NSPAIR(_ZN8S20987C4C1Ev),
  NSPAIR(_ZN8S20987C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
static Base_Class bases_S20987C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20987C5,    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 _ZTI8S20987C4[];
extern void _ZN8S20987C4D1Ev();
extern void _ZN8S20987C4D0Ev();
static  VTBL_ENTRY vtc_S20987C4[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&_ZN8S20987C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20987C4D0Ev,
};
extern VTBL_ENTRY _ZTV8S20987C4[];
extern void _ZN8S20987C5D1Ev();
extern void _ZN8S20987C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20987C5__8S20987C4[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&_ZN8S20987C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20987C5D0Ev,
};
static  VTT_ENTRY vtt_S20987C4[] = {
  {&(_ZTV8S20987C4[5]),  5,7},
  {&(_tg__ZTV8S20987C5__8S20987C4[5]),  5,7},
  {&(_tg__ZTV8S20987C5__8S20987C4[5]),  5,7},
  {&(_ZTV8S20987C4[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S20987C4[];
extern  VTBL_ENTRY _ZTV8S20987C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C4[];
Class_Descriptor cd_S20987C4 = {  "S20987C4", // class name
  bases_S20987C4, 4,
  &(vtc_S20987C4[0]), // expected_vtbl_contents
  &(vtt_S20987C4[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S20987C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20987C4),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20987C4),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20987C3  : virtual S20987C4 , S4677C37 {
  ~S20987C3(); // tgen
  S20987C3(); // tgen
};
//SIG(-1 S20987C3) C1{ VBC2{ BC3{ VBC4{ vd m} VBC5{ m Fi} BC6{ m} Fi} Fi} BC6}


S20987C3 ::~S20987C3(){ note_dtor("S20987C3", this);} // tgen
S20987C3 ::S20987C3(){ note_ctor("S20987C3", this);} // tgen

static void Test_S20987C3()
{
  extern Class_Descriptor cd_S20987C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20987C3, buf);
    S20987C3 *dp, &lv = *(dp=new (buf) S20987C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20987C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20987C3)");
    check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C4*), 0, "S20987C3");
    check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C4*), ABISELECT(24,16), "S20987C3");
    check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C4*), ABISELECT(8,4), "S20987C3");
    check_base_class_offset(lv, (S20987C5*)(S20987C4*), ABISELECT(8,4), "S20987C3");
    check_base_class_offset(lv, (S20987C4*), ABISELECT(8,4), "S20987C3");
    /*is_ambiguous_... S20987C3::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*), 0, "S20987C3");
    test_class_info(&lv, &cd_S20987C3);
    dp->~S20987C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20987C3(Test_S20987C3, "S20987C3", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S20987C3C1Ev();
extern void _ZN8S20987C3D1Ev();
Name_Map name_map_S20987C3[] = {
  NSPAIR(_ZN8S20987C3C1Ev),
  NSPAIR(_ZN8S20987C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C4;
extern VTBL_ENTRY _ZTI8S20987C4[];
extern  VTBL_ENTRY _ZTV8S20987C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C4[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
static Base_Class bases_S20987C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20987C5,    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
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20987C4,    ABISELECT(8,4), //bcp->offset
    8, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20987C3[];
extern void _ZN8S20987C3D1Ev();
extern void _ZN8S20987C3D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void ABISELECT(_ZThn8_N8S20987C3D1Ev,_ZThn4_N8S20987C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void ABISELECT(_ZThn8_N8S20987C3D0Ev,_ZThn4_N8S20987C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20987C3[] = {
  ABISELECT(24,16),
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&_ZN8S20987C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20987C3D0Ev,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S20987C3[];
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void _ZN8S20987C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
extern void _ZN8S20987C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C3[] = {
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C58S20987C4__8S20987C3[] = {
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C58S20987C4__8S20987C3[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C4__8S20987C3[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
static  VTT_ENTRY vtt_S20987C3[] = {
  {&(_ZTV8S20987C3[6]),  6,15},
  {&(_ZTV8S20987C3[13]),  13,15},
  {&(_ZTV8S20987C3[6]),  6,15},
  {&(_tg__ZTV8S20987C4__8S20987C3[5]),  5,7},
  {&(_tg__ZTV8S20987C58S20987C4__8S20987C3[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C58S20987C4__8S20987C3[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20987C4__8S20987C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20987C3[];
extern  VTBL_ENTRY _ZTV8S20987C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C3[];
static VTBL_ENTRY alt_thunk_names50[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20987C3D0Ev,_ZThn4_N8S20987C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20987C3D1Ev,_ZThn4_N8S20987C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20987C3 = {  "S20987C3", // class name
  bases_S20987C3, 6,
  &(vtc_S20987C3[0]), // expected_vtbl_contents
  &(vtt_S20987C3[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S20987C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20987C3),15, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20987C3),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names50,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20987C2  : virtual S20987C3 {
  ::S3216C8_nt s20987c2f0;
  ~S20987C2(); // tgen
  S20987C2(); // tgen
};
//SIG(-1 S20987C2) C1{ VBC2{ VBC3{ BC4{ VBC5{ vd m} VBC6{ m Fi} BC7{ m} Fi} Fi} BC7} FC6}


S20987C2 ::~S20987C2(){ note_dtor("S20987C2", this);} // tgen
S20987C2 ::S20987C2(){ note_ctor("S20987C2", this);} // tgen

static void Test_S20987C2()
{
  extern Class_Descriptor cd_S20987C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S20987C2, buf);
    S20987C2 *dp, &lv = *(dp=new (buf) S20987C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S20987C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20987C2)");
    check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C4*), 0, "S20987C2");
    check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C4*), ABISELECT(32,20), "S20987C2");
    check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C4*), ABISELECT(16,8), "S20987C2");
    check_base_class_offset(lv, (S20987C5*)(S20987C4*), ABISELECT(16,8), "S20987C2");
    check_base_class_offset(lv, (S20987C4*)(S20987C3*), ABISELECT(16,8), "S20987C2");
    /*is_ambiguous_... S20987C3::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C3*), 0, "S20987C2");
    check_base_class_offset(lv, (S20987C3*), 0, "S20987C2");
    check_field_offset(lv, s20987c2f0, ABISELECT(8,4), "S20987C2.s20987c2f0");
    test_class_info(&lv, &cd_S20987C2);
    dp->~S20987C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20987C2(Test_S20987C2, "S20987C2", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S20987C2C1Ev();
extern void _ZN8S20987C2D1Ev();
Name_Map name_map_S20987C2[] = {
  NSPAIR(_ZN8S20987C2C1Ev),
  NSPAIR(_ZN8S20987C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C4;
extern VTBL_ENTRY _ZTI8S20987C4[];
extern  VTBL_ENTRY _ZTV8S20987C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C4[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C3;
extern VTBL_ENTRY _ZTI8S20987C3[];
extern  VTBL_ENTRY _ZTV8S20987C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C3[];
static Base_Class bases_S20987C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_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
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20987C5,    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
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20987C4,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20987C3,    0, //bcp->offset
    -1, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20987C2[];
extern void _ZN8S20987C2D1Ev();
extern void _ZN8S20987C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20987C2D1Ev,_ZThn8_N8S20987C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S20987C2D0Ev,_ZThn8_N8S20987C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20987C2[] = {
  0,
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&_ZN8S20987C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20987C2D0Ev,
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S20987C2[];
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void _ZN8S20987C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void _ZN8S20987C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C3__8S20987C2[] = {
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S20987C3D1Ev,_ZThn8_N8S20987C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S20987C3D0Ev,_ZThn8_N8S20987C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C3__8S20987C2[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void _ZN8S20987C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
extern void _ZN8S20987C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C2[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C58S20987C4__8S20987C2[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C58S20987C4__8S20987C2[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C4__8S20987C2[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
static  VTT_ENTRY vtt_S20987C2[] = {
  {&(_ZTV8S20987C2[7]),  7,16},
  {&(_ZTV8S20987C2[7]),  7,16},
  {&(_ZTV8S20987C2[14]),  14,16},
  {&(_ZTV8S20987C2[7]),  7,16},
  {&(_tg__ZTV8S20987C3__8S20987C2[6]),  6,8},
  {&(_tg__ZTV8S20987C4__8S20987C3__8S20987C2[5]),  5,7},
  {&(_tg__ZTV8S20987C3__8S20987C2[6]),  6,8},
  {&(_tg__ZTV8S20987C4__8S20987C2[5]),  5,7},
  {&(_tg__ZTV8S20987C58S20987C4__8S20987C2[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C58S20987C4__8S20987C2[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20987C4__8S20987C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20987C2[];
extern  VTBL_ENTRY _ZTV8S20987C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C2[];
static VTBL_ENTRY alt_thunk_names51[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20987C3D0Ev,_ZThn8_N8S20987C3D0Ev),
  (VTBL_ENTRY)_ZN8S20987C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20987C3D1Ev,_ZThn8_N8S20987C3D1Ev),
  (VTBL_ENTRY)_ZN8S20987C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20987C2D0Ev,_ZThn8_N8S20987C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20987C2D1Ev,_ZThn8_N8S20987C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20987C2 = {  "S20987C2", // class name
  bases_S20987C2, 7,
  &(vtc_S20987C2[0]), // expected_vtbl_contents
  &(vtt_S20987C2[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S20987C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20987C2),16, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20987C2),11, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names51,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20987C11  : S20987C2 , S3216C8_nt {
  void *s20987c11f0;
  ~S20987C11(); // tgen
  S20987C11(); // tgen
};
//SIG(-1 S20987C11) C1{ BC2{ VBC3{ VBC4{ BC5{ VBC6{ vd m} VBC7{ m Fi} BC8{ m} Fi} Fi} BC8} FC7} BC7 Fp}


S20987C11 ::~S20987C11(){ note_dtor("S20987C11", this);} // tgen
S20987C11 ::S20987C11(){ note_ctor("S20987C11", this);} // tgen

static void Test_S20987C11()
{
  extern Class_Descriptor cd_S20987C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S20987C11, buf);
    S20987C11 *dp, &lv = *(dp=new (buf) S20987C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S20987C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20987C11)");
    check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C4*), 0, "S20987C11");
    check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C4*), ABISELECT(40,28), "S20987C11");
    check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C4*), ABISELECT(24,16), "S20987C11");
    check_base_class_offset(lv, (S20987C5*)(S20987C4*), ABISELECT(24,16), "S20987C11");
    check_base_class_offset(lv, (S20987C4*)(S20987C3*), ABISELECT(24,16), "S20987C11");
    /*is_ambiguous_... S20987C3::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C3*), 0, "S20987C11");
    check_base_class_offset(lv, (S20987C3*)(S20987C2*), 0, "S20987C11");
    check_base_class_offset(lv, (S20987C2*), 0, "S20987C11");
    /*is_ambiguous_... S20987C11::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(12,8), "S20987C11");
    check_field_offset(lv, s20987c11f0, ABISELECT(16,12), "S20987C11.s20987c11f0");
    test_class_info(&lv, &cd_S20987C11);
    dp->~S20987C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20987C11(Test_S20987C11, "S20987C11", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN9S20987C11C1Ev();
extern void _ZN9S20987C11D1Ev();
Name_Map name_map_S20987C11[] = {
  NSPAIR(_ZN9S20987C11C1Ev),
  NSPAIR(_ZN9S20987C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C4;
extern VTBL_ENTRY _ZTI8S20987C4[];
extern  VTBL_ENTRY _ZTV8S20987C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C4[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C3;
extern VTBL_ENTRY _ZTI8S20987C3[];
extern  VTBL_ENTRY _ZTV8S20987C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C3[];
extern Class_Descriptor cd_S20987C2;
extern VTBL_ENTRY _ZTI8S20987C2[];
extern  VTBL_ENTRY _ZTV8S20987C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S20987C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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_S20987C5,    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
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20987C4,    ABISELECT(24,16), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20987C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20987C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20987C11[];
extern void _ZN9S20987C11D1Ev();
extern void _ZN9S20987C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20987C11D1Ev,_ZTv0_n12_N9S20987C11D1Ev)();
extern void ABISELECT(_ZThn24_N9S20987C11D1Ev,_ZThn16_N9S20987C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C11D0Ev,_ZTv0_n12_N9S20987C11D0Ev)();
extern void ABISELECT(_ZThn24_N9S20987C11D0Ev,_ZThn16_N9S20987C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20987C11[] = {
  0,
  ABISELECT(40,28),
  0,
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C11[0]),
  (VTBL_ENTRY)&_ZN9S20987C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20987C11D0Ev,
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20987C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C11D1Ev,_ZTv0_n12_N9S20987C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C11D0Ev,_ZTv0_n12_N9S20987C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S20987C11[];
extern void _ZN8S20987C2D1Ev();
extern void _ZN8S20987C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20987C2__9S20987C11[] = {
  0,
  ABISELECT(40,28),
  0,
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&_ZN8S20987C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20987C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev)();
extern void ABISELECT(_ZThn24_N8S20987C2D1Ev,_ZThn16_N8S20987C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev)();
extern void ABISELECT(_ZThn24_N8S20987C2D0Ev,_ZThn16_N8S20987C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C2__9S20987C11[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void _ZN8S20987C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void _ZN8S20987C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C3__9S20987C11[] = {
  ABISELECT(40,28),
  0,
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void ABISELECT(_ZThn24_N8S20987C3D1Ev,_ZThn16_N8S20987C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void ABISELECT(_ZThn24_N8S20987C3D0Ev,_ZThn16_N8S20987C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C3__9S20987C11[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void _ZN8S20987C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
extern void _ZN8S20987C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C11[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C58S20987C4__9S20987C11[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C58S20987C4__9S20987C11[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C4__9S20987C11[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
static  VTT_ENTRY vtt_S20987C11[] = {
  {&(_ZTV9S20987C11[7]),  7,16},
  {&(_tg__ZTV8S20987C2__9S20987C11[7]),  7,9},
  {&(_tg__ZTV8S20987C2__9S20987C11[7]),  7,9},
  {&(_tg__ZTV8S20987C4__8S20987C2__9S20987C11[5]),  5,7},
  {&(_tg__ZTV8S20987C2__9S20987C11[7]),  7,9},
  {&(_ZTV9S20987C11[7]),  7,16},
  {&(_ZTV9S20987C11[14]),  14,16},
  {&(_ZTV9S20987C11[7]),  7,16},
  {&(_tg__ZTV8S20987C3__9S20987C11[6]),  6,8},
  {&(_tg__ZTV8S20987C4__8S20987C3__9S20987C11[5]),  5,7},
  {&(_tg__ZTV8S20987C3__9S20987C11[6]),  6,8},
  {&(_tg__ZTV8S20987C4__9S20987C11[5]),  5,7},
  {&(_tg__ZTV8S20987C58S20987C4__9S20987C11[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C58S20987C4__9S20987C11[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20987C4__9S20987C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20987C11[];
extern  VTBL_ENTRY _ZTV9S20987C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C11[];
static VTBL_ENTRY alt_thunk_names52[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20987C3D0Ev,_ZThn16_N8S20987C3D0Ev),
  (VTBL_ENTRY)_ZN8S20987C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20987C3D1Ev,_ZThn16_N8S20987C3D1Ev),
  (VTBL_ENTRY)_ZN8S20987C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20987C2D0Ev,_ZThn16_N8S20987C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20987C2D1Ev,_ZThn16_N8S20987C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C11D0Ev,_ZTv0_n12_N9S20987C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20987C11D0Ev,_ZThn16_N9S20987C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C11D1Ev,_ZTv0_n12_N9S20987C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20987C11D1Ev,_ZThn16_N9S20987C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20987C11 = {  "S20987C11", // class name
  bases_S20987C11, 9,
  &(vtc_S20987C11[0]), // expected_vtbl_contents
  &(vtt_S20987C11[0]), // expected_vtt_contents
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI9S20987C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20987C11),16, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20987C11),15, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names52,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20987C12  : S20987C4 {
  ~S20987C12(); // tgen
  S20987C12(); // tgen
};
//SIG(-1 S20987C12) C1{ BC2{ BC3{ VBC4{ vd m} VBC5{ m Fi} BC6{ m} Fi} Fi}}


S20987C12 ::~S20987C12(){ note_dtor("S20987C12", this);} // tgen
S20987C12 ::S20987C12(){ note_ctor("S20987C12", this);} // tgen

static void Test_S20987C12()
{
  extern Class_Descriptor cd_S20987C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20987C12, buf);
    S20987C12 *dp, &lv = *(dp=new (buf) S20987C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20987C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20987C12)");
    check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C4*), 0, "S20987C12");
    check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C4*), ABISELECT(16,12), "S20987C12");
    check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C4*), 0, "S20987C12");
    check_base_class_offset(lv, (S20987C5*)(S20987C4*), 0, "S20987C12");
    check_base_class_offset(lv, (S20987C4*), 0, "S20987C12");
    test_class_info(&lv, &cd_S20987C12);
    dp->~S20987C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20987C12(Test_S20987C12, "S20987C12", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN9S20987C12C1Ev();
extern void _ZN9S20987C12D1Ev();
Name_Map name_map_S20987C12[] = {
  NSPAIR(_ZN9S20987C12C1Ev),
  NSPAIR(_ZN9S20987C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C4;
extern VTBL_ENTRY _ZTI8S20987C4[];
extern  VTBL_ENTRY _ZTV8S20987C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C4[];
static Base_Class bases_S20987C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20987C5,    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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20987C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20987C12[];
extern void _ZN9S20987C12D1Ev();
extern void _ZN9S20987C12D0Ev();
static  VTBL_ENTRY vtc_S20987C12[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C12[0]),
  (VTBL_ENTRY)&_ZN9S20987C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20987C12D0Ev,
};
extern VTBL_ENTRY _ZTV9S20987C12[];
extern void _ZN8S20987C4D1Ev();
extern void _ZN8S20987C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C12[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&_ZN8S20987C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20987C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C58S20987C4__9S20987C12[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
static  VTT_ENTRY vtt_S20987C12[] = {
  {&(_ZTV9S20987C12[5]),  5,7},
  {&(_tg__ZTV8S20987C4__9S20987C12[5]),  5,7},
  {&(_tg__ZTV8S20987C58S20987C4__9S20987C12[5]),  5,7},
  {&(_tg__ZTV8S20987C58S20987C4__9S20987C12[5]),  5,7},
  {&(_tg__ZTV8S20987C4__9S20987C12[5]),  5,7},
  {&(_ZTV9S20987C12[5]),  5,7},
};
extern VTBL_ENTRY _ZTI9S20987C12[];
extern  VTBL_ENTRY _ZTV9S20987C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C12[];
static VTBL_ENTRY alt_thunk_names53[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20987C12 = {  "S20987C12", // class name
  bases_S20987C12, 5,
  &(vtc_S20987C12[0]), // expected_vtbl_contents
  &(vtt_S20987C12[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI9S20987C12),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20987C12),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20987C12),6, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names53,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20987C10  : virtual S20987C4 , S20987C11 , virtual S20987C12 {
  virtual  ~S20987C10(); // _ZN9S20987C10D2Ev
  S20987C10(); // tgen
};
//SIG(-1 S20987C10) C1{ VBC2{ BC3{ VBC4{ vd m} VBC5{ m Fi} BC6{ m} Fi} Fi} BC7{ BC8{ VBC9{ VBC2 BC6} FC5} BC5 Fp} VBC10{ BC2} vd}


 S20987C10 ::~S20987C10(){ note_dtor("S20987C10", this);}
S20987C10 ::S20987C10(){ note_ctor("S20987C10", this);} // tgen

static void Test_S20987C10()
{
  extern Class_Descriptor cd_S20987C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S20987C10, buf);
    S20987C10 *dp, &lv = *(dp=new (buf) S20987C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S20987C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20987C10)");
    /*is_ambiguous_... S20987C10::S20987C4 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C4*), ABISELECT(24,16), "S20987C10");
    check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C4*)(S20987C12*), ABISELECT(24,16), "S20987C10");
    /*is_ambiguous_... S20987C10::S20987C4 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C4*), ABISELECT(40,28), "S20987C10");
    check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C4*)(S20987C12*), ABISELECT(40,28), "S20987C10");
    /*is_ambiguous_... S20987C10::S20987C4 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C4*), ABISELECT(24,16), "S20987C10");
    /*is_ambiguous_... S20987C10::S20987C4 */ AMB_check_base_class_offset(lv, (S20987C5*)(S20987C4*), ABISELECT(24,16), "S20987C10");
    /*is_ambiguous_... S20987C10::S20987C4 */ AMB_check_base_class_offset(lv, (S20987C4*), ABISELECT(24,16), "S20987C10");
    check_base_class_offset(lv, (S20987C4*)(S20987C3*), ABISELECT(24,16), "S20987C10");
    /*is_ambiguous_... S20987C3::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C3*), 0, "S20987C10");
    check_base_class_offset(lv, (S20987C3*)(S20987C2*)(S20987C11*), 0, "S20987C10");
    check_base_class_offset(lv, (S20987C2*)(S20987C11*), 0, "S20987C10");
    /*is_ambiguous_... S20987C11::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C11*), ABISELECT(12,8), "S20987C10");
    check_base_class_offset(lv, (S20987C11*), 0, "S20987C10");
    check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C4*)(S20987C12*), ABISELECT(48,32), "S20987C10");
    check_base_class_offset(lv, (S20987C5*)(S20987C4*)(S20987C12*), ABISELECT(48,32), "S20987C10");
    check_base_class_offset(lv, (S20987C4*)(S20987C12*), ABISELECT(48,32), "S20987C10");
    check_base_class_offset(lv, (S20987C12*), ABISELECT(48,32), "S20987C10");
    test_class_info(&lv, &cd_S20987C10);
    dp->~S20987C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20987C10(Test_S20987C10, "S20987C10", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN9S20987C10C1Ev();
extern void _ZN9S20987C10D2Ev();
Name_Map name_map_S20987C10[] = {
  NSPAIR(_ZN9S20987C10C1Ev),
  NSPAIR(_ZN9S20987C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C4;
extern VTBL_ENTRY _ZTI8S20987C4[];
extern  VTBL_ENTRY _ZTV8S20987C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C4[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C3;
extern VTBL_ENTRY _ZTI8S20987C3[];
extern  VTBL_ENTRY _ZTV8S20987C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C3[];
extern Class_Descriptor cd_S20987C2;
extern VTBL_ENTRY _ZTI8S20987C2[];
extern  VTBL_ENTRY _ZTV8S20987C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20987C11;
extern VTBL_ENTRY _ZTI9S20987C11[];
extern  VTBL_ENTRY _ZTV9S20987C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C11[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C4;
extern VTBL_ENTRY _ZTI8S20987C4[];
extern  VTBL_ENTRY _ZTV8S20987C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C4[];
extern Class_Descriptor cd_S20987C12;
extern VTBL_ENTRY _ZTI9S20987C12[];
extern  VTBL_ENTRY _ZTV9S20987C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C12[];
static Base_Class bases_S20987C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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_S20987C5,    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
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20987C4,    ABISELECT(24,16), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20987C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20987C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20987C11,    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_S4677C37,    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
    11, //immediately_derived
  0, 0},
  {&cd_S20987C5,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20987C4,    ABISELECT(48,32), //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
    13, //immediately_derived
  0, 0},
  {&cd_S20987C12,    ABISELECT(48,32), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20987C10[];
extern void ABISELECT(_ZTv0_n24_N9S20987C10D1Ev,_ZTv0_n12_N9S20987C10D1Ev)();
extern void _ZN9S20987C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C10D0Ev,_ZTv0_n12_N9S20987C10D0Ev)();
extern void _ZN9S20987C10D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C10D1Ev,_ZTv0_n12_N9S20987C10D1Ev)();
extern void ABISELECT(_ZThn24_N9S20987C10D1Ev,_ZThn16_N9S20987C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C10D0Ev,_ZTv0_n12_N9S20987C10D0Ev)();
extern void ABISELECT(_ZThn24_N9S20987C10D0Ev,_ZThn16_N9S20987C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C10D1Ev,_ZTv0_n12_N9S20987C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S20987C10D1Ev,_ZThn32_N9S20987C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C10D0Ev,_ZTv0_n12_N9S20987C10D0Ev)();
extern void ABISELECT(_ZThn48_N9S20987C10D0Ev,_ZThn32_N9S20987C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20987C10[] = {
  ABISELECT(48,32),
  0,
  ABISELECT(40,28),
  ABISELECT(24,16),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C10D1Ev,_ZTv0_n12_N9S20987C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C10D0Ev,_ZTv0_n12_N9S20987C10D0Ev),
  ABISELECT(16,12),
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20987C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C10D1Ev,_ZTv0_n12_N9S20987C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C10D0Ev,_ZTv0_n12_N9S20987C10D0Ev),
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S20987C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C10D1Ev,_ZTv0_n12_N9S20987C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C10D0Ev,_ZTv0_n12_N9S20987C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S20987C10[];
extern void ABISELECT(_ZTv0_n24_N9S20987C11D1Ev,_ZTv0_n12_N9S20987C11D1Ev)();
extern void _ZN9S20987C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C11D0Ev,_ZTv0_n12_N9S20987C11D0Ev)();
extern void _ZN9S20987C11D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C11__9S20987C10[] = {
  0,
  ABISELECT(40,28),
  ABISELECT(24,16),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C11D1Ev,_ZTv0_n12_N9S20987C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C11D0Ev,_ZTv0_n12_N9S20987C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev)();
extern void _ZN8S20987C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev)();
extern void _ZN8S20987C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C29S20987C11__9S20987C10[] = {
  0,
  ABISELECT(40,28),
  ABISELECT(24,16),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev)();
extern void ABISELECT(_ZThn24_N8S20987C2D1Ev,_ZThn16_N8S20987C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev)();
extern void ABISELECT(_ZThn24_N8S20987C2D0Ev,_ZThn16_N8S20987C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C29S20987C11__9S20987C10[] = {
  ABISELECT(16,12),
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C11D1Ev,_ZTv0_n12_N9S20987C11D1Ev)();
extern void ABISELECT(_ZThn24_N9S20987C11D1Ev,_ZThn16_N9S20987C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C11D0Ev,_ZTv0_n12_N9S20987C11D0Ev)();
extern void ABISELECT(_ZThn24_N9S20987C11D0Ev,_ZThn16_N9S20987C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C11__9S20987C10[] = {
  ABISELECT(16,12),
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20987C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C11D1Ev,_ZTv0_n12_N9S20987C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C11D0Ev,_ZTv0_n12_N9S20987C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void _ZN8S20987C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
extern void _ZN8S20987C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C10[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C58S20987C4__9S20987C10[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void _ZN8S20987C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void _ZN8S20987C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C3__9S20987C10[] = {
  ABISELECT(40,28),
  ABISELECT(24,16),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void ABISELECT(_ZThn24_N8S20987C3D1Ev,_ZThn16_N8S20987C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void ABISELECT(_ZThn24_N8S20987C3D0Ev,_ZThn16_N8S20987C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C3__9S20987C10[] = {
  ABISELECT(16,12),
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev)();
extern void _ZN9S20987C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev)();
extern void _ZN9S20987C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C12__9S20987C10[] = {
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void _ZN8S20987C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
extern void _ZN8S20987C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C49S20987C12__A1__9S20987C10[] = {
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C58S20987C49S20987C12__A1__9S20987C10[] = {
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C58S20987C49S20987C12__A1__9S20987C10[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C49S20987C12__A1__9S20987C10[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20987C12__9S20987C10[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20987C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev),
};
static  VTT_ENTRY vtt_S20987C10[] = {
  {&(_ZTV9S20987C10[8]),  8,24},
  {&(_tg__ZTV9S20987C11__9S20987C10[7]),  7,9},
  {&(_tg__ZTV8S20987C29S20987C11__9S20987C10[7]),  7,9},
  {&(_tg__ZTV8S20987C29S20987C11__9S20987C10[7]),  7,9},
  {&(_tg__ZTV8S20987C4__8S20987C29S20987C11__9S20987C10[5]),  5,7},
  {&(_tg__ZTV8S20987C4__8S20987C29S20987C11__9S20987C10[5]),  5,7},
  {&(_tg__ZTV9S20987C11__9S20987C10[7]),  7,9},
  {&(_tg__ZTV8S20987C4__9S20987C11__9S20987C10[5]),  5,7},
  {&(_tg__ZTV8S20987C4__9S20987C11__9S20987C10[5]),  5,7},
  {&(_ZTV9S20987C10[15]),  15,24},
  {&(_ZTV9S20987C10[15]),  15,24},
  {&(_ZTV9S20987C10[8]),  8,24},
  {&(_ZTV9S20987C10[22]),  22,24},
  {&(_tg__ZTV8S20987C4__9S20987C10[5]),  5,7},
  {&(_tg__ZTV8S20987C58S20987C4__9S20987C10[5]),  5,7},
  {&(_tg__ZTV8S20987C58S20987C4__9S20987C10[5]),  5,7},
  {&(_tg__ZTV8S20987C4__9S20987C10[5]),  5,7},
  {&(_tg__ZTV8S20987C3__9S20987C10[6]),  6,8},
  {&(_tg__ZTV8S20987C4__8S20987C3__9S20987C10[5]),  5,7},
  {&(_tg__ZTV8S20987C4__8S20987C3__9S20987C10[5]),  5,7},
  {&(_tg__ZTV9S20987C12__9S20987C10[5]),  5,7},
  {&(_tg__ZTV8S20987C49S20987C12__A1__9S20987C10[5]),  5,7},
  {&(_tg__ZTV8S20987C58S20987C49S20987C12__A1__9S20987C10[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C58S20987C49S20987C12__A1__9S20987C10[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20987C49S20987C12__A1__9S20987C10[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20987C12__9S20987C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20987C10[];
extern  VTBL_ENTRY _ZTV9S20987C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C10[];
static VTBL_ENTRY alt_thunk_names54[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S20987C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S20987C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20987C3D0Ev,_ZThn16_N8S20987C3D0Ev),
  (VTBL_ENTRY)_ZN8S20987C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20987C3D1Ev,_ZThn16_N8S20987C3D1Ev),
  (VTBL_ENTRY)_ZN8S20987C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C4D0Ev,
  (VTBL_ENTRY)_ZN8S20987C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C4D1Ev,
  (VTBL_ENTRY)_ZN8S20987C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20987C2D0Ev,_ZThn16_N8S20987C2D0Ev),
  (VTBL_ENTRY)_ZN8S20987C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20987C2D1Ev,_ZThn16_N8S20987C2D1Ev),
  (VTBL_ENTRY)_ZN8S20987C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C11D0Ev,_ZTv0_n12_N9S20987C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20987C11D0Ev,_ZThn16_N9S20987C11D0Ev),
  (VTBL_ENTRY)_ZN9S20987C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C11D1Ev,_ZTv0_n12_N9S20987C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20987C11D1Ev,_ZThn16_N9S20987C11D1Ev),
  (VTBL_ENTRY)_ZN9S20987C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C10D0Ev,_ZTv0_n12_N9S20987C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20987C10D0Ev,_ZThn32_N9S20987C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20987C10D0Ev,_ZThn16_N9S20987C10D0Ev),
  (VTBL_ENTRY)_ZN9S20987C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C10D1Ev,_ZTv0_n12_N9S20987C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20987C10D1Ev,_ZThn32_N9S20987C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20987C10D1Ev,_ZThn16_N9S20987C10D1Ev),
  (VTBL_ENTRY)_ZN9S20987C10D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20987C10 = {  "S20987C10", // class name
  bases_S20987C10, 14,
  &(vtc_S20987C10[0]), // expected_vtbl_contents
  &(vtt_S20987C10[0]), // expected_vtt_contents
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI9S20987C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20987C10),24, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20987C10),26, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names54,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20987C14_nt  : virtual S7883C3_nt {
  ~S20987C14_nt(); // tgen
  S20987C14_nt(); // tgen
};
//SIG(-1 S20987C14_nt) C1{ VBC2{ vd m}}


S20987C14_nt ::~S20987C14_nt(){ note_dtor("S20987C14_nt", this);} // tgen
S20987C14_nt ::S20987C14_nt(){ note_ctor("S20987C14_nt", this);} // tgen

//skip512 S20987C14_nt

#else // __cplusplus

extern void _ZN12S20987C14_ntC1Ev();
extern void _ZN12S20987C14_ntD1Ev();
Name_Map name_map_S20987C14_nt[] = {
  NSPAIR(_ZN12S20987C14_ntC1Ev),
  NSPAIR(_ZN12S20987C14_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
static Base_Class bases_S20987C14_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI12S20987C14_nt[];
extern void _ZN12S20987C14_ntD1Ev();
extern void _ZN12S20987C14_ntD0Ev();
static  VTBL_ENTRY vtc_S20987C14_nt[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S20987C14_nt[0]),
  (VTBL_ENTRY)&_ZN12S20987C14_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20987C14_ntD0Ev,
};
extern VTBL_ENTRY _ZTV12S20987C14_nt[];
static  VTT_ENTRY vtt_S20987C14_nt[] = {
  {&(_ZTV12S20987C14_nt[4]),  4,6},
  {&(_ZTV12S20987C14_nt[4]),  4,6},
};
extern VTBL_ENTRY _ZTI12S20987C14_nt[];
VTBL_ENTRY *P__ZTI12S20987C14_nt = _ZTI12S20987C14_nt; 
extern  VTBL_ENTRY _ZTV12S20987C14_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20987C14_nt[];
Class_Descriptor cd_S20987C14_nt = {  "S20987C14_nt", // class name
  bases_S20987C14_nt, 1,
  &(vtc_S20987C14_nt[0]), // expected_vtbl_contents
  &(vtt_S20987C14_nt[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI12S20987C14_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV12S20987C14_nt),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S20987C14_nt),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20987C13  : virtual S20987C14_nt {
  int s20987c13f0;
  ~S20987C13(); // tgen
  S20987C13(); // tgen
};
//SIG(-1 S20987C13) C1{ VBC2{ VBC3{ vd m}} Fi}


S20987C13 ::~S20987C13(){ note_dtor("S20987C13", this);} // tgen
S20987C13 ::S20987C13(){ note_ctor("S20987C13", this);} // tgen

static void Test_S20987C13()
{
  extern Class_Descriptor cd_S20987C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20987C13, buf);
    S20987C13 *dp, &lv = *(dp=new (buf) S20987C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20987C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20987C13)");
    check_base_class_offset(lv, (S7883C3_nt*)(S20987C14_nt*), 0, "S20987C13");
    check_base_class_offset(lv, (S20987C14_nt*), 0, "S20987C13");
    check_field_offset(lv, s20987c13f0, ABISELECT(8,4), "S20987C13.s20987c13f0");
    test_class_info(&lv, &cd_S20987C13);
    dp->~S20987C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20987C13(Test_S20987C13, "S20987C13", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S20987C13C1Ev();
extern void _ZN9S20987C13D1Ev();
Name_Map name_map_S20987C13[] = {
  NSPAIR(_ZN9S20987C13C1Ev),
  NSPAIR(_ZN9S20987C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S20987C14_nt;
extern VTBL_ENTRY _ZTI12S20987C14_nt[];
extern  VTBL_ENTRY _ZTV12S20987C14_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20987C14_nt[];
static Base_Class bases_S20987C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20987C14_nt,    0, //bcp->offset
    -1, //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 _ZTI9S20987C13[];
extern void _ZN9S20987C13D1Ev();
extern void _ZN9S20987C13D0Ev();
static  VTBL_ENTRY vtc_S20987C13[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C13[0]),
  (VTBL_ENTRY)&_ZN9S20987C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20987C13D0Ev,
};
extern VTBL_ENTRY _ZTV9S20987C13[];
extern void ABISELECT(_ZTv0_n24_N12S20987C14_ntD1Ev,_ZTv0_n12_N12S20987C14_ntD1Ev)();
extern void _ZN12S20987C14_ntD1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N12S20987C14_ntD0Ev,_ZTv0_n12_N12S20987C14_ntD0Ev)();
extern void _ZN12S20987C14_ntD0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S20987C14_nt__9S20987C13[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S20987C14_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20987C14_ntD1Ev,_ZTv0_n12_N12S20987C14_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20987C14_ntD0Ev,_ZTv0_n12_N12S20987C14_ntD0Ev),
};
static  VTT_ENTRY vtt_S20987C13[] = {
  {&(_ZTV9S20987C13[5]),  5,7},
  {&(_ZTV9S20987C13[5]),  5,7},
  {&(_ZTV9S20987C13[5]),  5,7},
  {&(_tg__ZTV12S20987C14_nt__9S20987C13[4]),  4,6},
  {&(_tg__ZTV12S20987C14_nt__9S20987C13[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S20987C13[];
extern  VTBL_ENTRY _ZTV9S20987C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C13[];
static VTBL_ENTRY alt_thunk_names55[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N12S20987C14_ntD0Ev,_ZTv0_n12_N12S20987C14_ntD0Ev), // 
  (VTBL_ENTRY)_ZN12S20987C14_ntD0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N12S20987C14_ntD1Ev,_ZTv0_n12_N12S20987C14_ntD1Ev), // 
  (VTBL_ENTRY)_ZN12S20987C14_ntD1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20987C13 = {  "S20987C13", // class name
  bases_S20987C13, 2,
  &(vtc_S20987C13[0]), // expected_vtbl_contents
  &(vtt_S20987C13[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S20987C13),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20987C13),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20987C13),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names55,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20987C16  : virtual S3216C8_nt {
  virtual  ~S20987C16(); // _ZN9S20987C16D2Ev
  S20987C16(); // tgen
};
//SIG(-1 S20987C16) C1{ VBC2{ m Fi} vd}


 S20987C16 ::~S20987C16(){ note_dtor("S20987C16", this);}
S20987C16 ::S20987C16(){ note_ctor("S20987C16", this);} // tgen

static void Test_S20987C16()
{
  extern Class_Descriptor cd_S20987C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20987C16, buf);
    S20987C16 *dp, &lv = *(dp=new (buf) S20987C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20987C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20987C16)");
    check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(8,4), "S20987C16");
    test_class_info(&lv, &cd_S20987C16);
    dp->~S20987C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20987C16(Test_S20987C16, "S20987C16", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S20987C16C1Ev();
extern void _ZN9S20987C16D2Ev();
Name_Map name_map_S20987C16[] = {
  NSPAIR(_ZN9S20987C16C1Ev),
  NSPAIR(_ZN9S20987C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S20987C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20987C16[];
extern void _ZN9S20987C16D1Ev();
extern void _ZN9S20987C16D0Ev();
static  VTBL_ENTRY vtc_S20987C16[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C16[0]),
  (VTBL_ENTRY)&_ZN9S20987C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20987C16D0Ev,
};
extern VTBL_ENTRY _ZTV9S20987C16[];
static  VTT_ENTRY vtt_S20987C16[] = {
  {&(_ZTV9S20987C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20987C16[];
extern  VTBL_ENTRY _ZTV9S20987C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C16[];
Class_Descriptor cd_S20987C16 = {  "S20987C16", // class name
  bases_S20987C16, 1,
  &(vtc_S20987C16[0]), // expected_vtbl_contents
  &(vtt_S20987C16[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S20987C16),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20987C16),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20987C16),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  S20987C18  : virtual S7883C3_nt , S3216C8_nt , S20987C3 , virtual S4677C37 , S20987C5 {
  virtual  ~S20987C18(); // _ZN9S20987C18D2Ev
  S20987C18(); // tgen
};
//SIG(-1 S20987C18) C1{ VBC2{ vd m} BC3{ m Fi} BC4{ VBC5{ BC6{ VBC2 VBC3 BC7{ m} Fi} Fi} BC7} VBC7 BC6 vd}


 S20987C18 ::~S20987C18(){ note_dtor("S20987C18", this);}
S20987C18 ::S20987C18(){ note_ctor("S20987C18", this);} // tgen

static void Test_S20987C18()
{
  extern Class_Descriptor cd_S20987C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S20987C18, buf);
    S20987C18 *dp, &lv = *(dp=new (buf) S20987C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S20987C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20987C18)");
    check_base_class_offset(lv, (S7883C3_nt*), 0, "S20987C18");
    check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C4*), 0, "S20987C18");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*), 0, "S20987C18");
    /*is_ambiguous_... S20987C18::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(8,4), "S20987C18");
    check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C4*), ABISELECT(48,28), "S20987C18");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*), ABISELECT(48,28), "S20987C18");
    check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C4*), ABISELECT(32,16), "S20987C18");
    check_base_class_offset(lv, (S20987C5*)(S20987C4*), ABISELECT(32,16), "S20987C18");
    check_base_class_offset(lv, (S20987C4*)(S20987C3*), ABISELECT(32,16), "S20987C18");
    /*is_ambiguous_... S20987C3::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C3*), 0, "S20987C18");
    check_base_class_offset(lv, (S20987C3*), 0, "S20987C18");
    /*is_ambiguous_... S20987C18::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*), ABISELECT(52,32), "S20987C18");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C5*), ABISELECT(16,8), "S20987C18");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S20987C5*), ABISELECT(16,8), "S20987C18");
    test_class_info(&lv, &cd_S20987C18);
    dp->~S20987C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20987C18(Test_S20987C18, "S20987C18", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN9S20987C18C1Ev();
extern void _ZN9S20987C18D2Ev();
Name_Map name_map_S20987C18[] = {
  NSPAIR(_ZN9S20987C18C1Ev),
  NSPAIR(_ZN9S20987C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C4;
extern VTBL_ENTRY _ZTI8S20987C4[];
extern  VTBL_ENTRY _ZTV8S20987C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C4[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C3;
extern VTBL_ENTRY _ZTI8S20987C3[];
extern  VTBL_ENTRY _ZTV8S20987C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C3[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
static Base_Class bases_S20987C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_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_S3216C8_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
    4, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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_S20987C5,    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
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20987C4,    ABISELECT(32,16), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20987C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4677C37,    ABISELECT(52,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_S4677C37,    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
    10, //immediately_derived
  0, 0},
  {&cd_S20987C5,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20987C18[];
extern void _ZN9S20987C18D1Ev();
extern void _ZN9S20987C18D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev)();
extern void ABISELECT(_ZThn16_N9S20987C18D1Ev,_ZThn8_N9S20987C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev)();
extern void ABISELECT(_ZThn16_N9S20987C18D0Ev,_ZThn8_N9S20987C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev)();
extern void ABISELECT(_ZThn32_N9S20987C18D1Ev,_ZThn16_N9S20987C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev)();
extern void ABISELECT(_ZThn32_N9S20987C18D0Ev,_ZThn16_N9S20987C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20987C18[] = {
  ABISELECT(52,32),
  ABISELECT(48,28),
  0,
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&_ZN9S20987C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20987C18D0Ev,
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev),
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev),
};
extern VTBL_ENTRY _ZTV9S20987C18[];
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void _ZN8S20987C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void _ZN8S20987C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C3__9S20987C18[] = {
  ABISELECT(48,28),
  0,
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void ABISELECT(_ZThn32_N8S20987C3D1Ev,_ZThn16_N8S20987C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void ABISELECT(_ZThn32_N8S20987C3D0Ev,_ZThn16_N8S20987C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C3__9S20987C18[] = {
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C5__A1__9S20987C18[] = {
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C5__A1__9S20987C18[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void _ZN8S20987C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
extern void _ZN8S20987C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C18[] = {
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C58S20987C4__9S20987C18[] = {
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C58S20987C4__9S20987C18[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C4__9S20987C18[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
static  VTT_ENTRY vtt_S20987C18[] = {
  {&(_ZTV9S20987C18[7]),  7,23},
  {&(_tg__ZTV8S20987C3__9S20987C18[6]),  6,8},
  {&(_tg__ZTV8S20987C4__8S20987C3__9S20987C18[5]),  5,7},
  {&(_tg__ZTV8S20987C3__9S20987C18[6]),  6,8},
  {&(_tg__ZTV8S20987C5__A1__9S20987C18[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C5__A1__9S20987C18[3]),  3,5},
  {&(_ZTV9S20987C18[7]),  7,23},
  {&(_ZTV9S20987C18[21]),  21,23},
  {&(_ZTV9S20987C18[14]),  14,23},
  {&(_tg__ZTV8S20987C4__9S20987C18[5]),  5,7},
  {&(_tg__ZTV8S20987C58S20987C4__9S20987C18[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C58S20987C4__9S20987C18[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20987C4__9S20987C18[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20987C18[];
extern  VTBL_ENTRY _ZTV9S20987C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C18[];
static VTBL_ENTRY alt_thunk_names56[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20987C3D0Ev,_ZThn16_N8S20987C3D0Ev),
  (VTBL_ENTRY)_ZN8S20987C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20987C3D1Ev,_ZThn16_N8S20987C3D1Ev),
  (VTBL_ENTRY)_ZN8S20987C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20987C18D0Ev,_ZThn16_N9S20987C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C18D0Ev,_ZThn8_N9S20987C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20987C18D1Ev,_ZThn16_N9S20987C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C18D1Ev,_ZThn8_N9S20987C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20987C18 = {  "S20987C18", // class name
  bases_S20987C18, 11,
  &(vtc_S20987C18[0]), // expected_vtbl_contents
  &(vtt_S20987C18[0]), // expected_vtt_contents
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI9S20987C18),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20987C18),23, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20987C18),13, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names56,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20987C20  : virtual S3216C8_nt , virtual S20987C2 , virtual S20987C16 , virtual S4677C37 , S20987C5 {
  int s20987c20f0;
  void *s20987c20f1;
  virtual  ~S20987C20(); // _ZN9S20987C20D2Ev
  S20987C20(); // tgen
};
//SIG(-1 S20987C20) C1{ VBC2{ m Fi} VBC3{ VBC4{ VBC5{ BC6{ VBC7{ vd m} VBC2 BC8{ m} Fi} Fi} BC8} FC2} VBC9{ VBC2 vd} VBC8 BC6 vd Fi Fp}


 S20987C20 ::~S20987C20(){ note_dtor("S20987C20", this);}
S20987C20 ::S20987C20(){ note_ctor("S20987C20", this);} // tgen

static void Test_S20987C20()
{
  extern Class_Descriptor cd_S20987C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S20987C20, buf);
    S20987C20 *dp, &lv = *(dp=new (buf) S20987C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S20987C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20987C20)");
    check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(24,16), "S20987C20");
    check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C4*), ABISELECT(24,16), "S20987C20");
    check_base_class_offset(lv, (S3216C8_nt*)(S20987C16*), ABISELECT(24,16), "S20987C20");
    /*is_ambiguous_... S20987C20::S20987C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*), ABISELECT(24,16), "S20987C20");
    check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C4*), ABISELECT(32,20), "S20987C20");
    /*is_ambiguous_... S20987C20::S20987C5 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*), ABISELECT(32,20), "S20987C20");
    check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C4*), ABISELECT(48,28), "S20987C20");
    check_base_class_offset(lv, (S20987C5*)(S20987C4*), ABISELECT(48,28), "S20987C20");
    check_base_class_offset(lv, (S20987C4*)(S20987C3*), ABISELECT(48,28), "S20987C20");
    /*is_ambiguous_... S20987C3::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C3*), ABISELECT(32,20), "S20987C20");
    check_base_class_offset(lv, (S20987C3*)(S20987C2*), ABISELECT(32,20), "S20987C20");
    check_base_class_offset(lv, (S20987C2*), ABISELECT(32,20), "S20987C20");
    check_base_class_offset(lv, (S20987C16*), ABISELECT(64,40), "S20987C20");
    /*is_ambiguous_... S20987C20::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*), ABISELECT(72,44), "S20987C20");
    /*is_ambiguous_... S20987C20::S20987C5 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C5*), 0, "S20987C20");
    /*is_ambiguous_... S20987C20::S20987C5 */ AMB_check_base_class_offset(lv, (S20987C5*), 0, "S20987C20");
    check_field_offset(lv, s20987c20f0, ABISELECT(12,8), "S20987C20.s20987c20f0");
    check_field_offset(lv, s20987c20f1, ABISELECT(16,12), "S20987C20.s20987c20f1");
    test_class_info(&lv, &cd_S20987C20);
    dp->~S20987C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20987C20(Test_S20987C20, "S20987C20", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN9S20987C20C1Ev();
extern void _ZN9S20987C20D2Ev();
Name_Map name_map_S20987C20[] = {
  NSPAIR(_ZN9S20987C20C1Ev),
  NSPAIR(_ZN9S20987C20D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C4;
extern VTBL_ENTRY _ZTI8S20987C4[];
extern  VTBL_ENTRY _ZTV8S20987C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C4[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C3;
extern VTBL_ENTRY _ZTI8S20987C3[];
extern  VTBL_ENTRY _ZTV8S20987C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C3[];
extern Class_Descriptor cd_S20987C2;
extern VTBL_ENTRY _ZTI8S20987C2[];
extern  VTBL_ENTRY _ZTV8S20987C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C2[];
extern Class_Descriptor cd_S20987C16;
extern VTBL_ENTRY _ZTI9S20987C16[];
extern  VTBL_ENTRY _ZTV9S20987C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C16[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
static Base_Class bases_S20987C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7883C3_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20987C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20987C4,    ABISELECT(48,28), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    6, //immediately_derived
  0, 0},
  {&cd_S20987C3,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20987C2,    ABISELECT(32,20), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20987C16,    ABISELECT(64,40), //bcp->offset
    28, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20987C5,    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},
  {0}};
extern VTBL_ENTRY _ZTI9S20987C20[];
extern void ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev)();
extern void _ZN9S20987C20D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev)();
extern void _ZN9S20987C20D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev)();
extern void ABISELECT(_ZThn32_N9S20987C20D1Ev,_ZThn20_N9S20987C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev)();
extern void ABISELECT(_ZThn32_N9S20987C20D0Ev,_ZThn20_N9S20987C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev)();
extern void ABISELECT(_ZThn48_N9S20987C20D1Ev,_ZThn28_N9S20987C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev)();
extern void ABISELECT(_ZThn48_N9S20987C20D0Ev,_ZThn28_N9S20987C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20987C20D1Ev,_ZTv0_n16_N9S20987C20D1Ev)();
extern void ABISELECT(_ZThn64_N9S20987C20D1Ev,_ZThn40_N9S20987C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20987C20D0Ev,_ZTv0_n16_N9S20987C20D0Ev)();
extern void ABISELECT(_ZThn64_N9S20987C20D0Ev,_ZThn40_N9S20987C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20987C20[] = {
  ABISELECT(72,44),
  ABISELECT(64,40),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(32,20),
  ABISELECT(24,16),
  ABISELECT(32,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev),
  0,
  ABISELECT(-8,-4),
  0,
  ABISELECT(16,8),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20987C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20987C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20987C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C20D1Ev,_ZTv0_n16_N9S20987C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C20D0Ev,_ZTv0_n16_N9S20987C20D0Ev),
};
extern VTBL_ENTRY _ZTV9S20987C20[];
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C5__A1__9S20987C20[] = {
  ABISELECT(24,16),
  ABISELECT(32,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZThn32_N8S20987C5D1Ev,_ZThn20_N8S20987C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void ABISELECT(_ZThn32_N8S20987C5D0Ev,_ZThn20_N8S20987C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C5__A1__9S20987C20[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev)();
extern void _ZN8S20987C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev)();
extern void _ZN8S20987C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C2__9S20987C20[] = {
  0,
  ABISELECT(-8,-4),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20987C2D1Ev,_ZThn8_N8S20987C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S20987C2D0Ev,_ZThn8_N8S20987C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C2__9S20987C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void _ZN8S20987C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void _ZN8S20987C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C3__9S20987C20[] = {
  ABISELECT(-8,-4),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S20987C3D1Ev,_ZThn8_N8S20987C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S20987C3D0Ev,_ZThn8_N8S20987C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C3__9S20987C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void _ZN8S20987C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
extern void _ZN8S20987C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C58S20987C4__9S20987C20[] = {
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C58S20987C4__9S20987C20[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C4__9S20987C20[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void _ZN9S20987C16D1Ev();
extern void _ZN9S20987C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20987C16__9S20987C20[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C16[0]),
  (VTBL_ENTRY)&_ZN9S20987C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20987C16D0Ev,
};
static  VTT_ENTRY vtt_S20987C20[] = {
  {&(_ZTV9S20987C20[10]),  10,34},
  {&(_tg__ZTV8S20987C5__A1__9S20987C20[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C5__A1__9S20987C20[3]),  3,5},
  {&(_ZTV9S20987C20[19]),  19,34},
  {&(_ZTV9S20987C20[19]),  19,34},
  {&(_ZTV9S20987C20[26]),  26,34},
  {&(_ZTV9S20987C20[19]),  19,34},
  {&(_ZTV9S20987C20[32]),  32,34},
  {&(_tg__ZTV8S20987C2__9S20987C20[7]),  7,9},
  {&(_tg__ZTV8S20987C2__9S20987C20[7]),  7,9},
  {&(_tg__ZTV8S20987C4__8S20987C2__9S20987C20[5]),  5,7},
  {&(_tg__ZTV8S20987C2__9S20987C20[7]),  7,9},
  {&(_tg__ZTV8S20987C3__9S20987C20[6]),  6,8},
  {&(_tg__ZTV8S20987C4__8S20987C3__9S20987C20[5]),  5,7},
  {&(_tg__ZTV8S20987C3__9S20987C20[6]),  6,8},
  {&(_tg__ZTV8S20987C4__9S20987C20[5]),  5,7},
  {&(_tg__ZTV8S20987C58S20987C4__9S20987C20[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C58S20987C4__9S20987C20[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20987C4__9S20987C20[3]),  3,5},
  {&(_tg__ZTV9S20987C16__9S20987C20[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20987C20[];
extern  VTBL_ENTRY _ZTV9S20987C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C20[];
static VTBL_ENTRY alt_thunk_names57[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20987C3D0Ev,_ZThn8_N8S20987C3D0Ev),
  (VTBL_ENTRY)_ZN8S20987C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20987C3D1Ev,_ZThn8_N8S20987C3D1Ev),
  (VTBL_ENTRY)_ZN8S20987C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20987C2D0Ev,_ZThn8_N8S20987C2D0Ev),
  (VTBL_ENTRY)_ZN8S20987C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20987C2D1Ev,_ZThn8_N8S20987C2D1Ev),
  (VTBL_ENTRY)_ZN8S20987C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20987C5D0Ev,_ZThn20_N8S20987C5D0Ev),
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20987C5D1Ev,_ZThn20_N8S20987C5D1Ev),
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20987C20D0Ev,_ZTv0_n16_N9S20987C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20987C20D0Ev,_ZThn40_N9S20987C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20987C20D1Ev,_ZTv0_n16_N9S20987C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20987C20D1Ev,_ZThn40_N9S20987C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20987C20D0Ev,_ZThn28_N9S20987C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20987C20D0Ev,_ZThn20_N9S20987C20D0Ev),
  (VTBL_ENTRY)_ZN9S20987C20D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20987C20D1Ev,_ZThn28_N9S20987C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20987C20D1Ev,_ZThn20_N9S20987C20D1Ev),
  (VTBL_ENTRY)_ZN9S20987C20D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20987C20 = {  "S20987C20", // class name
  bases_S20987C20, 12,
  &(vtc_S20987C20[0]), // expected_vtbl_contents
  &(vtt_S20987C20[0]), // expected_vtt_contents
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI9S20987C20),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20987C20),34, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20987C20),20, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names57,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20987C19  : S20987C12 , virtual S20987C20 {
  int s20987c19f0;
  virtual  ~S20987C19(); // _ZN9S20987C19D2Ev
  S20987C19(); // tgen
};
//SIG(-1 S20987C19) C1{ BC2{ BC3{ BC4{ VBC5{ vd m} VBC6{ m Fi} BC7{ m} Fi} Fi}} VBC8{ VBC6 VBC9{ VBC10{ VBC3 BC7} FC6} VBC11{ VBC6 vd} VBC7 BC4 vd Fi Fp} vd Fi}


 S20987C19 ::~S20987C19(){ note_dtor("S20987C19", this);}
S20987C19 ::S20987C19(){ note_ctor("S20987C19", this);} // tgen

static void Test_S20987C19()
{
  extern Class_Descriptor cd_S20987C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,17)];
    init_test(&cd_S20987C19, buf);
    S20987C19 *dp, &lv = *(dp=new (buf) S20987C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,64), "sizeof(S20987C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20987C19)");
    check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C4*)(S20987C12*), 0, "S20987C19");
    /*is_ambiguous_... S20987C19::S20987C4 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C4*), 0, "S20987C19");
    /*is_ambiguous_... S20987C20::S20987C5 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C20*), 0, "S20987C19");
    check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C4*)(S20987C12*), ABISELECT(20,16), "S20987C19");
    check_base_class_offset(lv, (S3216C8_nt*)(S20987C20*), ABISELECT(20,16), "S20987C19");
    /*is_ambiguous_... S20987C19::S20987C4 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C4*), ABISELECT(20,16), "S20987C19");
    check_base_class_offset(lv, (S3216C8_nt*)(S20987C16*), ABISELECT(20,16), "S20987C19");
    /*is_ambiguous_... S20987C20::S20987C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C20*), ABISELECT(20,16), "S20987C19");
    check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C4*)(S20987C12*), 0, "S20987C19");
    check_base_class_offset(lv, (S20987C5*)(S20987C4*)(S20987C12*), 0, "S20987C19");
    check_base_class_offset(lv, (S20987C4*)(S20987C12*), 0, "S20987C19");
    check_base_class_offset(lv, (S20987C12*), 0, "S20987C19");
    /*is_ambiguous_... S20987C19::S20987C4 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C4*), ABISELECT(64,44), "S20987C19");
    /*is_ambiguous_... S20987C19::S20987C4 */ AMB_check_base_class_offset(lv, (S20987C5*)(S20987C4*), ABISELECT(64,44), "S20987C19");
    check_base_class_offset(lv, (S20987C4*)(S20987C3*), ABISELECT(64,44), "S20987C19");
    /*is_ambiguous_... S20987C3::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C3*), ABISELECT(48,36), "S20987C19");
    check_base_class_offset(lv, (S20987C3*)(S20987C2*), ABISELECT(48,36), "S20987C19");
    check_base_class_offset(lv, (S20987C2*)(S20987C20*), ABISELECT(48,36), "S20987C19");
    check_base_class_offset(lv, (S20987C16*)(S20987C20*), ABISELECT(80,56), "S20987C19");
    /*is_ambiguous_... S20987C20::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C20*), ABISELECT(88,60), "S20987C19");
    /*is_ambiguous_... S20987C20::S20987C5 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C20*), ABISELECT(24,20), "S20987C19");
    /*is_ambiguous_... S20987C20::S20987C5 */ AMB_check_base_class_offset(lv, (S20987C5*)(S20987C20*), ABISELECT(24,20), "S20987C19");
    check_base_class_offset(lv, (S20987C20*), ABISELECT(24,20), "S20987C19");
    check_field_offset(lv, s20987c19f0, ABISELECT(16,12), "S20987C19.s20987c19f0");
    test_class_info(&lv, &cd_S20987C19);
    dp->~S20987C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20987C19(Test_S20987C19, "S20987C19", ABISELECT(96,64));

#else // __cplusplus

extern void _ZN9S20987C19C1Ev();
extern void _ZN9S20987C19D2Ev();
Name_Map name_map_S20987C19[] = {
  NSPAIR(_ZN9S20987C19C1Ev),
  NSPAIR(_ZN9S20987C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C4;
extern VTBL_ENTRY _ZTI8S20987C4[];
extern  VTBL_ENTRY _ZTV8S20987C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C4[];
extern Class_Descriptor cd_S20987C12;
extern VTBL_ENTRY _ZTI9S20987C12[];
extern  VTBL_ENTRY _ZTV9S20987C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C12[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C4;
extern VTBL_ENTRY _ZTI8S20987C4[];
extern  VTBL_ENTRY _ZTV8S20987C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C4[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C3;
extern VTBL_ENTRY _ZTI8S20987C3[];
extern  VTBL_ENTRY _ZTV8S20987C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C3[];
extern Class_Descriptor cd_S20987C2;
extern VTBL_ENTRY _ZTI8S20987C2[];
extern  VTBL_ENTRY _ZTV8S20987C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C2[];
extern Class_Descriptor cd_S20987C16;
extern VTBL_ENTRY _ZTI9S20987C16[];
extern  VTBL_ENTRY _ZTV9S20987C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C16[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C20;
extern VTBL_ENTRY _ZTI9S20987C20[];
extern  VTBL_ENTRY _ZTV9S20987C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C20[];
static Base_Class bases_S20987C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(20,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20987C5,    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
    9, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20987C4,    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
    10, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20987C12,    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_S4677C37,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20987C5,    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
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20987C4,    ABISELECT(64,44), //bcp->offset
    34, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20987C3,    ABISELECT(48,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20987C2,    ABISELECT(48,36), //bcp->offset
    25, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20987C16,    ABISELECT(80,56), //bcp->offset
    41, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    16, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(24,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
    15, //immediately_derived
  0, 0},
  {&cd_S20987C5,    ABISELECT(24,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20987C20,    ABISELECT(24,20), //bcp->offset
    13, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20987C19[];
extern void _ZN9S20987C19D1Ev();
extern void _ZN9S20987C19D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev)();
extern void ABISELECT(_ZThn24_N9S20987C19D1Ev,_ZThn20_N9S20987C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev)();
extern void ABISELECT(_ZThn24_N9S20987C19D0Ev,_ZThn20_N9S20987C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev)();
extern void ABISELECT(_ZThn48_N9S20987C19D1Ev,_ZThn36_N9S20987C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev)();
extern void ABISELECT(_ZThn48_N9S20987C19D0Ev,_ZThn36_N9S20987C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev)();
extern void ABISELECT(_ZThn64_N9S20987C19D1Ev,_ZThn44_N9S20987C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev)();
extern void ABISELECT(_ZThn64_N9S20987C19D0Ev,_ZThn44_N9S20987C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20987C19D1Ev,_ZTv0_n16_N9S20987C19D1Ev)();
extern void ABISELECT(_ZThn80_N9S20987C19D1Ev,_ZThn56_N9S20987C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20987C19D0Ev,_ZTv0_n16_N9S20987C19D0Ev)();
extern void ABISELECT(_ZThn80_N9S20987C19D0Ev,_ZThn56_N9S20987C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20987C19[] = {
  ABISELECT(88,60),
  ABISELECT(80,56),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(24,20),
  ABISELECT(20,16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C19[0]),
  (VTBL_ENTRY)&_ZN9S20987C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20987C19D0Ev,
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(24,16),
  -4,
  ABISELECT(-24,-20),
  ABISELECT(-24,-20),
  ABISELECT(-24,-20),
  (VTBL_ENTRY)&(_ZTI9S20987C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev),
  0,
  ABISELECT(-28,-20),
  ABISELECT(-48,-36),
  ABISELECT(16,8),
  ABISELECT(-48,-36),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI9S20987C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev),
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S20987C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev),
  ABISELECT(-80,-56),
  ABISELECT(-60,-40),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S20987C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C19D1Ev,_ZTv0_n16_N9S20987C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C19D0Ev,_ZTv0_n16_N9S20987C19D0Ev),
};
extern VTBL_ENTRY _ZTV9S20987C19[];
extern void _ZN9S20987C12D1Ev();
extern void _ZN9S20987C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20987C12__9S20987C19[] = {
  ABISELECT(20,16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C12[0]),
  (VTBL_ENTRY)&_ZN9S20987C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20987C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void _ZN8S20987C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
extern void _ZN8S20987C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C49S20987C12__9S20987C19[] = {
  ABISELECT(20,16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C58S20987C49S20987C12__9S20987C19[] = {
  ABISELECT(20,16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev)();
extern void _ZN9S20987C20D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev)();
extern void _ZN9S20987C20D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C20__9S20987C19[] = {
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(24,16),
  -4,
  ABISELECT(-24,-20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C59S20987C20__A2__9S20987C19[] = {
  -4,
  ABISELECT(-24,-20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C59S20987C20__A2__9S20987C19[] = {
  ABISELECT(24,20),
  ABISELECT(24,20),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev)();
extern void ABISELECT(_ZThn24_N9S20987C20D1Ev,_ZThn16_N9S20987C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev)();
extern void ABISELECT(_ZThn24_N9S20987C20D0Ev,_ZThn16_N9S20987C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C2__9S20987C20__9S20987C19[] = {
  0,
  ABISELECT(-28,-20),
  ABISELECT(-48,-36),
  ABISELECT(16,8),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20987C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev)();
extern void ABISELECT(_ZThn40_N9S20987C20D1Ev,_ZThn24_N9S20987C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev)();
extern void ABISELECT(_ZThn40_N9S20987C20D0Ev,_ZThn24_N9S20987C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C20__9S20987C19[] = {
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20987C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20987C20__9S20987C19[] = {
  ABISELECT(24,20),
  ABISELECT(24,20),
  (VTBL_ENTRY)&(_ZTI9S20987C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20987C20D1Ev,_ZTv0_n16_N9S20987C20D1Ev)();
extern void ABISELECT(_ZThn56_N9S20987C20D1Ev,_ZThn36_N9S20987C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20987C20D0Ev,_ZTv0_n16_N9S20987C20D0Ev)();
extern void ABISELECT(_ZThn56_N9S20987C20D0Ev,_ZThn36_N9S20987C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C16__9S20987C20__9S20987C19[] = {
  ABISELECT(-56,-36),
  ABISELECT(-60,-40),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S20987C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C20D1Ev,_ZTv0_n16_N9S20987C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C20D0Ev,_ZTv0_n16_N9S20987C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev)();
extern void _ZN8S20987C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev)();
extern void _ZN8S20987C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C2__9S20987C19[] = {
  0,
  ABISELECT(-28,-20),
  ABISELECT(-48,-36),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20987C2D1Ev,_ZThn8_N8S20987C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S20987C2D0Ev,_ZThn8_N8S20987C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C2__9S20987C19[] = {
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C2__9S20987C19[] = {
  ABISELECT(48,36),
  ABISELECT(48,36),
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void _ZN8S20987C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void _ZN8S20987C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C3__9S20987C19[] = {
  ABISELECT(-28,-20),
  ABISELECT(-48,-36),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S20987C3D1Ev,_ZThn8_N8S20987C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S20987C3D0Ev,_ZThn8_N8S20987C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C3__9S20987C19[] = {
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C3__9S20987C19[] = {
  ABISELECT(48,36),
  ABISELECT(48,36),
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void _ZN8S20987C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
extern void _ZN8S20987C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__A1__9S20987C19[] = {
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C58S20987C4__A1__9S20987C19[] = {
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C58S20987C4__A1__9S20987C19[] = {
  ABISELECT(64,44),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C4__A1__9S20987C19[] = {
  ABISELECT(64,44),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void _ZN9S20987C16D1Ev();
extern void _ZN9S20987C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20987C16__9S20987C19[] = {
  ABISELECT(-60,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C16[0]),
  (VTBL_ENTRY)&_ZN9S20987C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20987C16D0Ev,
};
static  VTT_ENTRY vtt_S20987C19[] = {
  {&(_ZTV9S20987C19[11]),  11,47},
  {&(_tg__ZTV9S20987C12__9S20987C19[5]),  5,7},
  {&(_tg__ZTV8S20987C49S20987C12__9S20987C19[5]),  5,7},
  {&(_tg__ZTV8S20987C58S20987C49S20987C12__9S20987C19[5]),  5,7},
  {&(_tg__ZTV8S20987C58S20987C49S20987C12__9S20987C19[5]),  5,7},
  {&(_tg__ZTV8S20987C49S20987C12__9S20987C19[5]),  5,7},
  {&(_tg__ZTV9S20987C12__9S20987C19[5]),  5,7},
  {&(_ZTV9S20987C19[11]),  11,47},
  {&(_ZTV9S20987C19[23]),  23,47},
  {&(_ZTV9S20987C19[32]),  32,47},
  {&(_ZTV9S20987C19[32]),  32,47},
  {&(_ZTV9S20987C19[39]),  39,47},
  {&(_ZTV9S20987C19[45]),  45,47},
  {&(_tg__ZTV9S20987C20__9S20987C19[10]),  10,12},
  {&(_tg__ZTV8S20987C59S20987C20__A2__9S20987C19[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C59S20987C20__A2__9S20987C19[3]),  3,5},
  {&(_tg__ZTV8S20987C2__9S20987C20__9S20987C19[7]),  7,9},
  {&(_tg__ZTV8S20987C2__9S20987C20__9S20987C19[7]),  7,9},
  {&(_tg__ZTV8S20987C4__9S20987C20__9S20987C19[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__9S20987C20__9S20987C19[3]),  3,5},
  {&(_tg__ZTV9S20987C16__9S20987C20__9S20987C19[4]),  4,6},
  {&(_tg__ZTV8S20987C2__9S20987C19[7]),  7,9},
  {&(_tg__ZTV8S20987C2__9S20987C19[7]),  7,9},
  {&(_tg__ZTV8S20987C4__8S20987C2__9S20987C19[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C2__9S20987C19[3]),  3,5},
  {&(_tg__ZTV8S20987C3__9S20987C19[6]),  6,8},
  {&(_tg__ZTV8S20987C4__8S20987C3__9S20987C19[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C3__9S20987C19[3]),  3,5},
  {&(_tg__ZTV8S20987C4__A1__9S20987C19[5]),  5,7},
  {&(_tg__ZTV8S20987C58S20987C4__A1__9S20987C19[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C58S20987C4__A1__9S20987C19[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20987C4__A1__9S20987C19[3]),  3,5},
  {&(_tg__ZTV9S20987C16__9S20987C19[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20987C19[];
extern  VTBL_ENTRY _ZTV9S20987C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C19[];
static VTBL_ENTRY alt_thunk_names58[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20987C3D0Ev,_ZThn8_N8S20987C3D0Ev),
  (VTBL_ENTRY)_ZN8S20987C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20987C3D1Ev,_ZThn8_N8S20987C3D1Ev),
  (VTBL_ENTRY)_ZN8S20987C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20987C2D0Ev,_ZThn8_N8S20987C2D0Ev),
  (VTBL_ENTRY)_ZN8S20987C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20987C2D1Ev,_ZThn8_N8S20987C2D1Ev),
  (VTBL_ENTRY)_ZN8S20987C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20987C20D0Ev,_ZTv0_n16_N9S20987C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20987C20D0Ev,_ZThn36_N9S20987C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20987C20D1Ev,_ZTv0_n16_N9S20987C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20987C20D1Ev,_ZThn36_N9S20987C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20987C20D0Ev,_ZThn24_N9S20987C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20987C20D0Ev,_ZThn16_N9S20987C20D0Ev),
  (VTBL_ENTRY)_ZN9S20987C20D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20987C20D1Ev,_ZThn24_N9S20987C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20987C20D1Ev,_ZThn16_N9S20987C20D1Ev),
  (VTBL_ENTRY)_ZN9S20987C20D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C4D0Ev,
  (VTBL_ENTRY)_ZN8S20987C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C4D1Ev,
  (VTBL_ENTRY)_ZN8S20987C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20987C19D0Ev,_ZTv0_n16_N9S20987C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20987C19D0Ev,_ZThn56_N9S20987C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20987C19D1Ev,_ZTv0_n16_N9S20987C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20987C19D1Ev,_ZThn56_N9S20987C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20987C19D0Ev,_ZThn44_N9S20987C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20987C19D0Ev,_ZThn36_N9S20987C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20987C19D0Ev,_ZThn20_N9S20987C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20987C19D1Ev,_ZThn44_N9S20987C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20987C19D1Ev,_ZThn36_N9S20987C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20987C19D1Ev,_ZThn20_N9S20987C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20987C19 = {  "S20987C19", // class name
  bases_S20987C19, 17,
  &(vtc_S20987C19[0]), // expected_vtbl_contents
  &(vtt_S20987C19[0]), // expected_vtt_contents
  ABISELECT(96,64), // object size
  NSPAIRA(_ZTI9S20987C19),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20987C19),47, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20987C19),33, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names58,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20987C17  : virtual S7883C3_nt , S20987C18 , virtual S20987C19 {
  virtual  ~S20987C17(); // _ZN9S20987C17D2Ev
  S20987C17(); // tgen
};
//SIG(-1 S20987C17) C1{ VBC2{ vd m} BC3{ VBC2 BC4{ m Fi} BC5{ VBC6{ BC7{ VBC2 VBC4 BC8{ m} Fi} Fi} BC8} VBC8 BC7 vd} VBC9{ BC10{ BC6} VBC11{ VBC4 VBC12{ VBC5 FC4} VBC13{ VBC4 vd} VBC8 BC7 vd Fi Fp} vd Fi} vd}


 S20987C17 ::~S20987C17(){ note_dtor("S20987C17", this);}
S20987C17 ::S20987C17(){ note_ctor("S20987C17", this);} // tgen

static void Test_S20987C17()
{
  extern Class_Descriptor cd_S20987C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,21)];
    init_test(&cd_S20987C17, buf);
    S20987C17 *dp, &lv = *(dp=new (buf) S20987C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,80), "sizeof(S20987C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20987C17)");
    check_base_class_offset(lv, (S7883C3_nt*), 0, "S20987C17");
    check_base_class_offset(lv, (S7883C3_nt*)(S20987C18*), 0, "S20987C17");
    /*is_ambiguous_... S20987C17::S20987C4 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C4*), 0, "S20987C17");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C18*), 0, "S20987C17");
    check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C4*)(S20987C12*)(S20987C19*), 0, "S20987C17");
    /*is_ambiguous_... S20987C20::S20987C5 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C20*), 0, "S20987C17");
    /*is_ambiguous_... S20987C18::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C18*), ABISELECT(8,4), "S20987C17");
    /*is_ambiguous_... S20987C17::S20987C4 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C4*), ABISELECT(48,28), "S20987C17");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C18*), ABISELECT(48,28), "S20987C17");
    check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C4*)(S20987C12*)(S20987C19*), ABISELECT(48,28), "S20987C17");
    check_base_class_offset(lv, (S3216C8_nt*)(S20987C20*), ABISELECT(48,28), "S20987C17");
    check_base_class_offset(lv, (S3216C8_nt*)(S20987C16*), ABISELECT(48,28), "S20987C17");
    /*is_ambiguous_... S20987C20::S20987C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C20*), ABISELECT(48,28), "S20987C17");
    /*is_ambiguous_... S20987C17::S20987C4 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C4*), ABISELECT(32,16), "S20987C17");
    /*is_ambiguous_... S20987C17::S20987C4 */ AMB_check_base_class_offset(lv, (S20987C5*)(S20987C4*), ABISELECT(32,16), "S20987C17");
    check_base_class_offset(lv, (S20987C4*)(S20987C3*)(S20987C18*), ABISELECT(32,16), "S20987C17");
    /*is_ambiguous_... S20987C17::S20987C3 */ AMB_check_base_class_offset(lv, (S20987C4*)(S20987C3*), ABISELECT(32,16), "S20987C17");
    /*is_ambiguous_... S20987C3::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C3*)(S20987C18*), 0, "S20987C17");
    check_base_class_offset(lv, (S20987C3*)(S20987C18*), 0, "S20987C17");
    /*is_ambiguous_... S20987C18::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C18*), ABISELECT(52,32), "S20987C17");
    /*is_ambiguous_... S20987C20::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C20*), ABISELECT(52,32), "S20987C17");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C18*), ABISELECT(16,8), "S20987C17");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S20987C5*)(S20987C18*), ABISELECT(16,8), "S20987C17");
    check_base_class_offset(lv, (S20987C18*), 0, "S20987C17");
    check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C4*)(S20987C12*)(S20987C19*), ABISELECT(56,36), "S20987C17");
    check_base_class_offset(lv, (S20987C5*)(S20987C4*)(S20987C12*)(S20987C19*), ABISELECT(56,36), "S20987C17");
    check_base_class_offset(lv, (S20987C4*)(S20987C12*)(S20987C19*), ABISELECT(56,36), "S20987C17");
    check_base_class_offset(lv, (S20987C12*)(S20987C19*), ABISELECT(56,36), "S20987C17");
    /*is_ambiguous_... S20987C17::S20987C3 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C3*), ABISELECT(104,68), "S20987C17");
    check_base_class_offset(lv, (S20987C3*)(S20987C2*), ABISELECT(104,68), "S20987C17");
    check_base_class_offset(lv, (S20987C2*)(S20987C20*), ABISELECT(104,68), "S20987C17");
    check_base_class_offset(lv, (S20987C16*)(S20987C20*), ABISELECT(120,76), "S20987C17");
    /*is_ambiguous_... S20987C20::S20987C5 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C20*), ABISELECT(80,52), "S20987C17");
    /*is_ambiguous_... S20987C20::S20987C5 */ AMB_check_base_class_offset(lv, (S20987C5*)(S20987C20*), ABISELECT(80,52), "S20987C17");
    check_base_class_offset(lv, (S20987C20*)(S20987C19*), ABISELECT(80,52), "S20987C17");
    check_base_class_offset(lv, (S20987C19*), ABISELECT(56,36), "S20987C17");
    test_class_info(&lv, &cd_S20987C17);
    dp->~S20987C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20987C17(Test_S20987C17, "S20987C17", ABISELECT(128,80));

#else // __cplusplus

extern void _ZN9S20987C17C1Ev();
extern void _ZN9S20987C17D2Ev();
Name_Map name_map_S20987C17[] = {
  NSPAIR(_ZN9S20987C17C1Ev),
  NSPAIR(_ZN9S20987C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C4;
extern VTBL_ENTRY _ZTI8S20987C4[];
extern  VTBL_ENTRY _ZTV8S20987C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C4[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C3;
extern VTBL_ENTRY _ZTI8S20987C3[];
extern  VTBL_ENTRY _ZTV8S20987C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C3[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C18;
extern VTBL_ENTRY _ZTI9S20987C18[];
extern  VTBL_ENTRY _ZTV9S20987C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C18[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C4;
extern VTBL_ENTRY _ZTI8S20987C4[];
extern  VTBL_ENTRY _ZTV8S20987C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C4[];
extern Class_Descriptor cd_S20987C12;
extern VTBL_ENTRY _ZTI9S20987C12[];
extern  VTBL_ENTRY _ZTV9S20987C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C12[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C3;
extern VTBL_ENTRY _ZTI8S20987C3[];
extern  VTBL_ENTRY _ZTV8S20987C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C3[];
extern Class_Descriptor cd_S20987C2;
extern VTBL_ENTRY _ZTI8S20987C2[];
extern  VTBL_ENTRY _ZTV8S20987C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C2[];
extern Class_Descriptor cd_S20987C16;
extern VTBL_ENTRY _ZTI9S20987C16[];
extern  VTBL_ENTRY _ZTV9S20987C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C16[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C20;
extern VTBL_ENTRY _ZTI9S20987C20[];
extern  VTBL_ENTRY _ZTV9S20987C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C20[];
extern Class_Descriptor cd_S20987C19;
extern VTBL_ENTRY _ZTI9S20987C19[];
extern  VTBL_ENTRY _ZTV9S20987C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C19[];
static Base_Class bases_S20987C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3216C8_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
    4, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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_S20987C5,    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
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20987C4,    ABISELECT(32,16), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20987C3,    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
    13, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(52,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    10, //immediately_derived
  0, 0},
  {&cd_S20987C5,    ABISELECT(16,8), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20987C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4677C37,    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
    13, //immediately_derived
  0, 0},
  {&cd_S20987C5,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20987C4,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20987C12,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(104,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20987C3,    ABISELECT(104,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20987C2,    ABISELECT(104,68), //bcp->offset
    53, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S20987C16,    ABISELECT(120,76), //bcp->offset
    62, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20987C5,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20987C20,    ABISELECT(80,52), //bcp->offset
    41, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20987C19,    ABISELECT(56,36), //bcp->offset
    28, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20987C17[];
extern void _ZN9S20987C17D1Ev();
extern void _ZN9S20987C17D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20987C17D1Ev,_ZThn8_N9S20987C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev)();
extern void ABISELECT(_ZThn16_N9S20987C17D0Ev,_ZThn8_N9S20987C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev)();
extern void ABISELECT(_ZThn32_N9S20987C17D1Ev,_ZThn16_N9S20987C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev)();
extern void ABISELECT(_ZThn32_N9S20987C17D0Ev,_ZThn16_N9S20987C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S20987C17D1Ev,_ZThn36_N9S20987C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S20987C17D0Ev,_ZThn36_N9S20987C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev)();
extern void ABISELECT(_ZThn80_N9S20987C17D1Ev,_ZThn52_N9S20987C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev)();
extern void ABISELECT(_ZThn80_N9S20987C17D0Ev,_ZThn52_N9S20987C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev)();
extern void ABISELECT(_ZThn104_N9S20987C17D1Ev,_ZThn68_N9S20987C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev)();
extern void ABISELECT(_ZThn104_N9S20987C17D0Ev,_ZThn68_N9S20987C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20987C17D1Ev,_ZTv0_n16_N9S20987C17D1Ev)();
extern void ABISELECT(_ZThn120_N9S20987C17D1Ev,_ZThn76_N9S20987C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20987C17D0Ev,_ZTv0_n16_N9S20987C17D0Ev)();
extern void ABISELECT(_ZThn120_N9S20987C17D0Ev,_ZThn76_N9S20987C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20987C17[] = {
  ABISELECT(120,76),
  ABISELECT(104,68),
  ABISELECT(104,68),
  ABISELECT(80,52),
  ABISELECT(56,36),
  ABISELECT(52,32),
  ABISELECT(48,28),
  0,
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C17[0]),
  (VTBL_ENTRY)&_ZN9S20987C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20987C17D0Ev,
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20987C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev),
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20987C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev),
  -4,
  ABISELECT(64,40),
  ABISELECT(-24,-20),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(24,16),
  -8,
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S20987C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev),
  ABISELECT(-28,-20),
  ABISELECT(40,24),
  ABISELECT(-48,-36),
  ABISELECT(24,16),
  ABISELECT(24,16),
  ABISELECT(-32,-24),
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20987C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev),
  0,
  ABISELECT(-56,-40),
  ABISELECT(-104,-68),
  ABISELECT(-72,-52),
  ABISELECT(-104,-68),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI9S20987C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev),
  ABISELECT(-120,-76),
  ABISELECT(-72,-48),
  ABISELECT(-120,-76),
  (VTBL_ENTRY)&(_ZTI9S20987C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C17D1Ev,_ZTv0_n16_N9S20987C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C17D0Ev,_ZTv0_n16_N9S20987C17D0Ev),
};
extern VTBL_ENTRY _ZTV9S20987C17[];
extern void ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev)();
extern void _ZN9S20987C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev)();
extern void _ZN9S20987C18D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C18__9S20987C17[] = {
  ABISELECT(52,32),
  ABISELECT(48,28),
  0,
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void _ZN8S20987C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void _ZN8S20987C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C39S20987C18__9S20987C17[] = {
  ABISELECT(48,28),
  0,
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void ABISELECT(_ZThn32_N8S20987C3D1Ev,_ZThn16_N8S20987C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void ABISELECT(_ZThn32_N8S20987C3D0Ev,_ZThn16_N8S20987C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C39S20987C18__9S20987C17[] = {
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C59S20987C18__A1__9S20987C17[] = {
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C59S20987C18__A1__9S20987C17[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev)();
extern void ABISELECT(_ZThn32_N9S20987C18D1Ev,_ZThn16_N9S20987C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev)();
extern void ABISELECT(_ZThn32_N9S20987C18D0Ev,_ZThn16_N9S20987C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C18__9S20987C17[] = {
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev)();
extern void ABISELECT(_ZThn16_N9S20987C18D1Ev,_ZThn8_N9S20987C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev)();
extern void ABISELECT(_ZThn16_N9S20987C18D0Ev,_ZThn8_N9S20987C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C5__A1__9S20987C18__9S20987C17[] = {
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void _ZN8S20987C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
extern void _ZN8S20987C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C17[] = {
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C58S20987C4__9S20987C17[] = {
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C58S20987C4__9S20987C17[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C4__9S20987C17[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev)();
extern void _ZN9S20987C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev)();
extern void _ZN9S20987C19D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C19__9S20987C17[] = {
  -4,
  ABISELECT(64,40),
  ABISELECT(-24,-20),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(24,16),
  -8,
  ABISELECT(-56,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev)();
extern void _ZN9S20987C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev)();
extern void _ZN9S20987C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C129S20987C19__9S20987C17[] = {
  -8,
  ABISELECT(-56,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void _ZN8S20987C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
extern void _ZN8S20987C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C49S20987C129S20987C19__A1__9S20987C17[] = {
  -8,
  ABISELECT(-56,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C58S20987C49S20987C129S20987C19__A2__9S20987C17[] = {
  -8,
  ABISELECT(-56,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C58S20987C49S20987C129S20987C19__A2__9S20987C17[] = {
  ABISELECT(56,36),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C49S20987C129S20987C19__A1__9S20987C17[] = {
  ABISELECT(56,36),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20987C129S20987C19__9S20987C17[] = {
  ABISELECT(56,36),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI9S20987C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20987C19__9S20987C17[] = {
  ABISELECT(56,36),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI9S20987C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev)();
extern void ABISELECT(_ZThn24_N9S20987C19D1Ev,_ZThn16_N9S20987C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev)();
extern void ABISELECT(_ZThn24_N9S20987C19D0Ev,_ZThn16_N9S20987C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C20__9S20987C19__9S20987C17[] = {
  ABISELECT(-28,-20),
  ABISELECT(40,24),
  ABISELECT(-48,-36),
  ABISELECT(24,16),
  ABISELECT(24,16),
  ABISELECT(-32,-24),
  ABISELECT(-80,-52),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20987C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev)();
extern void ABISELECT(_ZThn48_N9S20987C19D1Ev,_ZThn32_N9S20987C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev)();
extern void ABISELECT(_ZThn48_N9S20987C19D0Ev,_ZThn32_N9S20987C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C2__9S20987C19__9S20987C17[] = {
  0,
  ABISELECT(-56,-40),
  ABISELECT(-104,-68),
  ABISELECT(-72,-52),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S20987C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C4__A1__9S20987C19__9S20987C17[] = {
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  ABISELECT(24,20),
  ABISELECT(24,20),
  (VTBL_ENTRY)&(_ZTI9S20987C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20987C19D1Ev,_ZTv0_n16_N9S20987C19D1Ev)();
extern void ABISELECT(_ZThn64_N9S20987C19D1Ev,_ZThn40_N9S20987C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20987C19D0Ev,_ZTv0_n16_N9S20987C19D0Ev)();
extern void ABISELECT(_ZThn64_N9S20987C19D0Ev,_ZThn40_N9S20987C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C16__9S20987C19__9S20987C17[] = {
  ABISELECT(-64,-40),
  ABISELECT(-72,-48),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20987C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C19D1Ev,_ZTv0_n16_N9S20987C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C19D0Ev,_ZTv0_n16_N9S20987C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev)();
extern void _ZN9S20987C20D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev)();
extern void _ZN9S20987C20D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C20__9S20987C17[] = {
  ABISELECT(-28,-20),
  ABISELECT(40,24),
  ABISELECT(-48,-36),
  ABISELECT(24,16),
  ABISELECT(24,16),
  ABISELECT(-32,-24),
  ABISELECT(-80,-52),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C59S20987C20__A3__9S20987C17[] = {
  ABISELECT(-32,-24),
  ABISELECT(-80,-52),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C59S20987C20__A3__9S20987C17[] = {
  ABISELECT(80,52),
  ABISELECT(80,52),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev)();
extern void ABISELECT(_ZThn24_N9S20987C20D1Ev,_ZThn16_N9S20987C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev)();
extern void ABISELECT(_ZThn24_N9S20987C20D0Ev,_ZThn16_N9S20987C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C2__9S20987C20__9S20987C17[] = {
  0,
  ABISELECT(-56,-40),
  ABISELECT(-104,-68),
  ABISELECT(-72,-52),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20987C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C20__9S20987C17[] = {
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  ABISELECT(48,36),
  ABISELECT(48,36),
  (VTBL_ENTRY)&(_ZTI9S20987C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20987C20__9S20987C17[] = {
  ABISELECT(80,52),
  ABISELECT(80,52),
  (VTBL_ENTRY)&(_ZTI9S20987C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20987C20D1Ev,_ZTv0_n16_N9S20987C20D1Ev)();
extern void ABISELECT(_ZThn40_N9S20987C20D1Ev,_ZThn24_N9S20987C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20987C20D0Ev,_ZTv0_n16_N9S20987C20D0Ev)();
extern void ABISELECT(_ZThn40_N9S20987C20D0Ev,_ZThn24_N9S20987C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C16__9S20987C20__9S20987C17[] = {
  ABISELECT(-40,-24),
  ABISELECT(-72,-48),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20987C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C20D1Ev,_ZTv0_n16_N9S20987C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C20D0Ev,_ZTv0_n16_N9S20987C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev)();
extern void _ZN8S20987C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev)();
extern void _ZN8S20987C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C2__9S20987C17[] = {
  0,
  ABISELECT(-56,-40),
  ABISELECT(-104,-68),
  ABISELECT(-72,-52),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C2__9S20987C17[] = {
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  ABISELECT(72,52),
  ABISELECT(72,52),
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C2__9S20987C17[] = {
  ABISELECT(104,68),
  ABISELECT(104,68),
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void _ZN8S20987C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void _ZN8S20987C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C3__A1__9S20987C17[] = {
  ABISELECT(-56,-40),
  ABISELECT(-104,-68),
  ABISELECT(-72,-52),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C3__A1__9S20987C17[] = {
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  ABISELECT(72,52),
  ABISELECT(72,52),
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C3__A1__9S20987C17[] = {
  ABISELECT(104,68),
  ABISELECT(104,68),
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void _ZN9S20987C16D1Ev();
extern void _ZN9S20987C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20987C16__9S20987C17[] = {
  ABISELECT(-72,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C16[0]),
  (VTBL_ENTRY)&_ZN9S20987C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20987C16D0Ev,
};
static  VTT_ENTRY vtt_S20987C17[] = {
  {&(_ZTV9S20987C17[12]),  12,68},
  {&(_tg__ZTV9S20987C18__9S20987C17[7]),  7,9},
  {&(_tg__ZTV8S20987C39S20987C18__9S20987C17[6]),  6,8},
  {&(_tg__ZTV8S20987C4__8S20987C39S20987C18__9S20987C17[5]),  5,7},
  {&(_tg__ZTV8S20987C39S20987C18__9S20987C17[6]),  6,8},
  {&(_tg__ZTV8S20987C59S20987C18__A1__9S20987C17[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C59S20987C18__A1__9S20987C17[3]),  3,5},
  {&(_tg__ZTV9S20987C18__9S20987C17[7]),  7,9},
  {&(_tg__ZTV8S20987C4__9S20987C18__9S20987C17[5]),  5,7},
  {&(_tg__ZTV8S20987C5__A1__9S20987C18__9S20987C17[5]),  5,7},
  {&(_ZTV9S20987C17[12]),  12,68},
  {&(_ZTV9S20987C17[26]),  26,68},
  {&(_ZTV9S20987C17[19]),  19,68},
  {&(_ZTV9S20987C17[39]),  39,68},
  {&(_ZTV9S20987C17[51]),  51,68},
  {&(_ZTV9S20987C17[60]),  60,68},
  {&(_ZTV9S20987C17[60]),  60,68},
  {&(_ZTV9S20987C17[66]),  66,68},
  {&(_tg__ZTV8S20987C4__9S20987C17[5]),  5,7},
  {&(_tg__ZTV8S20987C58S20987C4__9S20987C17[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C58S20987C4__9S20987C17[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20987C4__9S20987C17[3]),  3,5},
  {&(_tg__ZTV9S20987C19__9S20987C17[11]),  11,13},
  {&(_tg__ZTV9S20987C129S20987C19__9S20987C17[5]),  5,7},
  {&(_tg__ZTV8S20987C49S20987C129S20987C19__A1__9S20987C17[5]),  5,7},
  {&(_tg__ZTV8S20987C58S20987C49S20987C129S20987C19__A2__9S20987C17[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C58S20987C49S20987C129S20987C19__A2__9S20987C17[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20987C49S20987C129S20987C19__A1__9S20987C17[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20987C129S20987C19__9S20987C17[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20987C19__9S20987C17[3]),  3,5},
  {&(_tg__ZTV9S20987C20__9S20987C19__9S20987C17[10]),  10,12},
  {&(_tg__ZTV8S20987C2__9S20987C19__9S20987C17[7]),  7,9},
  {&(_tg__ZTV8S20987C2__9S20987C19__9S20987C17[7]),  7,9},
  {&(_tg__ZTV8S20987C4__A1__9S20987C19__9S20987C17[5]),  5,7},
  {&(_tg__ZTV9S20987C16__9S20987C19__9S20987C17[4]),  4,6},
  {&(_tg__ZTV9S20987C20__9S20987C17[10]),  10,12},
  {&(_tg__ZTV8S20987C59S20987C20__A3__9S20987C17[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C59S20987C20__A3__9S20987C17[3]),  3,5},
  {&(_tg__ZTV8S20987C2__9S20987C20__9S20987C17[7]),  7,9},
  {&(_tg__ZTV8S20987C2__9S20987C20__9S20987C17[7]),  7,9},
  {&(_tg__ZTV8S20987C4__9S20987C20__9S20987C17[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__9S20987C20__9S20987C17[3]),  3,5},
  {&(_tg__ZTV9S20987C16__9S20987C20__9S20987C17[4]),  4,6},
  {&(_tg__ZTV8S20987C2__9S20987C17[7]),  7,9},
  {&(_tg__ZTV8S20987C2__9S20987C17[7]),  7,9},
  {&(_tg__ZTV8S20987C4__8S20987C2__9S20987C17[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C2__9S20987C17[3]),  3,5},
  {&(_tg__ZTV8S20987C3__A1__9S20987C17[6]),  6,8},
  {&(_tg__ZTV8S20987C4__8S20987C3__A1__9S20987C17[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C3__A1__9S20987C17[3]),  3,5},
  {&(_tg__ZTV9S20987C16__9S20987C17[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20987C17[];
extern  VTBL_ENTRY _ZTV9S20987C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C17[];
static VTBL_ENTRY alt_thunk_names59[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20987C20D0Ev,_ZTv0_n16_N9S20987C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20987C20D0Ev,_ZThn24_N9S20987C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20987C20D1Ev,_ZTv0_n16_N9S20987C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20987C20D1Ev,_ZThn24_N9S20987C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20987C20D0Ev,_ZThn16_N9S20987C20D0Ev),
  (VTBL_ENTRY)_ZN9S20987C20D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20987C20D1Ev,_ZThn16_N9S20987C20D1Ev),
  (VTBL_ENTRY)_ZN9S20987C20D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20987C19D0Ev,_ZTv0_n16_N9S20987C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20987C19D0Ev,_ZThn40_N9S20987C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20987C19D1Ev,_ZTv0_n16_N9S20987C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20987C19D1Ev,_ZThn40_N9S20987C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S20987C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S20987C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20987C19D0Ev,_ZThn32_N9S20987C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20987C19D0Ev,_ZThn16_N9S20987C19D0Ev),
  (VTBL_ENTRY)_ZN9S20987C19D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20987C19D1Ev,_ZThn32_N9S20987C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20987C19D1Ev,_ZThn16_N9S20987C19D1Ev),
  (VTBL_ENTRY)_ZN9S20987C19D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C4D0Ev,
  (VTBL_ENTRY)_ZN8S20987C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C4D1Ev,
  (VTBL_ENTRY)_ZN8S20987C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C3D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20987C3D0Ev,_ZThn16_N8S20987C3D0Ev),
  (VTBL_ENTRY)_ZN8S20987C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C3D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20987C3D1Ev,_ZThn16_N8S20987C3D1Ev),
  (VTBL_ENTRY)_ZN8S20987C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C18D0Ev,_ZThn8_N9S20987C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20987C18D0Ev,_ZThn16_N9S20987C18D0Ev),
  (VTBL_ENTRY)_ZN9S20987C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C18D1Ev,_ZThn8_N9S20987C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20987C18D1Ev,_ZThn16_N9S20987C18D1Ev),
  (VTBL_ENTRY)_ZN9S20987C18D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20987C17D0Ev,_ZTv0_n16_N9S20987C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20987C17D0Ev,_ZThn76_N9S20987C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20987C17D1Ev,_ZTv0_n16_N9S20987C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20987C17D1Ev,_ZThn76_N9S20987C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20987C17D0Ev,_ZThn68_N9S20987C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20987C17D0Ev,_ZThn52_N9S20987C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20987C17D0Ev,_ZThn36_N9S20987C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20987C17D0Ev,_ZThn16_N9S20987C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C17D0Ev,_ZThn8_N9S20987C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20987C17D1Ev,_ZThn68_N9S20987C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20987C17D1Ev,_ZThn52_N9S20987C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20987C17D1Ev,_ZThn36_N9S20987C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20987C17D1Ev,_ZThn16_N9S20987C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C17D1Ev,_ZThn8_N9S20987C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20987C17 = {  "S20987C17", // class name
  bases_S20987C17, 24,
  &(vtc_S20987C17[0]), // expected_vtbl_contents
  &(vtt_S20987C17[0]), // expected_vtt_contents
  ABISELECT(128,80), // object size
  NSPAIRA(_ZTI9S20987C17),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20987C17),68, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20987C17),51, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names59,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20987C23  : S20987C18 , S3216C8_nt {
  int s20987c23f0;
  virtual  ~S20987C23(); // _ZN9S20987C23D2Ev
  S20987C23(); // tgen
};
//SIG(-1 S20987C23) C1{ BC2{ VBC3{ vd m} BC4{ m Fi} BC5{ VBC6{ BC7{ VBC3 VBC4 BC8{ m} Fi} Fi} BC8} VBC8 BC7 vd} BC4 vd Fi}


 S20987C23 ::~S20987C23(){ note_dtor("S20987C23", this);}
S20987C23 ::S20987C23(){ note_ctor("S20987C23", this);} // tgen

static void Test_S20987C23()
{
  extern Class_Descriptor cd_S20987C23;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S20987C23, buf);
    S20987C23 *dp, &lv = *(dp=new (buf) S20987C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S20987C23)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20987C23)");
    check_base_class_offset(lv, (S7883C3_nt*)(S20987C18*), 0, "S20987C23");
    check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C4*), 0, "S20987C23");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C18*), 0, "S20987C23");
    /*is_ambiguous_... S20987C18::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C18*), ABISELECT(8,4), "S20987C23");
    check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C4*), ABISELECT(56,36), "S20987C23");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C18*), ABISELECT(56,36), "S20987C23");
    check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C4*), ABISELECT(40,24), "S20987C23");
    check_base_class_offset(lv, (S20987C5*)(S20987C4*), ABISELECT(40,24), "S20987C23");
    check_base_class_offset(lv, (S20987C4*)(S20987C3*)(S20987C18*), ABISELECT(40,24), "S20987C23");
    /*is_ambiguous_... S20987C3::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C3*)(S20987C18*), 0, "S20987C23");
    check_base_class_offset(lv, (S20987C3*)(S20987C18*), 0, "S20987C23");
    /*is_ambiguous_... S20987C18::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C18*), ABISELECT(60,40), "S20987C23");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C18*), ABISELECT(16,8), "S20987C23");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S20987C5*)(S20987C18*), ABISELECT(16,8), "S20987C23");
    check_base_class_offset(lv, (S20987C18*), 0, "S20987C23");
    /*is_ambiguous_... S20987C23::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(28,16), "S20987C23");
    check_field_offset(lv, s20987c23f0, ABISELECT(32,20), "S20987C23.s20987c23f0");
    test_class_info(&lv, &cd_S20987C23);
    dp->~S20987C23();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20987C23(Test_S20987C23, "S20987C23", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN9S20987C23C1Ev();
extern void _ZN9S20987C23D2Ev();
Name_Map name_map_S20987C23[] = {
  NSPAIR(_ZN9S20987C23C1Ev),
  NSPAIR(_ZN9S20987C23D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C4;
extern VTBL_ENTRY _ZTI8S20987C4[];
extern  VTBL_ENTRY _ZTV8S20987C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C4[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C3;
extern VTBL_ENTRY _ZTI8S20987C3[];
extern  VTBL_ENTRY _ZTV8S20987C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C3[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C18;
extern VTBL_ENTRY _ZTI9S20987C18[];
extern  VTBL_ENTRY _ZTV9S20987C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C18[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S20987C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    4, //immediately_derived
  0, 0},
  {&cd_S20987C5,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20987C4,    ABISELECT(40,24), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20987C3,    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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(60,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    10, //immediately_derived
  0, 0},
  {&cd_S20987C5,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20987C18,    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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20987C23[];
extern void _ZN9S20987C23D1Ev();
extern void _ZN9S20987C23D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev)();
extern void ABISELECT(_ZThn16_N9S20987C23D1Ev,_ZThn8_N9S20987C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev)();
extern void ABISELECT(_ZThn16_N9S20987C23D0Ev,_ZThn8_N9S20987C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev)();
extern void ABISELECT(_ZThn40_N9S20987C23D1Ev,_ZThn24_N9S20987C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev)();
extern void ABISELECT(_ZThn40_N9S20987C23D0Ev,_ZThn24_N9S20987C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20987C23[] = {
  ABISELECT(60,40),
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C23[0]),
  (VTBL_ENTRY)&_ZN9S20987C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20987C23D0Ev,
  ABISELECT(40,28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20987C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev),
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20987C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev),
};
extern VTBL_ENTRY _ZTV9S20987C23[];
extern void _ZN9S20987C18D1Ev();
extern void _ZN9S20987C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20987C18__9S20987C23[] = {
  ABISELECT(60,40),
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&_ZN9S20987C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20987C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void _ZN8S20987C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void _ZN8S20987C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C39S20987C18__9S20987C23[] = {
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void ABISELECT(_ZThn40_N8S20987C3D1Ev,_ZThn24_N8S20987C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void ABISELECT(_ZThn40_N8S20987C3D0Ev,_ZThn24_N8S20987C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C39S20987C18__9S20987C23[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C59S20987C18__A1__9S20987C23[] = {
  ABISELECT(40,28),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C59S20987C18__A1__9S20987C23[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20987C18D1Ev,_ZThn24_N9S20987C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev)();
extern void ABISELECT(_ZThn40_N9S20987C18D0Ev,_ZThn24_N9S20987C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C18__9S20987C23[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev)();
extern void ABISELECT(_ZThn16_N9S20987C18D1Ev,_ZThn8_N9S20987C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev)();
extern void ABISELECT(_ZThn16_N9S20987C18D0Ev,_ZThn8_N9S20987C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C5__A1__9S20987C18__9S20987C23[] = {
  ABISELECT(40,28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void _ZN8S20987C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
extern void _ZN8S20987C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C23[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C58S20987C4__9S20987C23[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C58S20987C4__9S20987C23[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C4__9S20987C23[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
static  VTT_ENTRY vtt_S20987C23[] = {
  {&(_ZTV9S20987C23[7]),  7,23},
  {&(_tg__ZTV9S20987C18__9S20987C23[7]),  7,9},
  {&(_tg__ZTV8S20987C39S20987C18__9S20987C23[6]),  6,8},
  {&(_tg__ZTV8S20987C4__8S20987C39S20987C18__9S20987C23[5]),  5,7},
  {&(_tg__ZTV8S20987C39S20987C18__9S20987C23[6]),  6,8},
  {&(_tg__ZTV8S20987C59S20987C18__A1__9S20987C23[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C59S20987C18__A1__9S20987C23[3]),  3,5},
  {&(_tg__ZTV9S20987C18__9S20987C23[7]),  7,9},
  {&(_tg__ZTV8S20987C4__9S20987C18__9S20987C23[5]),  5,7},
  {&(_tg__ZTV8S20987C5__A1__9S20987C18__9S20987C23[5]),  5,7},
  {&(_ZTV9S20987C23[7]),  7,23},
  {&(_ZTV9S20987C23[21]),  21,23},
  {&(_ZTV9S20987C23[14]),  14,23},
  {&(_tg__ZTV8S20987C4__9S20987C23[5]),  5,7},
  {&(_tg__ZTV8S20987C58S20987C4__9S20987C23[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C58S20987C4__9S20987C23[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20987C4__9S20987C23[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20987C23[];
extern  VTBL_ENTRY _ZTV9S20987C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C23[];
static VTBL_ENTRY alt_thunk_names60[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C18D0Ev,_ZThn8_N9S20987C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20987C18D0Ev,_ZThn24_N9S20987C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C18D1Ev,_ZThn8_N9S20987C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20987C18D1Ev,_ZThn24_N9S20987C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20987C3D0Ev,_ZThn24_N8S20987C3D0Ev),
  (VTBL_ENTRY)_ZN8S20987C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20987C3D1Ev,_ZThn24_N8S20987C3D1Ev),
  (VTBL_ENTRY)_ZN8S20987C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20987C23D0Ev,_ZThn24_N9S20987C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C23D0Ev,_ZThn8_N9S20987C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20987C23D1Ev,_ZThn24_N9S20987C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C23D1Ev,_ZThn8_N9S20987C23D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20987C23 = {  "S20987C23", // class name
  bases_S20987C23, 13,
  &(vtc_S20987C23[0]), // expected_vtbl_contents
  &(vtt_S20987C23[0]), // expected_vtt_contents
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI9S20987C23),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20987C23),23, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20987C23),17, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names60,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20987C22  : S20987C23 {
  virtual  ~S20987C22(); // _ZN9S20987C22D2Ev
  S20987C22(); // tgen
};
//SIG(-1 S20987C22) C1{ BC2{ BC3{ VBC4{ vd m} BC5{ m Fi} BC6{ VBC7{ BC8{ VBC4 VBC5 BC9{ m} Fi} Fi} BC9} VBC9 BC8 vd} BC5 vd Fi} vd}


 S20987C22 ::~S20987C22(){ note_dtor("S20987C22", this);}
S20987C22 ::S20987C22(){ note_ctor("S20987C22", this);} // tgen

static void Test_S20987C22()
{
  extern Class_Descriptor cd_S20987C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S20987C22, buf);
    S20987C22 *dp, &lv = *(dp=new (buf) S20987C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S20987C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20987C22)");
    check_base_class_offset(lv, (S7883C3_nt*)(S20987C18*)(S20987C23*), 0, "S20987C22");
    check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C4*), 0, "S20987C22");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C18*)(S20987C23*), 0, "S20987C22");
    /*is_ambiguous_... S20987C18::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C18*)(S20987C23*), ABISELECT(8,4), "S20987C22");
    check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C4*), ABISELECT(56,36), "S20987C22");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C18*)(S20987C23*), ABISELECT(56,36), "S20987C22");
    check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C4*), ABISELECT(40,24), "S20987C22");
    check_base_class_offset(lv, (S20987C5*)(S20987C4*), ABISELECT(40,24), "S20987C22");
    check_base_class_offset(lv, (S20987C4*)(S20987C3*)(S20987C18*)(S20987C23*), ABISELECT(40,24), "S20987C22");
    /*is_ambiguous_... S20987C3::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C3*)(S20987C18*)(S20987C23*), 0, "S20987C22");
    check_base_class_offset(lv, (S20987C3*)(S20987C18*)(S20987C23*), 0, "S20987C22");
    /*is_ambiguous_... S20987C18::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C18*)(S20987C23*), ABISELECT(60,40), "S20987C22");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C18*)(S20987C23*), ABISELECT(16,8), "S20987C22");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S20987C5*)(S20987C18*)(S20987C23*), ABISELECT(16,8), "S20987C22");
    check_base_class_offset(lv, (S20987C18*)(S20987C23*), 0, "S20987C22");
    /*is_ambiguous_... S20987C23::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C23*), ABISELECT(28,16), "S20987C22");
    check_base_class_offset(lv, (S20987C23*), 0, "S20987C22");
    test_class_info(&lv, &cd_S20987C22);
    dp->~S20987C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20987C22(Test_S20987C22, "S20987C22", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN9S20987C22C1Ev();
extern void _ZN9S20987C22D2Ev();
Name_Map name_map_S20987C22[] = {
  NSPAIR(_ZN9S20987C22C1Ev),
  NSPAIR(_ZN9S20987C22D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C4;
extern VTBL_ENTRY _ZTI8S20987C4[];
extern  VTBL_ENTRY _ZTV8S20987C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C4[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C3;
extern VTBL_ENTRY _ZTI8S20987C3[];
extern  VTBL_ENTRY _ZTV8S20987C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C3[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C18;
extern VTBL_ENTRY _ZTI9S20987C18[];
extern  VTBL_ENTRY _ZTV9S20987C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C18[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20987C23;
extern VTBL_ENTRY _ZTI9S20987C23[];
extern  VTBL_ENTRY _ZTV9S20987C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C23[];
static Base_Class bases_S20987C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //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
    4, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    4, //immediately_derived
  0, 0},
  {&cd_S20987C5,    ABISELECT(40,24), //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
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20987C4,    ABISELECT(40,24), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20987C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(60,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    10, //immediately_derived
  0, 0},
  {&cd_S20987C5,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20987C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20987C23,    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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20987C22[];
extern void _ZN9S20987C22D1Ev();
extern void _ZN9S20987C22D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20987C22D1Ev,_ZTv0_n12_N9S20987C22D1Ev)();
extern void ABISELECT(_ZThn16_N9S20987C22D1Ev,_ZThn8_N9S20987C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C22D0Ev,_ZTv0_n12_N9S20987C22D0Ev)();
extern void ABISELECT(_ZThn16_N9S20987C22D0Ev,_ZThn8_N9S20987C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C22D1Ev,_ZTv0_n12_N9S20987C22D1Ev)();
extern void ABISELECT(_ZThn40_N9S20987C22D1Ev,_ZThn24_N9S20987C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C22D0Ev,_ZTv0_n12_N9S20987C22D0Ev)();
extern void ABISELECT(_ZThn40_N9S20987C22D0Ev,_ZThn24_N9S20987C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20987C22[] = {
  ABISELECT(60,40),
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C22[0]),
  (VTBL_ENTRY)&_ZN9S20987C22D1Ev,
  (VTBL_ENTRY)&_ZN9S20987C22D0Ev,
  ABISELECT(40,28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20987C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C22D1Ev,_ZTv0_n12_N9S20987C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C22D0Ev,_ZTv0_n12_N9S20987C22D0Ev),
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20987C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C22D1Ev,_ZTv0_n12_N9S20987C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C22D0Ev,_ZTv0_n12_N9S20987C22D0Ev),
};
extern VTBL_ENTRY _ZTV9S20987C22[];
extern void _ZN9S20987C23D1Ev();
extern void _ZN9S20987C23D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20987C23__9S20987C22[] = {
  ABISELECT(60,40),
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C23[0]),
  (VTBL_ENTRY)&_ZN9S20987C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20987C23D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev)();
extern void _ZN9S20987C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev)();
extern void _ZN9S20987C18D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C189S20987C23__9S20987C22[] = {
  ABISELECT(60,40),
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void _ZN8S20987C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void _ZN8S20987C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C39S20987C189S20987C23__9S20987C22[] = {
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void ABISELECT(_ZThn40_N8S20987C3D1Ev,_ZThn24_N8S20987C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void ABISELECT(_ZThn40_N8S20987C3D0Ev,_ZThn24_N8S20987C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C39S20987C189S20987C23__9S20987C22[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C59S20987C189S20987C23__A1__9S20987C22[] = {
  ABISELECT(40,28),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C59S20987C189S20987C23__A1__9S20987C22[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20987C18D1Ev,_ZThn24_N9S20987C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev)();
extern void ABISELECT(_ZThn40_N9S20987C18D0Ev,_ZThn24_N9S20987C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C189S20987C23__9S20987C22[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev)();
extern void ABISELECT(_ZThn16_N9S20987C18D1Ev,_ZThn8_N9S20987C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev)();
extern void ABISELECT(_ZThn16_N9S20987C18D0Ev,_ZThn8_N9S20987C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C5__A1__9S20987C189S20987C23__9S20987C22[] = {
  ABISELECT(40,28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev)();
extern void ABISELECT(_ZThn40_N9S20987C23D1Ev,_ZThn24_N9S20987C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev)();
extern void ABISELECT(_ZThn40_N9S20987C23D0Ev,_ZThn24_N9S20987C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C23__9S20987C22[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20987C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev)();
extern void ABISELECT(_ZThn16_N9S20987C23D1Ev,_ZThn8_N9S20987C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev)();
extern void ABISELECT(_ZThn16_N9S20987C23D0Ev,_ZThn8_N9S20987C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C59S20987C18__A1__9S20987C23__9S20987C22[] = {
  ABISELECT(40,28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20987C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void _ZN8S20987C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
extern void _ZN8S20987C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C22[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C58S20987C4__9S20987C22[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C58S20987C4__9S20987C22[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C4__9S20987C22[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
static  VTT_ENTRY vtt_S20987C22[] = {
  {&(_ZTV9S20987C22[7]),  7,23},
  {&(_tg__ZTV9S20987C23__9S20987C22[7]),  7,9},
  {&(_tg__ZTV9S20987C189S20987C23__9S20987C22[7]),  7,9},
  {&(_tg__ZTV8S20987C39S20987C189S20987C23__9S20987C22[6]),  6,8},
  {&(_tg__ZTV8S20987C4__8S20987C39S20987C189S20987C23__9S20987C22[5]),  5,7},
  {&(_tg__ZTV8S20987C39S20987C189S20987C23__9S20987C22[6]),  6,8},
  {&(_tg__ZTV8S20987C59S20987C189S20987C23__A1__9S20987C22[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C59S20987C189S20987C23__A1__9S20987C22[3]),  3,5},
  {&(_tg__ZTV9S20987C189S20987C23__9S20987C22[7]),  7,9},
  {&(_tg__ZTV8S20987C4__9S20987C189S20987C23__9S20987C22[5]),  5,7},
  {&(_tg__ZTV8S20987C5__A1__9S20987C189S20987C23__9S20987C22[5]),  5,7},
  {&(_tg__ZTV9S20987C23__9S20987C22[7]),  7,9},
  {&(_tg__ZTV8S20987C4__9S20987C23__9S20987C22[5]),  5,7},
  {&(_tg__ZTV8S20987C59S20987C18__A1__9S20987C23__9S20987C22[5]),  5,7},
  {&(_ZTV9S20987C22[7]),  7,23},
  {&(_ZTV9S20987C22[21]),  21,23},
  {&(_ZTV9S20987C22[14]),  14,23},
  {&(_tg__ZTV8S20987C4__9S20987C22[5]),  5,7},
  {&(_tg__ZTV8S20987C58S20987C4__9S20987C22[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C58S20987C4__9S20987C22[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20987C4__9S20987C22[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20987C22[];
extern  VTBL_ENTRY _ZTV9S20987C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C22[];
static VTBL_ENTRY alt_thunk_names61[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C23D0Ev,_ZThn8_N9S20987C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20987C23D0Ev,_ZThn24_N9S20987C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C23D1Ev,_ZThn8_N9S20987C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20987C23D1Ev,_ZThn24_N9S20987C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20987C3D0Ev,_ZThn24_N8S20987C3D0Ev),
  (VTBL_ENTRY)_ZN8S20987C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20987C3D1Ev,_ZThn24_N8S20987C3D1Ev),
  (VTBL_ENTRY)_ZN8S20987C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C18D0Ev,_ZThn8_N9S20987C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20987C18D0Ev,_ZThn24_N9S20987C18D0Ev),
  (VTBL_ENTRY)_ZN9S20987C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C18D1Ev,_ZThn8_N9S20987C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20987C18D1Ev,_ZThn24_N9S20987C18D1Ev),
  (VTBL_ENTRY)_ZN9S20987C18D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C22D0Ev,_ZTv0_n12_N9S20987C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20987C22D0Ev,_ZThn24_N9S20987C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C22D0Ev,_ZThn8_N9S20987C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C22D1Ev,_ZTv0_n12_N9S20987C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20987C22D1Ev,_ZThn24_N9S20987C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C22D1Ev,_ZThn8_N9S20987C22D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20987C22 = {  "S20987C22", // class name
  bases_S20987C22, 14,
  &(vtc_S20987C22[0]), // expected_vtbl_contents
  &(vtt_S20987C22[0]), // expected_vtt_contents
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI9S20987C22),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20987C22),23, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20987C22),21, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names61,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20987C15  : virtual S20987C16 , S20987C17 , S9073C22_nt , virtual S20987C22 {
  virtual  ~S20987C15(); // _ZN9S20987C15D2Ev
  S20987C15(); // tgen
};
//SIG(-1 S20987C15) C1{ VBC2{ VBC3{ m Fi} vd} BC4{ VBC5{ vd m} BC6{ VBC5 BC3 BC7{ VBC8{ BC9{ VBC5 VBC3 BC10{ m} Fi} Fi} BC10} VBC10 BC9 vd} VBC11{ BC12{ BC8} VBC13{ VBC3 VBC14{ VBC7 FC3} VBC2 VBC10 BC9 vd Fi Fp} vd Fi} vd} BC15{ vd m Fc} VBC16{ BC17{ BC6 BC3 vd Fi} vd} vd}


 S20987C15 ::~S20987C15(){ note_dtor("S20987C15", this);}
S20987C15 ::S20987C15(){ note_ctor("S20987C15", this);} // tgen

static void Test_S20987C15()
{
  extern Class_Descriptor cd_S20987C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,29)];
    init_test(&cd_S20987C15, buf);
    S20987C15 *dp, &lv = *(dp=new (buf) S20987C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,112), "sizeof(S20987C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20987C15)");
    check_base_class_offset(lv, (S3216C8_nt*)(S20987C16*), ABISELECT(56,28), "S20987C15");
    /*is_ambiguous_... S20987C15::S20987C4 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C4*), ABISELECT(56,28), "S20987C15");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C18*)(S20987C17*), ABISELECT(56,28), "S20987C15");
    check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C4*)(S20987C12*)(S20987C19*), ABISELECT(56,28), "S20987C15");
    check_base_class_offset(lv, (S3216C8_nt*)(S20987C20*), ABISELECT(56,28), "S20987C15");
    /*is_ambiguous_... S20987C20::S20987C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C20*), ABISELECT(56,28), "S20987C15");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C18*)(S20987C23*)(S20987C22*), ABISELECT(56,28), "S20987C15");
    check_base_class_offset(lv, (S20987C16*), ABISELECT(48,24), "S20987C15");
    check_base_class_offset(lv, (S20987C16*)(S20987C20*), ABISELECT(48,24), "S20987C15");
    check_base_class_offset(lv, (S7883C3_nt*)(S20987C17*), 0, "S20987C15");
    check_base_class_offset(lv, (S7883C3_nt*)(S20987C18*)(S20987C17*), 0, "S20987C15");
    /*is_ambiguous_... S20987C15::S20987C4 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C4*), 0, "S20987C15");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C18*)(S20987C17*), 0, "S20987C15");
    check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C4*)(S20987C12*)(S20987C19*), 0, "S20987C15");
    /*is_ambiguous_... S20987C20::S20987C5 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C20*), 0, "S20987C15");
    check_base_class_offset(lv, (S7883C3_nt*)(S20987C18*)(S20987C23*)(S20987C22*), 0, "S20987C15");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C18*)(S20987C23*)(S20987C22*), 0, "S20987C15");
    /*is_ambiguous_... S20987C18::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C18*)(S20987C17*), ABISELECT(8,4), "S20987C15");
    /*is_ambiguous_... S20987C15::S20987C4 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C4*), ABISELECT(64,32), "S20987C15");
    /*is_ambiguous_... S20987C15::S20987C4 */ AMB_check_base_class_offset(lv, (S20987C5*)(S20987C4*), ABISELECT(64,32), "S20987C15");
    check_base_class_offset(lv, (S20987C4*)(S20987C3*)(S20987C18*)(S20987C17*), ABISELECT(64,32), "S20987C15");
    /*is_ambiguous_... S20987C15::S20987C3 */ AMB_check_base_class_offset(lv, (S20987C4*)(S20987C3*), ABISELECT(64,32), "S20987C15");
    check_base_class_offset(lv, (S20987C4*)(S20987C3*)(S20987C18*)(S20987C23*)(S20987C22*), ABISELECT(64,32), "S20987C15");
    /*is_ambiguous_... S20987C3::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C3*)(S20987C18*)(S20987C17*), 0, "S20987C15");
    check_base_class_offset(lv, (S20987C3*)(S20987C18*)(S20987C17*), 0, "S20987C15");
    /*is_ambiguous_... S20987C18::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C18*)(S20987C17*), ABISELECT(80,44), "S20987C15");
    /*is_ambiguous_... S20987C20::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C20*), ABISELECT(80,44), "S20987C15");
    /*is_ambiguous_... S20987C18::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C18*)(S20987C23*)(S20987C22*), ABISELECT(80,44), "S20987C15");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C18*)(S20987C17*), ABISELECT(16,8), "S20987C15");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S20987C5*)(S20987C18*)(S20987C17*), ABISELECT(16,8), "S20987C15");
    check_base_class_offset(lv, (S20987C18*)(S20987C17*), 0, "S20987C15");
    check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C4*)(S20987C12*)(S20987C19*), ABISELECT(88,48), "S20987C15");
    check_base_class_offset(lv, (S20987C5*)(S20987C4*)(S20987C12*)(S20987C19*), ABISELECT(88,48), "S20987C15");
    check_base_class_offset(lv, (S20987C4*)(S20987C12*)(S20987C19*), ABISELECT(88,48), "S20987C15");
    check_base_class_offset(lv, (S20987C12*)(S20987C19*), ABISELECT(88,48), "S20987C15");
    /*is_ambiguous_... S20987C15::S20987C3 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C3*), ABISELECT(136,80), "S20987C15");
    check_base_class_offset(lv, (S20987C3*)(S20987C2*), ABISELECT(136,80), "S20987C15");
    check_base_class_offset(lv, (S20987C2*)(S20987C20*), ABISELECT(136,80), "S20987C15");
    /*is_ambiguous_... S20987C20::S20987C5 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C20*), ABISELECT(112,64), "S20987C15");
    /*is_ambiguous_... S20987C20::S20987C5 */ AMB_check_base_class_offset(lv, (S20987C5*)(S20987C20*), ABISELECT(112,64), "S20987C15");
    check_base_class_offset(lv, (S20987C20*)(S20987C19*), ABISELECT(112,64), "S20987C15");
    check_base_class_offset(lv, (S20987C19*)(S20987C17*), ABISELECT(88,48), "S20987C15");
    check_base_class_offset(lv, (S20987C17*), 0, "S20987C15");
    check_base_class_offset(lv, (S9073C22_nt*), ABISELECT(32,16), "S20987C15");
    /*is_ambiguous_... S20987C18::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C18*)(S20987C23*)(S20987C22*), ABISELECT(160,92), "S20987C15");
    /*is_ambiguous_... S20987C3::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C3*)(S20987C18*)(S20987C23*)(S20987C22*), ABISELECT(152,88), "S20987C15");
    check_base_class_offset(lv, (S20987C3*)(S20987C18*)(S20987C23*)(S20987C22*), ABISELECT(152,88), "S20987C15");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C18*)(S20987C23*)(S20987C22*), ABISELECT(168,96), "S20987C15");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S20987C5*)(S20987C18*)(S20987C23*)(S20987C22*), ABISELECT(168,96), "S20987C15");
    check_base_class_offset(lv, (S20987C18*)(S20987C23*)(S20987C22*), ABISELECT(152,88), "S20987C15");
    /*is_ambiguous_... S20987C23::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C23*)(S20987C22*), ABISELECT(180,104), "S20987C15");
    check_base_class_offset(lv, (S20987C23*)(S20987C22*), ABISELECT(152,88), "S20987C15");
    check_base_class_offset(lv, (S20987C22*), ABISELECT(152,88), "S20987C15");
    test_class_info(&lv, &cd_S20987C15);
    dp->~S20987C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20987C15(Test_S20987C15, "S20987C15", ABISELECT(192,112));

#else // __cplusplus

extern void _ZN9S20987C15C1Ev();
extern void _ZN9S20987C15D2Ev();
Name_Map name_map_S20987C15[] = {
  NSPAIR(_ZN9S20987C15C1Ev),
  NSPAIR(_ZN9S20987C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20987C16;
extern VTBL_ENTRY _ZTI9S20987C16[];
extern  VTBL_ENTRY _ZTV9S20987C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C16[];
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C4;
extern VTBL_ENTRY _ZTI8S20987C4[];
extern  VTBL_ENTRY _ZTV8S20987C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C4[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C3;
extern VTBL_ENTRY _ZTI8S20987C3[];
extern  VTBL_ENTRY _ZTV8S20987C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C3[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C18;
extern VTBL_ENTRY _ZTI9S20987C18[];
extern  VTBL_ENTRY _ZTV9S20987C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C18[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C4;
extern VTBL_ENTRY _ZTI8S20987C4[];
extern  VTBL_ENTRY _ZTV8S20987C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C4[];
extern Class_Descriptor cd_S20987C12;
extern VTBL_ENTRY _ZTI9S20987C12[];
extern  VTBL_ENTRY _ZTV9S20987C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C12[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C3;
extern VTBL_ENTRY _ZTI8S20987C3[];
extern  VTBL_ENTRY _ZTV8S20987C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C3[];
extern Class_Descriptor cd_S20987C2;
extern VTBL_ENTRY _ZTI8S20987C2[];
extern  VTBL_ENTRY _ZTV8S20987C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C2[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C20;
extern VTBL_ENTRY _ZTI9S20987C20[];
extern  VTBL_ENTRY _ZTV9S20987C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C20[];
extern Class_Descriptor cd_S20987C19;
extern VTBL_ENTRY _ZTI9S20987C19[];
extern  VTBL_ENTRY _ZTV9S20987C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C19[];
extern Class_Descriptor cd_S20987C17;
extern VTBL_ENTRY _ZTI9S20987C17[];
extern  VTBL_ENTRY _ZTV9S20987C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C17[];
extern Class_Descriptor cd_S9073C22_nt;
extern VTBL_ENTRY _ZTI11S9073C22_nt[];
extern  VTBL_ENTRY _ZTV11S9073C22_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C3;
extern VTBL_ENTRY _ZTI8S20987C3[];
extern  VTBL_ENTRY _ZTV8S20987C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C3[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C18;
extern VTBL_ENTRY _ZTI9S20987C18[];
extern  VTBL_ENTRY _ZTV9S20987C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C18[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20987C23;
extern VTBL_ENTRY _ZTI9S20987C23[];
extern  VTBL_ENTRY _ZTV9S20987C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C23[];
extern Class_Descriptor cd_S20987C22;
extern VTBL_ENTRY _ZTI9S20987C22[];
extern  VTBL_ENTRY _ZTV9S20987C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C22[];
static Base_Class bases_S20987C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20987C16,    ABISELECT(48,24), //bcp->offset
    26, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //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
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S3216C8_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
    12, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20987C5,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //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
    6, //immediately_derived
  0, 0},
  {&cd_S20987C4,    ABISELECT(64,32), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20987C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4677C37,    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
    12, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20987C5,    ABISELECT(16,8), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20987C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S4677C37,    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_S20987C5,    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
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20987C4,    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
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20987C12,    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
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S4677C37,    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
    18, //immediately_derived
  0, 0},
  {&cd_S20987C3,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S20987C2,    ABISELECT(136,80), //bcp->offset
    64, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20987C5,    ABISELECT(112,64), //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
    7, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20987C20,    ABISELECT(112,64), //bcp->offset
    52, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20987C19,    ABISELECT(88,48), //bcp->offset
    39, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S20987C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9073C22_nt,    ABISELECT(32,16), //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
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(160,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S4677C37,    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
    28, //immediately_derived
  0, 0},
  {&cd_S20987C3,    ABISELECT(152,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(168,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20987C5,    ABISELECT(168,96), //bcp->offset
    82, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20987C18,    ABISELECT(152,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(180,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
    33, //immediately_derived
  0, 0},
  {&cd_S20987C23,    ABISELECT(152,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20987C22,    ABISELECT(152,88), //bcp->offset
    73, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20987C15[];
extern void _ZN9S20987C15D1Ev();
extern void _ZN9S20987C15D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S20987C15D1Ev,_ZThn8_N9S20987C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev)();
extern void ABISELECT(_ZThn16_N9S20987C15D0Ev,_ZThn8_N9S20987C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZThn32_N9S20987C15D1Ev,_ZThn16_N9S20987C15D1Ev)();
extern void ABISELECT(_ZThn32_N9S20987C15D0Ev,_ZThn16_N9S20987C15D0Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20987C15D1Ev,_ZTv0_n16_N9S20987C15D1Ev)();
extern void ABISELECT(_ZThn48_N9S20987C15D1Ev,_ZThn24_N9S20987C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20987C15D0Ev,_ZTv0_n16_N9S20987C15D0Ev)();
extern void ABISELECT(_ZThn48_N9S20987C15D0Ev,_ZThn24_N9S20987C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev)();
extern void ABISELECT(_ZThn64_N9S20987C15D1Ev,_ZThn32_N9S20987C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev)();
extern void ABISELECT(_ZThn64_N9S20987C15D0Ev,_ZThn32_N9S20987C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev)();
extern void ABISELECT(_ZThn88_N9S20987C15D1Ev,_ZThn48_N9S20987C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev)();
extern void ABISELECT(_ZThn88_N9S20987C15D0Ev,_ZThn48_N9S20987C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev)();
extern void ABISELECT(_ZThn112_N9S20987C15D1Ev,_ZThn64_N9S20987C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev)();
extern void ABISELECT(_ZThn112_N9S20987C15D0Ev,_ZThn64_N9S20987C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev)();
extern void ABISELECT(_ZThn136_N9S20987C15D1Ev,_ZThn80_N9S20987C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev)();
extern void ABISELECT(_ZThn136_N9S20987C15D0Ev,_ZThn80_N9S20987C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev)();
extern void ABISELECT(_ZThn152_N9S20987C15D1Ev,_ZThn88_N9S20987C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev)();
extern void ABISELECT(_ZThn152_N9S20987C15D0Ev,_ZThn88_N9S20987C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev)();
extern void ABISELECT(_ZThn168_N9S20987C15D1Ev,_ZThn96_N9S20987C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev)();
extern void ABISELECT(_ZThn168_N9S20987C15D0Ev,_ZThn96_N9S20987C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20987C15[] = {
  ABISELECT(152,88),
  ABISELECT(48,24),
  ABISELECT(136,80),
  ABISELECT(136,80),
  ABISELECT(112,64),
  ABISELECT(88,48),
  ABISELECT(80,44),
  ABISELECT(56,28),
  0,
  ABISELECT(64,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C15[0]),
  (VTBL_ENTRY)&_ZN9S20987C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20987C15D0Ev,
  ABISELECT(40,20),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20987C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20987C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20987C15D1Ev,_ZThn16_N9S20987C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20987C15D0Ev,_ZThn16_N9S20987C15D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(8,4),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20987C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C15D1Ev,_ZTv0_n16_N9S20987C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C15D0Ev,_ZTv0_n16_N9S20987C15D0Ev),
  ABISELECT(-8,-4),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20987C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev),
  ABISELECT(-8,-4),
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(24,16),
  ABISELECT(-32,-20),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S20987C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-64,-40),
  ABISELECT(-48,-32),
  ABISELECT(24,16),
  ABISELECT(24,16),
  ABISELECT(-56,-36),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20987C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev),
  0,
  ABISELECT(-80,-52),
  ABISELECT(-136,-80),
  ABISELECT(-72,-48),
  ABISELECT(-136,-80),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI9S20987C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev),
  ABISELECT(-72,-44),
  ABISELECT(-96,-60),
  ABISELECT(-152,-88),
  ABISELECT(-88,-56),
  ABISELECT(-152,-88),
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI9S20987C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev),
  ABISELECT(-112,-68),
  ABISELECT(-168,-96),
  ABISELECT(-168,-96),
  ABISELECT(-168,-96),
  (VTBL_ENTRY)&(_ZTI9S20987C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S20987C15[];
extern void _ZN9S20987C17D1Ev();
extern void _ZN9S20987C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20987C17__9S20987C15[] = {
  ABISELECT(48,24),
  ABISELECT(136,80),
  ABISELECT(136,80),
  ABISELECT(112,64),
  ABISELECT(88,48),
  ABISELECT(80,44),
  ABISELECT(56,28),
  0,
  ABISELECT(64,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C17[0]),
  (VTBL_ENTRY)&_ZN9S20987C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20987C17D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev)();
extern void _ZN9S20987C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev)();
extern void _ZN9S20987C18D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C189S20987C17__9S20987C15[] = {
  ABISELECT(80,44),
  ABISELECT(56,28),
  0,
  ABISELECT(64,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void _ZN8S20987C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void _ZN8S20987C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C39S20987C189S20987C17__9S20987C15[] = {
  ABISELECT(56,28),
  0,
  ABISELECT(64,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S20987C3D1Ev,_ZThn32_N8S20987C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S20987C3D0Ev,_ZThn32_N8S20987C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C39S20987C189S20987C17__9S20987C15[] = {
  ABISELECT(-8,-4),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C59S20987C189S20987C17__A1__9S20987C15[] = {
  ABISELECT(40,20),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C59S20987C189S20987C17__A1__9S20987C15[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev)();
extern void ABISELECT(_ZThn64_N9S20987C18D1Ev,_ZThn32_N9S20987C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev)();
extern void ABISELECT(_ZThn64_N9S20987C18D0Ev,_ZThn32_N9S20987C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C189S20987C17__9S20987C15[] = {
  ABISELECT(-8,-4),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev)();
extern void ABISELECT(_ZThn16_N9S20987C18D1Ev,_ZThn8_N9S20987C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev)();
extern void ABISELECT(_ZThn16_N9S20987C18D0Ev,_ZThn8_N9S20987C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C5__A1__9S20987C189S20987C17__9S20987C15[] = {
  ABISELECT(40,20),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev)();
extern void ABISELECT(_ZThn64_N9S20987C17D1Ev,_ZThn32_N9S20987C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev)();
extern void ABISELECT(_ZThn64_N9S20987C17D0Ev,_ZThn32_N9S20987C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C17__9S20987C15[] = {
  ABISELECT(-8,-4),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20987C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20987C17D1Ev,_ZThn8_N9S20987C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev)();
extern void ABISELECT(_ZThn16_N9S20987C17D0Ev,_ZThn8_N9S20987C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C59S20987C18__A1__9S20987C17__9S20987C15[] = {
  ABISELECT(40,20),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20987C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev)();
extern void ABISELECT(_ZThn88_N9S20987C17D1Ev,_ZThn48_N9S20987C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev)();
extern void ABISELECT(_ZThn88_N9S20987C17D0Ev,_ZThn48_N9S20987C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C19__9S20987C17__9S20987C15[] = {
  ABISELECT(-8,-4),
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(24,16),
  ABISELECT(-32,-20),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S20987C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev)();
extern void ABISELECT(_ZThn112_N9S20987C17D1Ev,_ZThn64_N9S20987C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev)();
extern void ABISELECT(_ZThn112_N9S20987C17D0Ev,_ZThn64_N9S20987C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C20__9S20987C17__9S20987C15[] = {
  ABISELECT(-32,-20),
  ABISELECT(-64,-40),
  ABISELECT(-48,-32),
  ABISELECT(24,16),
  ABISELECT(24,16),
  ABISELECT(-56,-36),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20987C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev)();
extern void ABISELECT(_ZThn136_N9S20987C17D1Ev,_ZThn80_N9S20987C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev)();
extern void ABISELECT(_ZThn136_N9S20987C17D0Ev,_ZThn80_N9S20987C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C2__9S20987C17__9S20987C15[] = {
  0,
  ABISELECT(-80,-52),
  ABISELECT(-136,-80),
  ABISELECT(-72,-48),
  ABISELECT(-136,-80),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI9S20987C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20987C17D1Ev,_ZTv0_n16_N9S20987C17D1Ev)();
extern void ABISELECT(_ZThn48_N9S20987C17D1Ev,_ZThn24_N9S20987C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20987C17D0Ev,_ZTv0_n16_N9S20987C17D0Ev)();
extern void ABISELECT(_ZThn48_N9S20987C17D0Ev,_ZThn24_N9S20987C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C16__9S20987C17__9S20987C15[] = {
  ABISELECT(-48,-24),
  ABISELECT(8,4),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20987C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C17D1Ev,_ZTv0_n16_N9S20987C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C17D0Ev,_ZTv0_n16_N9S20987C17D0Ev),
};
extern void _ZN9S20987C16D1Ev();
extern void _ZN9S20987C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20987C16__9S20987C15[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C16[0]),
  (VTBL_ENTRY)&_ZN9S20987C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20987C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void _ZN8S20987C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
extern void _ZN8S20987C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C15[] = {
  ABISELECT(-8,-4),
  ABISELECT(-64,-32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C58S20987C4__9S20987C15[] = {
  ABISELECT(-8,-4),
  ABISELECT(-64,-32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C58S20987C4__9S20987C15[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C4__9S20987C15[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev)();
extern void _ZN9S20987C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev)();
extern void _ZN9S20987C19D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C19__9S20987C15[] = {
  ABISELECT(-8,-4),
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(24,16),
  ABISELECT(-32,-20),
  ABISELECT(-88,-48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev)();
extern void _ZN9S20987C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev)();
extern void _ZN9S20987C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C129S20987C19__9S20987C15[] = {
  ABISELECT(-32,-20),
  ABISELECT(-88,-48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void _ZN8S20987C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
extern void _ZN8S20987C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C49S20987C129S20987C19__A1__9S20987C15[] = {
  ABISELECT(-32,-20),
  ABISELECT(-88,-48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C58S20987C49S20987C129S20987C19__A2__9S20987C15[] = {
  ABISELECT(-32,-20),
  ABISELECT(-88,-48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C58S20987C49S20987C129S20987C19__A2__9S20987C15[] = {
  ABISELECT(88,48),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C49S20987C129S20987C19__A1__9S20987C15[] = {
  ABISELECT(88,48),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20987C129S20987C19__9S20987C15[] = {
  ABISELECT(88,48),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI9S20987C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20987C19__9S20987C15[] = {
  ABISELECT(88,48),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI9S20987C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev)();
extern void ABISELECT(_ZThn24_N9S20987C19D1Ev,_ZThn16_N9S20987C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev)();
extern void ABISELECT(_ZThn24_N9S20987C19D0Ev,_ZThn16_N9S20987C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C20__9S20987C19__9S20987C15[] = {
  ABISELECT(-32,-20),
  ABISELECT(-64,-40),
  ABISELECT(-48,-32),
  ABISELECT(24,16),
  ABISELECT(24,16),
  ABISELECT(-56,-36),
  ABISELECT(-112,-64),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20987C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev)();
extern void ABISELECT(_ZThn48_N9S20987C19D1Ev,_ZThn32_N9S20987C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev)();
extern void ABISELECT(_ZThn48_N9S20987C19D0Ev,_ZThn32_N9S20987C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C2__9S20987C19__9S20987C15[] = {
  0,
  ABISELECT(-80,-52),
  ABISELECT(-136,-80),
  ABISELECT(-72,-48),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S20987C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C4__A1__9S20987C19__9S20987C15[] = {
  ABISELECT(-8,-4),
  ABISELECT(-64,-32),
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20987C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20987C19D1Ev,_ZTv0_n16_N9S20987C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20987C19D0Ev,_ZTv0_n16_N9S20987C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20987C16__9S20987C19__9S20987C15[] = {
  ABISELECT(40,24),
  ABISELECT(8,4),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S20987C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C19D1Ev,_ZTv0_n16_N9S20987C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C19D0Ev,_ZTv0_n16_N9S20987C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev)();
extern void _ZN9S20987C20D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev)();
extern void _ZN9S20987C20D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C20__9S20987C15[] = {
  ABISELECT(-32,-20),
  ABISELECT(-64,-40),
  ABISELECT(-48,-32),
  ABISELECT(24,16),
  ABISELECT(24,16),
  ABISELECT(-56,-36),
  ABISELECT(-112,-64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C59S20987C20__A3__9S20987C15[] = {
  ABISELECT(-56,-36),
  ABISELECT(-112,-64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C59S20987C20__A3__9S20987C15[] = {
  ABISELECT(112,64),
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev)();
extern void ABISELECT(_ZThn24_N9S20987C20D1Ev,_ZThn16_N9S20987C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev)();
extern void ABISELECT(_ZThn24_N9S20987C20D0Ev,_ZThn16_N9S20987C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C2__9S20987C20__9S20987C15[] = {
  0,
  ABISELECT(-80,-52),
  ABISELECT(-136,-80),
  ABISELECT(-72,-48),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20987C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C20__9S20987C15[] = {
  ABISELECT(-8,-4),
  ABISELECT(-64,-32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S20987C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20987C20__9S20987C15[] = {
  ABISELECT(112,64),
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI9S20987C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20987C20D1Ev,_ZTv0_n16_N9S20987C20D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20987C20D0Ev,_ZTv0_n16_N9S20987C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20987C16__9S20987C20__9S20987C15[] = {
  ABISELECT(64,40),
  ABISELECT(8,4),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI9S20987C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C20D1Ev,_ZTv0_n16_N9S20987C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C20D0Ev,_ZTv0_n16_N9S20987C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev)();
extern void _ZN8S20987C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev)();
extern void _ZN8S20987C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C2__9S20987C15[] = {
  0,
  ABISELECT(-80,-52),
  ABISELECT(-136,-80),
  ABISELECT(-72,-48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C2__9S20987C15[] = {
  ABISELECT(-8,-4),
  ABISELECT(-64,-32),
  ABISELECT(72,48),
  ABISELECT(72,48),
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C2__9S20987C15[] = {
  ABISELECT(136,80),
  ABISELECT(136,80),
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void _ZN8S20987C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void _ZN8S20987C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C3__A1__9S20987C15[] = {
  ABISELECT(-80,-52),
  ABISELECT(-136,-80),
  ABISELECT(-72,-48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C3__A1__9S20987C15[] = {
  ABISELECT(-8,-4),
  ABISELECT(-64,-32),
  ABISELECT(72,48),
  ABISELECT(72,48),
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C3__A1__9S20987C15[] = {
  ABISELECT(136,80),
  ABISELECT(136,80),
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C22D1Ev,_ZTv0_n12_N9S20987C22D1Ev)();
extern void _ZN9S20987C22D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C22D0Ev,_ZTv0_n12_N9S20987C22D0Ev)();
extern void _ZN9S20987C22D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C22__9S20987C15[] = {
  ABISELECT(-72,-44),
  ABISELECT(-96,-60),
  ABISELECT(-152,-88),
  ABISELECT(-88,-56),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C22D1Ev,_ZTv0_n12_N9S20987C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C22D0Ev,_ZTv0_n12_N9S20987C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev)();
extern void _ZN9S20987C23D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev)();
extern void _ZN9S20987C23D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C239S20987C22__9S20987C15[] = {
  ABISELECT(-72,-44),
  ABISELECT(-96,-60),
  ABISELECT(-152,-88),
  ABISELECT(-88,-56),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev)();
extern void _ZN9S20987C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev)();
extern void _ZN9S20987C18D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C189S20987C239S20987C22__A1__9S20987C15[] = {
  ABISELECT(-72,-44),
  ABISELECT(-96,-60),
  ABISELECT(-152,-88),
  ABISELECT(-88,-56),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void _ZN8S20987C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void _ZN8S20987C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C39S20987C189S20987C239S20987C22__A2__9S20987C15[] = {
  ABISELECT(-96,-60),
  ABISELECT(-152,-88),
  ABISELECT(-88,-56),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C39S20987C189S20987C239S20987C22__A2__9S20987C15[] = {
  ABISELECT(-8,-4),
  ABISELECT(-64,-32),
  ABISELECT(88,56),
  ABISELECT(88,56),
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C39S20987C189S20987C239S20987C22__A2__9S20987C15[] = {
  ABISELECT(152,88),
  ABISELECT(152,88),
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C59S20987C189S20987C239S20987C22__A4__9S20987C15[] = {
  ABISELECT(-112,-68),
  ABISELECT(-168,-96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C59S20987C189S20987C239S20987C22__A4__9S20987C15[] = {
  ABISELECT(168,96),
  ABISELECT(168,96),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20987C189S20987C239S20987C22__A1__9S20987C15[] = {
  ABISELECT(152,88),
  ABISELECT(152,88),
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C189S20987C239S20987C22__A1__9S20987C15[] = {
  ABISELECT(-8,-4),
  ABISELECT(-64,-32),
  ABISELECT(88,56),
  ABISELECT(88,56),
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev)();
extern void ABISELECT(_ZThn16_N9S20987C18D1Ev,_ZThn8_N9S20987C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev)();
extern void ABISELECT(_ZThn16_N9S20987C18D0Ev,_ZThn8_N9S20987C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C5__A1__9S20987C189S20987C239S20987C22__A1__9S20987C15[] = {
  ABISELECT(-112,-68),
  ABISELECT(-168,-96),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20987C239S20987C22__9S20987C15[] = {
  ABISELECT(152,88),
  ABISELECT(152,88),
  (VTBL_ENTRY)&(_ZTI9S20987C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C239S20987C22__9S20987C15[] = {
  ABISELECT(-8,-4),
  ABISELECT(-64,-32),
  ABISELECT(88,56),
  ABISELECT(88,56),
  (VTBL_ENTRY)&(_ZTI9S20987C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev)();
extern void ABISELECT(_ZThn16_N9S20987C23D1Ev,_ZThn8_N9S20987C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev)();
extern void ABISELECT(_ZThn16_N9S20987C23D0Ev,_ZThn8_N9S20987C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C59S20987C18__A1__9S20987C239S20987C22__9S20987C15[] = {
  ABISELECT(-112,-68),
  ABISELECT(-168,-96),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20987C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C22D1Ev,_ZTv0_n12_N9S20987C22D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C22D0Ev,_ZTv0_n12_N9S20987C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20987C22__9S20987C15[] = {
  ABISELECT(152,88),
  ABISELECT(152,88),
  (VTBL_ENTRY)&(_ZTI9S20987C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C22D1Ev,_ZTv0_n12_N9S20987C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C22D0Ev,_ZTv0_n12_N9S20987C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C22D1Ev,_ZTv0_n12_N9S20987C22D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C22D0Ev,_ZTv0_n12_N9S20987C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C22__9S20987C15[] = {
  ABISELECT(-8,-4),
  ABISELECT(-64,-32),
  ABISELECT(88,56),
  ABISELECT(88,56),
  (VTBL_ENTRY)&(_ZTI9S20987C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C22D1Ev,_ZTv0_n12_N9S20987C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C22D0Ev,_ZTv0_n12_N9S20987C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C22D1Ev,_ZTv0_n12_N9S20987C22D1Ev)();
extern void ABISELECT(_ZThn16_N9S20987C22D1Ev,_ZThn8_N9S20987C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C22D0Ev,_ZTv0_n12_N9S20987C22D0Ev)();
extern void ABISELECT(_ZThn16_N9S20987C22D0Ev,_ZThn8_N9S20987C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C59S20987C189S20987C23__A1__9S20987C22__9S20987C15[] = {
  ABISELECT(-112,-68),
  ABISELECT(-168,-96),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20987C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C22D1Ev,_ZTv0_n12_N9S20987C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C22D0Ev,_ZTv0_n12_N9S20987C22D0Ev),
};
static  VTT_ENTRY vtt_S20987C15[] = {
  {&(_ZTV9S20987C15[13]),  13,89},
  {&(_tg__ZTV9S20987C17__9S20987C15[12]),  12,14},
  {&(_tg__ZTV9S20987C189S20987C17__9S20987C15[7]),  7,9},
  {&(_tg__ZTV8S20987C39S20987C189S20987C17__9S20987C15[6]),  6,8},
  {&(_tg__ZTV8S20987C4__8S20987C39S20987C189S20987C17__9S20987C15[5]),  5,7},
  {&(_tg__ZTV8S20987C39S20987C189S20987C17__9S20987C15[6]),  6,8},
  {&(_tg__ZTV8S20987C59S20987C189S20987C17__A1__9S20987C15[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C59S20987C189S20987C17__A1__9S20987C15[3]),  3,5},
  {&(_tg__ZTV9S20987C189S20987C17__9S20987C15[7]),  7,9},
  {&(_tg__ZTV8S20987C4__9S20987C189S20987C17__9S20987C15[5]),  5,7},
  {&(_tg__ZTV8S20987C5__A1__9S20987C189S20987C17__9S20987C15[5]),  5,7},
  {&(_tg__ZTV9S20987C17__9S20987C15[12]),  12,14},
  {&(_tg__ZTV8S20987C4__9S20987C17__9S20987C15[5]),  5,7},
  {&(_tg__ZTV8S20987C59S20987C18__A1__9S20987C17__9S20987C15[5]),  5,7},
  {&(_tg__ZTV9S20987C19__9S20987C17__9S20987C15[11]),  11,13},
  {&(_tg__ZTV9S20987C20__9S20987C17__9S20987C15[10]),  10,12},
  {&(_tg__ZTV8S20987C2__9S20987C17__9S20987C15[7]),  7,9},
  {&(_tg__ZTV8S20987C2__9S20987C17__9S20987C15[7]),  7,9},
  {&(_tg__ZTV9S20987C16__9S20987C17__9S20987C15[4]),  4,6},
  {&(_ZTV9S20987C15[30]),  30,89},
  {&(_ZTV9S20987C15[13]),  13,89},
  {&(_ZTV9S20987C15[37]),  37,89},
  {&(_ZTV9S20987C15[20]),  20,89},
  {&(_ZTV9S20987C15[50]),  50,89},
  {&(_ZTV9S20987C15[62]),  62,89},
  {&(_ZTV9S20987C15[71]),  71,89},
  {&(_ZTV9S20987C15[71]),  71,89},
  {&(_ZTV9S20987C15[80]),  80,89},
  {&(_ZTV9S20987C15[87]),  87,89},
  {&(_tg__ZTV9S20987C16__9S20987C15[3]),  3,5},
  {&(_tg__ZTV8S20987C4__9S20987C15[5]),  5,7},
  {&(_tg__ZTV8S20987C58S20987C4__9S20987C15[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C58S20987C4__9S20987C15[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20987C4__9S20987C15[3]),  3,5},
  {&(_tg__ZTV9S20987C19__9S20987C15[11]),  11,13},
  {&(_tg__ZTV9S20987C129S20987C19__9S20987C15[5]),  5,7},
  {&(_tg__ZTV8S20987C49S20987C129S20987C19__A1__9S20987C15[5]),  5,7},
  {&(_tg__ZTV8S20987C58S20987C49S20987C129S20987C19__A2__9S20987C15[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C58S20987C49S20987C129S20987C19__A2__9S20987C15[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20987C49S20987C129S20987C19__A1__9S20987C15[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20987C129S20987C19__9S20987C15[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20987C19__9S20987C15[3]),  3,5},
  {&(_tg__ZTV9S20987C20__9S20987C19__9S20987C15[10]),  10,12},
  {&(_tg__ZTV8S20987C2__9S20987C19__9S20987C15[7]),  7,9},
  {&(_tg__ZTV8S20987C2__9S20987C19__9S20987C15[7]),  7,9},
  {&(_tg__ZTV8S20987C4__A1__9S20987C19__9S20987C15[5]),  5,7},
  {&(_tg__ZTV9S20987C16__9S20987C19__9S20987C15[4]),  4,6},
  {&(_tg__ZTV9S20987C20__9S20987C15[10]),  10,12},
  {&(_tg__ZTV8S20987C59S20987C20__A3__9S20987C15[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C59S20987C20__A3__9S20987C15[3]),  3,5},
  {&(_tg__ZTV8S20987C2__9S20987C20__9S20987C15[7]),  7,9},
  {&(_tg__ZTV8S20987C2__9S20987C20__9S20987C15[7]),  7,9},
  {&(_tg__ZTV8S20987C4__9S20987C20__9S20987C15[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__9S20987C20__9S20987C15[3]),  3,5},
  {&(_tg__ZTV9S20987C16__9S20987C20__9S20987C15[4]),  4,6},
  {&(_tg__ZTV8S20987C2__9S20987C15[7]),  7,9},
  {&(_tg__ZTV8S20987C2__9S20987C15[7]),  7,9},
  {&(_tg__ZTV8S20987C4__8S20987C2__9S20987C15[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C2__9S20987C15[3]),  3,5},
  {&(_tg__ZTV8S20987C3__A1__9S20987C15[6]),  6,8},
  {&(_tg__ZTV8S20987C4__8S20987C3__A1__9S20987C15[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C3__A1__9S20987C15[3]),  3,5},
  {&(_tg__ZTV9S20987C22__9S20987C15[7]),  7,9},
  {&(_tg__ZTV9S20987C239S20987C22__9S20987C15[7]),  7,9},
  {&(_tg__ZTV9S20987C189S20987C239S20987C22__A1__9S20987C15[7]),  7,9},
  {&(_tg__ZTV8S20987C39S20987C189S20987C239S20987C22__A2__9S20987C15[6]),  6,8},
  {&(_tg__ZTV8S20987C4__8S20987C39S20987C189S20987C239S20987C22__A2__9S20987C15[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C39S20987C189S20987C239S20987C22__A2__9S20987C15[3]),  3,5},
  {&(_tg__ZTV8S20987C59S20987C189S20987C239S20987C22__A4__9S20987C15[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C59S20987C189S20987C239S20987C22__A4__9S20987C15[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20987C189S20987C239S20987C22__A1__9S20987C15[3]),  3,5},
  {&(_tg__ZTV8S20987C4__9S20987C189S20987C239S20987C22__A1__9S20987C15[5]),  5,7},
  {&(_tg__ZTV8S20987C5__A1__9S20987C189S20987C239S20987C22__A1__9S20987C15[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__9S20987C239S20987C22__9S20987C15[3]),  3,5},
  {&(_tg__ZTV8S20987C4__9S20987C239S20987C22__9S20987C15[5]),  5,7},
  {&(_tg__ZTV8S20987C59S20987C18__A1__9S20987C239S20987C22__9S20987C15[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__9S20987C22__9S20987C15[3]),  3,5},
  {&(_tg__ZTV8S20987C4__9S20987C22__9S20987C15[5]),  5,7},
  {&(_tg__ZTV8S20987C59S20987C189S20987C23__A1__9S20987C22__9S20987C15[5]),  5,7},
};
extern VTBL_ENTRY _ZTI9S20987C15[];
extern  VTBL_ENTRY _ZTV9S20987C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C15[];
static VTBL_ENTRY alt_thunk_names62[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C23D0Ev,_ZThn8_N9S20987C23D0Ev),
  (VTBL_ENTRY)_ZN9S20987C23D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C23D1Ev,_ZThn8_N9S20987C23D1Ev),
  (VTBL_ENTRY)_ZN9S20987C23D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C22D0Ev,_ZTv0_n12_N9S20987C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C22D0Ev,_ZThn8_N9S20987C22D0Ev),
  (VTBL_ENTRY)_ZN9S20987C22D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C22D1Ev,_ZTv0_n12_N9S20987C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C22D1Ev,_ZThn8_N9S20987C22D1Ev),
  (VTBL_ENTRY)_ZN9S20987C22D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20987C20D0Ev,_ZThn16_N9S20987C20D0Ev),
  (VTBL_ENTRY)_ZN9S20987C20D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20987C20D1Ev,_ZThn16_N9S20987C20D1Ev),
  (VTBL_ENTRY)_ZN9S20987C20D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S20987C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S20987C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20987C19D0Ev,_ZThn32_N9S20987C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20987C19D0Ev,_ZThn16_N9S20987C19D0Ev),
  (VTBL_ENTRY)_ZN9S20987C19D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20987C19D1Ev,_ZThn32_N9S20987C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20987C19D1Ev,_ZThn16_N9S20987C19D1Ev),
  (VTBL_ENTRY)_ZN9S20987C19D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C4D0Ev,
  (VTBL_ENTRY)_ZN8S20987C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C4D1Ev,
  (VTBL_ENTRY)_ZN8S20987C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20987C17D0Ev,_ZTv0_n16_N9S20987C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20987C17D0Ev,_ZThn24_N9S20987C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20987C17D1Ev,_ZTv0_n16_N9S20987C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20987C17D1Ev,_ZThn24_N9S20987C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20987C17D0Ev,_ZThn80_N9S20987C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20987C17D0Ev,_ZThn64_N9S20987C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20987C17D0Ev,_ZThn48_N9S20987C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C17D0Ev,_ZThn8_N9S20987C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20987C17D0Ev,_ZThn32_N9S20987C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20987C17D1Ev,_ZThn80_N9S20987C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20987C17D1Ev,_ZThn64_N9S20987C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20987C17D1Ev,_ZThn48_N9S20987C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C17D1Ev,_ZThn8_N9S20987C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20987C17D1Ev,_ZThn32_N9S20987C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C3D0Ev,
  (VTBL_ENTRY)_ZN8S20987C3D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20987C3D0Ev,_ZThn32_N8S20987C3D0Ev),
  (VTBL_ENTRY)_ZN8S20987C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C3D1Ev,
  (VTBL_ENTRY)_ZN8S20987C3D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20987C3D1Ev,_ZThn32_N8S20987C3D1Ev),
  (VTBL_ENTRY)_ZN8S20987C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C18D0Ev,_ZThn8_N9S20987C18D0Ev),
  (VTBL_ENTRY)_ZN9S20987C18D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C18D0Ev,_ZThn8_N9S20987C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20987C18D0Ev,_ZThn32_N9S20987C18D0Ev),
  (VTBL_ENTRY)_ZN9S20987C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C18D1Ev,_ZThn8_N9S20987C18D1Ev),
  (VTBL_ENTRY)_ZN9S20987C18D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C18D1Ev,_ZThn8_N9S20987C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20987C18D1Ev,_ZThn32_N9S20987C18D1Ev),
  (VTBL_ENTRY)_ZN9S20987C18D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20987C15D0Ev,_ZTv0_n16_N9S20987C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20987C15D0Ev,_ZThn24_N9S20987C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20987C15D1Ev,_ZTv0_n16_N9S20987C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20987C15D1Ev,_ZThn24_N9S20987C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20987C15D0Ev,_ZThn96_N9S20987C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20987C15D0Ev,_ZThn88_N9S20987C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20987C15D0Ev,_ZThn80_N9S20987C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20987C15D0Ev,_ZThn64_N9S20987C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20987C15D0Ev,_ZThn48_N9S20987C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20987C15D0Ev,_ZThn32_N9S20987C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C15D0Ev,_ZThn8_N9S20987C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20987C15D1Ev,_ZThn96_N9S20987C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20987C15D1Ev,_ZThn88_N9S20987C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20987C15D1Ev,_ZThn80_N9S20987C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20987C15D1Ev,_ZThn64_N9S20987C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20987C15D1Ev,_ZThn48_N9S20987C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20987C15D1Ev,_ZThn32_N9S20987C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C15D1Ev,_ZThn8_N9S20987C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20987C15 = {  "S20987C15", // class name
  bases_S20987C15, 35,
  &(vtc_S20987C15[0]), // expected_vtbl_contents
  &(vtt_S20987C15[0]), // expected_vtt_contents
  ABISELECT(192,112), // object size
  NSPAIRA(_ZTI9S20987C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20987C15),89, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20987C15),79, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names62,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20987C24  : S20987C12 {
  ::S20987C22 s20987c24f0;
  ~S20987C24(); // tgen
  S20987C24(); // tgen
};
//SIG(-1 S20987C24) C1{ BC2{ BC3{ BC4{ VBC5{ vd m} VBC6{ m Fi} BC7{ m} Fi} Fi}} FC8{ BC9{ BC10{ VBC5 BC6 BC11{ VBC3 BC7} VBC7 BC4 vd} BC6 vd Fi} vd}}


S20987C24 ::~S20987C24(){ note_dtor("S20987C24", this);} // tgen
S20987C24 ::S20987C24(){ note_ctor("S20987C24", this);} // tgen

static void Test_S20987C24()
{
  extern Class_Descriptor cd_S20987C24;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,16)];
    init_test(&cd_S20987C24, buf);
    S20987C24 *dp, &lv = *(dp=new (buf) S20987C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,60), "sizeof(S20987C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20987C24)");
    check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C4*)(S20987C12*), 0, "S20987C24");
    check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C4*)(S20987C12*), ABISELECT(80,56), "S20987C24");
    check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C4*)(S20987C12*), 0, "S20987C24");
    check_base_class_offset(lv, (S20987C5*)(S20987C4*)(S20987C12*), 0, "S20987C24");
    check_base_class_offset(lv, (S20987C4*)(S20987C12*), 0, "S20987C24");
    check_base_class_offset(lv, (S20987C12*), 0, "S20987C24");
    check_field_offset(lv, s20987c24f0, ABISELECT(16,12), "S20987C24.s20987c24f0");
    test_class_info(&lv, &cd_S20987C24);
    dp->~S20987C24();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20987C24(Test_S20987C24, "S20987C24", ABISELECT(88,60));

#else // __cplusplus

extern void _ZN9S20987C24C1Ev();
extern void _ZN9S20987C24D1Ev();
Name_Map name_map_S20987C24[] = {
  NSPAIR(_ZN9S20987C24C1Ev),
  NSPAIR(_ZN9S20987C24D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C4;
extern VTBL_ENTRY _ZTI8S20987C4[];
extern  VTBL_ENTRY _ZTV8S20987C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C4[];
extern Class_Descriptor cd_S20987C12;
extern VTBL_ENTRY _ZTI9S20987C12[];
extern  VTBL_ENTRY _ZTV9S20987C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C12[];
static Base_Class bases_S20987C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_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
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20987C5,    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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20987C4,    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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20987C12,    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 _ZTI9S20987C24[];
extern void _ZN9S20987C24D1Ev();
extern void _ZN9S20987C24D0Ev();
static  VTBL_ENTRY vtc_S20987C24[] = {
  ABISELECT(80,56),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C24[0]),
  (VTBL_ENTRY)&_ZN9S20987C24D1Ev,
  (VTBL_ENTRY)&_ZN9S20987C24D0Ev,
};
extern VTBL_ENTRY _ZTV9S20987C24[];
extern void _ZN9S20987C12D1Ev();
extern void _ZN9S20987C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20987C12__9S20987C24[] = {
  ABISELECT(80,56),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C12[0]),
  (VTBL_ENTRY)&_ZN9S20987C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20987C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void _ZN8S20987C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
extern void _ZN8S20987C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C49S20987C12__9S20987C24[] = {
  ABISELECT(80,56),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C58S20987C49S20987C12__9S20987C24[] = {
  ABISELECT(80,56),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
static  VTT_ENTRY vtt_S20987C24[] = {
  {&(_ZTV9S20987C24[5]),  5,7},
  {&(_tg__ZTV9S20987C12__9S20987C24[5]),  5,7},
  {&(_tg__ZTV8S20987C49S20987C12__9S20987C24[5]),  5,7},
  {&(_tg__ZTV8S20987C58S20987C49S20987C12__9S20987C24[5]),  5,7},
  {&(_tg__ZTV8S20987C58S20987C49S20987C12__9S20987C24[5]),  5,7},
  {&(_tg__ZTV8S20987C49S20987C12__9S20987C24[5]),  5,7},
  {&(_tg__ZTV9S20987C12__9S20987C24[5]),  5,7},
  {&(_ZTV9S20987C24[5]),  5,7},
};
extern VTBL_ENTRY _ZTI9S20987C24[];
extern  VTBL_ENTRY _ZTV9S20987C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C24[];
static VTBL_ENTRY alt_thunk_names63[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C4D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20987C24 = {  "S20987C24", // class name
  bases_S20987C24, 6,
  &(vtc_S20987C24[0]), // expected_vtbl_contents
  &(vtt_S20987C24[0]), // expected_vtt_contents
  ABISELECT(88,60), // object size
  NSPAIRA(_ZTI9S20987C24),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20987C24),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20987C24),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names63,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20987C9  : S20987C10 , S20987C2 , virtual S20987C13 , S20987C15 , virtual S20987C24 {
  void *s20987c9f0;
  ~S20987C9(); // tgen
  S20987C9(); // tgen
};
//SIG(-1 S20987C9) C1{ BC2{ VBC3{ BC4{ VBC5{ vd m} VBC6{ m Fi} BC7{ m} Fi} Fi} BC8{ BC9{ VBC10{ VBC3 BC7} FC6} BC6 Fp} VBC11{ BC3} vd} BC9 VBC12{ VBC13{ VBC5} Fi} BC14{ VBC15{ VBC6 vd} BC16{ VBC5 BC17{ VBC5 BC6 BC10 VBC7 BC4 vd} VBC18{ BC11 VBC19{ VBC6 VBC9 VBC15 VBC7 BC4 vd Fi Fp} vd Fi} vd} BC20{ vd m Fc} VBC21{ BC22{ BC17 BC6 vd Fi} vd} vd} VBC23{ BC11 FC21} Fp}


S20987C9 ::~S20987C9(){ note_dtor("S20987C9", this);} // tgen
S20987C9 ::S20987C9(){ note_ctor("S20987C9", this);} // tgen

static void Test_S20987C9()
{
  extern Class_Descriptor cd_S20987C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(45,55)];
    init_test(&cd_S20987C9, buf);
    S20987C9 *dp, &lv = *(dp=new (buf) S20987C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,216), "sizeof(S20987C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20987C9)");
    /*is_ambiguous_... S20987C9::S20987C4 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C4*), ABISELECT(96,52), "S20987C9");
    /*is_ambiguous_... S20987C9::S20987C12 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C4*)(S20987C12*), ABISELECT(96,52), "S20987C9");
    check_base_class_offset(lv, (S7883C3_nt*)(S20987C14_nt*), ABISELECT(96,52), "S20987C9");
    check_base_class_offset(lv, (S7883C3_nt*)(S20987C17*)(S20987C15*), ABISELECT(96,52), "S20987C9");
    check_base_class_offset(lv, (S7883C3_nt*)(S20987C18*)(S20987C17*)(S20987C15*), ABISELECT(96,52), "S20987C9");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C18*)(S20987C17*)(S20987C15*), ABISELECT(96,52), "S20987C9");
    check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C4*)(S20987C12*)(S20987C19*), ABISELECT(96,52), "S20987C9");
    /*is_ambiguous_... S20987C20::S20987C5 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C20*), ABISELECT(96,52), "S20987C9");
    check_base_class_offset(lv, (S7883C3_nt*)(S20987C18*)(S20987C23*)(S20987C22*), ABISELECT(96,52), "S20987C9");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C18*)(S20987C23*)(S20987C22*), ABISELECT(96,52), "S20987C9");
    check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C4*)(S20987C12*)(S20987C24*), ABISELECT(96,52), "S20987C9");
    /*is_ambiguous_... S20987C9::S20987C4 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C4*), ABISELECT(112,64), "S20987C9");
    /*is_ambiguous_... S20987C9::S20987C12 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C4*)(S20987C12*), ABISELECT(112,64), "S20987C9");
    check_base_class_offset(lv, (S3216C8_nt*)(S20987C16*), ABISELECT(112,64), "S20987C9");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C18*)(S20987C17*)(S20987C15*), ABISELECT(112,64), "S20987C9");
    check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C4*)(S20987C12*)(S20987C19*), ABISELECT(112,64), "S20987C9");
    check_base_class_offset(lv, (S3216C8_nt*)(S20987C20*), ABISELECT(112,64), "S20987C9");
    /*is_ambiguous_... S20987C20::S20987C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C20*), ABISELECT(112,64), "S20987C9");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C18*)(S20987C23*)(S20987C22*), ABISELECT(112,64), "S20987C9");
    check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C4*)(S20987C12*)(S20987C24*), ABISELECT(112,64), "S20987C9");
    /*is_ambiguous_... S20987C9::S20987C4 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C4*), ABISELECT(96,52), "S20987C9");
    /*is_ambiguous_... S20987C9::S20987C4 */ AMB_check_base_class_offset(lv, (S20987C5*)(S20987C4*), ABISELECT(96,52), "S20987C9");
    /*is_ambiguous_... S20987C10::S20987C4 */ AMB_check_base_class_offset(lv, (S20987C4*)(S20987C10*), ABISELECT(96,52), "S20987C9");
    /*is_ambiguous_... S20987C9::S20987C3 */ AMB_check_base_class_offset(lv, (S20987C4*)(S20987C3*), ABISELECT(96,52), "S20987C9");
    check_base_class_offset(lv, (S20987C4*)(S20987C3*)(S20987C18*)(S20987C17*)(S20987C15*), ABISELECT(96,52), "S20987C9");
    check_base_class_offset(lv, (S20987C4*)(S20987C3*)(S20987C18*)(S20987C23*)(S20987C22*), ABISELECT(96,52), "S20987C9");
    /*is_ambiguous_... S20987C9::S20987C3 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C3*), 0, "S20987C9");
    check_base_class_offset(lv, (S20987C3*)(S20987C2*)(S20987C11*)(S20987C10*), 0, "S20987C9");
    /*is_ambiguous_... S20987C9::S20987C2 */ AMB_check_base_class_offset(lv, (S20987C3*)(S20987C2*), 0, "S20987C9");
    /*is_ambiguous_... S20987C9::S20987C2 */ AMB_check_base_class_offset(lv, (S20987C3*)(S20987C2*), 0, "S20987C9");
    check_base_class_offset(lv, (S20987C2*)(S20987C11*)(S20987C10*), 0, "S20987C9");
    /*is_ambiguous_... S20987C11::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C11*)(S20987C10*), ABISELECT(12,8), "S20987C9");
    check_base_class_offset(lv, (S20987C11*)(S20987C10*), 0, "S20987C9");
    /*is_ambiguous_... S20987C9::S20987C12 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C4*)(S20987C12*), ABISELECT(120,68), "S20987C9");
    /*is_ambiguous_... S20987C9::S20987C12 */ AMB_check_base_class_offset(lv, (S20987C5*)(S20987C4*)(S20987C12*), ABISELECT(120,68), "S20987C9");
    /*is_ambiguous_... S20987C9::S20987C12 */ AMB_check_base_class_offset(lv, (S20987C4*)(S20987C12*), ABISELECT(120,68), "S20987C9");
    check_base_class_offset(lv, (S20987C12*)(S20987C10*), ABISELECT(120,68), "S20987C9");
    check_base_class_offset(lv, (S20987C10*), 0, "S20987C9");
    /*is_ambiguous_... S20987C9::S20987C2 */ AMB_check_base_class_offset(lv, (S20987C2*), ABISELECT(24,16), "S20987C9");
    check_base_class_offset(lv, (S20987C14_nt*)(S20987C13*), ABISELECT(136,80), "S20987C9");
    check_base_class_offset(lv, (S20987C13*), ABISELECT(136,80), "S20987C9");
    check_base_class_offset(lv, (S20987C16*)(S20987C15*), ABISELECT(152,88), "S20987C9");
    check_base_class_offset(lv, (S20987C16*)(S20987C20*), ABISELECT(152,88), "S20987C9");
    /*is_ambiguous_... S20987C18::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C18*)(S20987C17*)(S20987C15*), ABISELECT(48,28), "S20987C9");
    /*is_ambiguous_... S20987C3::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C3*)(S20987C18*)(S20987C17*)(S20987C15*), ABISELECT(40,24), "S20987C9");
    check_base_class_offset(lv, (S20987C3*)(S20987C18*)(S20987C17*)(S20987C15*), ABISELECT(40,24), "S20987C9");
    /*is_ambiguous_... S20987C18::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C18*)(S20987C17*)(S20987C15*), ABISELECT(160,92), "S20987C9");
    /*is_ambiguous_... S20987C20::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C20*), ABISELECT(160,92), "S20987C9");
    /*is_ambiguous_... S20987C18::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C18*)(S20987C23*)(S20987C22*), ABISELECT(160,92), "S20987C9");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C18*)(S20987C17*)(S20987C15*), ABISELECT(56,32), "S20987C9");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S20987C5*)(S20987C18*)(S20987C17*)(S20987C15*), ABISELECT(56,32), "S20987C9");
    check_base_class_offset(lv, (S20987C18*)(S20987C17*)(S20987C15*), ABISELECT(40,24), "S20987C9");
    check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C4*)(S20987C12*)(S20987C19*), ABISELECT(168,96), "S20987C9");
    check_base_class_offset(lv, (S20987C5*)(S20987C4*)(S20987C12*)(S20987C19*), ABISELECT(168,96), "S20987C9");
    check_base_class_offset(lv, (S20987C4*)(S20987C12*)(S20987C19*), ABISELECT(168,96), "S20987C9");
    check_base_class_offset(lv, (S20987C12*)(S20987C19*), ABISELECT(168,96), "S20987C9");
    check_base_class_offset(lv, (S20987C2*)(S20987C20*), ABISELECT(216,128), "S20987C9");
    /*is_ambiguous_... S20987C20::S20987C5 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C20*), ABISELECT(192,112), "S20987C9");
    /*is_ambiguous_... S20987C20::S20987C5 */ AMB_check_base_class_offset(lv, (S20987C5*)(S20987C20*), ABISELECT(192,112), "S20987C9");
    check_base_class_offset(lv, (S20987C20*)(S20987C19*), ABISELECT(192,112), "S20987C9");
    check_base_class_offset(lv, (S20987C19*)(S20987C17*)(S20987C15*), ABISELECT(168,96), "S20987C9");
    check_base_class_offset(lv, (S20987C17*)(S20987C15*), ABISELECT(40,24), "S20987C9");
    check_base_class_offset(lv, (S9073C22_nt*)(S20987C15*), ABISELECT(72,40), "S20987C9");
    /*is_ambiguous_... S20987C18::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C18*)(S20987C23*)(S20987C22*), ABISELECT(240,140), "S20987C9");
    /*is_ambiguous_... S20987C3::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C3*)(S20987C18*)(S20987C23*)(S20987C22*), ABISELECT(232,136), "S20987C9");
    check_base_class_offset(lv, (S20987C3*)(S20987C18*)(S20987C23*)(S20987C22*), ABISELECT(232,136), "S20987C9");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C18*)(S20987C23*)(S20987C22*), ABISELECT(248,144), "S20987C9");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S20987C5*)(S20987C18*)(S20987C23*)(S20987C22*), ABISELECT(248,144), "S20987C9");
    check_base_class_offset(lv, (S20987C18*)(S20987C23*)(S20987C22*), ABISELECT(232,136), "S20987C9");
    /*is_ambiguous_... S20987C23::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C23*)(S20987C22*), ABISELECT(260,152), "S20987C9");
    check_base_class_offset(lv, (S20987C23*)(S20987C22*), ABISELECT(232,136), "S20987C9");
    check_base_class_offset(lv, (S20987C22*)(S20987C15*), ABISELECT(232,136), "S20987C9");
    check_base_class_offset(lv, (S20987C15*), ABISELECT(40,24), "S20987C9");
    check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C4*)(S20987C12*)(S20987C24*), ABISELECT(272,160), "S20987C9");
    check_base_class_offset(lv, (S20987C5*)(S20987C4*)(S20987C12*)(S20987C24*), ABISELECT(272,160), "S20987C9");
    check_base_class_offset(lv, (S20987C4*)(S20987C12*)(S20987C24*), ABISELECT(272,160), "S20987C9");
    check_base_class_offset(lv, (S20987C12*)(S20987C24*), ABISELECT(272,160), "S20987C9");
    check_base_class_offset(lv, (S20987C24*), ABISELECT(272,160), "S20987C9");
    check_field_offset(lv, s20987c9f0, ABISELECT(88,48), "S20987C9.s20987c9f0");
    test_class_info(&lv, &cd_S20987C9);
    dp->~S20987C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20987C9(Test_S20987C9, "S20987C9", ABISELECT(352,216));

#else // __cplusplus

extern void _ZN8S20987C9C1Ev();
extern void _ZN8S20987C9D1Ev();
Name_Map name_map_S20987C9[] = {
  NSPAIR(_ZN8S20987C9C1Ev),
  NSPAIR(_ZN8S20987C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C4;
extern VTBL_ENTRY _ZTI8S20987C4[];
extern  VTBL_ENTRY _ZTV8S20987C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C4[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C3;
extern VTBL_ENTRY _ZTI8S20987C3[];
extern  VTBL_ENTRY _ZTV8S20987C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C3[];
extern Class_Descriptor cd_S20987C2;
extern VTBL_ENTRY _ZTI8S20987C2[];
extern  VTBL_ENTRY _ZTV8S20987C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20987C11;
extern VTBL_ENTRY _ZTI9S20987C11[];
extern  VTBL_ENTRY _ZTV9S20987C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C11[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C4;
extern VTBL_ENTRY _ZTI8S20987C4[];
extern  VTBL_ENTRY _ZTV8S20987C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C4[];
extern Class_Descriptor cd_S20987C12;
extern VTBL_ENTRY _ZTI9S20987C12[];
extern  VTBL_ENTRY _ZTV9S20987C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C12[];
extern Class_Descriptor cd_S20987C10;
extern VTBL_ENTRY _ZTI9S20987C10[];
extern  VTBL_ENTRY _ZTV9S20987C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C10[];
extern Class_Descriptor cd_S20987C2;
extern VTBL_ENTRY _ZTI8S20987C2[];
extern  VTBL_ENTRY _ZTV8S20987C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C2[];
extern Class_Descriptor cd_S20987C14_nt;
extern VTBL_ENTRY _ZTI12S20987C14_nt[];
extern  VTBL_ENTRY _ZTV12S20987C14_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20987C14_nt[];
extern Class_Descriptor cd_S20987C13;
extern VTBL_ENTRY _ZTI9S20987C13[];
extern  VTBL_ENTRY _ZTV9S20987C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C13[];
extern Class_Descriptor cd_S20987C16;
extern VTBL_ENTRY _ZTI9S20987C16[];
extern  VTBL_ENTRY _ZTV9S20987C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C16[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C3;
extern VTBL_ENTRY _ZTI8S20987C3[];
extern  VTBL_ENTRY _ZTV8S20987C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C3[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C18;
extern VTBL_ENTRY _ZTI9S20987C18[];
extern  VTBL_ENTRY _ZTV9S20987C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C18[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C4;
extern VTBL_ENTRY _ZTI8S20987C4[];
extern  VTBL_ENTRY _ZTV8S20987C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C4[];
extern Class_Descriptor cd_S20987C12;
extern VTBL_ENTRY _ZTI9S20987C12[];
extern  VTBL_ENTRY _ZTV9S20987C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C12[];
extern Class_Descriptor cd_S20987C2;
extern VTBL_ENTRY _ZTI8S20987C2[];
extern  VTBL_ENTRY _ZTV8S20987C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C2[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C20;
extern VTBL_ENTRY _ZTI9S20987C20[];
extern  VTBL_ENTRY _ZTV9S20987C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C20[];
extern Class_Descriptor cd_S20987C19;
extern VTBL_ENTRY _ZTI9S20987C19[];
extern  VTBL_ENTRY _ZTV9S20987C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C19[];
extern Class_Descriptor cd_S20987C17;
extern VTBL_ENTRY _ZTI9S20987C17[];
extern  VTBL_ENTRY _ZTV9S20987C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C17[];
extern Class_Descriptor cd_S9073C22_nt;
extern VTBL_ENTRY _ZTI11S9073C22_nt[];
extern  VTBL_ENTRY _ZTV11S9073C22_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C3;
extern VTBL_ENTRY _ZTI8S20987C3[];
extern  VTBL_ENTRY _ZTV8S20987C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C3[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C18;
extern VTBL_ENTRY _ZTI9S20987C18[];
extern  VTBL_ENTRY _ZTV9S20987C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C18[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20987C23;
extern VTBL_ENTRY _ZTI9S20987C23[];
extern  VTBL_ENTRY _ZTV9S20987C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C23[];
extern Class_Descriptor cd_S20987C22;
extern VTBL_ENTRY _ZTI9S20987C22[];
extern  VTBL_ENTRY _ZTV9S20987C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C22[];
extern Class_Descriptor cd_S20987C15;
extern VTBL_ENTRY _ZTI9S20987C15[];
extern  VTBL_ENTRY _ZTV9S20987C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C15[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C4;
extern VTBL_ENTRY _ZTI8S20987C4[];
extern  VTBL_ENTRY _ZTV8S20987C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C4[];
extern Class_Descriptor cd_S20987C12;
extern VTBL_ENTRY _ZTI9S20987C12[];
extern  VTBL_ENTRY _ZTV9S20987C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C12[];
extern Class_Descriptor cd_S20987C24;
extern VTBL_ENTRY _ZTI9S20987C24[];
extern  VTBL_ENTRY _ZTV9S20987C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C24[];
static Base_Class bases_S20987C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20987C5,    ABISELECT(96,52), //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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20987C4,    ABISELECT(96,52), //bcp->offset
    54, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20987C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20987C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20987C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S4677C37,    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
    11, //immediately_derived
  0, 0},
  {&cd_S20987C5,    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
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20987C4,    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
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20987C12,    ABISELECT(120,68), //bcp->offset
    61, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20987C10,    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
    29, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20987C2,    ABISELECT(24,16), //bcp->offset
    19, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20987C14_nt,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S20987C13,    ABISELECT(136,80), //bcp->offset
    68, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20987C16,    ABISELECT(152,88), //bcp->offset
    75, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S3216C8_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
    25, //immediately_derived
  0, 0},
  {&cd_S4677C37,    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
    21, //immediately_derived
  0, 0},
  {&cd_S20987C3,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(160,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    24, //immediately_derived
  0, 0},
  {&cd_S20987C5,    ABISELECT(56,32), //bcp->offset
    43, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20987C18,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(168,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20987C5,    ABISELECT(168,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20987C4,    ABISELECT(168,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20987C12,    ABISELECT(168,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20987C2,    ABISELECT(216,128), //bcp->offset
    106, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    104, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(192,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
    32, //immediately_derived
  0, 0},
  {&cd_S20987C5,    ABISELECT(192,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20987C20,    ABISELECT(192,112), //bcp->offset
    94, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    34, //immediately_derived
  0, 1},
  {&cd_S20987C19,    ABISELECT(168,96), //bcp->offset
    81, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    35, //immediately_derived
  0, 1},
  {&cd_S20987C17,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S9073C22_nt,    ABISELECT(72,40), //bcp->offset
    50, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(240,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(232,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20987C3,    ABISELECT(232,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    111, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(248,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20987C5,    ABISELECT(248,144), //bcp->offset
    124, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S20987C18,    ABISELECT(232,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    110, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(260,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
    44, //immediately_derived
  0, 0},
  {&cd_S20987C23,    ABISELECT(232,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S20987C22,    ABISELECT(232,136), //bcp->offset
    115, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    108, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    46, //immediately_derived
  0, 1},
  {&cd_S20987C15,    ABISELECT(40,24), //bcp->offset
    28, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4677C37,    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
    48, //immediately_derived
  0, 0},
  {&cd_S20987C5,    ABISELECT(272,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    128, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S20987C4,    ABISELECT(272,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    127, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S20987C12,    ABISELECT(272,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    126, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S20987C24,    ABISELECT(272,160), //bcp->offset
    131, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    125, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20987C9[];
extern void ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev)();
extern void _ZN8S20987C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev)();
extern void _ZN8S20987C9D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev)();
extern void ABISELECT(_ZThn24_N8S20987C9D1Ev,_ZThn16_N8S20987C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev)();
extern void ABISELECT(_ZThn24_N8S20987C9D0Ev,_ZThn16_N8S20987C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev)();
extern void ABISELECT(_ZThn40_N8S20987C9D1Ev,_ZThn24_N8S20987C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev)();
extern void ABISELECT(_ZThn40_N8S20987C9D0Ev,_ZThn24_N8S20987C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev)();
extern void ABISELECT(_ZThn56_N8S20987C9D1Ev,_ZThn32_N8S20987C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev)();
extern void ABISELECT(_ZThn56_N8S20987C9D0Ev,_ZThn32_N8S20987C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZThn72_N8S20987C9D1Ev,_ZThn40_N8S20987C9D1Ev)();
extern void ABISELECT(_ZThn72_N8S20987C9D0Ev,_ZThn40_N8S20987C9D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev)();
extern void ABISELECT(_ZThn96_N8S20987C9D1Ev,_ZThn52_N8S20987C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev)();
extern void ABISELECT(_ZThn96_N8S20987C9D0Ev,_ZThn52_N8S20987C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev)();
extern void ABISELECT(_ZThn120_N8S20987C9D1Ev,_ZThn68_N8S20987C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev)();
extern void ABISELECT(_ZThn120_N8S20987C9D0Ev,_ZThn68_N8S20987C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev)();
extern void ABISELECT(_ZThn136_N8S20987C9D1Ev,_ZThn80_N8S20987C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev)();
extern void ABISELECT(_ZThn136_N8S20987C9D0Ev,_ZThn80_N8S20987C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20987C9D1Ev,_ZTv0_n16_N8S20987C9D1Ev)();
extern void ABISELECT(_ZThn152_N8S20987C9D1Ev,_ZThn88_N8S20987C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20987C9D0Ev,_ZTv0_n16_N8S20987C9D0Ev)();
extern void ABISELECT(_ZThn152_N8S20987C9D0Ev,_ZThn88_N8S20987C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev)();
extern void ABISELECT(_ZThn168_N8S20987C9D1Ev,_ZThn96_N8S20987C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev)();
extern void ABISELECT(_ZThn168_N8S20987C9D0Ev,_ZThn96_N8S20987C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev)();
extern void ABISELECT(_ZThn192_N8S20987C9D1Ev,_ZThn112_N8S20987C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev)();
extern void ABISELECT(_ZThn192_N8S20987C9D0Ev,_ZThn112_N8S20987C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev)();
extern void ABISELECT(_ZThn216_N8S20987C9D1Ev,_ZThn128_N8S20987C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev)();
extern void ABISELECT(_ZThn216_N8S20987C9D0Ev,_ZThn128_N8S20987C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev)();
extern void ABISELECT(_ZThn232_N8S20987C9D1Ev,_ZThn136_N8S20987C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev)();
extern void ABISELECT(_ZThn232_N8S20987C9D0Ev,_ZThn136_N8S20987C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev)();
extern void ABISELECT(_ZThn248_N8S20987C9D1Ev,_ZThn144_N8S20987C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev)();
extern void ABISELECT(_ZThn248_N8S20987C9D0Ev,_ZThn144_N8S20987C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev)();
extern void ABISELECT(_ZThn272_N8S20987C9D1Ev,_ZThn160_N8S20987C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev)();
extern void ABISELECT(_ZThn272_N8S20987C9D0Ev,_ZThn160_N8S20987C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20987C9[] = {
  ABISELECT(272,160),
  ABISELECT(232,136),
  ABISELECT(216,128),
  ABISELECT(192,112),
  ABISELECT(168,96),
  ABISELECT(160,92),
  ABISELECT(152,88),
  ABISELECT(136,80),
  ABISELECT(136,80),
  ABISELECT(120,68),
  0,
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(96,52),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev),
  ABISELECT(-24,-16),
  ABISELECT(88,48),
  ABISELECT(72,36),
  ABISELECT(72,36),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20987C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev),
  ABISELECT(192,112),
  ABISELECT(112,64),
  ABISELECT(-40,-24),
  ABISELECT(176,104),
  ABISELECT(152,88),
  ABISELECT(128,72),
  ABISELECT(120,68),
  ABISELECT(72,40),
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20987C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev),
  ABISELECT(56,32),
  ABISELECT(40,20),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S20987C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S20987C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N8S20987C9D1Ev,_ZThn40_N8S20987C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N8S20987C9D0Ev,_ZThn40_N8S20987C9D0Ev),
  ABISELECT(16,12),
  0,
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S20987C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev),
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S20987C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev),
  0,
  ABISELECT(-40,-28),
  ABISELECT(-136,-80),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI8S20987C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev),
  ABISELECT(-152,-88),
  ABISELECT(-40,-24),
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI8S20987C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20987C9D1Ev,_ZTv0_n16_N8S20987C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20987C9D0Ev,_ZTv0_n16_N8S20987C9D0Ev),
  ABISELECT(-8,-4),
  ABISELECT(-16,-8),
  ABISELECT(-72,-44),
  ABISELECT(-168,-96),
  ABISELECT(48,32),
  ABISELECT(24,16),
  ABISELECT(-56,-32),
  ABISELECT(-72,-44),
  ABISELECT(-168,-96),
  ABISELECT(-168,-96),
  (VTBL_ENTRY)&(_ZTI8S20987C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-40,-24),
  ABISELECT(-96,-60),
  ABISELECT(-192,-112),
  ABISELECT(24,16),
  ABISELECT(-80,-48),
  ABISELECT(-96,-60),
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI8S20987C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev),
  ABISELECT(-216,-128),
  ABISELECT(-104,-64),
  ABISELECT(-120,-76),
  ABISELECT(-120,-76),
  ABISELECT(-216,-128),
  ABISELECT(-216,-128),
  (VTBL_ENTRY)&(_ZTI8S20987C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev),
  ABISELECT(-72,-44),
  ABISELECT(-120,-72),
  ABISELECT(-136,-84),
  ABISELECT(-136,-84),
  ABISELECT(-232,-136),
  ABISELECT(-232,-136),
  (VTBL_ENTRY)&(_ZTI8S20987C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev),
  ABISELECT(-136,-80),
  ABISELECT(-152,-92),
  ABISELECT(-248,-144),
  ABISELECT(-248,-144),
  (VTBL_ENTRY)&(_ZTI8S20987C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev),
  ABISELECT(-160,-96),
  ABISELECT(-176,-108),
  ABISELECT(-272,-160),
  ABISELECT(-272,-160),
  (VTBL_ENTRY)&(_ZTI8S20987C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S20987C9[];
extern void ABISELECT(_ZTv0_n24_N9S20987C10D1Ev,_ZTv0_n12_N9S20987C10D1Ev)();
extern void _ZN9S20987C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C10D0Ev,_ZTv0_n12_N9S20987C10D0Ev)();
extern void _ZN9S20987C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C10__8S20987C9[] = {
  ABISELECT(120,68),
  0,
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(96,52),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C10D1Ev,_ZTv0_n12_N9S20987C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C10D0Ev,_ZTv0_n12_N9S20987C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C11D1Ev,_ZTv0_n12_N9S20987C11D1Ev)();
extern void _ZN9S20987C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C11D0Ev,_ZTv0_n12_N9S20987C11D0Ev)();
extern void _ZN9S20987C11D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C119S20987C10__8S20987C9[] = {
  0,
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(96,52),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C11D1Ev,_ZTv0_n12_N9S20987C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C11D0Ev,_ZTv0_n12_N9S20987C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev)();
extern void _ZN8S20987C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev)();
extern void _ZN8S20987C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C29S20987C119S20987C10__8S20987C9[] = {
  0,
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(96,52),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S20987C2D1Ev,_ZThn52_N8S20987C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S20987C2D0Ev,_ZThn52_N8S20987C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C29S20987C119S20987C10__8S20987C9[] = {
  ABISELECT(16,12),
  0,
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C11D1Ev,_ZTv0_n12_N9S20987C11D1Ev)();
extern void ABISELECT(_ZThn96_N9S20987C11D1Ev,_ZThn52_N9S20987C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C11D0Ev,_ZTv0_n12_N9S20987C11D0Ev)();
extern void ABISELECT(_ZThn96_N9S20987C11D0Ev,_ZThn52_N9S20987C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C119S20987C10__8S20987C9[] = {
  ABISELECT(16,12),
  0,
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S20987C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C11D1Ev,_ZTv0_n12_N9S20987C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C11D0Ev,_ZTv0_n12_N9S20987C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C10D1Ev,_ZTv0_n12_N9S20987C10D1Ev)();
extern void ABISELECT(_ZThn96_N9S20987C10D1Ev,_ZThn52_N9S20987C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C10D0Ev,_ZTv0_n12_N9S20987C10D0Ev)();
extern void ABISELECT(_ZThn96_N9S20987C10D0Ev,_ZThn52_N9S20987C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C10__8S20987C9[] = {
  ABISELECT(16,12),
  0,
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S20987C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C10D1Ev,_ZTv0_n12_N9S20987C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C10D0Ev,_ZTv0_n12_N9S20987C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C10D1Ev,_ZTv0_n12_N9S20987C10D1Ev)();
extern void ABISELECT(_ZThn120_N9S20987C10D1Ev,_ZThn68_N9S20987C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C10D0Ev,_ZTv0_n12_N9S20987C10D0Ev)();
extern void ABISELECT(_ZThn120_N9S20987C10D0Ev,_ZThn68_N9S20987C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C12__9S20987C10__8S20987C9[] = {
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S20987C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C10D1Ev,_ZTv0_n12_N9S20987C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C10D0Ev,_ZTv0_n12_N9S20987C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev)();
extern void _ZN8S20987C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev)();
extern void _ZN8S20987C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C2__A__8S20987C9[] = {
  ABISELECT(-24,-16),
  ABISELECT(88,48),
  ABISELECT(72,36),
  ABISELECT(72,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C3__8S20987C2__A__8S20987C9[] = {
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev)();
extern void ABISELECT(_ZThn72_N8S20987C2D1Ev,_ZThn36_N8S20987C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev)();
extern void ABISELECT(_ZThn72_N8S20987C2D0Ev,_ZThn36_N8S20987C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C2__A__8S20987C9[] = {
  ABISELECT(16,12),
  0,
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev)();
extern void _ZN9S20987C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev)();
extern void _ZN9S20987C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C15__8S20987C9[] = {
  ABISELECT(192,112),
  ABISELECT(112,64),
  ABISELECT(-40,-24),
  ABISELECT(176,104),
  ABISELECT(152,88),
  ABISELECT(128,72),
  ABISELECT(120,68),
  ABISELECT(72,40),
  ABISELECT(56,28),
  ABISELECT(56,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev)();
extern void _ZN9S20987C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev)();
extern void _ZN9S20987C17D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C179S20987C15__8S20987C9[] = {
  ABISELECT(112,64),
  ABISELECT(-40,-24),
  ABISELECT(176,104),
  ABISELECT(152,88),
  ABISELECT(128,72),
  ABISELECT(120,68),
  ABISELECT(72,40),
  ABISELECT(56,28),
  ABISELECT(56,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev)();
extern void _ZN9S20987C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev)();
extern void _ZN9S20987C18D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C189S20987C179S20987C15__8S20987C9[] = {
  ABISELECT(120,68),
  ABISELECT(72,40),
  ABISELECT(56,28),
  ABISELECT(56,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void _ZN8S20987C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void _ZN8S20987C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C39S20987C189S20987C179S20987C15__A1__8S20987C9[] = {
  ABISELECT(72,40),
  ABISELECT(56,28),
  ABISELECT(56,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void ABISELECT(_ZThn56_N8S20987C3D1Ev,_ZThn28_N8S20987C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void ABISELECT(_ZThn56_N8S20987C3D0Ev,_ZThn28_N8S20987C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C39S20987C189S20987C179S20987C15__A1__8S20987C9[] = {
  ABISELECT(16,12),
  0,
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C59S20987C189S20987C179S20987C15__A2__8S20987C9[] = {
  ABISELECT(56,32),
  ABISELECT(40,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZThn40_N8S20987C5D1Ev,_ZThn20_N8S20987C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void ABISELECT(_ZThn40_N8S20987C5D0Ev,_ZThn20_N8S20987C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C59S20987C189S20987C179S20987C15__A2__8S20987C9[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev)();
extern void ABISELECT(_ZThn56_N9S20987C18D1Ev,_ZThn28_N9S20987C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev)();
extern void ABISELECT(_ZThn56_N9S20987C18D0Ev,_ZThn28_N9S20987C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C189S20987C179S20987C15__8S20987C9[] = {
  ABISELECT(16,12),
  0,
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev)();
extern void ABISELECT(_ZThn16_N9S20987C18D1Ev,_ZThn8_N9S20987C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev)();
extern void ABISELECT(_ZThn16_N9S20987C18D0Ev,_ZThn8_N9S20987C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C5__A1__9S20987C189S20987C179S20987C15__8S20987C9[] = {
  ABISELECT(56,32),
  ABISELECT(40,20),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S20987C17D1Ev,_ZThn28_N9S20987C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S20987C17D0Ev,_ZThn28_N9S20987C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C179S20987C15__8S20987C9[] = {
  ABISELECT(16,12),
  0,
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20987C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20987C17D1Ev,_ZThn8_N9S20987C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev)();
extern void ABISELECT(_ZThn16_N9S20987C17D0Ev,_ZThn8_N9S20987C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C59S20987C18__A1__9S20987C179S20987C15__8S20987C9[] = {
  ABISELECT(56,32),
  ABISELECT(40,20),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20987C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev)();
extern void ABISELECT(_ZThn128_N9S20987C17D1Ev,_ZThn72_N9S20987C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev)();
extern void ABISELECT(_ZThn128_N9S20987C17D0Ev,_ZThn72_N9S20987C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C19__9S20987C179S20987C15__8S20987C9[] = {
  ABISELECT(-8,-4),
  ABISELECT(-16,-8),
  ABISELECT(-72,-44),
  ABISELECT(-168,-96),
  ABISELECT(48,32),
  ABISELECT(24,16),
  ABISELECT(-56,-32),
  ABISELECT(-72,-44),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S20987C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev)();
extern void ABISELECT(_ZThn152_N9S20987C17D1Ev,_ZThn88_N9S20987C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev)();
extern void ABISELECT(_ZThn152_N9S20987C17D0Ev,_ZThn88_N9S20987C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C20__9S20987C179S20987C15__8S20987C9[] = {
  ABISELECT(-32,-20),
  ABISELECT(-40,-24),
  ABISELECT(-96,-60),
  ABISELECT(-192,-112),
  ABISELECT(24,16),
  ABISELECT(-80,-48),
  ABISELECT(-96,-60),
  ABISELECT(-152,-88),
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI9S20987C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev)();
extern void ABISELECT(_ZThn176_N9S20987C17D1Ev,_ZThn104_N9S20987C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev)();
extern void ABISELECT(_ZThn176_N9S20987C17D0Ev,_ZThn104_N9S20987C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C2__9S20987C179S20987C15__8S20987C9[] = {
  ABISELECT(-216,-128),
  ABISELECT(-104,-64),
  ABISELECT(-120,-76),
  ABISELECT(-120,-76),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S20987C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C3__A1__9S20987C179S20987C15__8S20987C9[] = {
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S20987C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20987C17D1Ev,_ZTv0_n16_N9S20987C17D1Ev)();
extern void ABISELECT(_ZThn112_N9S20987C17D1Ev,_ZThn64_N9S20987C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20987C17D0Ev,_ZTv0_n16_N9S20987C17D0Ev)();
extern void ABISELECT(_ZThn112_N9S20987C17D0Ev,_ZThn64_N9S20987C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C16__9S20987C179S20987C15__8S20987C9[] = {
  ABISELECT(-112,-64),
  ABISELECT(-40,-24),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20987C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C17D1Ev,_ZTv0_n16_N9S20987C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C17D0Ev,_ZTv0_n16_N9S20987C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20987C15D1Ev,_ZTv0_n16_N9S20987C15D1Ev)();
extern void ABISELECT(_ZThn112_N9S20987C15D1Ev,_ZThn64_N9S20987C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20987C15D0Ev,_ZTv0_n16_N9S20987C15D0Ev)();
extern void ABISELECT(_ZThn112_N9S20987C15D0Ev,_ZThn64_N9S20987C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C16__9S20987C15__8S20987C9[] = {
  ABISELECT(-112,-64),
  ABISELECT(-40,-24),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20987C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C15D1Ev,_ZTv0_n16_N9S20987C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C15D0Ev,_ZTv0_n16_N9S20987C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S20987C15D1Ev,_ZThn28_N9S20987C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S20987C15D0Ev,_ZThn28_N9S20987C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C15__8S20987C9[] = {
  ABISELECT(16,12),
  0,
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20987C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S20987C15D1Ev,_ZThn8_N9S20987C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev)();
extern void ABISELECT(_ZThn16_N9S20987C15D0Ev,_ZThn8_N9S20987C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C59S20987C189S20987C17__A1__9S20987C15__8S20987C9[] = {
  ABISELECT(56,32),
  ABISELECT(40,20),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20987C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev)();
extern void ABISELECT(_ZThn128_N9S20987C15D1Ev,_ZThn72_N9S20987C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev)();
extern void ABISELECT(_ZThn128_N9S20987C15D0Ev,_ZThn72_N9S20987C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C19__9S20987C15__8S20987C9[] = {
  ABISELECT(-8,-4),
  ABISELECT(-16,-8),
  ABISELECT(-72,-44),
  ABISELECT(-168,-96),
  ABISELECT(48,32),
  ABISELECT(24,16),
  ABISELECT(-56,-32),
  ABISELECT(-72,-44),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S20987C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev)();
extern void ABISELECT(_ZThn152_N9S20987C15D1Ev,_ZThn88_N9S20987C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev)();
extern void ABISELECT(_ZThn152_N9S20987C15D0Ev,_ZThn88_N9S20987C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C20__9S20987C15__8S20987C9[] = {
  ABISELECT(-32,-20),
  ABISELECT(-40,-24),
  ABISELECT(-96,-60),
  ABISELECT(-192,-112),
  ABISELECT(24,16),
  ABISELECT(-80,-48),
  ABISELECT(-96,-60),
  ABISELECT(-152,-88),
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI9S20987C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev)();
extern void ABISELECT(_ZThn176_N9S20987C15D1Ev,_ZThn104_N9S20987C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev)();
extern void ABISELECT(_ZThn176_N9S20987C15D0Ev,_ZThn104_N9S20987C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C2__9S20987C15__8S20987C9[] = {
  ABISELECT(-216,-128),
  ABISELECT(-104,-64),
  ABISELECT(-120,-76),
  ABISELECT(-120,-76),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S20987C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C3__A1__9S20987C15__8S20987C9[] = {
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S20987C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev)();
extern void ABISELECT(_ZThn192_N9S20987C15D1Ev,_ZThn112_N9S20987C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev)();
extern void ABISELECT(_ZThn192_N9S20987C15D0Ev,_ZThn112_N9S20987C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C22__9S20987C15__8S20987C9[] = {
  ABISELECT(-72,-44),
  ABISELECT(-120,-72),
  ABISELECT(-136,-84),
  ABISELECT(-136,-84),
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI9S20987C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev)();
extern void ABISELECT(_ZThn208_N9S20987C15D1Ev,_ZThn120_N9S20987C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev)();
extern void ABISELECT(_ZThn208_N9S20987C15D0Ev,_ZThn120_N9S20987C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C59S20987C189S20987C239S20987C22__A4__9S20987C15__8S20987C9[] = {
  ABISELECT(-136,-80),
  ABISELECT(-152,-92),
  ABISELECT(-208,-120),
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI9S20987C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void _ZN8S20987C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
extern void _ZN8S20987C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C9[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C58S20987C4__8S20987C9[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void _ZN8S20987C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void _ZN8S20987C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C3__8S20987C9[] = {
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(96,52),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void ABISELECT(_ZThn96_N8S20987C3D1Ev,_ZThn52_N8S20987C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void ABISELECT(_ZThn96_N8S20987C3D0Ev,_ZThn52_N8S20987C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C3__8S20987C9[] = {
  ABISELECT(16,12),
  0,
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev)();
extern void _ZN9S20987C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev)();
extern void _ZN9S20987C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C12__8S20987C9[] = {
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void _ZN8S20987C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
extern void _ZN8S20987C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C49S20987C12__A1__8S20987C9[] = {
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C58S20987C49S20987C12__A1__8S20987C9[] = {
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C58S20987C49S20987C12__A1__8S20987C9[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C49S20987C12__A1__8S20987C9[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20987C12__8S20987C9[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20987C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C13D1Ev,_ZTv0_n12_N9S20987C13D1Ev)();
extern void _ZN9S20987C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C13D0Ev,_ZTv0_n12_N9S20987C13D0Ev)();
extern void _ZN9S20987C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C13__8S20987C9[] = {
  0,
  ABISELECT(-40,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C13D1Ev,_ZTv0_n12_N9S20987C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C13D0Ev,_ZTv0_n12_N9S20987C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C13D1Ev,_ZTv0_n12_N9S20987C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C13D0Ev,_ZTv0_n12_N9S20987C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20987C13__8S20987C9[] = {
  ABISELECT(40,28),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI9S20987C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C13D1Ev,_ZTv0_n12_N9S20987C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C13D0Ev,_ZTv0_n12_N9S20987C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N12S20987C14_ntD1Ev,_ZTv0_n12_N12S20987C14_ntD1Ev)();
extern void _ZN12S20987C14_ntD1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N12S20987C14_ntD0Ev,_ZTv0_n12_N12S20987C14_ntD0Ev)();
extern void _ZN12S20987C14_ntD0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S20987C14_nt__8S20987C9[] = {
  ABISELECT(-40,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S20987C14_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20987C14_ntD1Ev,_ZTv0_n12_N12S20987C14_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20987C14_ntD0Ev,_ZTv0_n12_N12S20987C14_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n24_N12S20987C14_ntD1Ev,_ZTv0_n12_N12S20987C14_ntD1Ev)();
extern void ABISELECT(_ZTv0_n24_N12S20987C14_ntD0Ev,_ZTv0_n12_N12S20987C14_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__12S20987C14_nt__8S20987C9[] = {
  ABISELECT(40,28),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI12S20987C14_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20987C14_ntD1Ev,_ZTv0_n12_N12S20987C14_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20987C14_ntD0Ev,_ZTv0_n12_N12S20987C14_ntD0Ev),
};
extern void _ZN9S20987C16D1Ev();
extern void _ZN9S20987C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20987C16__8S20987C9[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C16[0]),
  (VTBL_ENTRY)&_ZN9S20987C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20987C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev)();
extern void _ZN9S20987C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev)();
extern void _ZN9S20987C19D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C19__8S20987C9[] = {
  ABISELECT(-8,-4),
  ABISELECT(-16,-8),
  ABISELECT(-72,-44),
  ABISELECT(-168,-96),
  ABISELECT(48,32),
  ABISELECT(24,16),
  ABISELECT(-56,-32),
  ABISELECT(-72,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev)();
extern void _ZN9S20987C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev)();
extern void _ZN9S20987C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C129S20987C19__A1__8S20987C9[] = {
  ABISELECT(-56,-32),
  ABISELECT(-72,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void _ZN8S20987C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
extern void _ZN8S20987C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C49S20987C129S20987C19__A2__8S20987C9[] = {
  ABISELECT(-56,-32),
  ABISELECT(-72,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C58S20987C49S20987C129S20987C19__A3__8S20987C9[] = {
  ABISELECT(-56,-32),
  ABISELECT(-72,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C58S20987C49S20987C129S20987C19__A3__8S20987C9[] = {
  ABISELECT(72,44),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C49S20987C129S20987C19__A2__8S20987C9[] = {
  ABISELECT(72,44),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20987C129S20987C19__A1__8S20987C9[] = {
  ABISELECT(72,44),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI9S20987C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C4__A1__9S20987C19__8S20987C9[] = {
  ABISELECT(16,12),
  0,
  ABISELECT(72,44),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI9S20987C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev)();
extern void ABISELECT(_ZThn24_N9S20987C19D1Ev,_ZThn16_N9S20987C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev)();
extern void ABISELECT(_ZThn24_N9S20987C19D0Ev,_ZThn16_N9S20987C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C20__9S20987C19__8S20987C9[] = {
  ABISELECT(-32,-20),
  ABISELECT(-40,-24),
  ABISELECT(-96,-60),
  ABISELECT(-192,-112),
  ABISELECT(24,16),
  ABISELECT(-80,-48),
  ABISELECT(-96,-60),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20987C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev)();
extern void ABISELECT(_ZThn48_N9S20987C19D1Ev,_ZThn32_N9S20987C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev)();
extern void ABISELECT(_ZThn48_N9S20987C19D0Ev,_ZThn32_N9S20987C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C2__9S20987C19__8S20987C9[] = {
  ABISELECT(-216,-128),
  ABISELECT(-104,-64),
  ABISELECT(-120,-76),
  ABISELECT(-120,-76),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S20987C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C3__9S20987C19__8S20987C9[] = {
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(168,96),
  ABISELECT(168,96),
  (VTBL_ENTRY)&(_ZTI9S20987C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20987C19D1Ev,_ZTv0_n16_N9S20987C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20987C19D0Ev,_ZTv0_n16_N9S20987C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20987C16__9S20987C19__8S20987C9[] = {
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S20987C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C19D1Ev,_ZTv0_n16_N9S20987C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C19D0Ev,_ZTv0_n16_N9S20987C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev)();
extern void _ZN9S20987C20D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev)();
extern void _ZN9S20987C20D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C20__8S20987C9[] = {
  ABISELECT(-32,-20),
  ABISELECT(-40,-24),
  ABISELECT(-96,-60),
  ABISELECT(-192,-112),
  ABISELECT(24,16),
  ABISELECT(-80,-48),
  ABISELECT(-96,-60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C59S20987C20__A4__8S20987C9[] = {
  ABISELECT(-80,-48),
  ABISELECT(-96,-60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C59S20987C20__A4__8S20987C9[] = {
  ABISELECT(96,60),
  ABISELECT(96,60),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev)();
extern void ABISELECT(_ZThn24_N9S20987C20D1Ev,_ZThn16_N9S20987C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev)();
extern void ABISELECT(_ZThn24_N9S20987C20D0Ev,_ZThn16_N9S20987C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C2__9S20987C20__8S20987C9[] = {
  ABISELECT(-216,-128),
  ABISELECT(-104,-64),
  ABISELECT(-120,-76),
  ABISELECT(-120,-76),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20987C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C3__9S20987C20__8S20987C9[] = {
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(192,112),
  ABISELECT(192,112),
  (VTBL_ENTRY)&(_ZTI9S20987C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C20__8S20987C9[] = {
  ABISELECT(16,12),
  0,
  ABISELECT(96,60),
  ABISELECT(96,60),
  (VTBL_ENTRY)&(_ZTI9S20987C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20987C20D1Ev,_ZTv0_n16_N9S20987C20D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20987C20D0Ev,_ZTv0_n16_N9S20987C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20987C16__9S20987C20__8S20987C9[] = {
  ABISELECT(40,24),
  ABISELECT(-40,-24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S20987C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C20D1Ev,_ZTv0_n16_N9S20987C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C20D0Ev,_ZTv0_n16_N9S20987C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev)();
extern void _ZN8S20987C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev)();
extern void _ZN8S20987C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C2__A2__8S20987C9[] = {
  ABISELECT(-216,-128),
  ABISELECT(-104,-64),
  ABISELECT(-120,-76),
  ABISELECT(-120,-76),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C3__8S20987C2__A2__8S20987C9[] = {
  ABISELECT(112,64),
  ABISELECT(96,52),
  ABISELECT(96,52),
  ABISELECT(216,128),
  ABISELECT(216,128),
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C2__A2__8S20987C9[] = {
  ABISELECT(16,12),
  0,
  ABISELECT(120,76),
  ABISELECT(120,76),
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C22D1Ev,_ZTv0_n12_N9S20987C22D1Ev)();
extern void _ZN9S20987C22D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C22D0Ev,_ZTv0_n12_N9S20987C22D0Ev)();
extern void _ZN9S20987C22D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C22__8S20987C9[] = {
  ABISELECT(-72,-44),
  ABISELECT(-120,-72),
  ABISELECT(-136,-84),
  ABISELECT(-136,-84),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C22D1Ev,_ZTv0_n12_N9S20987C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C22D0Ev,_ZTv0_n12_N9S20987C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev)();
extern void _ZN9S20987C23D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev)();
extern void _ZN9S20987C23D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C239S20987C22__8S20987C9[] = {
  ABISELECT(-72,-44),
  ABISELECT(-120,-72),
  ABISELECT(-136,-84),
  ABISELECT(-136,-84),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev)();
extern void _ZN9S20987C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev)();
extern void _ZN9S20987C18D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C189S20987C239S20987C22__A1__8S20987C9[] = {
  ABISELECT(-72,-44),
  ABISELECT(-120,-72),
  ABISELECT(-136,-84),
  ABISELECT(-136,-84),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void _ZN8S20987C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void _ZN8S20987C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C39S20987C189S20987C239S20987C22__A2__8S20987C9[] = {
  ABISELECT(-120,-72),
  ABISELECT(-136,-84),
  ABISELECT(-136,-84),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C39S20987C189S20987C239S20987C22__A2__8S20987C9[] = {
  ABISELECT(16,12),
  0,
  ABISELECT(136,84),
  ABISELECT(136,84),
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C59S20987C189S20987C239S20987C22__A5__8S20987C9[] = {
  ABISELECT(-136,-80),
  ABISELECT(-152,-92),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C59S20987C189S20987C239S20987C22__A5__8S20987C9[] = {
  ABISELECT(152,92),
  ABISELECT(152,92),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C189S20987C239S20987C22__A1__8S20987C9[] = {
  ABISELECT(16,12),
  0,
  ABISELECT(136,84),
  ABISELECT(136,84),
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev)();
extern void ABISELECT(_ZThn16_N9S20987C18D1Ev,_ZThn8_N9S20987C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev)();
extern void ABISELECT(_ZThn16_N9S20987C18D0Ev,_ZThn8_N9S20987C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C5__A1__9S20987C189S20987C239S20987C22__A1__8S20987C9[] = {
  ABISELECT(-136,-80),
  ABISELECT(-152,-92),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C239S20987C22__8S20987C9[] = {
  ABISELECT(16,12),
  0,
  ABISELECT(136,84),
  ABISELECT(136,84),
  (VTBL_ENTRY)&(_ZTI9S20987C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev)();
extern void ABISELECT(_ZThn16_N9S20987C23D1Ev,_ZThn8_N9S20987C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev)();
extern void ABISELECT(_ZThn16_N9S20987C23D0Ev,_ZThn8_N9S20987C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C59S20987C18__A1__9S20987C239S20987C22__8S20987C9[] = {
  ABISELECT(-136,-80),
  ABISELECT(-152,-92),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20987C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C22D1Ev,_ZTv0_n12_N9S20987C22D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C22D0Ev,_ZTv0_n12_N9S20987C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C22__8S20987C9[] = {
  ABISELECT(16,12),
  0,
  ABISELECT(136,84),
  ABISELECT(136,84),
  (VTBL_ENTRY)&(_ZTI9S20987C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C22D1Ev,_ZTv0_n12_N9S20987C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C22D0Ev,_ZTv0_n12_N9S20987C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C22D1Ev,_ZTv0_n12_N9S20987C22D1Ev)();
extern void ABISELECT(_ZThn16_N9S20987C22D1Ev,_ZThn8_N9S20987C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C22D0Ev,_ZTv0_n12_N9S20987C22D0Ev)();
extern void ABISELECT(_ZThn16_N9S20987C22D0Ev,_ZThn8_N9S20987C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C59S20987C189S20987C23__A1__9S20987C22__8S20987C9[] = {
  ABISELECT(-136,-80),
  ABISELECT(-152,-92),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20987C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C22D1Ev,_ZTv0_n12_N9S20987C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C22D0Ev,_ZTv0_n12_N9S20987C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C24D1Ev,_ZTv0_n12_N9S20987C24D1Ev)();
extern void _ZN9S20987C24D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C24D0Ev,_ZTv0_n12_N9S20987C24D0Ev)();
extern void _ZN9S20987C24D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C24__8S20987C9[] = {
  ABISELECT(-160,-96),
  ABISELECT(-176,-108),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C24D1Ev,_ZTv0_n12_N9S20987C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C24D0Ev,_ZTv0_n12_N9S20987C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev)();
extern void _ZN9S20987C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev)();
extern void _ZN9S20987C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C129S20987C24__A2__8S20987C9[] = {
  ABISELECT(-160,-96),
  ABISELECT(-176,-108),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void _ZN8S20987C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
extern void _ZN8S20987C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C49S20987C129S20987C24__A3__8S20987C9[] = {
  ABISELECT(-160,-96),
  ABISELECT(-176,-108),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C58S20987C49S20987C129S20987C24__A6__8S20987C9[] = {
  ABISELECT(-160,-96),
  ABISELECT(-176,-108),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C58S20987C49S20987C129S20987C24__A6__8S20987C9[] = {
  ABISELECT(176,108),
  ABISELECT(176,108),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C49S20987C129S20987C24__A3__8S20987C9[] = {
  ABISELECT(176,108),
  ABISELECT(176,108),
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20987C129S20987C24__A2__8S20987C9[] = {
  ABISELECT(176,108),
  ABISELECT(176,108),
  (VTBL_ENTRY)&(_ZTI9S20987C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C24D1Ev,_ZTv0_n12_N9S20987C24D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C24D0Ev,_ZTv0_n12_N9S20987C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20987C24__8S20987C9[] = {
  ABISELECT(176,108),
  ABISELECT(176,108),
  (VTBL_ENTRY)&(_ZTI9S20987C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C24D1Ev,_ZTv0_n12_N9S20987C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C24D0Ev,_ZTv0_n12_N9S20987C24D0Ev),
};
static  VTT_ENTRY vtt_S20987C9[] = {
  {&(_ZTV8S20987C9[17]),  17,138},
  {&(_tg__ZTV9S20987C10__8S20987C9[8]),  8,10},
  {&(_tg__ZTV9S20987C119S20987C10__8S20987C9[7]),  7,9},
  {&(_tg__ZTV8S20987C29S20987C119S20987C10__8S20987C9[7]),  7,9},
  {&(_tg__ZTV8S20987C29S20987C119S20987C10__8S20987C9[7]),  7,9},
  {&(_tg__ZTV8S20987C4__8S20987C29S20987C119S20987C10__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C4__8S20987C29S20987C119S20987C10__8S20987C9[5]),  5,7},
  {&(_tg__ZTV9S20987C119S20987C10__8S20987C9[7]),  7,9},
  {&(_tg__ZTV8S20987C4__9S20987C119S20987C10__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C4__9S20987C119S20987C10__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C4__9S20987C10__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C4__9S20987C10__8S20987C9[5]),  5,7},
  {&(_tg__ZTV9S20987C10__8S20987C9[8]),  8,10},
  {&(_tg__ZTV9S20987C12__9S20987C10__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C2__A__8S20987C9[7]),  7,9},
  {&(_tg__ZTV8S20987C3__8S20987C2__A__8S20987C9[6]),  6,8},
  {&(_tg__ZTV8S20987C4__8S20987C2__A__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C4__8S20987C2__A__8S20987C9[5]),  5,7},
  {&(_tg__ZTV9S20987C15__8S20987C9[13]),  13,15},
  {&(_tg__ZTV9S20987C179S20987C15__8S20987C9[12]),  12,14},
  {&(_tg__ZTV9S20987C189S20987C179S20987C15__8S20987C9[7]),  7,9},
  {&(_tg__ZTV8S20987C39S20987C189S20987C179S20987C15__A1__8S20987C9[6]),  6,8},
  {&(_tg__ZTV8S20987C4__8S20987C39S20987C189S20987C179S20987C15__A1__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C4__8S20987C39S20987C189S20987C179S20987C15__A1__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C59S20987C189S20987C179S20987C15__A2__8S20987C9[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C59S20987C189S20987C179S20987C15__A2__8S20987C9[3]),  3,5},
  {&(_tg__ZTV8S20987C4__9S20987C189S20987C179S20987C15__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C4__9S20987C189S20987C179S20987C15__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C5__A1__9S20987C189S20987C179S20987C15__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C4__9S20987C179S20987C15__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C4__9S20987C179S20987C15__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C59S20987C18__A1__9S20987C179S20987C15__8S20987C9[5]),  5,7},
  {&(_tg__ZTV9S20987C19__9S20987C179S20987C15__8S20987C9[11]),  11,13},
  {&(_tg__ZTV9S20987C20__9S20987C179S20987C15__8S20987C9[10]),  10,12},
  {&(_tg__ZTV8S20987C2__9S20987C179S20987C15__8S20987C9[7]),  7,9},
  {&(_tg__ZTV8S20987C3__A1__9S20987C179S20987C15__8S20987C9[6]),  6,8},
  {&(_tg__ZTV9S20987C16__9S20987C179S20987C15__8S20987C9[4]),  4,6},
  {&(_tg__ZTV9S20987C16__9S20987C15__8S20987C9[4]),  4,6},
  {&(_tg__ZTV8S20987C4__9S20987C15__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C4__9S20987C15__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C59S20987C189S20987C17__A1__9S20987C15__8S20987C9[5]),  5,7},
  {&(_tg__ZTV9S20987C19__9S20987C15__8S20987C9[11]),  11,13},
  {&(_tg__ZTV9S20987C20__9S20987C15__8S20987C9[10]),  10,12},
  {&(_tg__ZTV8S20987C2__9S20987C15__8S20987C9[7]),  7,9},
  {&(_tg__ZTV8S20987C3__A1__9S20987C15__8S20987C9[6]),  6,8},
  {&(_tg__ZTV9S20987C22__9S20987C15__8S20987C9[7]),  7,9},
  {&(_tg__ZTV8S20987C59S20987C189S20987C239S20987C22__A4__9S20987C15__8S20987C9[5]),  5,7},
  {&(_ZTV8S20987C9[59]),  59,138},
  {&(_ZTV8S20987C9[59]),  59,138},
  {&(_ZTV8S20987C9[17]),  17,138},
  {&(_ZTV8S20987C9[66]),  66,138},
  {&(_ZTV8S20987C9[26]),  26,138},
  {&(_ZTV8S20987C9[73]),  73,138},
  {&(_ZTV8S20987C9[73]),  73,138},
  {&(_ZTV8S20987C9[41]),  41,138},
  {&(_ZTV8S20987C9[79]),  79,138},
  {&(_ZTV8S20987C9[48]),  48,138},
  {&(_ZTV8S20987C9[92]),  92,138},
  {&(_ZTV8S20987C9[104]),  104,138},
  {&(_ZTV8S20987C9[113]),  113,138},
  {&(_ZTV8S20987C9[122]),  122,138},
  {&(_ZTV8S20987C9[129]),  129,138},
  {&(_ZTV8S20987C9[136]),  136,138},
  {&(_tg__ZTV8S20987C4__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C58S20987C4__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C58S20987C4__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C4__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C3__8S20987C9[6]),  6,8},
  {&(_tg__ZTV8S20987C4__8S20987C3__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C4__8S20987C3__8S20987C9[5]),  5,7},
  {&(_tg__ZTV9S20987C12__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C49S20987C12__A1__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C58S20987C49S20987C12__A1__8S20987C9[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C58S20987C49S20987C12__A1__8S20987C9[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20987C49S20987C12__A1__8S20987C9[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20987C12__8S20987C9[3]),  3,5},
  {&(_tg__ZTV9S20987C13__8S20987C9[5]),  5,7},
  {&(_tg__ZTV9S20987C13__8S20987C9[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__9S20987C13__8S20987C9[3]),  3,5},
  {&(_tg__ZTV12S20987C14_nt__8S20987C9[4]),  4,6},
  {&(_tg__ZTV10S7883C3_nt__12S20987C14_nt__8S20987C9[3]),  3,5},
  {&(_tg__ZTV9S20987C16__8S20987C9[3]),  3,5},
  {&(_tg__ZTV9S20987C19__8S20987C9[11]),  11,13},
  {&(_tg__ZTV9S20987C129S20987C19__A1__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C49S20987C129S20987C19__A2__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C58S20987C49S20987C129S20987C19__A3__8S20987C9[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C58S20987C49S20987C129S20987C19__A3__8S20987C9[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20987C49S20987C129S20987C19__A2__8S20987C9[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20987C129S20987C19__A1__8S20987C9[3]),  3,5},
  {&(_tg__ZTV8S20987C4__A1__9S20987C19__8S20987C9[5]),  5,7},
  {&(_tg__ZTV9S20987C20__9S20987C19__8S20987C9[10]),  10,12},
  {&(_tg__ZTV8S20987C2__9S20987C19__8S20987C9[7]),  7,9},
  {&(_tg__ZTV8S20987C3__9S20987C19__8S20987C9[6]),  6,8},
  {&(_tg__ZTV8S20987C4__A1__9S20987C19__8S20987C9[5]),  5,7},
  {&(_tg__ZTV9S20987C16__9S20987C19__8S20987C9[4]),  4,6},
  {&(_tg__ZTV9S20987C20__8S20987C9[10]),  10,12},
  {&(_tg__ZTV8S20987C59S20987C20__A4__8S20987C9[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C59S20987C20__A4__8S20987C9[3]),  3,5},
  {&(_tg__ZTV8S20987C2__9S20987C20__8S20987C9[7]),  7,9},
  {&(_tg__ZTV8S20987C3__9S20987C20__8S20987C9[6]),  6,8},
  {&(_tg__ZTV8S20987C4__9S20987C20__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C4__9S20987C20__8S20987C9[5]),  5,7},
  {&(_tg__ZTV9S20987C16__9S20987C20__8S20987C9[4]),  4,6},
  {&(_tg__ZTV8S20987C2__A2__8S20987C9[7]),  7,9},
  {&(_tg__ZTV8S20987C3__8S20987C2__A2__8S20987C9[6]),  6,8},
  {&(_tg__ZTV8S20987C4__8S20987C2__A2__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C4__8S20987C2__A2__8S20987C9[5]),  5,7},
  {&(_tg__ZTV9S20987C22__8S20987C9[7]),  7,9},
  {&(_tg__ZTV9S20987C239S20987C22__8S20987C9[7]),  7,9},
  {&(_tg__ZTV9S20987C189S20987C239S20987C22__A1__8S20987C9[7]),  7,9},
  {&(_tg__ZTV8S20987C39S20987C189S20987C239S20987C22__A2__8S20987C9[6]),  6,8},
  {&(_tg__ZTV8S20987C4__8S20987C39S20987C189S20987C239S20987C22__A2__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C4__8S20987C39S20987C189S20987C239S20987C22__A2__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C59S20987C189S20987C239S20987C22__A5__8S20987C9[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C59S20987C189S20987C239S20987C22__A5__8S20987C9[3]),  3,5},
  {&(_tg__ZTV8S20987C4__9S20987C189S20987C239S20987C22__A1__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C4__9S20987C189S20987C239S20987C22__A1__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C5__A1__9S20987C189S20987C239S20987C22__A1__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C4__9S20987C239S20987C22__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C4__9S20987C239S20987C22__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C59S20987C18__A1__9S20987C239S20987C22__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C4__9S20987C22__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C4__9S20987C22__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C59S20987C189S20987C23__A1__9S20987C22__8S20987C9[5]),  5,7},
  {&(_tg__ZTV9S20987C24__8S20987C9[5]),  5,7},
  {&(_tg__ZTV9S20987C129S20987C24__A2__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C49S20987C129S20987C24__A3__8S20987C9[5]),  5,7},
  {&(_tg__ZTV8S20987C58S20987C49S20987C129S20987C24__A6__8S20987C9[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C58S20987C49S20987C129S20987C24__A6__8S20987C9[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20987C49S20987C129S20987C24__A3__8S20987C9[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20987C129S20987C24__A2__8S20987C9[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20987C24__8S20987C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20987C9[];
extern  VTBL_ENTRY _ZTV8S20987C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C9[];
static VTBL_ENTRY alt_thunk_names64[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C24D0Ev,_ZTv0_n12_N9S20987C24D0Ev), // 
  (VTBL_ENTRY)_ZN9S20987C24D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C24D1Ev,_ZTv0_n12_N9S20987C24D1Ev), // 
  (VTBL_ENTRY)_ZN9S20987C24D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C23D0Ev,_ZThn8_N9S20987C23D0Ev),
  (VTBL_ENTRY)_ZN9S20987C23D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C23D1Ev,_ZThn8_N9S20987C23D1Ev),
  (VTBL_ENTRY)_ZN9S20987C23D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C22D0Ev,_ZTv0_n12_N9S20987C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C22D0Ev,_ZThn8_N9S20987C22D0Ev),
  (VTBL_ENTRY)_ZN9S20987C22D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C22D1Ev,_ZTv0_n12_N9S20987C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C22D1Ev,_ZThn8_N9S20987C22D1Ev),
  (VTBL_ENTRY)_ZN9S20987C22D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20987C20D0Ev,_ZThn16_N9S20987C20D0Ev),
  (VTBL_ENTRY)_ZN9S20987C20D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20987C20D1Ev,_ZThn16_N9S20987C20D1Ev),
  (VTBL_ENTRY)_ZN9S20987C20D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20987C19D0Ev,_ZThn32_N9S20987C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20987C19D0Ev,_ZThn16_N9S20987C19D0Ev),
  (VTBL_ENTRY)_ZN9S20987C19D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20987C19D1Ev,_ZThn32_N9S20987C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20987C19D1Ev,_ZThn16_N9S20987C19D1Ev),
  (VTBL_ENTRY)_ZN9S20987C19D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N12S20987C14_ntD0Ev,_ZTv0_n12_N12S20987C14_ntD0Ev), // 
  (VTBL_ENTRY)_ZN12S20987C14_ntD0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N12S20987C14_ntD1Ev,_ZTv0_n12_N12S20987C14_ntD1Ev), // 
  (VTBL_ENTRY)_ZN12S20987C14_ntD1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C13D0Ev,_ZTv0_n12_N9S20987C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S20987C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C13D1Ev,_ZTv0_n12_N9S20987C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S20987C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S20987C12D0Ev,
  (VTBL_ENTRY)_ZN9S20987C12D0Ev,
  (VTBL_ENTRY)_ZN9S20987C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S20987C12D1Ev,
  (VTBL_ENTRY)_ZN9S20987C12D1Ev,
  (VTBL_ENTRY)_ZN9S20987C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C4D0Ev,
  (VTBL_ENTRY)_ZN8S20987C4D0Ev,
  (VTBL_ENTRY)_ZN8S20987C4D0Ev,
  (VTBL_ENTRY)_ZN8S20987C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C4D1Ev,
  (VTBL_ENTRY)_ZN8S20987C4D1Ev,
  (VTBL_ENTRY)_ZN8S20987C4D1Ev,
  (VTBL_ENTRY)_ZN8S20987C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20987C15D0Ev,_ZTv0_n16_N9S20987C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20987C15D0Ev,_ZThn64_N9S20987C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20987C15D1Ev,_ZTv0_n16_N9S20987C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20987C15D1Ev,_ZThn64_N9S20987C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20987C17D0Ev,_ZTv0_n16_N9S20987C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20987C17D0Ev,_ZThn64_N9S20987C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20987C17D1Ev,_ZTv0_n16_N9S20987C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20987C17D1Ev,_ZThn64_N9S20987C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20987C5D0Ev,_ZThn20_N8S20987C5D0Ev),
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20987C5D1Ev,_ZThn20_N8S20987C5D1Ev),
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C3D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20987C3D0Ev,_ZThn52_N8S20987C3D0Ev),
  (VTBL_ENTRY)_ZN8S20987C3D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20987C3D0Ev,_ZThn28_N8S20987C3D0Ev),
  (VTBL_ENTRY)_ZN8S20987C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C3D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20987C3D1Ev,_ZThn52_N8S20987C3D1Ev),
  (VTBL_ENTRY)_ZN8S20987C3D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20987C3D1Ev,_ZThn28_N8S20987C3D1Ev),
  (VTBL_ENTRY)_ZN8S20987C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C18D0Ev,_ZThn8_N9S20987C18D0Ev),
  (VTBL_ENTRY)_ZN9S20987C18D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C18D0Ev,_ZThn8_N9S20987C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20987C18D0Ev,_ZThn28_N9S20987C18D0Ev),
  (VTBL_ENTRY)_ZN9S20987C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C18D1Ev,_ZThn8_N9S20987C18D1Ev),
  (VTBL_ENTRY)_ZN9S20987C18D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C18D1Ev,_ZThn8_N9S20987C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20987C18D1Ev,_ZThn28_N9S20987C18D1Ev),
  (VTBL_ENTRY)_ZN9S20987C18D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20987C17D0Ev,_ZThn104_N9S20987C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20987C17D0Ev,_ZThn88_N9S20987C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20987C17D0Ev,_ZThn72_N9S20987C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C17D0Ev,_ZThn8_N9S20987C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20987C17D0Ev,_ZThn28_N9S20987C17D0Ev),
  (VTBL_ENTRY)_ZN9S20987C17D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20987C17D1Ev,_ZThn104_N9S20987C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20987C17D1Ev,_ZThn88_N9S20987C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20987C17D1Ev,_ZThn72_N9S20987C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C17D1Ev,_ZThn8_N9S20987C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20987C17D1Ev,_ZThn28_N9S20987C17D1Ev),
  (VTBL_ENTRY)_ZN9S20987C17D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20987C15D0Ev,_ZThn120_N9S20987C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20987C15D0Ev,_ZThn112_N9S20987C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20987C15D0Ev,_ZThn104_N9S20987C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20987C15D0Ev,_ZThn88_N9S20987C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20987C15D0Ev,_ZThn72_N9S20987C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C15D0Ev,_ZThn8_N9S20987C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20987C15D0Ev,_ZThn28_N9S20987C15D0Ev),
  (VTBL_ENTRY)_ZN9S20987C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20987C15D1Ev,_ZThn120_N9S20987C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20987C15D1Ev,_ZThn112_N9S20987C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20987C15D1Ev,_ZThn104_N9S20987C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20987C15D1Ev,_ZThn88_N9S20987C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20987C15D1Ev,_ZThn72_N9S20987C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C15D1Ev,_ZThn8_N9S20987C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20987C15D1Ev,_ZThn28_N9S20987C15D1Ev),
  (VTBL_ENTRY)_ZN9S20987C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C2D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20987C2D0Ev,_ZThn36_N8S20987C2D0Ev),
  (VTBL_ENTRY)_ZN8S20987C2D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20987C2D0Ev,_ZThn52_N8S20987C2D0Ev),
  (VTBL_ENTRY)_ZN8S20987C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C2D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20987C2D1Ev,_ZThn36_N8S20987C2D1Ev),
  (VTBL_ENTRY)_ZN8S20987C2D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20987C2D1Ev,_ZThn52_N8S20987C2D1Ev),
  (VTBL_ENTRY)_ZN8S20987C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C11D0Ev,_ZTv0_n12_N9S20987C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20987C11D0Ev,_ZThn52_N9S20987C11D0Ev),
  (VTBL_ENTRY)_ZN9S20987C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C11D1Ev,_ZTv0_n12_N9S20987C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20987C11D1Ev,_ZThn52_N9S20987C11D1Ev),
  (VTBL_ENTRY)_ZN9S20987C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C10D0Ev,_ZTv0_n12_N9S20987C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20987C10D0Ev,_ZThn68_N9S20987C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20987C10D0Ev,_ZThn52_N9S20987C10D0Ev),
  (VTBL_ENTRY)_ZN9S20987C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C10D1Ev,_ZTv0_n12_N9S20987C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20987C10D1Ev,_ZThn68_N9S20987C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20987C10D1Ev,_ZThn52_N9S20987C10D1Ev),
  (VTBL_ENTRY)_ZN9S20987C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20987C9D0Ev,_ZTv0_n16_N8S20987C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S20987C9D0Ev,_ZThn88_N8S20987C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20987C9D1Ev,_ZTv0_n16_N8S20987C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S20987C9D1Ev,_ZThn88_N8S20987C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S20987C9D0Ev,_ZThn160_N8S20987C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S20987C9D0Ev,_ZThn144_N8S20987C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S20987C9D0Ev,_ZThn136_N8S20987C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S20987C9D0Ev,_ZThn128_N8S20987C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20987C9D0Ev,_ZThn112_N8S20987C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20987C9D0Ev,_ZThn96_N8S20987C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S20987C9D0Ev,_ZThn80_N8S20987C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S20987C9D0Ev,_ZThn68_N8S20987C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20987C9D0Ev,_ZThn52_N8S20987C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20987C9D0Ev,_ZThn32_N8S20987C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20987C9D0Ev,_ZThn24_N8S20987C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20987C9D0Ev,_ZThn16_N8S20987C9D0Ev),
  (VTBL_ENTRY)_ZN8S20987C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S20987C9D1Ev,_ZThn160_N8S20987C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S20987C9D1Ev,_ZThn144_N8S20987C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S20987C9D1Ev,_ZThn136_N8S20987C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S20987C9D1Ev,_ZThn128_N8S20987C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20987C9D1Ev,_ZThn112_N8S20987C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20987C9D1Ev,_ZThn96_N8S20987C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S20987C9D1Ev,_ZThn80_N8S20987C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S20987C9D1Ev,_ZThn68_N8S20987C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20987C9D1Ev,_ZThn52_N8S20987C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20987C9D1Ev,_ZThn32_N8S20987C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20987C9D1Ev,_ZThn24_N8S20987C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20987C9D1Ev,_ZThn16_N8S20987C9D1Ev),
  (VTBL_ENTRY)_ZN8S20987C9D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20987C9 = {  "S20987C9", // class name
  bases_S20987C9, 52,
  &(vtc_S20987C9[0]), // expected_vtbl_contents
  &(vtt_S20987C9[0]), // expected_vtt_contents
  ABISELECT(352,216), // object size
  NSPAIRA(_ZTI8S20987C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20987C9),138, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20987C9),132, //virtual table table var
  36, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names64,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20987C1  : virtual S20987C2 , S20987C9 , S20987C24 {
  ::S3216C8_nt s20987c1f0;
  ~S20987C1(); // tgen
  S20987C1(); // tgen
};
//SIG(1 S20987C1) C1{ VBC2{ VBC3{ VBC4{ BC5{ VBC6{ vd m} VBC7{ m Fi} BC8{ m} Fi} Fi} BC8} FC7} BC9{ BC10{ VBC4 BC11{ BC2 BC7 Fp} VBC12{ BC4} vd} BC2 VBC13{ VBC14{ VBC6} Fi} BC15{ VBC16{ VBC7 vd} BC17{ VBC6 BC18{ VBC6 BC7 BC3 VBC8 BC5 vd} VBC19{ BC12 VBC20{ VBC7 VBC2 VBC16 VBC8 BC5 vd Fi Fp} vd Fi} vd} BC21{ vd m Fc} VBC22{ BC23{ BC18 BC7 vd Fi} vd} vd} VBC24{ BC12 FC22} Fp} BC24 FC7}


S20987C1 ::~S20987C1(){ note_dtor("S20987C1", this);} // tgen
S20987C1 ::S20987C1(){ note_ctor("S20987C1", this);} // tgen

static void Test_S20987C1()
{
  extern Class_Descriptor cd_S20987C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(55,69)];
    init_test(&cd_S20987C1, buf);
    S20987C1 *dp, &lv = *(dp=new (buf) S20987C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(432,272), "sizeof(S20987C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20987C1)");
    /*is_ambiguous_... S20987C1::S20987C4 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C4*), ABISELECT(184,112), "S20987C1");
    /*is_ambiguous_... S20987C1::S20987C12 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C4*)(S20987C12*), ABISELECT(184,112), "S20987C1");
    check_base_class_offset(lv, (S7883C3_nt*)(S20987C14_nt*), ABISELECT(184,112), "S20987C1");
    check_base_class_offset(lv, (S7883C3_nt*)(S20987C17*)(S20987C15*)(S20987C9*), ABISELECT(184,112), "S20987C1");
    check_base_class_offset(lv, (S7883C3_nt*)(S20987C18*)(S20987C17*)(S20987C15*)(S20987C9*), ABISELECT(184,112), "S20987C1");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C18*)(S20987C17*)(S20987C15*)(S20987C9*), ABISELECT(184,112), "S20987C1");
    check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C4*)(S20987C12*)(S20987C19*), ABISELECT(184,112), "S20987C1");
    /*is_ambiguous_... S20987C20::S20987C5 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C20*), ABISELECT(184,112), "S20987C1");
    check_base_class_offset(lv, (S7883C3_nt*)(S20987C18*)(S20987C23*)(S20987C22*), ABISELECT(184,112), "S20987C1");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C18*)(S20987C23*)(S20987C22*), ABISELECT(184,112), "S20987C1");
    /*is_ambiguous_... S20987C1::S20987C24 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C4*)(S20987C12*)(S20987C24*), ABISELECT(184,112), "S20987C1");
    /*is_ambiguous_... S20987C1::S20987C24 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20987C5*)(S20987C4*)(S20987C12*)(S20987C24*), ABISELECT(184,112), "S20987C1");
    /*is_ambiguous_... S20987C1::S20987C4 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C4*), ABISELECT(216,132), "S20987C1");
    /*is_ambiguous_... S20987C1::S20987C12 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C4*)(S20987C12*), ABISELECT(216,132), "S20987C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S20987C16*), ABISELECT(216,132), "S20987C1");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C18*)(S20987C17*)(S20987C15*)(S20987C9*), ABISELECT(216,132), "S20987C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C4*)(S20987C12*)(S20987C19*), ABISELECT(216,132), "S20987C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S20987C20*), ABISELECT(216,132), "S20987C1");
    /*is_ambiguous_... S20987C20::S20987C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C20*), ABISELECT(216,132), "S20987C1");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C18*)(S20987C23*)(S20987C22*), ABISELECT(216,132), "S20987C1");
    /*is_ambiguous_... S20987C1::S20987C24 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C4*)(S20987C12*)(S20987C24*), ABISELECT(216,132), "S20987C1");
    /*is_ambiguous_... S20987C1::S20987C24 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C5*)(S20987C4*)(S20987C12*)(S20987C24*), ABISELECT(216,132), "S20987C1");
    /*is_ambiguous_... S20987C1::S20987C4 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C4*), ABISELECT(200,120), "S20987C1");
    /*is_ambiguous_... S20987C1::S20987C4 */ AMB_check_base_class_offset(lv, (S20987C5*)(S20987C4*), ABISELECT(200,120), "S20987C1");
    /*is_ambiguous_... S20987C1::S20987C3 */ AMB_check_base_class_offset(lv, (S20987C4*)(S20987C3*), ABISELECT(200,120), "S20987C1");
    /*is_ambiguous_... S20987C10::S20987C4 */ AMB_check_base_class_offset(lv, (S20987C4*)(S20987C10*)(S20987C9*), ABISELECT(200,120), "S20987C1");
    check_base_class_offset(lv, (S20987C4*)(S20987C3*)(S20987C18*)(S20987C17*)(S20987C15*)(S20987C9*), ABISELECT(200,120), "S20987C1");
    check_base_class_offset(lv, (S20987C4*)(S20987C3*)(S20987C18*)(S20987C23*)(S20987C22*), ABISELECT(200,120), "S20987C1");
    /*is_ambiguous_... S20987C1::S20987C3 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C3*), ABISELECT(184,112), "S20987C1");
    /*is_ambiguous_... S20987C1::S20987C2 */ AMB_check_base_class_offset(lv, (S20987C3*)(S20987C2*), ABISELECT(184,112), "S20987C1");
    check_base_class_offset(lv, (S20987C3*)(S20987C2*)(S20987C11*)(S20987C10*)(S20987C9*), ABISELECT(184,112), "S20987C1");
    /*is_ambiguous_... S20987C9::S20987C2 */ AMB_check_base_class_offset(lv, (S20987C3*)(S20987C2*)(S20987C9*), ABISELECT(184,112), "S20987C1");
    /*is_ambiguous_... S20987C1::S20987C2 */ AMB_check_base_class_offset(lv, (S20987C2*), ABISELECT(184,112), "S20987C1");
    check_base_class_offset(lv, (S20987C2*)(S20987C20*), ABISELECT(184,112), "S20987C1");
    check_base_class_offset(lv, (S20987C2*)(S20987C11*)(S20987C10*)(S20987C9*), 0, "S20987C1");
    /*is_ambiguous_... S20987C11::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C11*)(S20987C10*)(S20987C9*), ABISELECT(12,8), "S20987C1");
    check_base_class_offset(lv, (S20987C11*)(S20987C10*)(S20987C9*), 0, "S20987C1");
    /*is_ambiguous_... S20987C1::S20987C12 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C4*)(S20987C12*), ABISELECT(224,136), "S20987C1");
    /*is_ambiguous_... S20987C1::S20987C12 */ AMB_check_base_class_offset(lv, (S20987C5*)(S20987C4*)(S20987C12*), ABISELECT(224,136), "S20987C1");
    /*is_ambiguous_... S20987C1::S20987C12 */ AMB_check_base_class_offset(lv, (S20987C4*)(S20987C12*), ABISELECT(224,136), "S20987C1");
    check_base_class_offset(lv, (S20987C12*)(S20987C10*)(S20987C9*), ABISELECT(224,136), "S20987C1");
    check_base_class_offset(lv, (S20987C10*)(S20987C9*), 0, "S20987C1");
    /*is_ambiguous_... S20987C9::S20987C2 */ AMB_check_base_class_offset(lv, (S20987C2*)(S20987C9*), ABISELECT(24,16), "S20987C1");
    check_base_class_offset(lv, (S20987C14_nt*)(S20987C13*), ABISELECT(240,148), "S20987C1");
    check_base_class_offset(lv, (S20987C13*)(S20987C9*), ABISELECT(240,148), "S20987C1");
    check_base_class_offset(lv, (S20987C16*)(S20987C15*)(S20987C9*), ABISELECT(256,156), "S20987C1");
    check_base_class_offset(lv, (S20987C16*)(S20987C20*), ABISELECT(256,156), "S20987C1");
    /*is_ambiguous_... S20987C18::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C18*)(S20987C17*)(S20987C15*)(S20987C9*), ABISELECT(48,28), "S20987C1");
    /*is_ambiguous_... S20987C3::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C3*)(S20987C18*)(S20987C17*)(S20987C15*)(S20987C9*), ABISELECT(40,24), "S20987C1");
    check_base_class_offset(lv, (S20987C3*)(S20987C18*)(S20987C17*)(S20987C15*)(S20987C9*), ABISELECT(40,24), "S20987C1");
    /*is_ambiguous_... S20987C18::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C18*)(S20987C17*)(S20987C15*)(S20987C9*), 0, "S20987C1");
    /*is_ambiguous_... S20987C20::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C20*), 0, "S20987C1");
    /*is_ambiguous_... S20987C18::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C18*)(S20987C23*)(S20987C22*), 0, "S20987C1");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C18*)(S20987C17*)(S20987C15*)(S20987C9*), ABISELECT(56,32), "S20987C1");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S20987C5*)(S20987C18*)(S20987C17*)(S20987C15*)(S20987C9*), ABISELECT(56,32), "S20987C1");
    check_base_class_offset(lv, (S20987C18*)(S20987C17*)(S20987C15*)(S20987C9*), ABISELECT(40,24), "S20987C1");
    check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C4*)(S20987C12*)(S20987C19*), ABISELECT(264,160), "S20987C1");
    check_base_class_offset(lv, (S20987C5*)(S20987C4*)(S20987C12*)(S20987C19*), ABISELECT(264,160), "S20987C1");
    check_base_class_offset(lv, (S20987C4*)(S20987C12*)(S20987C19*), ABISELECT(264,160), "S20987C1");
    check_base_class_offset(lv, (S20987C12*)(S20987C19*), ABISELECT(264,160), "S20987C1");
    /*is_ambiguous_... S20987C20::S20987C5 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C20*), ABISELECT(288,176), "S20987C1");
    /*is_ambiguous_... S20987C20::S20987C5 */ AMB_check_base_class_offset(lv, (S20987C5*)(S20987C20*), ABISELECT(288,176), "S20987C1");
    check_base_class_offset(lv, (S20987C20*)(S20987C19*), ABISELECT(288,176), "S20987C1");
    check_base_class_offset(lv, (S20987C19*)(S20987C17*)(S20987C15*)(S20987C9*), ABISELECT(264,160), "S20987C1");
    check_base_class_offset(lv, (S20987C17*)(S20987C15*)(S20987C9*), ABISELECT(40,24), "S20987C1");
    check_base_class_offset(lv, (S9073C22_nt*)(S20987C15*)(S20987C9*), ABISELECT(72,40), "S20987C1");
    /*is_ambiguous_... S20987C18::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C18*)(S20987C23*)(S20987C22*), ABISELECT(320,196), "S20987C1");
    /*is_ambiguous_... S20987C3::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C3*)(S20987C18*)(S20987C23*)(S20987C22*), ABISELECT(312,192), "S20987C1");
    check_base_class_offset(lv, (S20987C3*)(S20987C18*)(S20987C23*)(S20987C22*), ABISELECT(312,192), "S20987C1");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C18*)(S20987C23*)(S20987C22*), ABISELECT(328,200), "S20987C1");
    /*is_ambiguous_... S20987C18::S20987C5 */ AMB_check_base_class_offset(lv, (S20987C5*)(S20987C18*)(S20987C23*)(S20987C22*), ABISELECT(328,200), "S20987C1");
    check_base_class_offset(lv, (S20987C18*)(S20987C23*)(S20987C22*), ABISELECT(312,192), "S20987C1");
    /*is_ambiguous_... S20987C23::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20987C23*)(S20987C22*), ABISELECT(340,208), "S20987C1");
    check_base_class_offset(lv, (S20987C23*)(S20987C22*), ABISELECT(312,192), "S20987C1");
    check_base_class_offset(lv, (S20987C22*)(S20987C15*)(S20987C9*), ABISELECT(312,192), "S20987C1");
    check_base_class_offset(lv, (S20987C15*)(S20987C9*), ABISELECT(40,24), "S20987C1");
    /*is_ambiguous_... S20987C1::S20987C24 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C4*)(S20987C12*)(S20987C24*), ABISELECT(352,216), "S20987C1");
    /*is_ambiguous_... S20987C1::S20987C24 */ AMB_check_base_class_offset(lv, (S20987C5*)(S20987C4*)(S20987C12*)(S20987C24*), ABISELECT(352,216), "S20987C1");
    /*is_ambiguous_... S20987C1::S20987C24 */ AMB_check_base_class_offset(lv, (S20987C4*)(S20987C12*)(S20987C24*), ABISELECT(352,216), "S20987C1");
    /*is_ambiguous_... S20987C1::S20987C24 */ AMB_check_base_class_offset(lv, (S20987C12*)(S20987C24*), ABISELECT(352,216), "S20987C1");
    check_base_class_offset(lv, (S20987C24*)(S20987C9*), ABISELECT(352,216), "S20987C1");
    check_base_class_offset(lv, (S20987C9*), 0, "S20987C1");
    /*is_ambiguous_... S20987C1::S20987C24 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20987C5*)(S20987C4*)(S20987C12*)(S20987C24*), ABISELECT(96,52), "S20987C1");
    /*is_ambiguous_... S20987C1::S20987C24 */ AMB_check_base_class_offset(lv, (S20987C5*)(S20987C4*)(S20987C12*)(S20987C24*), ABISELECT(96,52), "S20987C1");
    /*is_ambiguous_... S20987C1::S20987C24 */ AMB_check_base_class_offset(lv, (S20987C4*)(S20987C12*)(S20987C24*), ABISELECT(96,52), "S20987C1");
    /*is_ambiguous_... S20987C1::S20987C24 */ AMB_check_base_class_offset(lv, (S20987C12*)(S20987C24*), ABISELECT(96,52), "S20987C1");
    /*is_ambiguous_... S20987C1::S20987C24 */ AMB_check_base_class_offset(lv, (S20987C24*), ABISELECT(96,52), "S20987C1");
    check_field_offset(lv, s20987c1f0, ABISELECT(176,108), "S20987C1.s20987c1f0");
    test_class_info(&lv, &cd_S20987C1);
    dp->~S20987C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20987C1(Test_S20987C1, "S20987C1", ABISELECT(432,272));

#else // __cplusplus

extern void _ZN8S20987C1C1Ev();
extern void _ZN8S20987C1D1Ev();
Name_Map name_map_S20987C1[] = {
  NSPAIR(_ZN8S20987C1C1Ev),
  NSPAIR(_ZN8S20987C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C4;
extern VTBL_ENTRY _ZTI8S20987C4[];
extern  VTBL_ENTRY _ZTV8S20987C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C4[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C3;
extern VTBL_ENTRY _ZTI8S20987C3[];
extern  VTBL_ENTRY _ZTV8S20987C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C3[];
extern Class_Descriptor cd_S20987C2;
extern VTBL_ENTRY _ZTI8S20987C2[];
extern  VTBL_ENTRY _ZTV8S20987C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C2[];
extern Class_Descriptor cd_S20987C2;
extern VTBL_ENTRY _ZTI8S20987C2[];
extern  VTBL_ENTRY _ZTV8S20987C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C2[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20987C11;
extern VTBL_ENTRY _ZTI9S20987C11[];
extern  VTBL_ENTRY _ZTV9S20987C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C11[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C4;
extern VTBL_ENTRY _ZTI8S20987C4[];
extern  VTBL_ENTRY _ZTV8S20987C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C4[];
extern Class_Descriptor cd_S20987C12;
extern VTBL_ENTRY _ZTI9S20987C12[];
extern  VTBL_ENTRY _ZTV9S20987C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C12[];
extern Class_Descriptor cd_S20987C10;
extern VTBL_ENTRY _ZTI9S20987C10[];
extern  VTBL_ENTRY _ZTV9S20987C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C10[];
extern Class_Descriptor cd_S20987C2;
extern VTBL_ENTRY _ZTI8S20987C2[];
extern  VTBL_ENTRY _ZTV8S20987C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C2[];
extern Class_Descriptor cd_S20987C14_nt;
extern VTBL_ENTRY _ZTI12S20987C14_nt[];
extern  VTBL_ENTRY _ZTV12S20987C14_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20987C14_nt[];
extern Class_Descriptor cd_S20987C13;
extern VTBL_ENTRY _ZTI9S20987C13[];
extern  VTBL_ENTRY _ZTV9S20987C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C13[];
extern Class_Descriptor cd_S20987C16;
extern VTBL_ENTRY _ZTI9S20987C16[];
extern  VTBL_ENTRY _ZTV9S20987C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C16[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C3;
extern VTBL_ENTRY _ZTI8S20987C3[];
extern  VTBL_ENTRY _ZTV8S20987C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C3[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C18;
extern VTBL_ENTRY _ZTI9S20987C18[];
extern  VTBL_ENTRY _ZTV9S20987C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C18[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C4;
extern VTBL_ENTRY _ZTI8S20987C4[];
extern  VTBL_ENTRY _ZTV8S20987C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C4[];
extern Class_Descriptor cd_S20987C12;
extern VTBL_ENTRY _ZTI9S20987C12[];
extern  VTBL_ENTRY _ZTV9S20987C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C12[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C20;
extern VTBL_ENTRY _ZTI9S20987C20[];
extern  VTBL_ENTRY _ZTV9S20987C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C20[];
extern Class_Descriptor cd_S20987C19;
extern VTBL_ENTRY _ZTI9S20987C19[];
extern  VTBL_ENTRY _ZTV9S20987C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C19[];
extern Class_Descriptor cd_S20987C17;
extern VTBL_ENTRY _ZTI9S20987C17[];
extern  VTBL_ENTRY _ZTV9S20987C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C17[];
extern Class_Descriptor cd_S9073C22_nt;
extern VTBL_ENTRY _ZTI11S9073C22_nt[];
extern  VTBL_ENTRY _ZTV11S9073C22_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C3;
extern VTBL_ENTRY _ZTI8S20987C3[];
extern  VTBL_ENTRY _ZTV8S20987C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C3[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C18;
extern VTBL_ENTRY _ZTI9S20987C18[];
extern  VTBL_ENTRY _ZTV9S20987C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C18[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20987C23;
extern VTBL_ENTRY _ZTI9S20987C23[];
extern  VTBL_ENTRY _ZTV9S20987C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C23[];
extern Class_Descriptor cd_S20987C22;
extern VTBL_ENTRY _ZTI9S20987C22[];
extern  VTBL_ENTRY _ZTV9S20987C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C22[];
extern Class_Descriptor cd_S20987C15;
extern VTBL_ENTRY _ZTI9S20987C15[];
extern  VTBL_ENTRY _ZTV9S20987C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C15[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C4;
extern VTBL_ENTRY _ZTI8S20987C4[];
extern  VTBL_ENTRY _ZTV8S20987C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C4[];
extern Class_Descriptor cd_S20987C12;
extern VTBL_ENTRY _ZTI9S20987C12[];
extern  VTBL_ENTRY _ZTV9S20987C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C12[];
extern Class_Descriptor cd_S20987C24;
extern VTBL_ENTRY _ZTI9S20987C24[];
extern  VTBL_ENTRY _ZTV9S20987C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C24[];
extern Class_Descriptor cd_S20987C9;
extern VTBL_ENTRY _ZTI8S20987C9[];
extern  VTBL_ENTRY _ZTV8S20987C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C9[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20987C5;
extern VTBL_ENTRY _ZTI8S20987C5[];
extern  VTBL_ENTRY _ZTV8S20987C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C5[];
extern Class_Descriptor cd_S20987C4;
extern VTBL_ENTRY _ZTI8S20987C4[];
extern  VTBL_ENTRY _ZTV8S20987C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C4[];
extern Class_Descriptor cd_S20987C12;
extern VTBL_ENTRY _ZTI9S20987C12[];
extern  VTBL_ENTRY _ZTV9S20987C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C12[];
extern Class_Descriptor cd_S20987C24;
extern VTBL_ENTRY _ZTI9S20987C24[];
extern  VTBL_ENTRY _ZTV9S20987C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20987C24[];
static Base_Class bases_S20987C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    ABISELECT(184,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    76, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(216,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(200,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
    3, //immediately_derived
  0, 0},
  {&cd_S20987C5,    ABISELECT(200,120), //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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20987C4,    ABISELECT(200,120), //bcp->offset
    70, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    75, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(184,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20987C3,    ABISELECT(184,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    74, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20987C2,    ABISELECT(184,112), //bcp->offset
    61, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    73, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20987C2,    0, //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
    27, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20987C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(224,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20987C5,    ABISELECT(224,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20987C4,    ABISELECT(224,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    102, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20987C12,    ABISELECT(224,136), //bcp->offset
    77, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    77, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20987C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S20987C2,    ABISELECT(24,16), //bcp->offset
    19, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    78, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S20987C14_nt,    ABISELECT(240,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    80, //bcp->index_in_construction_vtbl_array
    110, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20987C13,    ABISELECT(240,148), //bcp->offset
    84, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    79, //bcp->index_in_construction_vtbl_array
    107, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    52, //immediately_derived
  0, 1},
  {&cd_S20987C16,    ABISELECT(256,156), //bcp->offset
    91, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    82, //bcp->index_in_construction_vtbl_array
    112, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S3216C8_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
    26, //immediately_derived
  0, 0},
  {&cd_S4677C37,    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
    22, //immediately_derived
  0, 0},
  {&cd_S20987C3,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4677C37,    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
    25, //immediately_derived
  0, 0},
  {&cd_S20987C5,    ABISELECT(56,32), //bcp->offset
    43, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    83, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20987C18,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(264,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
    28, //immediately_derived
  0, 0},
  {&cd_S20987C5,    ABISELECT(264,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20987C4,    ABISELECT(264,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20987C12,    ABISELECT(264,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(288,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S20987C5,    ABISELECT(288,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //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_S20987C20,    ABISELECT(288,176), //bcp->offset
    110, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    85, //bcp->index_in_construction_vtbl_array
    126, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    34, //immediately_derived
  0, 1},
  {&cd_S20987C19,    ABISELECT(264,160), //bcp->offset
    97, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    84, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    35, //immediately_derived
  0, 1},
  {&cd_S20987C17,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S9073C22_nt,    ABISELECT(72,40), //bcp->offset
    50, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    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
    -1, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(312,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20987C3,    ABISELECT(312,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    137, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(328,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20987C5,    ABISELECT(328,200), //bcp->offset
    131, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    87, //bcp->index_in_construction_vtbl_array
    140, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S20987C18,    ABISELECT(312,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    136, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(340,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
    44, //immediately_derived
  0, 0},
  {&cd_S20987C23,    ABISELECT(312,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    135, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S20987C22,    ABISELECT(312,192), //bcp->offset
    122, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    86, //bcp->index_in_construction_vtbl_array
    134, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    46, //immediately_derived
  0, 1},
  {&cd_S20987C15,    ABISELECT(40,24), //bcp->offset
    28, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    81, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(352,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
    48, //immediately_derived
  0, 0},
  {&cd_S20987C5,    ABISELECT(352,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //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
    49, //immediately_derived
  0, 0},
  {&cd_S20987C4,    ABISELECT(352,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //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
    50, //immediately_derived
  0, 0},
  {&cd_S20987C12,    ABISELECT(352,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    152, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S20987C24,    ABISELECT(352,216), //bcp->offset
    138, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    88, //bcp->index_in_construction_vtbl_array
    151, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    52, //immediately_derived
  0, 1},
  {&cd_S20987C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4677C37,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S20987C5,    ABISELECT(96,52), //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
    38, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S20987C4,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S20987C12,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S20987C24,    ABISELECT(96,52), //bcp->offset
    54, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    89, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20987C1[];
extern void ABISELECT(_ZTv0_n24_N8S20987C1D1Ev,_ZTv0_n12_N8S20987C1D1Ev)();
extern void _ZN8S20987C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C1D0Ev,_ZTv0_n12_N8S20987C1D0Ev)();
extern void _ZN8S20987C1D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C1D1Ev,_ZTv0_n12_N8S20987C1D1Ev)();
extern void ABISELECT(_ZThn24_N8S20987C1D1Ev,_ZThn16_N8S20987C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C1D0Ev,_ZTv0_n12_N8S20987C1D0Ev)();
extern void ABISELECT(_ZThn24_N8S20987C1D0Ev,_ZThn16_N8S20987C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C1D1Ev,_ZTv0_n12_N8S20987C1D1Ev)();
extern void ABISELECT(_ZThn40_N8S20987C1D1Ev,_ZThn24_N8S20987C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C1D0Ev,_ZTv0_n12_N8S20987C1D0Ev)();
extern void ABISELECT(_ZThn40_N8S20987C1D0Ev,_ZThn24_N8S20987C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C1D1Ev,_ZTv0_n12_N8S20987C1D1Ev)();
extern void ABISELECT(_ZThn56_N8S20987C1D1Ev,_ZThn32_N8S20987C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C1D0Ev,_ZTv0_n12_N8S20987C1D0Ev)();
extern void ABISELECT(_ZThn56_N8S20987C1D0Ev,_ZThn32_N8S20987C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZThn72_N8S20987C1D1Ev,_ZThn40_N8S20987C1D1Ev)();
extern void ABISELECT(_ZThn72_N8S20987C1D0Ev,_ZThn40_N8S20987C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C1D1Ev,_ZTv0_n12_N8S20987C1D1Ev)();
extern void ABISELECT(_ZThn96_N8S20987C1D1Ev,_ZThn52_N8S20987C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C1D0Ev,_ZTv0_n12_N8S20987C1D0Ev)();
extern void ABISELECT(_ZThn96_N8S20987C1D0Ev,_ZThn52_N8S20987C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C1D1Ev,_ZTv0_n12_N8S20987C1D1Ev)();
extern void ABISELECT(_ZThn184_N8S20987C1D1Ev,_ZThn112_N8S20987C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C1D0Ev,_ZTv0_n12_N8S20987C1D0Ev)();
extern void ABISELECT(_ZThn184_N8S20987C1D0Ev,_ZThn112_N8S20987C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C1D1Ev,_ZTv0_n12_N8S20987C1D1Ev)();
extern void ABISELECT(_ZThn200_N8S20987C1D1Ev,_ZThn120_N8S20987C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C1D0Ev,_ZTv0_n12_N8S20987C1D0Ev)();
extern void ABISELECT(_ZThn200_N8S20987C1D0Ev,_ZThn120_N8S20987C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C1D1Ev,_ZTv0_n12_N8S20987C1D1Ev)();
extern void ABISELECT(_ZThn224_N8S20987C1D1Ev,_ZThn136_N8S20987C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C1D0Ev,_ZTv0_n12_N8S20987C1D0Ev)();
extern void ABISELECT(_ZThn224_N8S20987C1D0Ev,_ZThn136_N8S20987C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C1D1Ev,_ZTv0_n12_N8S20987C1D1Ev)();
extern void ABISELECT(_ZThn240_N8S20987C1D1Ev,_ZThn148_N8S20987C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C1D0Ev,_ZTv0_n12_N8S20987C1D0Ev)();
extern void ABISELECT(_ZThn240_N8S20987C1D0Ev,_ZThn148_N8S20987C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20987C1D1Ev,_ZTv0_n16_N8S20987C1D1Ev)();
extern void ABISELECT(_ZThn256_N8S20987C1D1Ev,_ZThn156_N8S20987C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20987C1D0Ev,_ZTv0_n16_N8S20987C1D0Ev)();
extern void ABISELECT(_ZThn256_N8S20987C1D0Ev,_ZThn156_N8S20987C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C1D1Ev,_ZTv0_n12_N8S20987C1D1Ev)();
extern void ABISELECT(_ZThn264_N8S20987C1D1Ev,_ZThn160_N8S20987C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C1D0Ev,_ZTv0_n12_N8S20987C1D0Ev)();
extern void ABISELECT(_ZThn264_N8S20987C1D0Ev,_ZThn160_N8S20987C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C1D1Ev,_ZTv0_n12_N8S20987C1D1Ev)();
extern void ABISELECT(_ZThn288_N8S20987C1D1Ev,_ZThn176_N8S20987C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C1D0Ev,_ZTv0_n12_N8S20987C1D0Ev)();
extern void ABISELECT(_ZThn288_N8S20987C1D0Ev,_ZThn176_N8S20987C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C1D1Ev,_ZTv0_n12_N8S20987C1D1Ev)();
extern void ABISELECT(_ZThn312_N8S20987C1D1Ev,_ZThn192_N8S20987C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C1D0Ev,_ZTv0_n12_N8S20987C1D0Ev)();
extern void ABISELECT(_ZThn312_N8S20987C1D0Ev,_ZThn192_N8S20987C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C1D1Ev,_ZTv0_n12_N8S20987C1D1Ev)();
extern void ABISELECT(_ZThn328_N8S20987C1D1Ev,_ZThn200_N8S20987C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C1D0Ev,_ZTv0_n12_N8S20987C1D0Ev)();
extern void ABISELECT(_ZThn328_N8S20987C1D0Ev,_ZThn200_N8S20987C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C1D1Ev,_ZTv0_n12_N8S20987C1D1Ev)();
extern void ABISELECT(_ZThn352_N8S20987C1D1Ev,_ZThn216_N8S20987C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C1D0Ev,_ZTv0_n12_N8S20987C1D0Ev)();
extern void ABISELECT(_ZThn352_N8S20987C1D0Ev,_ZThn216_N8S20987C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20987C1[] = {
  ABISELECT(352,216),
  ABISELECT(312,192),
  ABISELECT(184,112),
  ABISELECT(288,176),
  ABISELECT(264,160),
  0,
  ABISELECT(256,156),
  ABISELECT(240,148),
  ABISELECT(240,148),
  ABISELECT(224,136),
  ABISELECT(184,112),
  ABISELECT(216,132),
  ABISELECT(184,112),
  ABISELECT(200,120),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C1D1Ev,_ZTv0_n12_N8S20987C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C1D0Ev,_ZTv0_n12_N8S20987C1D0Ev),
  ABISELECT(160,96),
  ABISELECT(192,116),
  ABISELECT(160,96),
  ABISELECT(176,104),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20987C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C1D1Ev,_ZTv0_n12_N8S20987C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C1D0Ev,_ZTv0_n12_N8S20987C1D0Ev),
  ABISELECT(272,168),
  ABISELECT(216,132),
  ABISELECT(144,88),
  ABISELECT(144,88),
  ABISELECT(248,152),
  ABISELECT(224,136),
  ABISELECT(-40,-24),
  ABISELECT(176,108),
  ABISELECT(144,88),
  ABISELECT(160,96),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20987C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C1D1Ev,_ZTv0_n12_N8S20987C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C1D0Ev,_ZTv0_n12_N8S20987C1D0Ev),
  ABISELECT(160,100),
  ABISELECT(128,80),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S20987C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C1D1Ev,_ZTv0_n12_N8S20987C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C1D0Ev,_ZTv0_n12_N8S20987C1D0Ev),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S20987C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N8S20987C1D1Ev,_ZThn40_N8S20987C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N8S20987C1D0Ev,_ZThn40_N8S20987C1D0Ev),
  ABISELECT(120,80),
  ABISELECT(88,60),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S20987C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C1D1Ev,_ZTv0_n12_N8S20987C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C1D0Ev,_ZTv0_n12_N8S20987C1D0Ev),
  0,
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  ABISELECT(-184,-112),
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI8S20987C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C1D1Ev,_ZTv0_n12_N8S20987C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C1D0Ev,_ZTv0_n12_N8S20987C1D0Ev),
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-200,-120),
  ABISELECT(-200,-120),
  (VTBL_ENTRY)&(_ZTI8S20987C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C1D1Ev,_ZTv0_n12_N8S20987C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C1D0Ev,_ZTv0_n12_N8S20987C1D0Ev),
  ABISELECT(-8,-4),
  ABISELECT(-40,-24),
  ABISELECT(-224,-136),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI8S20987C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C1D1Ev,_ZTv0_n12_N8S20987C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C1D0Ev,_ZTv0_n12_N8S20987C1D0Ev),
  0,
  ABISELECT(-56,-36),
  ABISELECT(-240,-148),
  ABISELECT(-240,-148),
  (VTBL_ENTRY)&(_ZTI8S20987C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C1D1Ev,_ZTv0_n12_N8S20987C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C1D0Ev,_ZTv0_n12_N8S20987C1D0Ev),
  ABISELECT(-256,-156),
  ABISELECT(-40,-24),
  ABISELECT(-256,-156),
  (VTBL_ENTRY)&(_ZTI8S20987C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20987C1D1Ev,_ZTv0_n16_N8S20987C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20987C1D0Ev,_ZTv0_n16_N8S20987C1D0Ev),
  ABISELECT(-264,-160),
  ABISELECT(-8,-4),
  ABISELECT(-64,-40),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(24,16),
  ABISELECT(-48,-28),
  ABISELECT(-80,-48),
  ABISELECT(-264,-160),
  ABISELECT(-264,-160),
  (VTBL_ENTRY)&(_ZTI8S20987C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C1D1Ev,_ZTv0_n12_N8S20987C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C1D0Ev,_ZTv0_n12_N8S20987C1D0Ev),
  ABISELECT(-288,-176),
  ABISELECT(-32,-20),
  ABISELECT(-88,-56),
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  ABISELECT(-72,-44),
  ABISELECT(-104,-64),
  ABISELECT(-288,-176),
  ABISELECT(-288,-176),
  (VTBL_ENTRY)&(_ZTI8S20987C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C1D1Ev,_ZTv0_n12_N8S20987C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C1D0Ev,_ZTv0_n12_N8S20987C1D0Ev),
  ABISELECT(-312,-192),
  ABISELECT(-96,-60),
  ABISELECT(-128,-80),
  ABISELECT(-112,-72),
  ABISELECT(-312,-192),
  ABISELECT(-312,-192),
  (VTBL_ENTRY)&(_ZTI8S20987C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C1D1Ev,_ZTv0_n12_N8S20987C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C1D0Ev,_ZTv0_n12_N8S20987C1D0Ev),
  ABISELECT(-112,-68),
  ABISELECT(-144,-88),
  ABISELECT(-328,-200),
  ABISELECT(-328,-200),
  (VTBL_ENTRY)&(_ZTI8S20987C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C1D1Ev,_ZTv0_n12_N8S20987C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C1D0Ev,_ZTv0_n12_N8S20987C1D0Ev),
  ABISELECT(-136,-84),
  ABISELECT(-168,-104),
  ABISELECT(-352,-216),
  ABISELECT(-352,-216),
  (VTBL_ENTRY)&(_ZTI8S20987C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C1D1Ev,_ZTv0_n12_N8S20987C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C1D0Ev,_ZTv0_n12_N8S20987C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S20987C1[];
extern void ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev)();
extern void _ZN8S20987C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev)();
extern void _ZN8S20987C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C9__8S20987C1[] = {
  ABISELECT(352,216),
  ABISELECT(312,192),
  ABISELECT(184,112),
  ABISELECT(288,176),
  ABISELECT(264,160),
  0,
  ABISELECT(256,156),
  ABISELECT(240,148),
  ABISELECT(240,148),
  ABISELECT(224,136),
  ABISELECT(184,112),
  ABISELECT(216,132),
  ABISELECT(184,112),
  ABISELECT(200,120),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C10D1Ev,_ZTv0_n12_N9S20987C10D1Ev)();
extern void _ZN9S20987C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C10D0Ev,_ZTv0_n12_N9S20987C10D0Ev)();
extern void _ZN9S20987C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C108S20987C9__8S20987C1[] = {
  ABISELECT(224,136),
  ABISELECT(184,112),
  ABISELECT(216,132),
  ABISELECT(184,112),
  ABISELECT(200,120),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C10D1Ev,_ZTv0_n12_N9S20987C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C10D0Ev,_ZTv0_n12_N9S20987C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C11D1Ev,_ZTv0_n12_N9S20987C11D1Ev)();
extern void _ZN9S20987C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C11D0Ev,_ZTv0_n12_N9S20987C11D0Ev)();
extern void _ZN9S20987C11D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C119S20987C108S20987C9__8S20987C1[] = {
  ABISELECT(184,112),
  ABISELECT(216,132),
  ABISELECT(184,112),
  ABISELECT(200,120),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C11D1Ev,_ZTv0_n12_N9S20987C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C11D0Ev,_ZTv0_n12_N9S20987C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev)();
extern void _ZN8S20987C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev)();
extern void _ZN8S20987C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C29S20987C119S20987C108S20987C9__A1__8S20987C1[] = {
  ABISELECT(184,112),
  ABISELECT(216,132),
  ABISELECT(184,112),
  ABISELECT(200,120),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev)();
extern void ABISELECT(_ZThn184_N8S20987C2D1Ev,_ZThn112_N8S20987C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev)();
extern void ABISELECT(_ZThn184_N8S20987C2D0Ev,_ZThn112_N8S20987C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C3__8S20987C29S20987C119S20987C108S20987C9__A1__8S20987C1[] = {
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  ABISELECT(-184,-112),
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev)();
extern void ABISELECT(_ZThn200_N8S20987C2D1Ev,_ZThn120_N8S20987C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev)();
extern void ABISELECT(_ZThn200_N8S20987C2D0Ev,_ZThn120_N8S20987C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C29S20987C119S20987C108S20987C9__A1__8S20987C1[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-200,-120),
  ABISELECT(-200,-120),
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C11D1Ev,_ZTv0_n12_N9S20987C11D1Ev)();
extern void ABISELECT(_ZThn184_N9S20987C11D1Ev,_ZThn112_N9S20987C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C11D0Ev,_ZTv0_n12_N9S20987C11D0Ev)();
extern void ABISELECT(_ZThn184_N9S20987C11D0Ev,_ZThn112_N9S20987C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C3__9S20987C119S20987C108S20987C9__8S20987C1[] = {
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  ABISELECT(-184,-112),
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI9S20987C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C11D1Ev,_ZTv0_n12_N9S20987C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C11D0Ev,_ZTv0_n12_N9S20987C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C11D1Ev,_ZTv0_n12_N9S20987C11D1Ev)();
extern void ABISELECT(_ZThn200_N9S20987C11D1Ev,_ZThn120_N9S20987C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C11D0Ev,_ZTv0_n12_N9S20987C11D0Ev)();
extern void ABISELECT(_ZThn200_N9S20987C11D0Ev,_ZThn120_N9S20987C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C119S20987C108S20987C9__8S20987C1[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-200,-120),
  ABISELECT(-200,-120),
  (VTBL_ENTRY)&(_ZTI9S20987C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C11D1Ev,_ZTv0_n12_N9S20987C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C11D0Ev,_ZTv0_n12_N9S20987C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C10D1Ev,_ZTv0_n12_N9S20987C10D1Ev)();
extern void ABISELECT(_ZThn200_N9S20987C10D1Ev,_ZThn120_N9S20987C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C10D0Ev,_ZTv0_n12_N9S20987C10D0Ev)();
extern void ABISELECT(_ZThn200_N9S20987C10D0Ev,_ZThn120_N9S20987C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C108S20987C9__8S20987C1[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-200,-120),
  ABISELECT(-200,-120),
  (VTBL_ENTRY)&(_ZTI9S20987C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C10D1Ev,_ZTv0_n12_N9S20987C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C10D0Ev,_ZTv0_n12_N9S20987C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C10D1Ev,_ZTv0_n12_N9S20987C10D1Ev)();
extern void ABISELECT(_ZThn184_N9S20987C10D1Ev,_ZThn112_N9S20987C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C10D0Ev,_ZTv0_n12_N9S20987C10D0Ev)();
extern void ABISELECT(_ZThn184_N9S20987C10D0Ev,_ZThn112_N9S20987C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C3__9S20987C108S20987C9__8S20987C1[] = {
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  ABISELECT(-184,-112),
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI9S20987C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C10D1Ev,_ZTv0_n12_N9S20987C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C10D0Ev,_ZTv0_n12_N9S20987C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C10D1Ev,_ZTv0_n12_N9S20987C10D1Ev)();
extern void ABISELECT(_ZThn224_N9S20987C10D1Ev,_ZThn136_N9S20987C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C10D0Ev,_ZTv0_n12_N9S20987C10D0Ev)();
extern void ABISELECT(_ZThn224_N9S20987C10D0Ev,_ZThn136_N9S20987C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C12__9S20987C108S20987C9__8S20987C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-40,-24),
  ABISELECT(-224,-136),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI9S20987C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C10D1Ev,_ZTv0_n12_N9S20987C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C10D0Ev,_ZTv0_n12_N9S20987C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev)();
extern void _ZN8S20987C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev)();
extern void _ZN8S20987C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C28S20987C9__A2__8S20987C1[] = {
  ABISELECT(160,96),
  ABISELECT(192,116),
  ABISELECT(160,96),
  ABISELECT(176,104),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S20987C2D1Ev,_ZThn96_N8S20987C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S20987C2D0Ev,_ZThn96_N8S20987C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C3__8S20987C28S20987C9__A2__8S20987C1[] = {
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  ABISELECT(-160,-96),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev)();
extern void ABISELECT(_ZThn176_N8S20987C2D1Ev,_ZThn104_N8S20987C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev)();
extern void ABISELECT(_ZThn176_N8S20987C2D0Ev,_ZThn104_N8S20987C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C28S20987C9__A2__8S20987C1[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev)();
extern void _ZN9S20987C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev)();
extern void _ZN9S20987C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C158S20987C9__8S20987C1[] = {
  ABISELECT(272,168),
  ABISELECT(216,132),
  ABISELECT(144,88),
  ABISELECT(144,88),
  ABISELECT(248,152),
  ABISELECT(224,136),
  ABISELECT(-40,-24),
  ABISELECT(176,108),
  ABISELECT(144,88),
  ABISELECT(160,96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev)();
extern void _ZN9S20987C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev)();
extern void _ZN9S20987C17D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C179S20987C158S20987C9__8S20987C1[] = {
  ABISELECT(216,132),
  ABISELECT(144,88),
  ABISELECT(144,88),
  ABISELECT(248,152),
  ABISELECT(224,136),
  ABISELECT(-40,-24),
  ABISELECT(176,108),
  ABISELECT(144,88),
  ABISELECT(160,96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev)();
extern void _ZN9S20987C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev)();
extern void _ZN9S20987C18D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C189S20987C179S20987C158S20987C9__8S20987C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(176,108),
  ABISELECT(144,88),
  ABISELECT(160,96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void _ZN8S20987C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void _ZN8S20987C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C39S20987C189S20987C179S20987C158S20987C9__A1__8S20987C1[] = {
  ABISELECT(176,108),
  ABISELECT(144,88),
  ABISELECT(160,96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void ABISELECT(_ZThn160_N8S20987C3D1Ev,_ZThn96_N8S20987C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void ABISELECT(_ZThn160_N8S20987C3D0Ev,_ZThn96_N8S20987C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C39S20987C189S20987C179S20987C158S20987C9__A1__8S20987C1[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-160,-96),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void ABISELECT(_ZThn144_N8S20987C3D1Ev,_ZThn88_N8S20987C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void ABISELECT(_ZThn144_N8S20987C3D0Ev,_ZThn88_N8S20987C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C39S20987C189S20987C179S20987C158S20987C9__A1__8S20987C1[] = {
  ABISELECT(-144,-88),
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C59S20987C189S20987C179S20987C158S20987C9__A2__8S20987C1[] = {
  ABISELECT(160,100),
  ABISELECT(128,80),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S20987C5D1Ev,_ZThn80_N8S20987C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S20987C5D0Ev,_ZThn80_N8S20987C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C59S20987C189S20987C179S20987C158S20987C9__A2__8S20987C1[] = {
  ABISELECT(-128,-80),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev)();
extern void ABISELECT(_ZThn144_N9S20987C18D1Ev,_ZThn88_N9S20987C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev)();
extern void ABISELECT(_ZThn144_N9S20987C18D0Ev,_ZThn88_N9S20987C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20987C189S20987C179S20987C158S20987C9__8S20987C1[] = {
  ABISELECT(-144,-88),
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev)();
extern void ABISELECT(_ZThn160_N9S20987C18D1Ev,_ZThn96_N9S20987C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev)();
extern void ABISELECT(_ZThn160_N9S20987C18D0Ev,_ZThn96_N9S20987C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C189S20987C179S20987C158S20987C9__8S20987C1[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-160,-96),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev)();
extern void ABISELECT(_ZThn16_N9S20987C18D1Ev,_ZThn8_N9S20987C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev)();
extern void ABISELECT(_ZThn16_N9S20987C18D0Ev,_ZThn8_N9S20987C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C5__A1__9S20987C189S20987C179S20987C158S20987C9__8S20987C1[] = {
  ABISELECT(160,100),
  ABISELECT(128,80),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev)();
extern void ABISELECT(_ZThn144_N9S20987C17D1Ev,_ZThn88_N9S20987C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev)();
extern void ABISELECT(_ZThn144_N9S20987C17D0Ev,_ZThn88_N9S20987C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C2__9S20987C179S20987C158S20987C9__8S20987C1[] = {
  0,
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  ABISELECT(-144,-88),
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI9S20987C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev)();
extern void ABISELECT(_ZThn160_N9S20987C17D1Ev,_ZThn96_N9S20987C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev)();
extern void ABISELECT(_ZThn160_N9S20987C17D0Ev,_ZThn96_N9S20987C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C179S20987C158S20987C9__8S20987C1[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-160,-96),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S20987C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20987C17D1Ev,_ZThn8_N9S20987C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev)();
extern void ABISELECT(_ZThn16_N9S20987C17D0Ev,_ZThn8_N9S20987C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C59S20987C18__A1__9S20987C179S20987C158S20987C9__8S20987C1[] = {
  ABISELECT(160,100),
  ABISELECT(128,80),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20987C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev)();
extern void ABISELECT(_ZThn224_N9S20987C17D1Ev,_ZThn136_N9S20987C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev)();
extern void ABISELECT(_ZThn224_N9S20987C17D0Ev,_ZThn136_N9S20987C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C19__9S20987C179S20987C158S20987C9__8S20987C1[] = {
  ABISELECT(-264,-160),
  ABISELECT(-8,-4),
  ABISELECT(-64,-40),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(24,16),
  ABISELECT(-48,-28),
  ABISELECT(-80,-48),
  ABISELECT(-224,-136),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI9S20987C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev)();
extern void ABISELECT(_ZThn248_N9S20987C17D1Ev,_ZThn152_N9S20987C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev)();
extern void ABISELECT(_ZThn248_N9S20987C17D0Ev,_ZThn152_N9S20987C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C20__9S20987C179S20987C158S20987C9__8S20987C1[] = {
  ABISELECT(-288,-176),
  ABISELECT(-32,-20),
  ABISELECT(-88,-56),
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  ABISELECT(-72,-44),
  ABISELECT(-104,-64),
  ABISELECT(-248,-152),
  ABISELECT(-248,-152),
  (VTBL_ENTRY)&(_ZTI9S20987C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20987C17D1Ev,_ZTv0_n16_N9S20987C17D1Ev)();
extern void ABISELECT(_ZThn216_N9S20987C17D1Ev,_ZThn132_N9S20987C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20987C17D0Ev,_ZTv0_n16_N9S20987C17D0Ev)();
extern void ABISELECT(_ZThn216_N9S20987C17D0Ev,_ZThn132_N9S20987C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C16__9S20987C179S20987C158S20987C9__8S20987C1[] = {
  ABISELECT(-216,-132),
  ABISELECT(-40,-24),
  ABISELECT(-216,-132),
  (VTBL_ENTRY)&(_ZTI9S20987C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C17D1Ev,_ZTv0_n16_N9S20987C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C17D0Ev,_ZTv0_n16_N9S20987C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20987C15D1Ev,_ZTv0_n16_N9S20987C15D1Ev)();
extern void ABISELECT(_ZThn216_N9S20987C15D1Ev,_ZThn132_N9S20987C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20987C15D0Ev,_ZTv0_n16_N9S20987C15D0Ev)();
extern void ABISELECT(_ZThn216_N9S20987C15D0Ev,_ZThn132_N9S20987C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C16__9S20987C158S20987C9__8S20987C1[] = {
  ABISELECT(-216,-132),
  ABISELECT(-40,-24),
  ABISELECT(-216,-132),
  (VTBL_ENTRY)&(_ZTI9S20987C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C15D1Ev,_ZTv0_n16_N9S20987C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C15D0Ev,_ZTv0_n16_N9S20987C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev)();
extern void ABISELECT(_ZThn144_N9S20987C15D1Ev,_ZThn88_N9S20987C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev)();
extern void ABISELECT(_ZThn144_N9S20987C15D0Ev,_ZThn88_N9S20987C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C2__9S20987C158S20987C9__8S20987C1[] = {
  0,
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  ABISELECT(-144,-88),
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI9S20987C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev)();
extern void ABISELECT(_ZThn160_N9S20987C15D1Ev,_ZThn96_N9S20987C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev)();
extern void ABISELECT(_ZThn160_N9S20987C15D0Ev,_ZThn96_N9S20987C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C158S20987C9__8S20987C1[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-160,-96),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S20987C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S20987C15D1Ev,_ZThn8_N9S20987C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev)();
extern void ABISELECT(_ZThn16_N9S20987C15D0Ev,_ZThn8_N9S20987C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C59S20987C189S20987C17__A1__9S20987C158S20987C9__8S20987C1[] = {
  ABISELECT(160,100),
  ABISELECT(128,80),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20987C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev)();
extern void ABISELECT(_ZThn224_N9S20987C15D1Ev,_ZThn136_N9S20987C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev)();
extern void ABISELECT(_ZThn224_N9S20987C15D0Ev,_ZThn136_N9S20987C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C19__9S20987C158S20987C9__8S20987C1[] = {
  ABISELECT(-264,-160),
  ABISELECT(-8,-4),
  ABISELECT(-64,-40),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(24,16),
  ABISELECT(-48,-28),
  ABISELECT(-80,-48),
  ABISELECT(-224,-136),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI9S20987C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev)();
extern void ABISELECT(_ZThn248_N9S20987C15D1Ev,_ZThn152_N9S20987C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev)();
extern void ABISELECT(_ZThn248_N9S20987C15D0Ev,_ZThn152_N9S20987C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C20__9S20987C158S20987C9__8S20987C1[] = {
  ABISELECT(-288,-176),
  ABISELECT(-32,-20),
  ABISELECT(-88,-56),
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  ABISELECT(-72,-44),
  ABISELECT(-104,-64),
  ABISELECT(-248,-152),
  ABISELECT(-248,-152),
  (VTBL_ENTRY)&(_ZTI9S20987C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev)();
extern void ABISELECT(_ZThn272_N9S20987C15D1Ev,_ZThn168_N9S20987C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev)();
extern void ABISELECT(_ZThn272_N9S20987C15D0Ev,_ZThn168_N9S20987C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C22__9S20987C158S20987C9__8S20987C1[] = {
  ABISELECT(-312,-192),
  ABISELECT(-96,-60),
  ABISELECT(-128,-80),
  ABISELECT(-112,-72),
  ABISELECT(-272,-168),
  ABISELECT(-272,-168),
  (VTBL_ENTRY)&(_ZTI9S20987C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev)();
extern void ABISELECT(_ZThn288_N9S20987C15D1Ev,_ZThn176_N9S20987C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev)();
extern void ABISELECT(_ZThn288_N9S20987C15D0Ev,_ZThn176_N9S20987C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C59S20987C189S20987C239S20987C22__A4__9S20987C158S20987C9__8S20987C1[] = {
  ABISELECT(-112,-68),
  ABISELECT(-144,-88),
  ABISELECT(-288,-176),
  ABISELECT(-288,-176),
  (VTBL_ENTRY)&(_ZTI9S20987C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev)();
extern void ABISELECT(_ZThn200_N8S20987C9D1Ev,_ZThn120_N8S20987C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev)();
extern void ABISELECT(_ZThn200_N8S20987C9D0Ev,_ZThn120_N8S20987C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C9__8S20987C1[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-200,-120),
  ABISELECT(-200,-120),
  (VTBL_ENTRY)&(_ZTI8S20987C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev)();
extern void ABISELECT(_ZThn184_N8S20987C9D1Ev,_ZThn112_N8S20987C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev)();
extern void ABISELECT(_ZThn184_N8S20987C9D0Ev,_ZThn112_N8S20987C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C2__A2__8S20987C9__8S20987C1[] = {
  0,
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  ABISELECT(-184,-112),
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI8S20987C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev)();
extern void ABISELECT(_ZThn224_N8S20987C9D1Ev,_ZThn136_N8S20987C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev)();
extern void ABISELECT(_ZThn224_N8S20987C9D0Ev,_ZThn136_N8S20987C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C12__8S20987C9__8S20987C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-40,-24),
  ABISELECT(-224,-136),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI8S20987C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev)();
extern void ABISELECT(_ZThn24_N8S20987C9D1Ev,_ZThn16_N8S20987C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev)();
extern void ABISELECT(_ZThn24_N8S20987C9D0Ev,_ZThn16_N8S20987C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C2__A__8S20987C9__8S20987C1[] = {
  ABISELECT(160,96),
  ABISELECT(192,116),
  ABISELECT(160,96),
  ABISELECT(176,104),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20987C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev)();
extern void ABISELECT(_ZThn240_N8S20987C9D1Ev,_ZThn148_N8S20987C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev)();
extern void ABISELECT(_ZThn240_N8S20987C9D0Ev,_ZThn148_N8S20987C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C13__8S20987C9__8S20987C1[] = {
  0,
  ABISELECT(-56,-36),
  ABISELECT(-240,-148),
  ABISELECT(-240,-148),
  (VTBL_ENTRY)&(_ZTI8S20987C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev)();
extern void ABISELECT(_ZThn40_N8S20987C9D1Ev,_ZThn24_N8S20987C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev)();
extern void ABISELECT(_ZThn40_N8S20987C9D0Ev,_ZThn24_N8S20987C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C15__8S20987C9__8S20987C1[] = {
  ABISELECT(272,168),
  ABISELECT(216,132),
  ABISELECT(144,88),
  ABISELECT(144,88),
  ABISELECT(248,152),
  ABISELECT(224,136),
  ABISELECT(-40,-24),
  ABISELECT(176,108),
  ABISELECT(144,88),
  ABISELECT(160,96),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20987C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20987C9D1Ev,_ZTv0_n16_N8S20987C9D1Ev)();
extern void ABISELECT(_ZThn256_N8S20987C9D1Ev,_ZThn156_N8S20987C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20987C9D0Ev,_ZTv0_n16_N8S20987C9D0Ev)();
extern void ABISELECT(_ZThn256_N8S20987C9D0Ev,_ZThn156_N8S20987C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C16__8S20987C9__8S20987C1[] = {
  ABISELECT(-256,-156),
  ABISELECT(-40,-24),
  ABISELECT(-256,-156),
  (VTBL_ENTRY)&(_ZTI8S20987C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20987C9D1Ev,_ZTv0_n16_N8S20987C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20987C9D0Ev,_ZTv0_n16_N8S20987C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev)();
extern void ABISELECT(_ZThn56_N8S20987C9D1Ev,_ZThn32_N8S20987C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev)();
extern void ABISELECT(_ZThn56_N8S20987C9D0Ev,_ZThn32_N8S20987C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C59S20987C189S20987C179S20987C15__A2__8S20987C9__8S20987C1[] = {
  ABISELECT(160,100),
  ABISELECT(128,80),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S20987C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev)();
extern void ABISELECT(_ZThn264_N8S20987C9D1Ev,_ZThn160_N8S20987C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev)();
extern void ABISELECT(_ZThn264_N8S20987C9D0Ev,_ZThn160_N8S20987C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C19__8S20987C9__8S20987C1[] = {
  ABISELECT(-264,-160),
  ABISELECT(-8,-4),
  ABISELECT(-64,-40),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(24,16),
  ABISELECT(-48,-28),
  ABISELECT(-80,-48),
  ABISELECT(-264,-160),
  ABISELECT(-264,-160),
  (VTBL_ENTRY)&(_ZTI8S20987C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev)();
extern void ABISELECT(_ZThn288_N8S20987C9D1Ev,_ZThn176_N8S20987C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev)();
extern void ABISELECT(_ZThn288_N8S20987C9D0Ev,_ZThn176_N8S20987C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C20__8S20987C9__8S20987C1[] = {
  ABISELECT(-288,-176),
  ABISELECT(-32,-20),
  ABISELECT(-88,-56),
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  ABISELECT(-72,-44),
  ABISELECT(-104,-64),
  ABISELECT(-288,-176),
  ABISELECT(-288,-176),
  (VTBL_ENTRY)&(_ZTI8S20987C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev)();
extern void ABISELECT(_ZThn312_N8S20987C9D1Ev,_ZThn192_N8S20987C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev)();
extern void ABISELECT(_ZThn312_N8S20987C9D0Ev,_ZThn192_N8S20987C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C22__8S20987C9__8S20987C1[] = {
  ABISELECT(-312,-192),
  ABISELECT(-96,-60),
  ABISELECT(-128,-80),
  ABISELECT(-112,-72),
  ABISELECT(-312,-192),
  ABISELECT(-312,-192),
  (VTBL_ENTRY)&(_ZTI8S20987C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev)();
extern void ABISELECT(_ZThn328_N8S20987C9D1Ev,_ZThn200_N8S20987C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev)();
extern void ABISELECT(_ZThn328_N8S20987C9D0Ev,_ZThn200_N8S20987C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C59S20987C189S20987C239S20987C22__A5__8S20987C9__8S20987C1[] = {
  ABISELECT(-112,-68),
  ABISELECT(-144,-88),
  ABISELECT(-328,-200),
  ABISELECT(-328,-200),
  (VTBL_ENTRY)&(_ZTI8S20987C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev)();
extern void ABISELECT(_ZThn352_N8S20987C9D1Ev,_ZThn216_N8S20987C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev)();
extern void ABISELECT(_ZThn352_N8S20987C9D0Ev,_ZThn216_N8S20987C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C24__8S20987C9__8S20987C1[] = {
  ABISELECT(-136,-84),
  ABISELECT(-168,-104),
  ABISELECT(-352,-216),
  ABISELECT(-352,-216),
  (VTBL_ENTRY)&(_ZTI8S20987C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C24D1Ev,_ZTv0_n12_N9S20987C24D1Ev)();
extern void _ZN9S20987C24D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C24D0Ev,_ZTv0_n12_N9S20987C24D0Ev)();
extern void _ZN9S20987C24D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C24__A__8S20987C1[] = {
  ABISELECT(120,80),
  ABISELECT(88,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C24D1Ev,_ZTv0_n12_N9S20987C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C24D0Ev,_ZTv0_n12_N9S20987C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev)();
extern void _ZN9S20987C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev)();
extern void _ZN9S20987C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C129S20987C24__A3__8S20987C1[] = {
  ABISELECT(120,80),
  ABISELECT(88,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void _ZN8S20987C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
extern void _ZN8S20987C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C49S20987C129S20987C24__A4__8S20987C1[] = {
  ABISELECT(120,80),
  ABISELECT(88,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C58S20987C49S20987C129S20987C24__A7__8S20987C1[] = {
  ABISELECT(120,80),
  ABISELECT(88,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZThn88_N8S20987C5D1Ev,_ZThn60_N8S20987C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void ABISELECT(_ZThn88_N8S20987C5D0Ev,_ZThn60_N8S20987C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C58S20987C49S20987C129S20987C24__A7__8S20987C1[] = {
  ABISELECT(-88,-60),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void ABISELECT(_ZThn88_N8S20987C4D1Ev,_ZThn60_N8S20987C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
extern void ABISELECT(_ZThn88_N8S20987C4D0Ev,_ZThn60_N8S20987C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C49S20987C129S20987C24__A4__8S20987C1[] = {
  ABISELECT(-88,-60),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev)();
extern void ABISELECT(_ZThn88_N9S20987C12D1Ev,_ZThn60_N9S20987C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev)();
extern void ABISELECT(_ZThn88_N9S20987C12D0Ev,_ZThn60_N9S20987C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20987C129S20987C24__A3__8S20987C1[] = {
  ABISELECT(-88,-60),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI9S20987C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C24D1Ev,_ZTv0_n12_N9S20987C24D1Ev)();
extern void ABISELECT(_ZThn88_N9S20987C24D1Ev,_ZThn60_N9S20987C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C24D0Ev,_ZTv0_n12_N9S20987C24D0Ev)();
extern void ABISELECT(_ZThn88_N9S20987C24D0Ev,_ZThn60_N9S20987C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20987C24__A__8S20987C1[] = {
  ABISELECT(-88,-60),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI9S20987C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C24D1Ev,_ZTv0_n12_N9S20987C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C24D0Ev,_ZTv0_n12_N9S20987C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev)();
extern void _ZN8S20987C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev)();
extern void _ZN8S20987C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C2__8S20987C1[] = {
  0,
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20987C2D1Ev,_ZThn8_N8S20987C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S20987C2D0Ev,_ZThn8_N8S20987C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C2__8S20987C1[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20987C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void _ZN8S20987C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void _ZN8S20987C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C3__8S20987C1[] = {
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S20987C3D1Ev,_ZThn8_N8S20987C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S20987C3D0Ev,_ZThn8_N8S20987C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C3__8S20987C1[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void _ZN8S20987C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
extern void _ZN8S20987C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C1[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C58S20987C4__8S20987C1[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C58S20987C4__8S20987C1[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C4__8S20987C1[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev)();
extern void _ZN9S20987C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev)();
extern void _ZN9S20987C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C12__8S20987C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-40,-24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void _ZN8S20987C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
extern void _ZN8S20987C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C49S20987C12__A1__8S20987C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-40,-24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C58S20987C49S20987C12__A1__8S20987C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-40,-24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C58S20987C49S20987C12__A1__8S20987C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C49S20987C12__A1__8S20987C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20987C12__8S20987C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S20987C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C13D1Ev,_ZTv0_n12_N9S20987C13D1Ev)();
extern void _ZN9S20987C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C13D0Ev,_ZTv0_n12_N9S20987C13D0Ev)();
extern void _ZN9S20987C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C13__8S20987C1[] = {
  0,
  ABISELECT(-56,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C13D1Ev,_ZTv0_n12_N9S20987C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C13D0Ev,_ZTv0_n12_N9S20987C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C13D1Ev,_ZTv0_n12_N9S20987C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C13D0Ev,_ZTv0_n12_N9S20987C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20987C13__8S20987C1[] = {
  ABISELECT(56,36),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI9S20987C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C13D1Ev,_ZTv0_n12_N9S20987C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C13D0Ev,_ZTv0_n12_N9S20987C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N12S20987C14_ntD1Ev,_ZTv0_n12_N12S20987C14_ntD1Ev)();
extern void _ZN12S20987C14_ntD1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N12S20987C14_ntD0Ev,_ZTv0_n12_N12S20987C14_ntD0Ev)();
extern void _ZN12S20987C14_ntD0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S20987C14_nt__8S20987C1[] = {
  ABISELECT(-56,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S20987C14_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20987C14_ntD1Ev,_ZTv0_n12_N12S20987C14_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20987C14_ntD0Ev,_ZTv0_n12_N12S20987C14_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n24_N12S20987C14_ntD1Ev,_ZTv0_n12_N12S20987C14_ntD1Ev)();
extern void ABISELECT(_ZTv0_n24_N12S20987C14_ntD0Ev,_ZTv0_n12_N12S20987C14_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__12S20987C14_nt__8S20987C1[] = {
  ABISELECT(56,36),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI12S20987C14_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20987C14_ntD1Ev,_ZTv0_n12_N12S20987C14_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20987C14_ntD0Ev,_ZTv0_n12_N12S20987C14_ntD0Ev),
};
extern void _ZN9S20987C16D1Ev();
extern void _ZN9S20987C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20987C16__8S20987C1[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C16[0]),
  (VTBL_ENTRY)&_ZN9S20987C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20987C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev)();
extern void _ZN9S20987C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev)();
extern void _ZN9S20987C19D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C19__8S20987C1[] = {
  ABISELECT(-264,-160),
  ABISELECT(-8,-4),
  ABISELECT(-64,-40),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(24,16),
  ABISELECT(-48,-28),
  ABISELECT(-80,-48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev)();
extern void _ZN9S20987C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev)();
extern void _ZN9S20987C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C129S20987C19__A1__8S20987C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-80,-48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void _ZN8S20987C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
extern void _ZN8S20987C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C49S20987C129S20987C19__A2__8S20987C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-80,-48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C58S20987C49S20987C129S20987C19__A3__8S20987C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-80,-48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C58S20987C49S20987C129S20987C19__A3__8S20987C1[] = {
  ABISELECT(80,48),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C49S20987C129S20987C19__A2__8S20987C1[] = {
  ABISELECT(80,48),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20987C129S20987C19__A1__8S20987C1[] = {
  ABISELECT(80,48),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI9S20987C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C2__9S20987C19__8S20987C1[] = {
  0,
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  ABISELECT(80,48),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI9S20987C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev)();
extern void ABISELECT(_ZThn24_N9S20987C19D1Ev,_ZThn16_N9S20987C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev)();
extern void ABISELECT(_ZThn24_N9S20987C19D0Ev,_ZThn16_N9S20987C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C20__9S20987C19__8S20987C1[] = {
  ABISELECT(-288,-176),
  ABISELECT(-32,-20),
  ABISELECT(-88,-56),
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  ABISELECT(-72,-44),
  ABISELECT(-104,-64),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20987C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C4__A1__9S20987C19__8S20987C1[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(64,40),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI9S20987C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20987C19D1Ev,_ZTv0_n16_N9S20987C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20987C19D0Ev,_ZTv0_n16_N9S20987C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20987C16__9S20987C19__8S20987C1[] = {
  ABISELECT(8,4),
  ABISELECT(-40,-24),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S20987C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C19D1Ev,_ZTv0_n16_N9S20987C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C19D0Ev,_ZTv0_n16_N9S20987C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev)();
extern void _ZN9S20987C20D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev)();
extern void _ZN9S20987C20D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C20__8S20987C1[] = {
  ABISELECT(-288,-176),
  ABISELECT(-32,-20),
  ABISELECT(-88,-56),
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  ABISELECT(-72,-44),
  ABISELECT(-104,-64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C59S20987C20__A4__8S20987C1[] = {
  ABISELECT(-72,-44),
  ABISELECT(-104,-64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C59S20987C20__A4__8S20987C1[] = {
  ABISELECT(104,64),
  ABISELECT(104,64),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C2__9S20987C20__8S20987C1[] = {
  0,
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  ABISELECT(104,64),
  ABISELECT(104,64),
  (VTBL_ENTRY)&(_ZTI9S20987C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C20__8S20987C1[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(88,56),
  ABISELECT(88,56),
  (VTBL_ENTRY)&(_ZTI9S20987C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20987C20D1Ev,_ZTv0_n16_N9S20987C20D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20987C20D0Ev,_ZTv0_n16_N9S20987C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20987C16__9S20987C20__8S20987C1[] = {
  ABISELECT(32,20),
  ABISELECT(-40,-24),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI9S20987C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C20D1Ev,_ZTv0_n16_N9S20987C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20987C20D0Ev,_ZTv0_n16_N9S20987C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C22D1Ev,_ZTv0_n12_N9S20987C22D1Ev)();
extern void _ZN9S20987C22D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C22D0Ev,_ZTv0_n12_N9S20987C22D0Ev)();
extern void _ZN9S20987C22D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C22__8S20987C1[] = {
  ABISELECT(-312,-192),
  ABISELECT(-96,-60),
  ABISELECT(-128,-80),
  ABISELECT(-112,-72),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C22D1Ev,_ZTv0_n12_N9S20987C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C22D0Ev,_ZTv0_n12_N9S20987C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev)();
extern void _ZN9S20987C23D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev)();
extern void _ZN9S20987C23D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C239S20987C22__8S20987C1[] = {
  ABISELECT(-312,-192),
  ABISELECT(-96,-60),
  ABISELECT(-128,-80),
  ABISELECT(-112,-72),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev)();
extern void _ZN9S20987C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev)();
extern void _ZN9S20987C18D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C189S20987C239S20987C22__A1__8S20987C1[] = {
  ABISELECT(-312,-192),
  ABISELECT(-96,-60),
  ABISELECT(-128,-80),
  ABISELECT(-112,-72),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void _ZN8S20987C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
extern void _ZN8S20987C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C39S20987C189S20987C239S20987C22__A2__8S20987C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(-128,-80),
  ABISELECT(-112,-72),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C4__8S20987C39S20987C189S20987C239S20987C22__A2__8S20987C1[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(112,72),
  ABISELECT(112,72),
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C39S20987C189S20987C239S20987C22__A2__8S20987C1[] = {
  ABISELECT(128,80),
  ABISELECT(128,80),
  (VTBL_ENTRY)&(_ZTI8S20987C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C59S20987C189S20987C239S20987C22__A5__8S20987C1[] = {
  ABISELECT(-112,-68),
  ABISELECT(-144,-88),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C59S20987C189S20987C239S20987C22__A5__8S20987C1[] = {
  ABISELECT(144,88),
  ABISELECT(144,88),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20987C189S20987C239S20987C22__A1__8S20987C1[] = {
  ABISELECT(128,80),
  ABISELECT(128,80),
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C189S20987C239S20987C22__A1__8S20987C1[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(112,72),
  ABISELECT(112,72),
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev)();
extern void ABISELECT(_ZThn16_N9S20987C18D1Ev,_ZThn8_N9S20987C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev)();
extern void ABISELECT(_ZThn16_N9S20987C18D0Ev,_ZThn8_N9S20987C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C5__A1__9S20987C189S20987C239S20987C22__A1__8S20987C1[] = {
  ABISELECT(-112,-68),
  ABISELECT(-144,-88),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20987C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20987C239S20987C22__8S20987C1[] = {
  ABISELECT(128,80),
  ABISELECT(128,80),
  (VTBL_ENTRY)&(_ZTI9S20987C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C239S20987C22__8S20987C1[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(112,72),
  ABISELECT(112,72),
  (VTBL_ENTRY)&(_ZTI9S20987C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev)();
extern void ABISELECT(_ZThn16_N9S20987C23D1Ev,_ZThn8_N9S20987C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev)();
extern void ABISELECT(_ZThn16_N9S20987C23D0Ev,_ZThn8_N9S20987C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C59S20987C18__A1__9S20987C239S20987C22__8S20987C1[] = {
  ABISELECT(-112,-68),
  ABISELECT(-144,-88),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20987C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C22D1Ev,_ZTv0_n12_N9S20987C22D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C22D0Ev,_ZTv0_n12_N9S20987C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20987C22__8S20987C1[] = {
  ABISELECT(128,80),
  ABISELECT(128,80),
  (VTBL_ENTRY)&(_ZTI9S20987C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C22D1Ev,_ZTv0_n12_N9S20987C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C22D0Ev,_ZTv0_n12_N9S20987C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C22D1Ev,_ZTv0_n12_N9S20987C22D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C22D0Ev,_ZTv0_n12_N9S20987C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20987C4__9S20987C22__8S20987C1[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(112,72),
  ABISELECT(112,72),
  (VTBL_ENTRY)&(_ZTI9S20987C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C22D1Ev,_ZTv0_n12_N9S20987C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C22D0Ev,_ZTv0_n12_N9S20987C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C22D1Ev,_ZTv0_n12_N9S20987C22D1Ev)();
extern void ABISELECT(_ZThn16_N9S20987C22D1Ev,_ZThn8_N9S20987C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C22D0Ev,_ZTv0_n12_N9S20987C22D0Ev)();
extern void ABISELECT(_ZThn16_N9S20987C22D0Ev,_ZThn8_N9S20987C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C59S20987C189S20987C23__A1__9S20987C22__8S20987C1[] = {
  ABISELECT(-112,-68),
  ABISELECT(-144,-88),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20987C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C22D1Ev,_ZTv0_n12_N9S20987C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C22D0Ev,_ZTv0_n12_N9S20987C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C24D1Ev,_ZTv0_n12_N9S20987C24D1Ev)();
extern void _ZN9S20987C24D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C24D0Ev,_ZTv0_n12_N9S20987C24D0Ev)();
extern void _ZN9S20987C24D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C24__8S20987C1[] = {
  ABISELECT(-136,-84),
  ABISELECT(-168,-104),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C24D1Ev,_ZTv0_n12_N9S20987C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C24D0Ev,_ZTv0_n12_N9S20987C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev)();
extern void _ZN9S20987C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev)();
extern void _ZN9S20987C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20987C129S20987C24__A2__8S20987C1[] = {
  ABISELECT(-136,-84),
  ABISELECT(-168,-104),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20987C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void _ZN8S20987C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
extern void _ZN8S20987C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C49S20987C129S20987C24__A3__8S20987C1[] = {
  ABISELECT(-136,-84),
  ABISELECT(-168,-104),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void _ZN8S20987C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
extern void _ZN8S20987C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20987C58S20987C49S20987C129S20987C24__A6__8S20987C1[] = {
  ABISELECT(-136,-84),
  ABISELECT(-168,-104),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C58S20987C49S20987C129S20987C24__A6__8S20987C1[] = {
  ABISELECT(168,104),
  ABISELECT(168,104),
  (VTBL_ENTRY)&(_ZTI8S20987C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20987C49S20987C129S20987C24__A3__8S20987C1[] = {
  ABISELECT(168,104),
  ABISELECT(168,104),
  (VTBL_ENTRY)&(_ZTI8S20987C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20987C129S20987C24__A2__8S20987C1[] = {
  ABISELECT(168,104),
  ABISELECT(168,104),
  (VTBL_ENTRY)&(_ZTI9S20987C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20987C24D1Ev,_ZTv0_n12_N9S20987C24D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20987C24D0Ev,_ZTv0_n12_N9S20987C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20987C24__8S20987C1[] = {
  ABISELECT(168,104),
  ABISELECT(168,104),
  (VTBL_ENTRY)&(_ZTI9S20987C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C24D1Ev,_ZTv0_n12_N9S20987C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20987C24D0Ev,_ZTv0_n12_N9S20987C24D0Ev),
};
static  VTT_ENTRY vtt_S20987C1[] = {
  {&(_ZTV8S20987C1[17]),  17,145},
  {&(_tg__ZTV8S20987C9__8S20987C1[17]),  17,19},
  {&(_tg__ZTV9S20987C108S20987C9__8S20987C1[8]),  8,10},
  {&(_tg__ZTV9S20987C119S20987C108S20987C9__8S20987C1[7]),  7,9},
  {&(_tg__ZTV8S20987C29S20987C119S20987C108S20987C9__A1__8S20987C1[7]),  7,9},
  {&(_tg__ZTV8S20987C3__8S20987C29S20987C119S20987C108S20987C9__A1__8S20987C1[6]),  6,8},
  {&(_tg__ZTV8S20987C4__8S20987C29S20987C119S20987C108S20987C9__A1__8S20987C1[5]),  5,7},
  {&(_tg__ZTV8S20987C3__8S20987C29S20987C119S20987C108S20987C9__A1__8S20987C1[6]),  6,8},
  {&(_tg__ZTV8S20987C3__9S20987C119S20987C108S20987C9__8S20987C1[6]),  6,8},
  {&(_tg__ZTV8S20987C4__9S20987C119S20987C108S20987C9__8S20987C1[5]),  5,7},
  {&(_tg__ZTV8S20987C3__9S20987C119S20987C108S20987C9__8S20987C1[6]),  6,8},
  {&(_tg__ZTV8S20987C4__9S20987C108S20987C9__8S20987C1[5]),  5,7},
  {&(_tg__ZTV8S20987C3__9S20987C108S20987C9__8S20987C1[6]),  6,8},
  {&(_tg__ZTV8S20987C3__9S20987C108S20987C9__8S20987C1[6]),  6,8},
  {&(_tg__ZTV9S20987C12__9S20987C108S20987C9__8S20987C1[5]),  5,7},
  {&(_tg__ZTV8S20987C28S20987C9__A2__8S20987C1[7]),  7,9},
  {&(_tg__ZTV8S20987C3__8S20987C28S20987C9__A2__8S20987C1[6]),  6,8},
  {&(_tg__ZTV8S20987C4__8S20987C28S20987C9__A2__8S20987C1[5]),  5,7},
  {&(_tg__ZTV8S20987C3__8S20987C28S20987C9__A2__8S20987C1[6]),  6,8},
  {&(_tg__ZTV9S20987C158S20987C9__8S20987C1[13]),  13,15},
  {&(_tg__ZTV9S20987C179S20987C158S20987C9__8S20987C1[12]),  12,14},
  {&(_tg__ZTV9S20987C189S20987C179S20987C158S20987C9__8S20987C1[7]),  7,9},
  {&(_tg__ZTV8S20987C39S20987C189S20987C179S20987C158S20987C9__A1__8S20987C1[6]),  6,8},
  {&(_tg__ZTV8S20987C4__8S20987C39S20987C189S20987C179S20987C158S20987C9__A1__8S20987C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C39S20987C189S20987C179S20987C158S20987C9__A1__8S20987C1[3]),  3,5},
  {&(_tg__ZTV8S20987C59S20987C189S20987C179S20987C158S20987C9__A2__8S20987C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C59S20987C189S20987C179S20987C158S20987C9__A2__8S20987C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20987C189S20987C179S20987C158S20987C9__8S20987C1[3]),  3,5},
  {&(_tg__ZTV8S20987C4__9S20987C189S20987C179S20987C158S20987C9__8S20987C1[5]),  5,7},
  {&(_tg__ZTV8S20987C5__A1__9S20987C189S20987C179S20987C158S20987C9__8S20987C1[5]),  5,7},
  {&(_tg__ZTV8S20987C2__9S20987C179S20987C158S20987C9__8S20987C1[7]),  7,9},
  {&(_tg__ZTV8S20987C4__9S20987C179S20987C158S20987C9__8S20987C1[5]),  5,7},
  {&(_tg__ZTV8S20987C59S20987C18__A1__9S20987C179S20987C158S20987C9__8S20987C1[5]),  5,7},
  {&(_tg__ZTV9S20987C19__9S20987C179S20987C158S20987C9__8S20987C1[11]),  11,13},
  {&(_tg__ZTV9S20987C20__9S20987C179S20987C158S20987C9__8S20987C1[10]),  10,12},
  {&(_tg__ZTV8S20987C2__9S20987C179S20987C158S20987C9__8S20987C1[7]),  7,9},
  {&(_tg__ZTV8S20987C2__9S20987C179S20987C158S20987C9__8S20987C1[7]),  7,9},
  {&(_tg__ZTV9S20987C16__9S20987C179S20987C158S20987C9__8S20987C1[4]),  4,6},
  {&(_tg__ZTV9S20987C16__9S20987C158S20987C9__8S20987C1[4]),  4,6},
  {&(_tg__ZTV8S20987C2__9S20987C158S20987C9__8S20987C1[7]),  7,9},
  {&(_tg__ZTV8S20987C4__9S20987C158S20987C9__8S20987C1[5]),  5,7},
  {&(_tg__ZTV8S20987C59S20987C189S20987C17__A1__9S20987C158S20987C9__8S20987C1[5]),  5,7},
  {&(_tg__ZTV9S20987C19__9S20987C158S20987C9__8S20987C1[11]),  11,13},
  {&(_tg__ZTV9S20987C20__9S20987C158S20987C9__8S20987C1[10]),  10,12},
  {&(_tg__ZTV8S20987C2__9S20987C158S20987C9__8S20987C1[7]),  7,9},
  {&(_tg__ZTV8S20987C2__9S20987C158S20987C9__8S20987C1[7]),  7,9},
  {&(_tg__ZTV9S20987C22__9S20987C158S20987C9__8S20987C1[7]),  7,9},
  {&(_tg__ZTV8S20987C59S20987C189S20987C239S20987C22__A4__9S20987C158S20987C9__8S20987C1[5]),  5,7},
  {&(_tg__ZTV8S20987C4__8S20987C9__8S20987C1[5]),  5,7},
  {&(_tg__ZTV8S20987C2__A2__8S20987C9__8S20987C1[7]),  7,9},
  {&(_tg__ZTV8S20987C2__A2__8S20987C9__8S20987C1[7]),  7,9},
  {&(_tg__ZTV9S20987C12__8S20987C9__8S20987C1[5]),  5,7},
  {&(_tg__ZTV8S20987C2__A__8S20987C9__8S20987C1[7]),  7,9},
  {&(_tg__ZTV9S20987C13__8S20987C9__8S20987C1[5]),  5,7},
  {&(_tg__ZTV9S20987C13__8S20987C9__8S20987C1[5]),  5,7},
  {&(_tg__ZTV9S20987C15__8S20987C9__8S20987C1[13]),  13,15},
  {&(_tg__ZTV9S20987C16__8S20987C9__8S20987C1[4]),  4,6},
  {&(_tg__ZTV8S20987C59S20987C189S20987C179S20987C15__A2__8S20987C9__8S20987C1[5]),  5,7},
  {&(_tg__ZTV9S20987C19__8S20987C9__8S20987C1[11]),  11,13},
  {&(_tg__ZTV9S20987C20__8S20987C9__8S20987C1[10]),  10,12},
  {&(_tg__ZTV8S20987C2__A2__8S20987C9__8S20987C1[7]),  7,9},
  {&(_tg__ZTV9S20987C22__8S20987C9__8S20987C1[7]),  7,9},
  {&(_tg__ZTV8S20987C59S20987C189S20987C239S20987C22__A5__8S20987C9__8S20987C1[5]),  5,7},
  {&(_tg__ZTV9S20987C24__8S20987C9__8S20987C1[5]),  5,7},
  {&(_tg__ZTV9S20987C24__A__8S20987C1[5]),  5,7},
  {&(_tg__ZTV9S20987C129S20987C24__A3__8S20987C1[5]),  5,7},
  {&(_tg__ZTV8S20987C49S20987C129S20987C24__A4__8S20987C1[5]),  5,7},
  {&(_tg__ZTV8S20987C58S20987C49S20987C129S20987C24__A7__8S20987C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C58S20987C49S20987C129S20987C24__A7__8S20987C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20987C49S20987C129S20987C24__A4__8S20987C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20987C129S20987C24__A3__8S20987C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20987C24__A__8S20987C1[3]),  3,5},
  {&(_ZTV8S20987C1[68]),  68,145},
  {&(_ZTV8S20987C1[68]),  68,145},
  {&(_ZTV8S20987C1[75]),  75,145},
  {&(_ZTV8S20987C1[68]),  68,145},
  {&(_ZTV8S20987C1[82]),  82,145},
  {&(_ZTV8S20987C1[26]),  26,145},
  {&(_ZTV8S20987C1[89]),  89,145},
  {&(_ZTV8S20987C1[89]),  89,145},
  {&(_ZTV8S20987C1[41]),  41,145},
  {&(_ZTV8S20987C1[95]),  95,145},
  {&(_ZTV8S20987C1[48]),  48,145},
  {&(_ZTV8S20987C1[108]),  108,145},
  {&(_ZTV8S20987C1[120]),  120,145},
  {&(_ZTV8S20987C1[129]),  129,145},
  {&(_ZTV8S20987C1[136]),  136,145},
  {&(_ZTV8S20987C1[143]),  143,145},
  {&(_ZTV8S20987C1[59]),  59,145},
  {&(_tg__ZTV8S20987C2__8S20987C1[7]),  7,9},
  {&(_tg__ZTV8S20987C2__8S20987C1[7]),  7,9},
  {&(_tg__ZTV8S20987C4__8S20987C2__8S20987C1[5]),  5,7},
  {&(_tg__ZTV8S20987C2__8S20987C1[7]),  7,9},
  {&(_tg__ZTV8S20987C3__8S20987C1[6]),  6,8},
  {&(_tg__ZTV8S20987C4__8S20987C3__8S20987C1[5]),  5,7},
  {&(_tg__ZTV8S20987C3__8S20987C1[6]),  6,8},
  {&(_tg__ZTV8S20987C4__8S20987C1[5]),  5,7},
  {&(_tg__ZTV8S20987C58S20987C4__8S20987C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C58S20987C4__8S20987C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20987C4__8S20987C1[3]),  3,5},
  {&(_tg__ZTV9S20987C12__8S20987C1[5]),  5,7},
  {&(_tg__ZTV8S20987C49S20987C12__A1__8S20987C1[5]),  5,7},
  {&(_tg__ZTV8S20987C58S20987C49S20987C12__A1__8S20987C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C58S20987C49S20987C12__A1__8S20987C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20987C49S20987C12__A1__8S20987C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20987C12__8S20987C1[3]),  3,5},
  {&(_tg__ZTV9S20987C13__8S20987C1[5]),  5,7},
  {&(_tg__ZTV9S20987C13__8S20987C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__9S20987C13__8S20987C1[3]),  3,5},
  {&(_tg__ZTV12S20987C14_nt__8S20987C1[4]),  4,6},
  {&(_tg__ZTV10S7883C3_nt__12S20987C14_nt__8S20987C1[3]),  3,5},
  {&(_tg__ZTV9S20987C16__8S20987C1[3]),  3,5},
  {&(_tg__ZTV9S20987C19__8S20987C1[11]),  11,13},
  {&(_tg__ZTV9S20987C129S20987C19__A1__8S20987C1[5]),  5,7},
  {&(_tg__ZTV8S20987C49S20987C129S20987C19__A2__8S20987C1[5]),  5,7},
  {&(_tg__ZTV8S20987C58S20987C49S20987C129S20987C19__A3__8S20987C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C58S20987C49S20987C129S20987C19__A3__8S20987C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20987C49S20987C129S20987C19__A2__8S20987C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20987C129S20987C19__A1__8S20987C1[3]),  3,5},
  {&(_tg__ZTV8S20987C2__9S20987C19__8S20987C1[7]),  7,9},
  {&(_tg__ZTV9S20987C20__9S20987C19__8S20987C1[10]),  10,12},
  {&(_tg__ZTV8S20987C2__9S20987C19__8S20987C1[7]),  7,9},
  {&(_tg__ZTV8S20987C2__9S20987C19__8S20987C1[7]),  7,9},
  {&(_tg__ZTV8S20987C4__A1__9S20987C19__8S20987C1[5]),  5,7},
  {&(_tg__ZTV9S20987C16__9S20987C19__8S20987C1[4]),  4,6},
  {&(_tg__ZTV9S20987C20__8S20987C1[10]),  10,12},
  {&(_tg__ZTV8S20987C59S20987C20__A4__8S20987C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C59S20987C20__A4__8S20987C1[3]),  3,5},
  {&(_tg__ZTV8S20987C2__9S20987C20__8S20987C1[7]),  7,9},
  {&(_tg__ZTV8S20987C2__9S20987C20__8S20987C1[7]),  7,9},
  {&(_tg__ZTV8S20987C4__9S20987C20__8S20987C1[5]),  5,7},
  {&(_tg__ZTV8S20987C2__9S20987C20__8S20987C1[7]),  7,9},
  {&(_tg__ZTV9S20987C16__9S20987C20__8S20987C1[4]),  4,6},
  {&(_tg__ZTV9S20987C22__8S20987C1[7]),  7,9},
  {&(_tg__ZTV9S20987C239S20987C22__8S20987C1[7]),  7,9},
  {&(_tg__ZTV9S20987C189S20987C239S20987C22__A1__8S20987C1[7]),  7,9},
  {&(_tg__ZTV8S20987C39S20987C189S20987C239S20987C22__A2__8S20987C1[6]),  6,8},
  {&(_tg__ZTV8S20987C4__8S20987C39S20987C189S20987C239S20987C22__A2__8S20987C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C39S20987C189S20987C239S20987C22__A2__8S20987C1[3]),  3,5},
  {&(_tg__ZTV8S20987C59S20987C189S20987C239S20987C22__A5__8S20987C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C59S20987C189S20987C239S20987C22__A5__8S20987C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20987C189S20987C239S20987C22__A1__8S20987C1[3]),  3,5},
  {&(_tg__ZTV8S20987C4__9S20987C189S20987C239S20987C22__A1__8S20987C1[5]),  5,7},
  {&(_tg__ZTV8S20987C5__A1__9S20987C189S20987C239S20987C22__A1__8S20987C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__9S20987C239S20987C22__8S20987C1[3]),  3,5},
  {&(_tg__ZTV8S20987C4__9S20987C239S20987C22__8S20987C1[5]),  5,7},
  {&(_tg__ZTV8S20987C59S20987C18__A1__9S20987C239S20987C22__8S20987C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__9S20987C22__8S20987C1[3]),  3,5},
  {&(_tg__ZTV8S20987C4__9S20987C22__8S20987C1[5]),  5,7},
  {&(_tg__ZTV8S20987C59S20987C189S20987C23__A1__9S20987C22__8S20987C1[5]),  5,7},
  {&(_tg__ZTV9S20987C24__8S20987C1[5]),  5,7},
  {&(_tg__ZTV9S20987C129S20987C24__A2__8S20987C1[5]),  5,7},
  {&(_tg__ZTV8S20987C49S20987C129S20987C24__A3__8S20987C1[5]),  5,7},
  {&(_tg__ZTV8S20987C58S20987C49S20987C129S20987C24__A6__8S20987C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20987C58S20987C49S20987C129S20987C24__A6__8S20987C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20987C49S20987C129S20987C24__A3__8S20987C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20987C129S20987C24__A2__8S20987C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20987C24__8S20987C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20987C1[];
extern  VTBL_ENTRY _ZTV8S20987C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20987C1[];
static VTBL_ENTRY alt_thunk_names65[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C23D0Ev,_ZTv0_n12_N9S20987C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C23D0Ev,_ZThn8_N9S20987C23D0Ev),
  (VTBL_ENTRY)_ZN9S20987C23D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C23D1Ev,_ZTv0_n12_N9S20987C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C23D1Ev,_ZThn8_N9S20987C23D1Ev),
  (VTBL_ENTRY)_ZN9S20987C23D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C22D0Ev,_ZTv0_n12_N9S20987C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C22D0Ev,_ZThn8_N9S20987C22D0Ev),
  (VTBL_ENTRY)_ZN9S20987C22D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C22D1Ev,_ZTv0_n12_N9S20987C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C22D1Ev,_ZThn8_N9S20987C22D1Ev),
  (VTBL_ENTRY)_ZN9S20987C22D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C20D0Ev,_ZTv0_n12_N9S20987C20D0Ev), // 
  (VTBL_ENTRY)_ZN9S20987C20D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C20D1Ev,_ZTv0_n12_N9S20987C20D1Ev), // 
  (VTBL_ENTRY)_ZN9S20987C20D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C19D0Ev,_ZTv0_n12_N9S20987C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20987C19D0Ev,_ZThn16_N9S20987C19D0Ev),
  (VTBL_ENTRY)_ZN9S20987C19D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C19D1Ev,_ZTv0_n12_N9S20987C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20987C19D1Ev,_ZThn16_N9S20987C19D1Ev),
  (VTBL_ENTRY)_ZN9S20987C19D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N12S20987C14_ntD0Ev,_ZTv0_n12_N12S20987C14_ntD0Ev), // 
  (VTBL_ENTRY)_ZN12S20987C14_ntD0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N12S20987C14_ntD1Ev,_ZTv0_n12_N12S20987C14_ntD1Ev), // 
  (VTBL_ENTRY)_ZN12S20987C14_ntD1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C13D0Ev,_ZTv0_n12_N9S20987C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S20987C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C13D1Ev,_ZTv0_n12_N9S20987C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S20987C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C4D0Ev,_ZTv0_n12_N8S20987C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C4D0Ev,
  (VTBL_ENTRY)_ZN8S20987C4D0Ev,
  (VTBL_ENTRY)_ZN8S20987C4D0Ev,
  (VTBL_ENTRY)_ZN8S20987C4D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20987C4D0Ev,_ZThn60_N8S20987C4D0Ev),
  (VTBL_ENTRY)_ZN8S20987C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C4D1Ev,_ZTv0_n12_N8S20987C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C4D1Ev,
  (VTBL_ENTRY)_ZN8S20987C4D1Ev,
  (VTBL_ENTRY)_ZN8S20987C4D1Ev,
  (VTBL_ENTRY)_ZN8S20987C4D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20987C4D1Ev,_ZThn60_N8S20987C4D1Ev),
  (VTBL_ENTRY)_ZN8S20987C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C12D0Ev,_ZTv0_n12_N9S20987C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S20987C12D0Ev,
  (VTBL_ENTRY)_ZN9S20987C12D0Ev,
  (VTBL_ENTRY)_ZN9S20987C12D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20987C12D0Ev,_ZThn60_N9S20987C12D0Ev),
  (VTBL_ENTRY)_ZN9S20987C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C12D1Ev,_ZTv0_n12_N9S20987C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S20987C12D1Ev,
  (VTBL_ENTRY)_ZN9S20987C12D1Ev,
  (VTBL_ENTRY)_ZN9S20987C12D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20987C12D1Ev,_ZThn60_N9S20987C12D1Ev),
  (VTBL_ENTRY)_ZN9S20987C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C24D0Ev,_ZTv0_n12_N9S20987C24D0Ev), // 
  (VTBL_ENTRY)_ZN9S20987C24D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20987C24D0Ev,_ZThn60_N9S20987C24D0Ev),
  (VTBL_ENTRY)_ZN9S20987C24D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C24D1Ev,_ZTv0_n12_N9S20987C24D1Ev), // 
  (VTBL_ENTRY)_ZN9S20987C24D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20987C24D1Ev,_ZThn60_N9S20987C24D1Ev),
  (VTBL_ENTRY)_ZN9S20987C24D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20987C9D0Ev,_ZTv0_n16_N8S20987C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20987C9D0Ev,_ZThn156_N8S20987C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20987C9D1Ev,_ZTv0_n16_N8S20987C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20987C9D1Ev,_ZThn156_N8S20987C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20987C15D0Ev,_ZTv0_n16_N9S20987C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20987C15D0Ev,_ZThn132_N9S20987C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20987C15D1Ev,_ZTv0_n16_N9S20987C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20987C15D1Ev,_ZThn132_N9S20987C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20987C17D0Ev,_ZTv0_n16_N9S20987C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20987C17D0Ev,_ZThn132_N9S20987C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20987C17D1Ev,_ZTv0_n16_N9S20987C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20987C17D1Ev,_ZThn132_N9S20987C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C5D0Ev,_ZTv0_n12_N8S20987C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20987C5D0Ev,_ZThn60_N8S20987C5D0Ev),
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20987C5D0Ev,_ZThn80_N8S20987C5D0Ev),
  (VTBL_ENTRY)_ZN8S20987C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C5D1Ev,_ZTv0_n12_N8S20987C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20987C5D1Ev,_ZThn60_N8S20987C5D1Ev),
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20987C5D1Ev,_ZThn80_N8S20987C5D1Ev),
  (VTBL_ENTRY)_ZN8S20987C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C3D0Ev,_ZTv0_n12_N8S20987C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S20987C3D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20987C3D0Ev,_ZThn8_N8S20987C3D0Ev),
  (VTBL_ENTRY)_ZN8S20987C3D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20987C3D0Ev,_ZThn88_N8S20987C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20987C3D0Ev,_ZThn96_N8S20987C3D0Ev),
  (VTBL_ENTRY)_ZN8S20987C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C3D1Ev,_ZTv0_n12_N8S20987C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S20987C3D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20987C3D1Ev,_ZThn8_N8S20987C3D1Ev),
  (VTBL_ENTRY)_ZN8S20987C3D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20987C3D1Ev,_ZThn88_N8S20987C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20987C3D1Ev,_ZThn96_N8S20987C3D1Ev),
  (VTBL_ENTRY)_ZN8S20987C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C18D0Ev,_ZTv0_n12_N9S20987C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C18D0Ev,_ZThn8_N9S20987C18D0Ev),
  (VTBL_ENTRY)_ZN9S20987C18D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C18D0Ev,_ZThn8_N9S20987C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20987C18D0Ev,_ZThn96_N9S20987C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S20987C18D0Ev,_ZThn88_N9S20987C18D0Ev),
  (VTBL_ENTRY)_ZN9S20987C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C18D1Ev,_ZTv0_n12_N9S20987C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C18D1Ev,_ZThn8_N9S20987C18D1Ev),
  (VTBL_ENTRY)_ZN9S20987C18D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C18D1Ev,_ZThn8_N9S20987C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20987C18D1Ev,_ZThn96_N9S20987C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S20987C18D1Ev,_ZThn88_N9S20987C18D1Ev),
  (VTBL_ENTRY)_ZN9S20987C18D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C17D0Ev,_ZTv0_n12_N9S20987C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N9S20987C17D0Ev,_ZThn152_N9S20987C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20987C17D0Ev,_ZThn136_N9S20987C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C17D0Ev,_ZThn8_N9S20987C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20987C17D0Ev,_ZThn96_N9S20987C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S20987C17D0Ev,_ZThn88_N9S20987C17D0Ev),
  (VTBL_ENTRY)_ZN9S20987C17D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C17D1Ev,_ZTv0_n12_N9S20987C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N9S20987C17D1Ev,_ZThn152_N9S20987C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20987C17D1Ev,_ZThn136_N9S20987C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C17D1Ev,_ZThn8_N9S20987C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20987C17D1Ev,_ZThn96_N9S20987C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S20987C17D1Ev,_ZThn88_N9S20987C17D1Ev),
  (VTBL_ENTRY)_ZN9S20987C17D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C15D0Ev,_ZTv0_n12_N9S20987C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20987C15D0Ev,_ZThn176_N9S20987C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S20987C15D0Ev,_ZThn168_N9S20987C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N9S20987C15D0Ev,_ZThn152_N9S20987C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20987C15D0Ev,_ZThn136_N9S20987C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C15D0Ev,_ZThn8_N9S20987C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20987C15D0Ev,_ZThn96_N9S20987C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S20987C15D0Ev,_ZThn88_N9S20987C15D0Ev),
  (VTBL_ENTRY)_ZN9S20987C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C15D1Ev,_ZTv0_n12_N9S20987C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20987C15D1Ev,_ZThn176_N9S20987C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S20987C15D1Ev,_ZThn168_N9S20987C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N9S20987C15D1Ev,_ZThn152_N9S20987C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20987C15D1Ev,_ZThn136_N9S20987C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20987C15D1Ev,_ZThn8_N9S20987C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20987C15D1Ev,_ZThn96_N9S20987C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S20987C15D1Ev,_ZThn88_N9S20987C15D1Ev),
  (VTBL_ENTRY)_ZN9S20987C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C2D0Ev,_ZTv0_n12_N8S20987C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20987C2D0Ev,_ZThn8_N8S20987C2D0Ev),
  (VTBL_ENTRY)_ZN8S20987C2D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20987C2D0Ev,_ZThn104_N8S20987C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20987C2D0Ev,_ZThn96_N8S20987C2D0Ev),
  (VTBL_ENTRY)_ZN8S20987C2D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S20987C2D0Ev,_ZThn120_N8S20987C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S20987C2D0Ev,_ZThn112_N8S20987C2D0Ev),
  (VTBL_ENTRY)_ZN8S20987C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C2D1Ev,_ZTv0_n12_N8S20987C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20987C2D1Ev,_ZThn8_N8S20987C2D1Ev),
  (VTBL_ENTRY)_ZN8S20987C2D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20987C2D1Ev,_ZThn104_N8S20987C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20987C2D1Ev,_ZThn96_N8S20987C2D1Ev),
  (VTBL_ENTRY)_ZN8S20987C2D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S20987C2D1Ev,_ZThn120_N8S20987C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S20987C2D1Ev,_ZThn112_N8S20987C2D1Ev),
  (VTBL_ENTRY)_ZN8S20987C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C11D0Ev,_ZTv0_n12_N9S20987C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S20987C11D0Ev,_ZThn120_N9S20987C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S20987C11D0Ev,_ZThn112_N9S20987C11D0Ev),
  (VTBL_ENTRY)_ZN9S20987C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C11D1Ev,_ZTv0_n12_N9S20987C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S20987C11D1Ev,_ZThn120_N9S20987C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S20987C11D1Ev,_ZThn112_N9S20987C11D1Ev),
  (VTBL_ENTRY)_ZN9S20987C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C10D0Ev,_ZTv0_n12_N9S20987C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20987C10D0Ev,_ZThn136_N9S20987C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S20987C10D0Ev,_ZThn112_N9S20987C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S20987C10D0Ev,_ZThn120_N9S20987C10D0Ev),
  (VTBL_ENTRY)_ZN9S20987C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20987C10D1Ev,_ZTv0_n12_N9S20987C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20987C10D1Ev,_ZThn136_N9S20987C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S20987C10D1Ev,_ZThn112_N9S20987C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S20987C10D1Ev,_ZThn120_N9S20987C10D1Ev),
  (VTBL_ENTRY)_ZN9S20987C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C9D0Ev,_ZTv0_n12_N8S20987C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S20987C9D0Ev,_ZThn216_N8S20987C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S20987C9D0Ev,_ZThn200_N8S20987C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S20987C9D0Ev,_ZThn192_N8S20987C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20987C9D0Ev,_ZThn176_N8S20987C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S20987C9D0Ev,_ZThn160_N8S20987C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20987C9D0Ev,_ZThn32_N8S20987C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20987C9D0Ev,_ZThn24_N8S20987C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20987C9D0Ev,_ZThn148_N8S20987C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20987C9D0Ev,_ZThn16_N8S20987C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20987C9D0Ev,_ZThn136_N8S20987C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S20987C9D0Ev,_ZThn112_N8S20987C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S20987C9D0Ev,_ZThn120_N8S20987C9D0Ev),
  (VTBL_ENTRY)_ZN8S20987C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C9D1Ev,_ZTv0_n12_N8S20987C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S20987C9D1Ev,_ZThn216_N8S20987C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S20987C9D1Ev,_ZThn200_N8S20987C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S20987C9D1Ev,_ZThn192_N8S20987C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20987C9D1Ev,_ZThn176_N8S20987C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S20987C9D1Ev,_ZThn160_N8S20987C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20987C9D1Ev,_ZThn32_N8S20987C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20987C9D1Ev,_ZThn24_N8S20987C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20987C9D1Ev,_ZThn148_N8S20987C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20987C9D1Ev,_ZThn16_N8S20987C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20987C9D1Ev,_ZThn136_N8S20987C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S20987C9D1Ev,_ZThn112_N8S20987C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S20987C9D1Ev,_ZThn120_N8S20987C9D1Ev),
  (VTBL_ENTRY)_ZN8S20987C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20987C1D0Ev,_ZTv0_n16_N8S20987C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20987C1D0Ev,_ZThn156_N8S20987C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20987C1D1Ev,_ZTv0_n16_N8S20987C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20987C1D1Ev,_ZThn156_N8S20987C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C1D0Ev,_ZTv0_n12_N8S20987C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S20987C1D0Ev,_ZThn216_N8S20987C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S20987C1D0Ev,_ZThn200_N8S20987C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S20987C1D0Ev,_ZThn192_N8S20987C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20987C1D0Ev,_ZThn176_N8S20987C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S20987C1D0Ev,_ZThn160_N8S20987C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20987C1D0Ev,_ZThn148_N8S20987C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20987C1D0Ev,_ZThn136_N8S20987C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S20987C1D0Ev,_ZThn120_N8S20987C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S20987C1D0Ev,_ZThn112_N8S20987C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20987C1D0Ev,_ZThn52_N8S20987C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20987C1D0Ev,_ZThn32_N8S20987C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20987C1D0Ev,_ZThn24_N8S20987C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20987C1D0Ev,_ZThn16_N8S20987C1D0Ev),
  (VTBL_ENTRY)_ZN8S20987C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20987C1D1Ev,_ZTv0_n12_N8S20987C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S20987C1D1Ev,_ZThn216_N8S20987C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S20987C1D1Ev,_ZThn200_N8S20987C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S20987C1D1Ev,_ZThn192_N8S20987C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20987C1D1Ev,_ZThn176_N8S20987C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S20987C1D1Ev,_ZThn160_N8S20987C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20987C1D1Ev,_ZThn148_N8S20987C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20987C1D1Ev,_ZThn136_N8S20987C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S20987C1D1Ev,_ZThn120_N8S20987C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S20987C1D1Ev,_ZThn112_N8S20987C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20987C1D1Ev,_ZThn52_N8S20987C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20987C1D1Ev,_ZThn32_N8S20987C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20987C1D1Ev,_ZThn24_N8S20987C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20987C1D1Ev,_ZThn16_N8S20987C1D1Ev),
  (VTBL_ENTRY)_ZN8S20987C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20987C1 = {  "S20987C1", // class name
  bases_S20987C1, 58,
  &(vtc_S20987C1[0]), // expected_vtbl_contents
  &(vtt_S20987C1[0]), // expected_vtt_contents
  ABISELECT(432,272), // object size
  NSPAIRA(_ZTI8S20987C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20987C1),145, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20987C1),158, //virtual table table var
  41, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names65,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1204C3  : S4677C37 {
  virtual  ~S1204C3(); // _ZN7S1204C3D1Ev
  virtual void  v18(); // _ZN7S1204C33v18Ev
  S1204C3(); // tgen
};
//SIG(-1 S1204C3) C1{ BC2{ m} vd v1}


 S1204C3 ::~S1204C3(){ note_dtor("S1204C3", this);}
void  S1204C3 ::v18(){vfunc_called(this, "_ZN7S1204C33v18Ev");}
S1204C3 ::S1204C3(){ note_ctor("S1204C3", this);} // tgen

static void Test_S1204C3()
{
  extern Class_Descriptor cd_S1204C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1204C3, buf);
    S1204C3 *dp, &lv = *(dp=new (buf) S1204C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1204C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1204C3)");
    check_base_class_offset(lv, (S4677C37*), 0, "S1204C3");
    test_class_info(&lv, &cd_S1204C3);
    dp->~S1204C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1204C3(Test_S1204C3, "S1204C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1204C3C1Ev();
extern void _ZN7S1204C3D1Ev();
Name_Map name_map_S1204C3[] = {
  NSPAIR(_ZN7S1204C3C1Ev),
  NSPAIR(_ZN7S1204C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
static Base_Class bases_S1204C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1204C3[];
extern void _ZN7S1204C3D1Ev();
extern void _ZN7S1204C3D0Ev();
extern void _ZN7S1204C33v18Ev();
static  VTBL_ENTRY vtc_S1204C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1204C3[0]),
  (VTBL_ENTRY)&_ZN7S1204C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1204C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1204C33v18Ev,
};
extern VTBL_ENTRY _ZTI7S1204C3[];
extern  VTBL_ENTRY _ZTV7S1204C3[];
Class_Descriptor cd_S1204C3 = {  "S1204C3", // class name
  bases_S1204C3, 1,
  &(vtc_S1204C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1204C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1204C3),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  S1204C2  : S1204C3 {
  char s1204c2f0[4];
  int s1204c2f1[23];
  char s1204c2f2[23];
  int s1204c2f3[24];
  __tsi64 s1204c2f4;
  char s1204c2f5;
  void *s1204c2f6;
  int s1204c2f7;
  char s1204c2f8;
  int s1204c2f9[4];
  char s1204c2f10[112];
  virtual  ~S1204C2(); // _ZN7S1204C2D1Ev
  virtual void  v19(); // _ZN7S1204C23v19Ev
  virtual void  v20(); // _ZN7S1204C23v20Ev
  virtual void  v21(); // _ZN7S1204C23v21Ev
  virtual void  v22(); // _ZN7S1204C23v22Ev
  virtual void  v23(); // _ZN7S1204C23v23Ev
  virtual void  v24(); // _ZN7S1204C23v24Ev
  virtual void  v25(); // _ZN7S1204C23v25Ev
  virtual void  v26(); // _ZN7S1204C23v26Ev
  virtual void  v27(); // _ZN7S1204C23v27Ev
  virtual void  v28(); // _ZN7S1204C23v28Ev
  virtual void  v29(); // _ZN7S1204C23v29Ev
  virtual void  v30(); // _ZN7S1204C23v30Ev
  virtual void  v31(); // _ZN7S1204C23v31Ev
  virtual void  v32(); // _ZN7S1204C23v32Ev
  virtual void  v33(); // _ZN7S1204C23v33Ev
  virtual void  v34(); // _ZN7S1204C23v34Ev
  virtual void  v35(); // _ZN7S1204C23v35Ev
  virtual void  v36(); // _ZN7S1204C23v36Ev
  virtual void  v37(); // _ZN7S1204C23v37Ev
  virtual void  v38(); // _ZN7S1204C23v38Ev
  virtual void  v39(); // _ZN7S1204C23v39Ev
  virtual void  v40(); // _ZN7S1204C23v40Ev
  virtual void  v41(); // _ZN7S1204C23v41Ev
  virtual void  v42(); // _ZN7S1204C23v42Ev
  virtual void  v43(); // _ZN7S1204C23v43Ev
  virtual void  v44(); // _ZN7S1204C23v44Ev
  virtual void  v45(); // _ZN7S1204C23v45Ev
  virtual void  v46(); // _ZN7S1204C23v46Ev
  virtual void  v47(); // _ZN7S1204C23v47Ev
  virtual void  v48(); // _ZN7S1204C23v48Ev
  virtual void  v49(); // _ZN7S1204C23v49Ev
  virtual void  v50(); // _ZN7S1204C23v50Ev
  virtual void  v51(); // _ZN7S1204C23v51Ev
  virtual void  v52(); // _ZN7S1204C23v52Ev
  virtual void  v53(); // _ZN7S1204C23v53Ev
  virtual void  v54(); // _ZN7S1204C23v54Ev
  virtual void  v55(); // _ZN7S1204C23v55Ev
  virtual void  v56(); // _ZN7S1204C23v56Ev
  virtual void  v57(); // _ZN7S1204C23v57Ev
  virtual void  v58(); // _ZN7S1204C23v58Ev
  virtual void  v59(); // _ZN7S1204C23v59Ev
  virtual void  v60(); // _ZN7S1204C23v60Ev
  S1204C2(); // tgen
};
//SIG(-1 S1204C2) C1{ BC2{ BC3{ m} vd v43} 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 Fc[4] Fi[23] Fc[23] Fi[24] FL Fc Fp Fi Fc Fi[4] Fc[112]}


 S1204C2 ::~S1204C2(){ note_dtor("S1204C2", this);}
void  S1204C2 ::v19(){vfunc_called(this, "_ZN7S1204C23v19Ev");}
void  S1204C2 ::v20(){vfunc_called(this, "_ZN7S1204C23v20Ev");}
void  S1204C2 ::v21(){vfunc_called(this, "_ZN7S1204C23v21Ev");}
void  S1204C2 ::v22(){vfunc_called(this, "_ZN7S1204C23v22Ev");}
void  S1204C2 ::v23(){vfunc_called(this, "_ZN7S1204C23v23Ev");}
void  S1204C2 ::v24(){vfunc_called(this, "_ZN7S1204C23v24Ev");}
void  S1204C2 ::v25(){vfunc_called(this, "_ZN7S1204C23v25Ev");}
void  S1204C2 ::v26(){vfunc_called(this, "_ZN7S1204C23v26Ev");}
void  S1204C2 ::v27(){vfunc_called(this, "_ZN7S1204C23v27Ev");}
void  S1204C2 ::v28(){vfunc_called(this, "_ZN7S1204C23v28Ev");}
void  S1204C2 ::v29(){vfunc_called(this, "_ZN7S1204C23v29Ev");}
void  S1204C2 ::v30(){vfunc_called(this, "_ZN7S1204C23v30Ev");}
void  S1204C2 ::v31(){vfunc_called(this, "_ZN7S1204C23v31Ev");}
void  S1204C2 ::v32(){vfunc_called(this, "_ZN7S1204C23v32Ev");}
void  S1204C2 ::v33(){vfunc_called(this, "_ZN7S1204C23v33Ev");}
void  S1204C2 ::v34(){vfunc_called(this, "_ZN7S1204C23v34Ev");}
void  S1204C2 ::v35(){vfunc_called(this, "_ZN7S1204C23v35Ev");}
void  S1204C2 ::v36(){vfunc_called(this, "_ZN7S1204C23v36Ev");}
void  S1204C2 ::v37(){vfunc_called(this, "_ZN7S1204C23v37Ev");}
void  S1204C2 ::v38(){vfunc_called(this, "_ZN7S1204C23v38Ev");}
void  S1204C2 ::v39(){vfunc_called(this, "_ZN7S1204C23v39Ev");}
void  S1204C2 ::v40(){vfunc_called(this, "_ZN7S1204C23v40Ev");}
void  S1204C2 ::v41(){vfunc_called(this, "_ZN7S1204C23v41Ev");}
void  S1204C2 ::v42(){vfunc_called(this, "_ZN7S1204C23v42Ev");}
void  S1204C2 ::v43(){vfunc_called(this, "_ZN7S1204C23v43Ev");}
void  S1204C2 ::v44(){vfunc_called(this, "_ZN7S1204C23v44Ev");}
void  S1204C2 ::v45(){vfunc_called(this, "_ZN7S1204C23v45Ev");}
void  S1204C2 ::v46(){vfunc_called(this, "_ZN7S1204C23v46Ev");}
void  S1204C2 ::v47(){vfunc_called(this, "_ZN7S1204C23v47Ev");}
void  S1204C2 ::v48(){vfunc_called(this, "_ZN7S1204C23v48Ev");}
void  S1204C2 ::v49(){vfunc_called(this, "_ZN7S1204C23v49Ev");}
void  S1204C2 ::v50(){vfunc_called(this, "_ZN7S1204C23v50Ev");}
void  S1204C2 ::v51(){vfunc_called(this, "_ZN7S1204C23v51Ev");}
void  S1204C2 ::v52(){vfunc_called(this, "_ZN7S1204C23v52Ev");}
void  S1204C2 ::v53(){vfunc_called(this, "_ZN7S1204C23v53Ev");}
void  S1204C2 ::v54(){vfunc_called(this, "_ZN7S1204C23v54Ev");}
void  S1204C2 ::v55(){vfunc_called(this, "_ZN7S1204C23v55Ev");}
void  S1204C2 ::v56(){vfunc_called(this, "_ZN7S1204C23v56Ev");}
void  S1204C2 ::v57(){vfunc_called(this, "_ZN7S1204C23v57Ev");}
void  S1204C2 ::v58(){vfunc_called(this, "_ZN7S1204C23v58Ev");}
void  S1204C2 ::v59(){vfunc_called(this, "_ZN7S1204C23v59Ev");}
void  S1204C2 ::v60(){vfunc_called(this, "_ZN7S1204C23v60Ev");}
S1204C2 ::S1204C2(){ note_ctor("S1204C2", this);} // tgen

static void Test_S1204C2()
{
  extern Class_Descriptor cd_S1204C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(49,94)];
    init_test(&cd_S1204C2, buf);
    S1204C2 *dp, &lv = *(dp=new (buf) S1204C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,372), "sizeof(S1204C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1204C2)");
    check_base_class_offset(lv, (S4677C37*)(S1204C3*), 0, "S1204C2");
    check_base_class_offset(lv, (S1204C3*), 0, "S1204C2");
    check_field_offset(lv, s1204c2f0, ABISELECT(8,4), "S1204C2.s1204c2f0");
    check_field_offset(lv, s1204c2f1, ABISELECT(12,8), "S1204C2.s1204c2f1");
    check_field_offset(lv, s1204c2f2, ABISELECT(104,100), "S1204C2.s1204c2f2");
    check_field_offset(lv, s1204c2f3, ABISELECT(128,124), "S1204C2.s1204c2f3");
    check_field_offset(lv, s1204c2f4, ABISELECT(224,220), "S1204C2.s1204c2f4");
    check_field_offset(lv, s1204c2f5, ABISELECT(232,228), "S1204C2.s1204c2f5");
    check_field_offset(lv, s1204c2f6, ABISELECT(240,232), "S1204C2.s1204c2f6");
    check_field_offset(lv, s1204c2f7, ABISELECT(248,236), "S1204C2.s1204c2f7");
    check_field_offset(lv, s1204c2f8, ABISELECT(252,240), "S1204C2.s1204c2f8");
    check_field_offset(lv, s1204c2f9, ABISELECT(256,244), "S1204C2.s1204c2f9");
    check_field_offset(lv, s1204c2f10, ABISELECT(272,260), "S1204C2.s1204c2f10");
    test_class_info(&lv, &cd_S1204C2);
    dp->~S1204C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1204C2(Test_S1204C2, "S1204C2", ABISELECT(384,372));

#else // __cplusplus

extern void _ZN7S1204C2C1Ev();
extern void _ZN7S1204C2D1Ev();
Name_Map name_map_S1204C2[] = {
  NSPAIR(_ZN7S1204C2C1Ev),
  NSPAIR(_ZN7S1204C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S1204C3;
extern VTBL_ENTRY _ZTI7S1204C3[];
extern  VTBL_ENTRY _ZTV7S1204C3[];
static Base_Class bases_S1204C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1204C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1204C2[];
extern void _ZN7S1204C2D1Ev();
extern void _ZN7S1204C2D0Ev();
extern void _ZN7S1204C33v18Ev();
extern void _ZN7S1204C23v19Ev();
extern void _ZN7S1204C23v20Ev();
extern void _ZN7S1204C23v21Ev();
extern void _ZN7S1204C23v22Ev();
extern void _ZN7S1204C23v23Ev();
extern void _ZN7S1204C23v24Ev();
extern void _ZN7S1204C23v25Ev();
extern void _ZN7S1204C23v26Ev();
extern void _ZN7S1204C23v27Ev();
extern void _ZN7S1204C23v28Ev();
extern void _ZN7S1204C23v29Ev();
extern void _ZN7S1204C23v30Ev();
extern void _ZN7S1204C23v31Ev();
extern void _ZN7S1204C23v32Ev();
extern void _ZN7S1204C23v33Ev();
extern void _ZN7S1204C23v34Ev();
extern void _ZN7S1204C23v35Ev();
extern void _ZN7S1204C23v36Ev();
extern void _ZN7S1204C23v37Ev();
extern void _ZN7S1204C23v38Ev();
extern void _ZN7S1204C23v39Ev();
extern void _ZN7S1204C23v40Ev();
extern void _ZN7S1204C23v41Ev();
extern void _ZN7S1204C23v42Ev();
extern void _ZN7S1204C23v43Ev();
extern void _ZN7S1204C23v44Ev();
extern void _ZN7S1204C23v45Ev();
extern void _ZN7S1204C23v46Ev();
extern void _ZN7S1204C23v47Ev();
extern void _ZN7S1204C23v48Ev();
extern void _ZN7S1204C23v49Ev();
extern void _ZN7S1204C23v50Ev();
extern void _ZN7S1204C23v51Ev();
extern void _ZN7S1204C23v52Ev();
extern void _ZN7S1204C23v53Ev();
extern void _ZN7S1204C23v54Ev();
extern void _ZN7S1204C23v55Ev();
extern void _ZN7S1204C23v56Ev();
extern void _ZN7S1204C23v57Ev();
extern void _ZN7S1204C23v58Ev();
extern void _ZN7S1204C23v59Ev();
extern void _ZN7S1204C23v60Ev();
static  VTBL_ENTRY vtc_S1204C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1204C2[0]),
  (VTBL_ENTRY)&_ZN7S1204C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1204C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1204C33v18Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v27Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v28Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v29Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v30Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v31Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v32Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v33Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v34Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v35Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v36Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v37Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v38Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v39Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v40Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v41Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v42Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v43Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v44Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v45Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v46Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v47Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v48Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v49Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v50Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v51Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v52Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v53Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v54Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v55Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v56Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v57Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v58Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v59Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v60Ev,
};
extern VTBL_ENTRY _ZTI7S1204C2[];
extern  VTBL_ENTRY _ZTV7S1204C2[];
Class_Descriptor cd_S1204C2 = {  "S1204C2", // class name
  bases_S1204C2, 2,
  &(vtc_S1204C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(384,372), // object size
  NSPAIRA(_ZTI7S1204C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1204C2),47, //virtual function table var
  2, // 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  S1204C1  : S1204C2 {
  virtual  ~S1204C1(); // _ZN7S1204C1D1Ev
  virtual void  v1(); // _ZN7S1204C12v1Ev
  virtual void  v2(); // _ZN7S1204C12v2Ev
  virtual void  v3(); // _ZN7S1204C12v3Ev
  virtual void  v4(); // _ZN7S1204C12v4Ev
  virtual void  v5(); // _ZN7S1204C12v5Ev
  virtual void  v6(); // _ZN7S1204C12v6Ev
  virtual void  v7(); // _ZN7S1204C12v7Ev
  virtual void  v8(); // _ZN7S1204C12v8Ev
  virtual void  v9(); // _ZN7S1204C12v9Ev
  virtual void  v10(); // _ZN7S1204C13v10Ev
  virtual void  v11(); // _ZN7S1204C13v11Ev
  virtual void  v12(); // _ZN7S1204C13v12Ev
  virtual void  v13(); // _ZN7S1204C13v13Ev
  virtual void  v14(); // _ZN7S1204C13v14Ev
  virtual void  v15(); // _ZN7S1204C13v15Ev
  virtual void  v16(); // _ZN7S1204C13v16Ev
  virtual void  v17(); // _ZN7S1204C13v17Ev
  S1204C1(); // tgen
};
//SIG(1 S1204C1) C1{ BC2{ BC3{ BC4{ m} vd v18} vd v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 Fc[4] Fi[23] Fc[23] Fi[24] FL Fc Fp Fi Fc Fi[4] Fc[112]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17}


 S1204C1 ::~S1204C1(){ note_dtor("S1204C1", this);}
void  S1204C1 ::v1(){vfunc_called(this, "_ZN7S1204C12v1Ev");}
void  S1204C1 ::v2(){vfunc_called(this, "_ZN7S1204C12v2Ev");}
void  S1204C1 ::v3(){vfunc_called(this, "_ZN7S1204C12v3Ev");}
void  S1204C1 ::v4(){vfunc_called(this, "_ZN7S1204C12v4Ev");}
void  S1204C1 ::v5(){vfunc_called(this, "_ZN7S1204C12v5Ev");}
void  S1204C1 ::v6(){vfunc_called(this, "_ZN7S1204C12v6Ev");}
void  S1204C1 ::v7(){vfunc_called(this, "_ZN7S1204C12v7Ev");}
void  S1204C1 ::v8(){vfunc_called(this, "_ZN7S1204C12v8Ev");}
void  S1204C1 ::v9(){vfunc_called(this, "_ZN7S1204C12v9Ev");}
void  S1204C1 ::v10(){vfunc_called(this, "_ZN7S1204C13v10Ev");}
void  S1204C1 ::v11(){vfunc_called(this, "_ZN7S1204C13v11Ev");}
void  S1204C1 ::v12(){vfunc_called(this, "_ZN7S1204C13v12Ev");}
void  S1204C1 ::v13(){vfunc_called(this, "_ZN7S1204C13v13Ev");}
void  S1204C1 ::v14(){vfunc_called(this, "_ZN7S1204C13v14Ev");}
void  S1204C1 ::v15(){vfunc_called(this, "_ZN7S1204C13v15Ev");}
void  S1204C1 ::v16(){vfunc_called(this, "_ZN7S1204C13v16Ev");}
void  S1204C1 ::v17(){vfunc_called(this, "_ZN7S1204C13v17Ev");}
S1204C1 ::S1204C1(){ note_ctor("S1204C1", this);} // tgen

static void Test_S1204C1()
{
  extern Class_Descriptor cd_S1204C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(49,94)];
    init_test(&cd_S1204C1, buf);
    S1204C1 *dp, &lv = *(dp=new (buf) S1204C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,372), "sizeof(S1204C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1204C1)");
    check_base_class_offset(lv, (S4677C37*)(S1204C3*)(S1204C2*), 0, "S1204C1");
    check_base_class_offset(lv, (S1204C3*)(S1204C2*), 0, "S1204C1");
    check_base_class_offset(lv, (S1204C2*), 0, "S1204C1");
    test_class_info(&lv, &cd_S1204C1);
    dp->~S1204C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1204C1(Test_S1204C1, "S1204C1", ABISELECT(384,372));

#else // __cplusplus

extern void _ZN7S1204C1C1Ev();
extern void _ZN7S1204C1D1Ev();
Name_Map name_map_S1204C1[] = {
  NSPAIR(_ZN7S1204C1C1Ev),
  NSPAIR(_ZN7S1204C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S1204C3;
extern VTBL_ENTRY _ZTI7S1204C3[];
extern  VTBL_ENTRY _ZTV7S1204C3[];
extern Class_Descriptor cd_S1204C2;
extern VTBL_ENTRY _ZTI7S1204C2[];
extern  VTBL_ENTRY _ZTV7S1204C2[];
static Base_Class bases_S1204C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1204C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1204C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1204C1[];
extern void _ZN7S1204C1D1Ev();
extern void _ZN7S1204C1D0Ev();
extern void _ZN7S1204C33v18Ev();
extern void _ZN7S1204C23v19Ev();
extern void _ZN7S1204C23v20Ev();
extern void _ZN7S1204C23v21Ev();
extern void _ZN7S1204C23v22Ev();
extern void _ZN7S1204C23v23Ev();
extern void _ZN7S1204C23v24Ev();
extern void _ZN7S1204C23v25Ev();
extern void _ZN7S1204C23v26Ev();
extern void _ZN7S1204C23v27Ev();
extern void _ZN7S1204C23v28Ev();
extern void _ZN7S1204C23v29Ev();
extern void _ZN7S1204C23v30Ev();
extern void _ZN7S1204C23v31Ev();
extern void _ZN7S1204C23v32Ev();
extern void _ZN7S1204C23v33Ev();
extern void _ZN7S1204C23v34Ev();
extern void _ZN7S1204C23v35Ev();
extern void _ZN7S1204C23v36Ev();
extern void _ZN7S1204C23v37Ev();
extern void _ZN7S1204C23v38Ev();
extern void _ZN7S1204C23v39Ev();
extern void _ZN7S1204C23v40Ev();
extern void _ZN7S1204C23v41Ev();
extern void _ZN7S1204C23v42Ev();
extern void _ZN7S1204C23v43Ev();
extern void _ZN7S1204C23v44Ev();
extern void _ZN7S1204C23v45Ev();
extern void _ZN7S1204C23v46Ev();
extern void _ZN7S1204C23v47Ev();
extern void _ZN7S1204C23v48Ev();
extern void _ZN7S1204C23v49Ev();
extern void _ZN7S1204C23v50Ev();
extern void _ZN7S1204C23v51Ev();
extern void _ZN7S1204C23v52Ev();
extern void _ZN7S1204C23v53Ev();
extern void _ZN7S1204C23v54Ev();
extern void _ZN7S1204C23v55Ev();
extern void _ZN7S1204C23v56Ev();
extern void _ZN7S1204C23v57Ev();
extern void _ZN7S1204C23v58Ev();
extern void _ZN7S1204C23v59Ev();
extern void _ZN7S1204C23v60Ev();
extern void _ZN7S1204C12v1Ev();
extern void _ZN7S1204C12v2Ev();
extern void _ZN7S1204C12v3Ev();
extern void _ZN7S1204C12v4Ev();
extern void _ZN7S1204C12v5Ev();
extern void _ZN7S1204C12v6Ev();
extern void _ZN7S1204C12v7Ev();
extern void _ZN7S1204C12v8Ev();
extern void _ZN7S1204C12v9Ev();
extern void _ZN7S1204C13v10Ev();
extern void _ZN7S1204C13v11Ev();
extern void _ZN7S1204C13v12Ev();
extern void _ZN7S1204C13v13Ev();
extern void _ZN7S1204C13v14Ev();
extern void _ZN7S1204C13v15Ev();
extern void _ZN7S1204C13v16Ev();
extern void _ZN7S1204C13v17Ev();
static  VTBL_ENTRY vtc_S1204C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1204C1[0]),
  (VTBL_ENTRY)&_ZN7S1204C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1204C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1204C33v18Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v27Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v28Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v29Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v30Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v31Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v32Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v33Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v34Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v35Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v36Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v37Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v38Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v39Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v40Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v41Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v42Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v43Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v44Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v45Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v46Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v47Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v48Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v49Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v50Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v51Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v52Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v53Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v54Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v55Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v56Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v57Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v58Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v59Ev,
  (VTBL_ENTRY)&_ZN7S1204C23v60Ev,
  (VTBL_ENTRY)&_ZN7S1204C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1204C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1204C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1204C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1204C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1204C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1204C12v7Ev,
  (VTBL_ENTRY)&_ZN7S1204C12v8Ev,
  (VTBL_ENTRY)&_ZN7S1204C12v9Ev,
  (VTBL_ENTRY)&_ZN7S1204C13v10Ev,
  (VTBL_ENTRY)&_ZN7S1204C13v11Ev,
  (VTBL_ENTRY)&_ZN7S1204C13v12Ev,
  (VTBL_ENTRY)&_ZN7S1204C13v13Ev,
  (VTBL_ENTRY)&_ZN7S1204C13v14Ev,
  (VTBL_ENTRY)&_ZN7S1204C13v15Ev,
  (VTBL_ENTRY)&_ZN7S1204C13v16Ev,
  (VTBL_ENTRY)&_ZN7S1204C13v17Ev,
};
extern VTBL_ENTRY _ZTI7S1204C1[];
extern  VTBL_ENTRY _ZTV7S1204C1[];
Class_Descriptor cd_S1204C1 = {  "S1204C1", // class name
  bases_S1204C1, 3,
  &(vtc_S1204C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(384,372), // object size
  NSPAIRA(_ZTI7S1204C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1204C1),64, //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  S427C4  : S4677C37 {
  virtual  ~S427C4(); // _ZN6S427C4D1Ev
  virtual void  v10(); // _ZN6S427C43v10Ev
  S427C4(); // tgen
};
//SIG(-1 S427C4) C1{ BC2{ m} vd v1}


 S427C4 ::~S427C4(){ note_dtor("S427C4", this);}
void  S427C4 ::v10(){vfunc_called(this, "_ZN6S427C43v10Ev");}
S427C4 ::S427C4(){ note_ctor("S427C4", this);} // tgen

static void Test_S427C4()
{
  extern Class_Descriptor cd_S427C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S427C4, buf);
    S427C4 *dp, &lv = *(dp=new (buf) S427C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S427C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S427C4)");
    check_base_class_offset(lv, (S4677C37*), 0, "S427C4");
    test_class_info(&lv, &cd_S427C4);
    dp->~S427C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS427C4(Test_S427C4, "S427C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN6S427C4C1Ev();
extern void _ZN6S427C4D1Ev();
Name_Map name_map_S427C4[] = {
  NSPAIR(_ZN6S427C4C1Ev),
  NSPAIR(_ZN6S427C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
static Base_Class bases_S427C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S427C4[];
extern void _ZN6S427C4D1Ev();
extern void _ZN6S427C4D0Ev();
extern void _ZN6S427C43v10Ev();
static  VTBL_ENTRY vtc_S427C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S427C4[0]),
  (VTBL_ENTRY)&_ZN6S427C4D1Ev,
  (VTBL_ENTRY)&_ZN6S427C4D0Ev,
  (VTBL_ENTRY)&_ZN6S427C43v10Ev,
};
extern VTBL_ENTRY _ZTI6S427C4[];
extern  VTBL_ENTRY _ZTV6S427C4[];
Class_Descriptor cd_S427C4 = {  "S427C4", // class name
  bases_S427C4, 1,
  &(vtc_S427C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI6S427C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S427C4),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  S427C3  : S427C4 {
  char s427c3f0[4];
  int s427c3f1[23];
  char s427c3f2[23];
  int s427c3f3[24];
  __tsi64 s427c3f4;
  char s427c3f5;
  void *s427c3f6;
  int s427c3f7;
  char s427c3f8;
  int s427c3f9[4];
  char s427c3f10[112];
  virtual  ~S427C3(); // _ZN6S427C3D1Ev
  virtual void  v11(); // _ZN6S427C33v11Ev
  virtual void  v12(); // _ZN6S427C33v12Ev
  virtual void  v13(); // _ZN6S427C33v13Ev
  virtual void  v14(); // _ZN6S427C33v14Ev
  virtual void  v15(); // _ZN6S427C33v15Ev
  virtual void  v16(); // _ZN6S427C33v16Ev
  virtual void  v17(); // _ZN6S427C33v17Ev
  virtual void  v18(); // _ZN6S427C33v18Ev
  virtual void  v19(); // _ZN6S427C33v19Ev
  virtual void  v20(); // _ZN6S427C33v20Ev
  virtual void  v21(); // _ZN6S427C33v21Ev
  virtual void  v22(); // _ZN6S427C33v22Ev
  virtual void  v23(); // _ZN6S427C33v23Ev
  virtual void  v24(); // _ZN6S427C33v24Ev
  virtual void  v25(); // _ZN6S427C33v25Ev
  virtual void  v26(); // _ZN6S427C33v26Ev
  virtual void  v27(); // _ZN6S427C33v27Ev
  virtual void  v28(); // _ZN6S427C33v28Ev
  virtual void  v29(); // _ZN6S427C33v29Ev
  virtual void  v30(); // _ZN6S427C33v30Ev
  virtual void  v31(); // _ZN6S427C33v31Ev
  virtual void  v32(); // _ZN6S427C33v32Ev
  virtual void  v33(); // _ZN6S427C33v33Ev
  virtual void  v34(); // _ZN6S427C33v34Ev
  virtual void  v35(); // _ZN6S427C33v35Ev
  virtual void  v36(); // _ZN6S427C33v36Ev
  virtual void  v37(); // _ZN6S427C33v37Ev
  virtual void  v38(); // _ZN6S427C33v38Ev
  virtual void  v39(); // _ZN6S427C33v39Ev
  virtual void  v40(); // _ZN6S427C33v40Ev
  virtual void  v41(); // _ZN6S427C33v41Ev
  virtual void  v42(); // _ZN6S427C33v42Ev
  virtual void  v43(); // _ZN6S427C33v43Ev
  virtual void  v44(); // _ZN6S427C33v44Ev
  virtual void  v45(); // _ZN6S427C33v45Ev
  virtual void  v46(); // _ZN6S427C33v46Ev
  virtual void  v47(); // _ZN6S427C33v47Ev
  virtual void  v48(); // _ZN6S427C33v48Ev
  virtual void  v49(); // _ZN6S427C33v49Ev
  virtual void  v50(); // _ZN6S427C33v50Ev
  virtual void  v51(); // _ZN6S427C33v51Ev
  virtual void  v52(); // _ZN6S427C33v52Ev
  S427C3(); // tgen
};
//SIG(-1 S427C3) C1{ BC2{ BC3{ m} vd v43} 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 Fc[4] Fi[23] Fc[23] Fi[24] FL Fc Fp Fi Fc Fi[4] Fc[112]}


 S427C3 ::~S427C3(){ note_dtor("S427C3", this);}
void  S427C3 ::v11(){vfunc_called(this, "_ZN6S427C33v11Ev");}
void  S427C3 ::v12(){vfunc_called(this, "_ZN6S427C33v12Ev");}
void  S427C3 ::v13(){vfunc_called(this, "_ZN6S427C33v13Ev");}
void  S427C3 ::v14(){vfunc_called(this, "_ZN6S427C33v14Ev");}
void  S427C3 ::v15(){vfunc_called(this, "_ZN6S427C33v15Ev");}
void  S427C3 ::v16(){vfunc_called(this, "_ZN6S427C33v16Ev");}
void  S427C3 ::v17(){vfunc_called(this, "_ZN6S427C33v17Ev");}
void  S427C3 ::v18(){vfunc_called(this, "_ZN6S427C33v18Ev");}
void  S427C3 ::v19(){vfunc_called(this, "_ZN6S427C33v19Ev");}
void  S427C3 ::v20(){vfunc_called(this, "_ZN6S427C33v20Ev");}
void  S427C3 ::v21(){vfunc_called(this, "_ZN6S427C33v21Ev");}
void  S427C3 ::v22(){vfunc_called(this, "_ZN6S427C33v22Ev");}
void  S427C3 ::v23(){vfunc_called(this, "_ZN6S427C33v23Ev");}
void  S427C3 ::v24(){vfunc_called(this, "_ZN6S427C33v24Ev");}
void  S427C3 ::v25(){vfunc_called(this, "_ZN6S427C33v25Ev");}
void  S427C3 ::v26(){vfunc_called(this, "_ZN6S427C33v26Ev");}
void  S427C3 ::v27(){vfunc_called(this, "_ZN6S427C33v27Ev");}
void  S427C3 ::v28(){vfunc_called(this, "_ZN6S427C33v28Ev");}
void  S427C3 ::v29(){vfunc_called(this, "_ZN6S427C33v29Ev");}
void  S427C3 ::v30(){vfunc_called(this, "_ZN6S427C33v30Ev");}
void  S427C3 ::v31(){vfunc_called(this, "_ZN6S427C33v31Ev");}
void  S427C3 ::v32(){vfunc_called(this, "_ZN6S427C33v32Ev");}
void  S427C3 ::v33(){vfunc_called(this, "_ZN6S427C33v33Ev");}
void  S427C3 ::v34(){vfunc_called(this, "_ZN6S427C33v34Ev");}
void  S427C3 ::v35(){vfunc_called(this, "_ZN6S427C33v35Ev");}
void  S427C3 ::v36(){vfunc_called(this, "_ZN6S427C33v36Ev");}
void  S427C3 ::v37(){vfunc_called(this, "_ZN6S427C33v37Ev");}
void  S427C3 ::v38(){vfunc_called(this, "_ZN6S427C33v38Ev");}
void  S427C3 ::v39(){vfunc_called(this, "_ZN6S427C33v39Ev");}
void  S427C3 ::v40(){vfunc_called(this, "_ZN6S427C33v40Ev");}
void  S427C3 ::v41(){vfunc_called(this, "_ZN6S427C33v41Ev");}
void  S427C3 ::v42(){vfunc_called(this, "_ZN6S427C33v42Ev");}
void  S427C3 ::v43(){vfunc_called(this, "_ZN6S427C33v43Ev");}
void  S427C3 ::v44(){vfunc_called(this, "_ZN6S427C33v44Ev");}
void  S427C3 ::v45(){vfunc_called(this, "_ZN6S427C33v45Ev");}
void  S427C3 ::v46(){vfunc_called(this, "_ZN6S427C33v46Ev");}
void  S427C3 ::v47(){vfunc_called(this, "_ZN6S427C33v47Ev");}
void  S427C3 ::v48(){vfunc_called(this, "_ZN6S427C33v48Ev");}
void  S427C3 ::v49(){vfunc_called(this, "_ZN6S427C33v49Ev");}
void  S427C3 ::v50(){vfunc_called(this, "_ZN6S427C33v50Ev");}
void  S427C3 ::v51(){vfunc_called(this, "_ZN6S427C33v51Ev");}
void  S427C3 ::v52(){vfunc_called(this, "_ZN6S427C33v52Ev");}
S427C3 ::S427C3(){ note_ctor("S427C3", this);} // tgen

static void Test_S427C3()
{
  extern Class_Descriptor cd_S427C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(49,94)];
    init_test(&cd_S427C3, buf);
    S427C3 *dp, &lv = *(dp=new (buf) S427C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,372), "sizeof(S427C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S427C3)");
    check_base_class_offset(lv, (S4677C37*)(S427C4*), 0, "S427C3");
    check_base_class_offset(lv, (S427C4*), 0, "S427C3");
    check_field_offset(lv, s427c3f0, ABISELECT(8,4), "S427C3.s427c3f0");
    check_field_offset(lv, s427c3f1, ABISELECT(12,8), "S427C3.s427c3f1");
    check_field_offset(lv, s427c3f2, ABISELECT(104,100), "S427C3.s427c3f2");
    check_field_offset(lv, s427c3f3, ABISELECT(128,124), "S427C3.s427c3f3");
    check_field_offset(lv, s427c3f4, ABISELECT(224,220), "S427C3.s427c3f4");
    check_field_offset(lv, s427c3f5, ABISELECT(232,228), "S427C3.s427c3f5");
    check_field_offset(lv, s427c3f6, ABISELECT(240,232), "S427C3.s427c3f6");
    check_field_offset(lv, s427c3f7, ABISELECT(248,236), "S427C3.s427c3f7");
    check_field_offset(lv, s427c3f8, ABISELECT(252,240), "S427C3.s427c3f8");
    check_field_offset(lv, s427c3f9, ABISELECT(256,244), "S427C3.s427c3f9");
    check_field_offset(lv, s427c3f10, ABISELECT(272,260), "S427C3.s427c3f10");
    test_class_info(&lv, &cd_S427C3);
    dp->~S427C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS427C3(Test_S427C3, "S427C3", ABISELECT(384,372));

#else // __cplusplus

extern void _ZN6S427C3C1Ev();
extern void _ZN6S427C3D1Ev();
Name_Map name_map_S427C3[] = {
  NSPAIR(_ZN6S427C3C1Ev),
  NSPAIR(_ZN6S427C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S427C4;
extern VTBL_ENTRY _ZTI6S427C4[];
extern  VTBL_ENTRY _ZTV6S427C4[];
static Base_Class bases_S427C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S427C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S427C3[];
extern void _ZN6S427C3D1Ev();
extern void _ZN6S427C3D0Ev();
extern void _ZN6S427C43v10Ev();
extern void _ZN6S427C33v11Ev();
extern void _ZN6S427C33v12Ev();
extern void _ZN6S427C33v13Ev();
extern void _ZN6S427C33v14Ev();
extern void _ZN6S427C33v15Ev();
extern void _ZN6S427C33v16Ev();
extern void _ZN6S427C33v17Ev();
extern void _ZN6S427C33v18Ev();
extern void _ZN6S427C33v19Ev();
extern void _ZN6S427C33v20Ev();
extern void _ZN6S427C33v21Ev();
extern void _ZN6S427C33v22Ev();
extern void _ZN6S427C33v23Ev();
extern void _ZN6S427C33v24Ev();
extern void _ZN6S427C33v25Ev();
extern void _ZN6S427C33v26Ev();
extern void _ZN6S427C33v27Ev();
extern void _ZN6S427C33v28Ev();
extern void _ZN6S427C33v29Ev();
extern void _ZN6S427C33v30Ev();
extern void _ZN6S427C33v31Ev();
extern void _ZN6S427C33v32Ev();
extern void _ZN6S427C33v33Ev();
extern void _ZN6S427C33v34Ev();
extern void _ZN6S427C33v35Ev();
extern void _ZN6S427C33v36Ev();
extern void _ZN6S427C33v37Ev();
extern void _ZN6S427C33v38Ev();
extern void _ZN6S427C33v39Ev();
extern void _ZN6S427C33v40Ev();
extern void _ZN6S427C33v41Ev();
extern void _ZN6S427C33v42Ev();
extern void _ZN6S427C33v43Ev();
extern void _ZN6S427C33v44Ev();
extern void _ZN6S427C33v45Ev();
extern void _ZN6S427C33v46Ev();
extern void _ZN6S427C33v47Ev();
extern void _ZN6S427C33v48Ev();
extern void _ZN6S427C33v49Ev();
extern void _ZN6S427C33v50Ev();
extern void _ZN6S427C33v51Ev();
extern void _ZN6S427C33v52Ev();
static  VTBL_ENTRY vtc_S427C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S427C3[0]),
  (VTBL_ENTRY)&_ZN6S427C3D1Ev,
  (VTBL_ENTRY)&_ZN6S427C3D0Ev,
  (VTBL_ENTRY)&_ZN6S427C43v10Ev,
  (VTBL_ENTRY)&_ZN6S427C33v11Ev,
  (VTBL_ENTRY)&_ZN6S427C33v12Ev,
  (VTBL_ENTRY)&_ZN6S427C33v13Ev,
  (VTBL_ENTRY)&_ZN6S427C33v14Ev,
  (VTBL_ENTRY)&_ZN6S427C33v15Ev,
  (VTBL_ENTRY)&_ZN6S427C33v16Ev,
  (VTBL_ENTRY)&_ZN6S427C33v17Ev,
  (VTBL_ENTRY)&_ZN6S427C33v18Ev,
  (VTBL_ENTRY)&_ZN6S427C33v19Ev,
  (VTBL_ENTRY)&_ZN6S427C33v20Ev,
  (VTBL_ENTRY)&_ZN6S427C33v21Ev,
  (VTBL_ENTRY)&_ZN6S427C33v22Ev,
  (VTBL_ENTRY)&_ZN6S427C33v23Ev,
  (VTBL_ENTRY)&_ZN6S427C33v24Ev,
  (VTBL_ENTRY)&_ZN6S427C33v25Ev,
  (VTBL_ENTRY)&_ZN6S427C33v26Ev,
  (VTBL_ENTRY)&_ZN6S427C33v27Ev,
  (VTBL_ENTRY)&_ZN6S427C33v28Ev,
  (VTBL_ENTRY)&_ZN6S427C33v29Ev,
  (VTBL_ENTRY)&_ZN6S427C33v30Ev,
  (VTBL_ENTRY)&_ZN6S427C33v31Ev,
  (VTBL_ENTRY)&_ZN6S427C33v32Ev,
  (VTBL_ENTRY)&_ZN6S427C33v33Ev,
  (VTBL_ENTRY)&_ZN6S427C33v34Ev,
  (VTBL_ENTRY)&_ZN6S427C33v35Ev,
  (VTBL_ENTRY)&_ZN6S427C33v36Ev,
  (VTBL_ENTRY)&_ZN6S427C33v37Ev,
  (VTBL_ENTRY)&_ZN6S427C33v38Ev,
  (VTBL_ENTRY)&_ZN6S427C33v39Ev,
  (VTBL_ENTRY)&_ZN6S427C33v40Ev,
  (VTBL_ENTRY)&_ZN6S427C33v41Ev,
  (VTBL_ENTRY)&_ZN6S427C33v42Ev,
  (VTBL_ENTRY)&_ZN6S427C33v43Ev,
  (VTBL_ENTRY)&_ZN6S427C33v44Ev,
  (VTBL_ENTRY)&_ZN6S427C33v45Ev,
  (VTBL_ENTRY)&_ZN6S427C33v46Ev,
  (VTBL_ENTRY)&_ZN6S427C33v47Ev,
  (VTBL_ENTRY)&_ZN6S427C33v48Ev,
  (VTBL_ENTRY)&_ZN6S427C33v49Ev,
  (VTBL_ENTRY)&_ZN6S427C33v50Ev,
  (VTBL_ENTRY)&_ZN6S427C33v51Ev,
  (VTBL_ENTRY)&_ZN6S427C33v52Ev,
};
extern VTBL_ENTRY _ZTI6S427C3[];
extern  VTBL_ENTRY _ZTV6S427C3[];
Class_Descriptor cd_S427C3 = {  "S427C3", // class name
  bases_S427C3, 2,
  &(vtc_S427C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(384,372), // object size
  NSPAIRA(_ZTI6S427C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S427C3),47, //virtual function table var
  2, // 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  S427C2  : S427C3 {
  virtual  ~S427C2(); // _ZN6S427C2D1Ev
  virtual void  v53(); // _ZN6S427C23v53Ev
  virtual void  v54(); // _ZN6S427C23v54Ev
  virtual void  v55(); // _ZN6S427C23v55Ev
  virtual void  v56(); // _ZN6S427C23v56Ev
  virtual void  v57(); // _ZN6S427C23v57Ev
  S427C2(); // tgen
};
//SIG(-1 S427C2) C1{ BC2{ BC3{ BC4{ m} vd v6} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 Fc[4] Fi[23] Fc[23] Fi[24] FL Fc Fp Fi Fc Fi[4] Fc[112]} vd v1 v2 v3 v4 v5}


 S427C2 ::~S427C2(){ note_dtor("S427C2", this);}
void  S427C2 ::v53(){vfunc_called(this, "_ZN6S427C23v53Ev");}
void  S427C2 ::v54(){vfunc_called(this, "_ZN6S427C23v54Ev");}
void  S427C2 ::v55(){vfunc_called(this, "_ZN6S427C23v55Ev");}
void  S427C2 ::v56(){vfunc_called(this, "_ZN6S427C23v56Ev");}
void  S427C2 ::v57(){vfunc_called(this, "_ZN6S427C23v57Ev");}
S427C2 ::S427C2(){ note_ctor("S427C2", this);} // tgen

static void Test_S427C2()
{
  extern Class_Descriptor cd_S427C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(49,94)];
    init_test(&cd_S427C2, buf);
    S427C2 *dp, &lv = *(dp=new (buf) S427C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,372), "sizeof(S427C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S427C2)");
    check_base_class_offset(lv, (S4677C37*)(S427C4*)(S427C3*), 0, "S427C2");
    check_base_class_offset(lv, (S427C4*)(S427C3*), 0, "S427C2");
    check_base_class_offset(lv, (S427C3*), 0, "S427C2");
    test_class_info(&lv, &cd_S427C2);
    dp->~S427C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS427C2(Test_S427C2, "S427C2", ABISELECT(384,372));

#else // __cplusplus

extern void _ZN6S427C2C1Ev();
extern void _ZN6S427C2D1Ev();
Name_Map name_map_S427C2[] = {
  NSPAIR(_ZN6S427C2C1Ev),
  NSPAIR(_ZN6S427C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S427C4;
extern VTBL_ENTRY _ZTI6S427C4[];
extern  VTBL_ENTRY _ZTV6S427C4[];
extern Class_Descriptor cd_S427C3;
extern VTBL_ENTRY _ZTI6S427C3[];
extern  VTBL_ENTRY _ZTV6S427C3[];
static Base_Class bases_S427C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S427C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S427C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S427C2[];
extern void _ZN6S427C2D1Ev();
extern void _ZN6S427C2D0Ev();
extern void _ZN6S427C43v10Ev();
extern void _ZN6S427C33v11Ev();
extern void _ZN6S427C33v12Ev();
extern void _ZN6S427C33v13Ev();
extern void _ZN6S427C33v14Ev();
extern void _ZN6S427C33v15Ev();
extern void _ZN6S427C33v16Ev();
extern void _ZN6S427C33v17Ev();
extern void _ZN6S427C33v18Ev();
extern void _ZN6S427C33v19Ev();
extern void _ZN6S427C33v20Ev();
extern void _ZN6S427C33v21Ev();
extern void _ZN6S427C33v22Ev();
extern void _ZN6S427C33v23Ev();
extern void _ZN6S427C33v24Ev();
extern void _ZN6S427C33v25Ev();
extern void _ZN6S427C33v26Ev();
extern void _ZN6S427C33v27Ev();
extern void _ZN6S427C33v28Ev();
extern void _ZN6S427C33v29Ev();
extern void _ZN6S427C33v30Ev();
extern void _ZN6S427C33v31Ev();
extern void _ZN6S427C33v32Ev();
extern void _ZN6S427C33v33Ev();
extern void _ZN6S427C33v34Ev();
extern void _ZN6S427C33v35Ev();
extern void _ZN6S427C33v36Ev();
extern void _ZN6S427C33v37Ev();
extern void _ZN6S427C33v38Ev();
extern void _ZN6S427C33v39Ev();
extern void _ZN6S427C33v40Ev();
extern void _ZN6S427C33v41Ev();
extern void _ZN6S427C33v42Ev();
extern void _ZN6S427C33v43Ev();
extern void _ZN6S427C33v44Ev();
extern void _ZN6S427C33v45Ev();
extern void _ZN6S427C33v46Ev();
extern void _ZN6S427C33v47Ev();
extern void _ZN6S427C33v48Ev();
extern void _ZN6S427C33v49Ev();
extern void _ZN6S427C33v50Ev();
extern void _ZN6S427C33v51Ev();
extern void _ZN6S427C33v52Ev();
extern void _ZN6S427C23v53Ev();
extern void _ZN6S427C23v54Ev();
extern void _ZN6S427C23v55Ev();
extern void _ZN6S427C23v56Ev();
extern void _ZN6S427C23v57Ev();
static  VTBL_ENTRY vtc_S427C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S427C2[0]),
  (VTBL_ENTRY)&_ZN6S427C2D1Ev,
  (VTBL_ENTRY)&_ZN6S427C2D0Ev,
  (VTBL_ENTRY)&_ZN6S427C43v10Ev,
  (VTBL_ENTRY)&_ZN6S427C33v11Ev,
  (VTBL_ENTRY)&_ZN6S427C33v12Ev,
  (VTBL_ENTRY)&_ZN6S427C33v13Ev,
  (VTBL_ENTRY)&_ZN6S427C33v14Ev,
  (VTBL_ENTRY)&_ZN6S427C33v15Ev,
  (VTBL_ENTRY)&_ZN6S427C33v16Ev,
  (VTBL_ENTRY)&_ZN6S427C33v17Ev,
  (VTBL_ENTRY)&_ZN6S427C33v18Ev,
  (VTBL_ENTRY)&_ZN6S427C33v19Ev,
  (VTBL_ENTRY)&_ZN6S427C33v20Ev,
  (VTBL_ENTRY)&_ZN6S427C33v21Ev,
  (VTBL_ENTRY)&_ZN6S427C33v22Ev,
  (VTBL_ENTRY)&_ZN6S427C33v23Ev,
  (VTBL_ENTRY)&_ZN6S427C33v24Ev,
  (VTBL_ENTRY)&_ZN6S427C33v25Ev,
  (VTBL_ENTRY)&_ZN6S427C33v26Ev,
  (VTBL_ENTRY)&_ZN6S427C33v27Ev,
  (VTBL_ENTRY)&_ZN6S427C33v28Ev,
  (VTBL_ENTRY)&_ZN6S427C33v29Ev,
  (VTBL_ENTRY)&_ZN6S427C33v30Ev,
  (VTBL_ENTRY)&_ZN6S427C33v31Ev,
  (VTBL_ENTRY)&_ZN6S427C33v32Ev,
  (VTBL_ENTRY)&_ZN6S427C33v33Ev,
  (VTBL_ENTRY)&_ZN6S427C33v34Ev,
  (VTBL_ENTRY)&_ZN6S427C33v35Ev,
  (VTBL_ENTRY)&_ZN6S427C33v36Ev,
  (VTBL_ENTRY)&_ZN6S427C33v37Ev,
  (VTBL_ENTRY)&_ZN6S427C33v38Ev,
  (VTBL_ENTRY)&_ZN6S427C33v39Ev,
  (VTBL_ENTRY)&_ZN6S427C33v40Ev,
  (VTBL_ENTRY)&_ZN6S427C33v41Ev,
  (VTBL_ENTRY)&_ZN6S427C33v42Ev,
  (VTBL_ENTRY)&_ZN6S427C33v43Ev,
  (VTBL_ENTRY)&_ZN6S427C33v44Ev,
  (VTBL_ENTRY)&_ZN6S427C33v45Ev,
  (VTBL_ENTRY)&_ZN6S427C33v46Ev,
  (VTBL_ENTRY)&_ZN6S427C33v47Ev,
  (VTBL_ENTRY)&_ZN6S427C33v48Ev,
  (VTBL_ENTRY)&_ZN6S427C33v49Ev,
  (VTBL_ENTRY)&_ZN6S427C33v50Ev,
  (VTBL_ENTRY)&_ZN6S427C33v51Ev,
  (VTBL_ENTRY)&_ZN6S427C33v52Ev,
  (VTBL_ENTRY)&_ZN6S427C23v53Ev,
  (VTBL_ENTRY)&_ZN6S427C23v54Ev,
  (VTBL_ENTRY)&_ZN6S427C23v55Ev,
  (VTBL_ENTRY)&_ZN6S427C23v56Ev,
  (VTBL_ENTRY)&_ZN6S427C23v57Ev,
};
extern VTBL_ENTRY _ZTI6S427C2[];
extern  VTBL_ENTRY _ZTV6S427C2[];
Class_Descriptor cd_S427C2 = {  "S427C2", // class name
  bases_S427C2, 3,
  &(vtc_S427C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(384,372), // object size
  NSPAIRA(_ZTI6S427C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S427C2),52, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S427C1  : S427C2 {
  int s427c1f0;
  virtual  ~S427C1(); // _ZN6S427C1D1Ev
  virtual void  v1(); // _ZN6S427C12v1Ev
  virtual void  v2(); // _ZN6S427C12v2Ev
  virtual void  v3(); // _ZN6S427C12v3Ev
  virtual void  v4(); // _ZN6S427C12v4Ev
  virtual void  v5(); // _ZN6S427C12v5Ev
  virtual void  v6(); // _ZN6S427C12v6Ev
  virtual void  v7(); // _ZN6S427C12v7Ev
  virtual void  v8(); // _ZN6S427C12v8Ev
  virtual void  v9(); // _ZN6S427C12v9Ev
  S427C1(); // tgen
};
//SIG(1 S427C1) C1{ BC2{ BC3{ BC4{ BC5{ m} vd v10} 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 Fc[4] Fi[23] Fc[23] Fi[24] FL Fc Fp Fi Fc Fi[4] Fc[112]} vd v53 v54 v55 v56 v57} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fi}


 S427C1 ::~S427C1(){ note_dtor("S427C1", this);}
void  S427C1 ::v1(){vfunc_called(this, "_ZN6S427C12v1Ev");}
void  S427C1 ::v2(){vfunc_called(this, "_ZN6S427C12v2Ev");}
void  S427C1 ::v3(){vfunc_called(this, "_ZN6S427C12v3Ev");}
void  S427C1 ::v4(){vfunc_called(this, "_ZN6S427C12v4Ev");}
void  S427C1 ::v5(){vfunc_called(this, "_ZN6S427C12v5Ev");}
void  S427C1 ::v6(){vfunc_called(this, "_ZN6S427C12v6Ev");}
void  S427C1 ::v7(){vfunc_called(this, "_ZN6S427C12v7Ev");}
void  S427C1 ::v8(){vfunc_called(this, "_ZN6S427C12v8Ev");}
void  S427C1 ::v9(){vfunc_called(this, "_ZN6S427C12v9Ev");}
S427C1 ::S427C1(){ note_ctor("S427C1", this);} // tgen

static void Test_S427C1()
{
  extern Class_Descriptor cd_S427C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(50,95)];
    init_test(&cd_S427C1, buf);
    S427C1 *dp, &lv = *(dp=new (buf) S427C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(392,376), "sizeof(S427C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S427C1)");
    check_base_class_offset(lv, (S4677C37*)(S427C4*)(S427C3*)(S427C2*), 0, "S427C1");
    check_base_class_offset(lv, (S427C4*)(S427C3*)(S427C2*), 0, "S427C1");
    check_base_class_offset(lv, (S427C3*)(S427C2*), 0, "S427C1");
    check_base_class_offset(lv, (S427C2*), 0, "S427C1");
    check_field_offset(lv, s427c1f0, ABISELECT(384,372), "S427C1.s427c1f0");
    test_class_info(&lv, &cd_S427C1);
    dp->~S427C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS427C1(Test_S427C1, "S427C1", ABISELECT(392,376));

#else // __cplusplus

extern void _ZN6S427C1C1Ev();
extern void _ZN6S427C1D1Ev();
Name_Map name_map_S427C1[] = {
  NSPAIR(_ZN6S427C1C1Ev),
  NSPAIR(_ZN6S427C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S427C4;
extern VTBL_ENTRY _ZTI6S427C4[];
extern  VTBL_ENTRY _ZTV6S427C4[];
extern Class_Descriptor cd_S427C3;
extern VTBL_ENTRY _ZTI6S427C3[];
extern  VTBL_ENTRY _ZTV6S427C3[];
extern Class_Descriptor cd_S427C2;
extern VTBL_ENTRY _ZTI6S427C2[];
extern  VTBL_ENTRY _ZTV6S427C2[];
static Base_Class bases_S427C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S427C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S427C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S427C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S427C1[];
extern void _ZN6S427C1D1Ev();
extern void _ZN6S427C1D0Ev();
extern void _ZN6S427C43v10Ev();
extern void _ZN6S427C33v11Ev();
extern void _ZN6S427C33v12Ev();
extern void _ZN6S427C33v13Ev();
extern void _ZN6S427C33v14Ev();
extern void _ZN6S427C33v15Ev();
extern void _ZN6S427C33v16Ev();
extern void _ZN6S427C33v17Ev();
extern void _ZN6S427C33v18Ev();
extern void _ZN6S427C33v19Ev();
extern void _ZN6S427C33v20Ev();
extern void _ZN6S427C33v21Ev();
extern void _ZN6S427C33v22Ev();
extern void _ZN6S427C33v23Ev();
extern void _ZN6S427C33v24Ev();
extern void _ZN6S427C33v25Ev();
extern void _ZN6S427C33v26Ev();
extern void _ZN6S427C33v27Ev();
extern void _ZN6S427C33v28Ev();
extern void _ZN6S427C33v29Ev();
extern void _ZN6S427C33v30Ev();
extern void _ZN6S427C33v31Ev();
extern void _ZN6S427C33v32Ev();
extern void _ZN6S427C33v33Ev();
extern void _ZN6S427C33v34Ev();
extern void _ZN6S427C33v35Ev();
extern void _ZN6S427C33v36Ev();
extern void _ZN6S427C33v37Ev();
extern void _ZN6S427C33v38Ev();
extern void _ZN6S427C33v39Ev();
extern void _ZN6S427C33v40Ev();
extern void _ZN6S427C33v41Ev();
extern void _ZN6S427C33v42Ev();
extern void _ZN6S427C33v43Ev();
extern void _ZN6S427C33v44Ev();
extern void _ZN6S427C33v45Ev();
extern void _ZN6S427C33v46Ev();
extern void _ZN6S427C33v47Ev();
extern void _ZN6S427C33v48Ev();
extern void _ZN6S427C33v49Ev();
extern void _ZN6S427C33v50Ev();
extern void _ZN6S427C33v51Ev();
extern void _ZN6S427C33v52Ev();
extern void _ZN6S427C23v53Ev();
extern void _ZN6S427C23v54Ev();
extern void _ZN6S427C23v55Ev();
extern void _ZN6S427C23v56Ev();
extern void _ZN6S427C23v57Ev();
extern void _ZN6S427C12v1Ev();
extern void _ZN6S427C12v2Ev();
extern void _ZN6S427C12v3Ev();
extern void _ZN6S427C12v4Ev();
extern void _ZN6S427C12v5Ev();
extern void _ZN6S427C12v6Ev();
extern void _ZN6S427C12v7Ev();
extern void _ZN6S427C12v8Ev();
extern void _ZN6S427C12v9Ev();
static  VTBL_ENTRY vtc_S427C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S427C1[0]),
  (VTBL_ENTRY)&_ZN6S427C1D1Ev,
  (VTBL_ENTRY)&_ZN6S427C1D0Ev,
  (VTBL_ENTRY)&_ZN6S427C43v10Ev,
  (VTBL_ENTRY)&_ZN6S427C33v11Ev,
  (VTBL_ENTRY)&_ZN6S427C33v12Ev,
  (VTBL_ENTRY)&_ZN6S427C33v13Ev,
  (VTBL_ENTRY)&_ZN6S427C33v14Ev,
  (VTBL_ENTRY)&_ZN6S427C33v15Ev,
  (VTBL_ENTRY)&_ZN6S427C33v16Ev,
  (VTBL_ENTRY)&_ZN6S427C33v17Ev,
  (VTBL_ENTRY)&_ZN6S427C33v18Ev,
  (VTBL_ENTRY)&_ZN6S427C33v19Ev,
  (VTBL_ENTRY)&_ZN6S427C33v20Ev,
  (VTBL_ENTRY)&_ZN6S427C33v21Ev,
  (VTBL_ENTRY)&_ZN6S427C33v22Ev,
  (VTBL_ENTRY)&_ZN6S427C33v23Ev,
  (VTBL_ENTRY)&_ZN6S427C33v24Ev,
  (VTBL_ENTRY)&_ZN6S427C33v25Ev,
  (VTBL_ENTRY)&_ZN6S427C33v26Ev,
  (VTBL_ENTRY)&_ZN6S427C33v27Ev,
  (VTBL_ENTRY)&_ZN6S427C33v28Ev,
  (VTBL_ENTRY)&_ZN6S427C33v29Ev,
  (VTBL_ENTRY)&_ZN6S427C33v30Ev,
  (VTBL_ENTRY)&_ZN6S427C33v31Ev,
  (VTBL_ENTRY)&_ZN6S427C33v32Ev,
  (VTBL_ENTRY)&_ZN6S427C33v33Ev,
  (VTBL_ENTRY)&_ZN6S427C33v34Ev,
  (VTBL_ENTRY)&_ZN6S427C33v35Ev,
  (VTBL_ENTRY)&_ZN6S427C33v36Ev,
  (VTBL_ENTRY)&_ZN6S427C33v37Ev,
  (VTBL_ENTRY)&_ZN6S427C33v38Ev,
  (VTBL_ENTRY)&_ZN6S427C33v39Ev,
  (VTBL_ENTRY)&_ZN6S427C33v40Ev,
  (VTBL_ENTRY)&_ZN6S427C33v41Ev,
  (VTBL_ENTRY)&_ZN6S427C33v42Ev,
  (VTBL_ENTRY)&_ZN6S427C33v43Ev,
  (VTBL_ENTRY)&_ZN6S427C33v44Ev,
  (VTBL_ENTRY)&_ZN6S427C33v45Ev,
  (VTBL_ENTRY)&_ZN6S427C33v46Ev,
  (VTBL_ENTRY)&_ZN6S427C33v47Ev,
  (VTBL_ENTRY)&_ZN6S427C33v48Ev,
  (VTBL_ENTRY)&_ZN6S427C33v49Ev,
  (VTBL_ENTRY)&_ZN6S427C33v50Ev,
  (VTBL_ENTRY)&_ZN6S427C33v51Ev,
  (VTBL_ENTRY)&_ZN6S427C33v52Ev,
  (VTBL_ENTRY)&_ZN6S427C23v53Ev,
  (VTBL_ENTRY)&_ZN6S427C23v54Ev,
  (VTBL_ENTRY)&_ZN6S427C23v55Ev,
  (VTBL_ENTRY)&_ZN6S427C23v56Ev,
  (VTBL_ENTRY)&_ZN6S427C23v57Ev,
  (VTBL_ENTRY)&_ZN6S427C12v1Ev,
  (VTBL_ENTRY)&_ZN6S427C12v2Ev,
  (VTBL_ENTRY)&_ZN6S427C12v3Ev,
  (VTBL_ENTRY)&_ZN6S427C12v4Ev,
  (VTBL_ENTRY)&_ZN6S427C12v5Ev,
  (VTBL_ENTRY)&_ZN6S427C12v6Ev,
  (VTBL_ENTRY)&_ZN6S427C12v7Ev,
  (VTBL_ENTRY)&_ZN6S427C12v8Ev,
  (VTBL_ENTRY)&_ZN6S427C12v9Ev,
};
extern VTBL_ENTRY _ZTI6S427C1[];
extern  VTBL_ENTRY _ZTV6S427C1[];
Class_Descriptor cd_S427C1 = {  "S427C1", // class name
  bases_S427C1, 4,
  &(vtc_S427C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(392,376), // object size
  NSPAIRA(_ZTI6S427C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S427C1),61, //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  S466C4  : S4677C37 {
  virtual  ~S466C4(); // _ZN6S466C4D1Ev
  virtual void  v9(); // _ZN6S466C42v9Ev
  S466C4(); // tgen
};
//SIG(-1 S466C4) C1{ BC2{ m} vd v1}


 S466C4 ::~S466C4(){ note_dtor("S466C4", this);}
void  S466C4 ::v9(){vfunc_called(this, "_ZN6S466C42v9Ev");}
S466C4 ::S466C4(){ note_ctor("S466C4", this);} // tgen

static void Test_S466C4()
{
  extern Class_Descriptor cd_S466C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S466C4, buf);
    S466C4 *dp, &lv = *(dp=new (buf) S466C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S466C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S466C4)");
    check_base_class_offset(lv, (S4677C37*), 0, "S466C4");
    test_class_info(&lv, &cd_S466C4);
    dp->~S466C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS466C4(Test_S466C4, "S466C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN6S466C4C1Ev();
extern void _ZN6S466C4D1Ev();
Name_Map name_map_S466C4[] = {
  NSPAIR(_ZN6S466C4C1Ev),
  NSPAIR(_ZN6S466C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
static Base_Class bases_S466C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S466C4[];
extern void _ZN6S466C4D1Ev();
extern void _ZN6S466C4D0Ev();
extern void _ZN6S466C42v9Ev();
static  VTBL_ENTRY vtc_S466C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S466C4[0]),
  (VTBL_ENTRY)&_ZN6S466C4D1Ev,
  (VTBL_ENTRY)&_ZN6S466C4D0Ev,
  (VTBL_ENTRY)&_ZN6S466C42v9Ev,
};
extern VTBL_ENTRY _ZTI6S466C4[];
extern  VTBL_ENTRY _ZTV6S466C4[];
Class_Descriptor cd_S466C4 = {  "S466C4", // class name
  bases_S466C4, 1,
  &(vtc_S466C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI6S466C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S466C4),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  S466C3  : S466C4 {
  char s466c3f0[4];
  int s466c3f1[23];
  char s466c3f2[23];
  int s466c3f3[24];
  __tsi64 s466c3f4;
  char s466c3f5;
  void *s466c3f6;
  int s466c3f7;
  char s466c3f8;
  int s466c3f9[4];
  char s466c3f10[112];
  virtual  ~S466C3(); // _ZN6S466C3D1Ev
  virtual void  v10(); // _ZN6S466C33v10Ev
  virtual void  v11(); // _ZN6S466C33v11Ev
  virtual void  v12(); // _ZN6S466C33v12Ev
  virtual void  v13(); // _ZN6S466C33v13Ev
  virtual void  v14(); // _ZN6S466C33v14Ev
  virtual void  v15(); // _ZN6S466C33v15Ev
  virtual void  v16(); // _ZN6S466C33v16Ev
  virtual void  v17(); // _ZN6S466C33v17Ev
  virtual void  v18(); // _ZN6S466C33v18Ev
  virtual void  v19(); // _ZN6S466C33v19Ev
  virtual void  v20(); // _ZN6S466C33v20Ev
  virtual void  v21(); // _ZN6S466C33v21Ev
  virtual void  v22(); // _ZN6S466C33v22Ev
  virtual void  v23(); // _ZN6S466C33v23Ev
  virtual void  v24(); // _ZN6S466C33v24Ev
  virtual void  v25(); // _ZN6S466C33v25Ev
  virtual void  v26(); // _ZN6S466C33v26Ev
  virtual void  v27(); // _ZN6S466C33v27Ev
  virtual void  v28(); // _ZN6S466C33v28Ev
  virtual void  v29(); // _ZN6S466C33v29Ev
  virtual void  v30(); // _ZN6S466C33v30Ev
  virtual void  v31(); // _ZN6S466C33v31Ev
  virtual void  v32(); // _ZN6S466C33v32Ev
  virtual void  v33(); // _ZN6S466C33v33Ev
  virtual void  v34(); // _ZN6S466C33v34Ev
  virtual void  v35(); // _ZN6S466C33v35Ev
  virtual void  v36(); // _ZN6S466C33v36Ev
  virtual void  v37(); // _ZN6S466C33v37Ev
  virtual void  v38(); // _ZN6S466C33v38Ev
  virtual void  v39(); // _ZN6S466C33v39Ev
  virtual void  v40(); // _ZN6S466C33v40Ev
  virtual void  v41(); // _ZN6S466C33v41Ev
  virtual void  v42(); // _ZN6S466C33v42Ev
  virtual void  v43(); // _ZN6S466C33v43Ev
  virtual void  v44(); // _ZN6S466C33v44Ev
  virtual void  v45(); // _ZN6S466C33v45Ev
  virtual void  v46(); // _ZN6S466C33v46Ev
  virtual void  v47(); // _ZN6S466C33v47Ev
  virtual void  v48(); // _ZN6S466C33v48Ev
  virtual void  v49(); // _ZN6S466C33v49Ev
  virtual void  v50(); // _ZN6S466C33v50Ev
  virtual void  v51(); // _ZN6S466C33v51Ev
  S466C3(); // tgen
};
//SIG(-1 S466C3) C1{ BC2{ BC3{ m} vd v43} 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 Fc[4] Fi[23] Fc[23] Fi[24] FL Fc Fp Fi Fc Fi[4] Fc[112]}


 S466C3 ::~S466C3(){ note_dtor("S466C3", this);}
void  S466C3 ::v10(){vfunc_called(this, "_ZN6S466C33v10Ev");}
void  S466C3 ::v11(){vfunc_called(this, "_ZN6S466C33v11Ev");}
void  S466C3 ::v12(){vfunc_called(this, "_ZN6S466C33v12Ev");}
void  S466C3 ::v13(){vfunc_called(this, "_ZN6S466C33v13Ev");}
void  S466C3 ::v14(){vfunc_called(this, "_ZN6S466C33v14Ev");}
void  S466C3 ::v15(){vfunc_called(this, "_ZN6S466C33v15Ev");}
void  S466C3 ::v16(){vfunc_called(this, "_ZN6S466C33v16Ev");}
void  S466C3 ::v17(){vfunc_called(this, "_ZN6S466C33v17Ev");}
void  S466C3 ::v18(){vfunc_called(this, "_ZN6S466C33v18Ev");}
void  S466C3 ::v19(){vfunc_called(this, "_ZN6S466C33v19Ev");}
void  S466C3 ::v20(){vfunc_called(this, "_ZN6S466C33v20Ev");}
void  S466C3 ::v21(){vfunc_called(this, "_ZN6S466C33v21Ev");}
void  S466C3 ::v22(){vfunc_called(this, "_ZN6S466C33v22Ev");}
void  S466C3 ::v23(){vfunc_called(this, "_ZN6S466C33v23Ev");}
void  S466C3 ::v24(){vfunc_called(this, "_ZN6S466C33v24Ev");}
void  S466C3 ::v25(){vfunc_called(this, "_ZN6S466C33v25Ev");}
void  S466C3 ::v26(){vfunc_called(this, "_ZN6S466C33v26Ev");}
void  S466C3 ::v27(){vfunc_called(this, "_ZN6S466C33v27Ev");}
void  S466C3 ::v28(){vfunc_called(this, "_ZN6S466C33v28Ev");}
void  S466C3 ::v29(){vfunc_called(this, "_ZN6S466C33v29Ev");}
void  S466C3 ::v30(){vfunc_called(this, "_ZN6S466C33v30Ev");}
void  S466C3 ::v31(){vfunc_called(this, "_ZN6S466C33v31Ev");}
void  S466C3 ::v32(){vfunc_called(this, "_ZN6S466C33v32Ev");}
void  S466C3 ::v33(){vfunc_called(this, "_ZN6S466C33v33Ev");}
void  S466C3 ::v34(){vfunc_called(this, "_ZN6S466C33v34Ev");}
void  S466C3 ::v35(){vfunc_called(this, "_ZN6S466C33v35Ev");}
void  S466C3 ::v36(){vfunc_called(this, "_ZN6S466C33v36Ev");}
void  S466C3 ::v37(){vfunc_called(this, "_ZN6S466C33v37Ev");}
void  S466C3 ::v38(){vfunc_called(this, "_ZN6S466C33v38Ev");}
void  S466C3 ::v39(){vfunc_called(this, "_ZN6S466C33v39Ev");}
void  S466C3 ::v40(){vfunc_called(this, "_ZN6S466C33v40Ev");}
void  S466C3 ::v41(){vfunc_called(this, "_ZN6S466C33v41Ev");}
void  S466C3 ::v42(){vfunc_called(this, "_ZN6S466C33v42Ev");}
void  S466C3 ::v43(){vfunc_called(this, "_ZN6S466C33v43Ev");}
void  S466C3 ::v44(){vfunc_called(this, "_ZN6S466C33v44Ev");}
void  S466C3 ::v45(){vfunc_called(this, "_ZN6S466C33v45Ev");}
void  S466C3 ::v46(){vfunc_called(this, "_ZN6S466C33v46Ev");}
void  S466C3 ::v47(){vfunc_called(this, "_ZN6S466C33v47Ev");}
void  S466C3 ::v48(){vfunc_called(this, "_ZN6S466C33v48Ev");}
void  S466C3 ::v49(){vfunc_called(this, "_ZN6S466C33v49Ev");}
void  S466C3 ::v50(){vfunc_called(this, "_ZN6S466C33v50Ev");}
void  S466C3 ::v51(){vfunc_called(this, "_ZN6S466C33v51Ev");}
S466C3 ::S466C3(){ note_ctor("S466C3", this);} // tgen

static void Test_S466C3()
{
  extern Class_Descriptor cd_S466C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(49,94)];
    init_test(&cd_S466C3, buf);
    S466C3 *dp, &lv = *(dp=new (buf) S466C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,372), "sizeof(S466C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S466C3)");
    check_base_class_offset(lv, (S4677C37*)(S466C4*), 0, "S466C3");
    check_base_class_offset(lv, (S466C4*), 0, "S466C3");
    check_field_offset(lv, s466c3f0, ABISELECT(8,4), "S466C3.s466c3f0");
    check_field_offset(lv, s466c3f1, ABISELECT(12,8), "S466C3.s466c3f1");
    check_field_offset(lv, s466c3f2, ABISELECT(104,100), "S466C3.s466c3f2");
    check_field_offset(lv, s466c3f3, ABISELECT(128,124), "S466C3.s466c3f3");
    check_field_offset(lv, s466c3f4, ABISELECT(224,220), "S466C3.s466c3f4");
    check_field_offset(lv, s466c3f5, ABISELECT(232,228), "S466C3.s466c3f5");
    check_field_offset(lv, s466c3f6, ABISELECT(240,232), "S466C3.s466c3f6");
    check_field_offset(lv, s466c3f7, ABISELECT(248,236), "S466C3.s466c3f7");
    check_field_offset(lv, s466c3f8, ABISELECT(252,240), "S466C3.s466c3f8");
    check_field_offset(lv, s466c3f9, ABISELECT(256,244), "S466C3.s466c3f9");
    check_field_offset(lv, s466c3f10, ABISELECT(272,260), "S466C3.s466c3f10");
    test_class_info(&lv, &cd_S466C3);
    dp->~S466C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS466C3(Test_S466C3, "S466C3", ABISELECT(384,372));

#else // __cplusplus

extern void _ZN6S466C3C1Ev();
extern void _ZN6S466C3D1Ev();
Name_Map name_map_S466C3[] = {
  NSPAIR(_ZN6S466C3C1Ev),
  NSPAIR(_ZN6S466C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S466C4;
extern VTBL_ENTRY _ZTI6S466C4[];
extern  VTBL_ENTRY _ZTV6S466C4[];
static Base_Class bases_S466C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S466C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S466C3[];
extern void _ZN6S466C3D1Ev();
extern void _ZN6S466C3D0Ev();
extern void _ZN6S466C42v9Ev();
extern void _ZN6S466C33v10Ev();
extern void _ZN6S466C33v11Ev();
extern void _ZN6S466C33v12Ev();
extern void _ZN6S466C33v13Ev();
extern void _ZN6S466C33v14Ev();
extern void _ZN6S466C33v15Ev();
extern void _ZN6S466C33v16Ev();
extern void _ZN6S466C33v17Ev();
extern void _ZN6S466C33v18Ev();
extern void _ZN6S466C33v19Ev();
extern void _ZN6S466C33v20Ev();
extern void _ZN6S466C33v21Ev();
extern void _ZN6S466C33v22Ev();
extern void _ZN6S466C33v23Ev();
extern void _ZN6S466C33v24Ev();
extern void _ZN6S466C33v25Ev();
extern void _ZN6S466C33v26Ev();
extern void _ZN6S466C33v27Ev();
extern void _ZN6S466C33v28Ev();
extern void _ZN6S466C33v29Ev();
extern void _ZN6S466C33v30Ev();
extern void _ZN6S466C33v31Ev();
extern void _ZN6S466C33v32Ev();
extern void _ZN6S466C33v33Ev();
extern void _ZN6S466C33v34Ev();
extern void _ZN6S466C33v35Ev();
extern void _ZN6S466C33v36Ev();
extern void _ZN6S466C33v37Ev();
extern void _ZN6S466C33v38Ev();
extern void _ZN6S466C33v39Ev();
extern void _ZN6S466C33v40Ev();
extern void _ZN6S466C33v41Ev();
extern void _ZN6S466C33v42Ev();
extern void _ZN6S466C33v43Ev();
extern void _ZN6S466C33v44Ev();
extern void _ZN6S466C33v45Ev();
extern void _ZN6S466C33v46Ev();
extern void _ZN6S466C33v47Ev();
extern void _ZN6S466C33v48Ev();
extern void _ZN6S466C33v49Ev();
extern void _ZN6S466C33v50Ev();
extern void _ZN6S466C33v51Ev();
static  VTBL_ENTRY vtc_S466C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S466C3[0]),
  (VTBL_ENTRY)&_ZN6S466C3D1Ev,
  (VTBL_ENTRY)&_ZN6S466C3D0Ev,
  (VTBL_ENTRY)&_ZN6S466C42v9Ev,
  (VTBL_ENTRY)&_ZN6S466C33v10Ev,
  (VTBL_ENTRY)&_ZN6S466C33v11Ev,
  (VTBL_ENTRY)&_ZN6S466C33v12Ev,
  (VTBL_ENTRY)&_ZN6S466C33v13Ev,
  (VTBL_ENTRY)&_ZN6S466C33v14Ev,
  (VTBL_ENTRY)&_ZN6S466C33v15Ev,
  (VTBL_ENTRY)&_ZN6S466C33v16Ev,
  (VTBL_ENTRY)&_ZN6S466C33v17Ev,
  (VTBL_ENTRY)&_ZN6S466C33v18Ev,
  (VTBL_ENTRY)&_ZN6S466C33v19Ev,
  (VTBL_ENTRY)&_ZN6S466C33v20Ev,
  (VTBL_ENTRY)&_ZN6S466C33v21Ev,
  (VTBL_ENTRY)&_ZN6S466C33v22Ev,
  (VTBL_ENTRY)&_ZN6S466C33v23Ev,
  (VTBL_ENTRY)&_ZN6S466C33v24Ev,
  (VTBL_ENTRY)&_ZN6S466C33v25Ev,
  (VTBL_ENTRY)&_ZN6S466C33v26Ev,
  (VTBL_ENTRY)&_ZN6S466C33v27Ev,
  (VTBL_ENTRY)&_ZN6S466C33v28Ev,
  (VTBL_ENTRY)&_ZN6S466C33v29Ev,
  (VTBL_ENTRY)&_ZN6S466C33v30Ev,
  (VTBL_ENTRY)&_ZN6S466C33v31Ev,
  (VTBL_ENTRY)&_ZN6S466C33v32Ev,
  (VTBL_ENTRY)&_ZN6S466C33v33Ev,
  (VTBL_ENTRY)&_ZN6S466C33v34Ev,
  (VTBL_ENTRY)&_ZN6S466C33v35Ev,
  (VTBL_ENTRY)&_ZN6S466C33v36Ev,
  (VTBL_ENTRY)&_ZN6S466C33v37Ev,
  (VTBL_ENTRY)&_ZN6S466C33v38Ev,
  (VTBL_ENTRY)&_ZN6S466C33v39Ev,
  (VTBL_ENTRY)&_ZN6S466C33v40Ev,
  (VTBL_ENTRY)&_ZN6S466C33v41Ev,
  (VTBL_ENTRY)&_ZN6S466C33v42Ev,
  (VTBL_ENTRY)&_ZN6S466C33v43Ev,
  (VTBL_ENTRY)&_ZN6S466C33v44Ev,
  (VTBL_ENTRY)&_ZN6S466C33v45Ev,
  (VTBL_ENTRY)&_ZN6S466C33v46Ev,
  (VTBL_ENTRY)&_ZN6S466C33v47Ev,
  (VTBL_ENTRY)&_ZN6S466C33v48Ev,
  (VTBL_ENTRY)&_ZN6S466C33v49Ev,
  (VTBL_ENTRY)&_ZN6S466C33v50Ev,
  (VTBL_ENTRY)&_ZN6S466C33v51Ev,
};
extern VTBL_ENTRY _ZTI6S466C3[];
extern  VTBL_ENTRY _ZTV6S466C3[];
Class_Descriptor cd_S466C3 = {  "S466C3", // class name
  bases_S466C3, 2,
  &(vtc_S466C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(384,372), // object size
  NSPAIRA(_ZTI6S466C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S466C3),47, //virtual function table var
  2, // 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  S466C2  : S466C3 {
  virtual  ~S466C2(); // _ZN6S466C2D1Ev
  virtual void  v52(); // _ZN6S466C23v52Ev
  virtual void  v53(); // _ZN6S466C23v53Ev
  virtual void  v54(); // _ZN6S466C23v54Ev
  virtual void  v55(); // _ZN6S466C23v55Ev
  virtual void  v56(); // _ZN6S466C23v56Ev
  S466C2(); // tgen
};
//SIG(-1 S466C2) C1{ BC2{ BC3{ BC4{ m} vd v6} vd v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 Fc[4] Fi[23] Fc[23] Fi[24] FL Fc Fp Fi Fc Fi[4] Fc[112]} vd v1 v2 v3 v4 v5}


 S466C2 ::~S466C2(){ note_dtor("S466C2", this);}
void  S466C2 ::v52(){vfunc_called(this, "_ZN6S466C23v52Ev");}
void  S466C2 ::v53(){vfunc_called(this, "_ZN6S466C23v53Ev");}
void  S466C2 ::v54(){vfunc_called(this, "_ZN6S466C23v54Ev");}
void  S466C2 ::v55(){vfunc_called(this, "_ZN6S466C23v55Ev");}
void  S466C2 ::v56(){vfunc_called(this, "_ZN6S466C23v56Ev");}
S466C2 ::S466C2(){ note_ctor("S466C2", this);} // tgen

static void Test_S466C2()
{
  extern Class_Descriptor cd_S466C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(49,94)];
    init_test(&cd_S466C2, buf);
    S466C2 *dp, &lv = *(dp=new (buf) S466C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,372), "sizeof(S466C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S466C2)");
    check_base_class_offset(lv, (S4677C37*)(S466C4*)(S466C3*), 0, "S466C2");
    check_base_class_offset(lv, (S466C4*)(S466C3*), 0, "S466C2");
    check_base_class_offset(lv, (S466C3*), 0, "S466C2");
    test_class_info(&lv, &cd_S466C2);
    dp->~S466C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS466C2(Test_S466C2, "S466C2", ABISELECT(384,372));

#else // __cplusplus

extern void _ZN6S466C2C1Ev();
extern void _ZN6S466C2D1Ev();
Name_Map name_map_S466C2[] = {
  NSPAIR(_ZN6S466C2C1Ev),
  NSPAIR(_ZN6S466C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S466C4;
extern VTBL_ENTRY _ZTI6S466C4[];
extern  VTBL_ENTRY _ZTV6S466C4[];
extern Class_Descriptor cd_S466C3;
extern VTBL_ENTRY _ZTI6S466C3[];
extern  VTBL_ENTRY _ZTV6S466C3[];
static Base_Class bases_S466C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S466C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S466C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S466C2[];
extern void _ZN6S466C2D1Ev();
extern void _ZN6S466C2D0Ev();
extern void _ZN6S466C42v9Ev();
extern void _ZN6S466C33v10Ev();
extern void _ZN6S466C33v11Ev();
extern void _ZN6S466C33v12Ev();
extern void _ZN6S466C33v13Ev();
extern void _ZN6S466C33v14Ev();
extern void _ZN6S466C33v15Ev();
extern void _ZN6S466C33v16Ev();
extern void _ZN6S466C33v17Ev();
extern void _ZN6S466C33v18Ev();
extern void _ZN6S466C33v19Ev();
extern void _ZN6S466C33v20Ev();
extern void _ZN6S466C33v21Ev();
extern void _ZN6S466C33v22Ev();
extern void _ZN6S466C33v23Ev();
extern void _ZN6S466C33v24Ev();
extern void _ZN6S466C33v25Ev();
extern void _ZN6S466C33v26Ev();
extern void _ZN6S466C33v27Ev();
extern void _ZN6S466C33v28Ev();
extern void _ZN6S466C33v29Ev();
extern void _ZN6S466C33v30Ev();
extern void _ZN6S466C33v31Ev();
extern void _ZN6S466C33v32Ev();
extern void _ZN6S466C33v33Ev();
extern void _ZN6S466C33v34Ev();
extern void _ZN6S466C33v35Ev();
extern void _ZN6S466C33v36Ev();
extern void _ZN6S466C33v37Ev();
extern void _ZN6S466C33v38Ev();
extern void _ZN6S466C33v39Ev();
extern void _ZN6S466C33v40Ev();
extern void _ZN6S466C33v41Ev();
extern void _ZN6S466C33v42Ev();
extern void _ZN6S466C33v43Ev();
extern void _ZN6S466C33v44Ev();
extern void _ZN6S466C33v45Ev();
extern void _ZN6S466C33v46Ev();
extern void _ZN6S466C33v47Ev();
extern void _ZN6S466C33v48Ev();
extern void _ZN6S466C33v49Ev();
extern void _ZN6S466C33v50Ev();
extern void _ZN6S466C33v51Ev();
extern void _ZN6S466C23v52Ev();
extern void _ZN6S466C23v53Ev();
extern void _ZN6S466C23v54Ev();
extern void _ZN6S466C23v55Ev();
extern void _ZN6S466C23v56Ev();
static  VTBL_ENTRY vtc_S466C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S466C2[0]),
  (VTBL_ENTRY)&_ZN6S466C2D1Ev,
  (VTBL_ENTRY)&_ZN6S466C2D0Ev,
  (VTBL_ENTRY)&_ZN6S466C42v9Ev,
  (VTBL_ENTRY)&_ZN6S466C33v10Ev,
  (VTBL_ENTRY)&_ZN6S466C33v11Ev,
  (VTBL_ENTRY)&_ZN6S466C33v12Ev,
  (VTBL_ENTRY)&_ZN6S466C33v13Ev,
  (VTBL_ENTRY)&_ZN6S466C33v14Ev,
  (VTBL_ENTRY)&_ZN6S466C33v15Ev,
  (VTBL_ENTRY)&_ZN6S466C33v16Ev,
  (VTBL_ENTRY)&_ZN6S466C33v17Ev,
  (VTBL_ENTRY)&_ZN6S466C33v18Ev,
  (VTBL_ENTRY)&_ZN6S466C33v19Ev,
  (VTBL_ENTRY)&_ZN6S466C33v20Ev,
  (VTBL_ENTRY)&_ZN6S466C33v21Ev,
  (VTBL_ENTRY)&_ZN6S466C33v22Ev,
  (VTBL_ENTRY)&_ZN6S466C33v23Ev,
  (VTBL_ENTRY)&_ZN6S466C33v24Ev,
  (VTBL_ENTRY)&_ZN6S466C33v25Ev,
  (VTBL_ENTRY)&_ZN6S466C33v26Ev,
  (VTBL_ENTRY)&_ZN6S466C33v27Ev,
  (VTBL_ENTRY)&_ZN6S466C33v28Ev,
  (VTBL_ENTRY)&_ZN6S466C33v29Ev,
  (VTBL_ENTRY)&_ZN6S466C33v30Ev,
  (VTBL_ENTRY)&_ZN6S466C33v31Ev,
  (VTBL_ENTRY)&_ZN6S466C33v32Ev,
  (VTBL_ENTRY)&_ZN6S466C33v33Ev,
  (VTBL_ENTRY)&_ZN6S466C33v34Ev,
  (VTBL_ENTRY)&_ZN6S466C33v35Ev,
  (VTBL_ENTRY)&_ZN6S466C33v36Ev,
  (VTBL_ENTRY)&_ZN6S466C33v37Ev,
  (VTBL_ENTRY)&_ZN6S466C33v38Ev,
  (VTBL_ENTRY)&_ZN6S466C33v39Ev,
  (VTBL_ENTRY)&_ZN6S466C33v40Ev,
  (VTBL_ENTRY)&_ZN6S466C33v41Ev,
  (VTBL_ENTRY)&_ZN6S466C33v42Ev,
  (VTBL_ENTRY)&_ZN6S466C33v43Ev,
  (VTBL_ENTRY)&_ZN6S466C33v44Ev,
  (VTBL_ENTRY)&_ZN6S466C33v45Ev,
  (VTBL_ENTRY)&_ZN6S466C33v46Ev,
  (VTBL_ENTRY)&_ZN6S466C33v47Ev,
  (VTBL_ENTRY)&_ZN6S466C33v48Ev,
  (VTBL_ENTRY)&_ZN6S466C33v49Ev,
  (VTBL_ENTRY)&_ZN6S466C33v50Ev,
  (VTBL_ENTRY)&_ZN6S466C33v51Ev,
  (VTBL_ENTRY)&_ZN6S466C23v52Ev,
  (VTBL_ENTRY)&_ZN6S466C23v53Ev,
  (VTBL_ENTRY)&_ZN6S466C23v54Ev,
  (VTBL_ENTRY)&_ZN6S466C23v55Ev,
  (VTBL_ENTRY)&_ZN6S466C23v56Ev,
};
extern VTBL_ENTRY _ZTI6S466C2[];
extern  VTBL_ENTRY _ZTV6S466C2[];
Class_Descriptor cd_S466C2 = {  "S466C2", // class name
  bases_S466C2, 3,
  &(vtc_S466C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(384,372), // object size
  NSPAIRA(_ZTI6S466C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S466C2),52, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S466C1  : S466C2 {
  virtual  ~S466C1(); // _ZN6S466C1D1Ev
  virtual void  v1(); // _ZN6S466C12v1Ev
  virtual void  v2(); // _ZN6S466C12v2Ev
  virtual void  v3(); // _ZN6S466C12v3Ev
  virtual void  v4(); // _ZN6S466C12v4Ev
  virtual void  v5(); // _ZN6S466C12v5Ev
  virtual void  v6(); // _ZN6S466C12v6Ev
  virtual void  v7(); // _ZN6S466C12v7Ev
  virtual void  v8(); // _ZN6S466C12v8Ev
  S466C1(); // tgen
};
//SIG(1 S466C1) C1{ BC2{ BC3{ BC4{ BC5{ m} vd v9} 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 Fc[4] Fi[23] Fc[23] Fi[24] FL Fc Fp Fi Fc Fi[4] Fc[112]} vd v52 v53 v54 v55 v56} vd v1 v2 v3 v4 v5 v6 v7 v8}


 S466C1 ::~S466C1(){ note_dtor("S466C1", this);}
void  S466C1 ::v1(){vfunc_called(this, "_ZN6S466C12v1Ev");}
void  S466C1 ::v2(){vfunc_called(this, "_ZN6S466C12v2Ev");}
void  S466C1 ::v3(){vfunc_called(this, "_ZN6S466C12v3Ev");}
void  S466C1 ::v4(){vfunc_called(this, "_ZN6S466C12v4Ev");}
void  S466C1 ::v5(){vfunc_called(this, "_ZN6S466C12v5Ev");}
void  S466C1 ::v6(){vfunc_called(this, "_ZN6S466C12v6Ev");}
void  S466C1 ::v7(){vfunc_called(this, "_ZN6S466C12v7Ev");}
void  S466C1 ::v8(){vfunc_called(this, "_ZN6S466C12v8Ev");}
S466C1 ::S466C1(){ note_ctor("S466C1", this);} // tgen

static void Test_S466C1()
{
  extern Class_Descriptor cd_S466C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(49,94)];
    init_test(&cd_S466C1, buf);
    S466C1 *dp, &lv = *(dp=new (buf) S466C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,372), "sizeof(S466C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S466C1)");
    check_base_class_offset(lv, (S4677C37*)(S466C4*)(S466C3*)(S466C2*), 0, "S466C1");
    check_base_class_offset(lv, (S466C4*)(S466C3*)(S466C2*), 0, "S466C1");
    check_base_class_offset(lv, (S466C3*)(S466C2*), 0, "S466C1");
    check_base_class_offset(lv, (S466C2*), 0, "S466C1");
    test_class_info(&lv, &cd_S466C1);
    dp->~S466C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS466C1(Test_S466C1, "S466C1", ABISELECT(384,372));

#else // __cplusplus

extern void _ZN6S466C1C1Ev();
extern void _ZN6S466C1D1Ev();
Name_Map name_map_S466C1[] = {
  NSPAIR(_ZN6S466C1C1Ev),
  NSPAIR(_ZN6S466C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S466C4;
extern VTBL_ENTRY _ZTI6S466C4[];
extern  VTBL_ENTRY _ZTV6S466C4[];
extern Class_Descriptor cd_S466C3;
extern VTBL_ENTRY _ZTI6S466C3[];
extern  VTBL_ENTRY _ZTV6S466C3[];
extern Class_Descriptor cd_S466C2;
extern VTBL_ENTRY _ZTI6S466C2[];
extern  VTBL_ENTRY _ZTV6S466C2[];
static Base_Class bases_S466C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S466C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S466C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S466C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S466C1[];
extern void _ZN6S466C1D1Ev();
extern void _ZN6S466C1D0Ev();
extern void _ZN6S466C42v9Ev();
extern void _ZN6S466C33v10Ev();
extern void _ZN6S466C33v11Ev();
extern void _ZN6S466C33v12Ev();
extern void _ZN6S466C33v13Ev();
extern void _ZN6S466C33v14Ev();
extern void _ZN6S466C33v15Ev();
extern void _ZN6S466C33v16Ev();
extern void _ZN6S466C33v17Ev();
extern void _ZN6S466C33v18Ev();
extern void _ZN6S466C33v19Ev();
extern void _ZN6S466C33v20Ev();
extern void _ZN6S466C33v21Ev();
extern void _ZN6S466C33v22Ev();
extern void _ZN6S466C33v23Ev();
extern void _ZN6S466C33v24Ev();
extern void _ZN6S466C33v25Ev();
extern void _ZN6S466C33v26Ev();
extern void _ZN6S466C33v27Ev();
extern void _ZN6S466C33v28Ev();
extern void _ZN6S466C33v29Ev();
extern void _ZN6S466C33v30Ev();
extern void _ZN6S466C33v31Ev();
extern void _ZN6S466C33v32Ev();
extern void _ZN6S466C33v33Ev();
extern void _ZN6S466C33v34Ev();
extern void _ZN6S466C33v35Ev();
extern void _ZN6S466C33v36Ev();
extern void _ZN6S466C33v37Ev();
extern void _ZN6S466C33v38Ev();
extern void _ZN6S466C33v39Ev();
extern void _ZN6S466C33v40Ev();
extern void _ZN6S466C33v41Ev();
extern void _ZN6S466C33v42Ev();
extern void _ZN6S466C33v43Ev();
extern void _ZN6S466C33v44Ev();
extern void _ZN6S466C33v45Ev();
extern void _ZN6S466C33v46Ev();
extern void _ZN6S466C33v47Ev();
extern void _ZN6S466C33v48Ev();
extern void _ZN6S466C33v49Ev();
extern void _ZN6S466C33v50Ev();
extern void _ZN6S466C33v51Ev();
extern void _ZN6S466C23v52Ev();
extern void _ZN6S466C23v53Ev();
extern void _ZN6S466C23v54Ev();
extern void _ZN6S466C23v55Ev();
extern void _ZN6S466C23v56Ev();
extern void _ZN6S466C12v1Ev();
extern void _ZN6S466C12v2Ev();
extern void _ZN6S466C12v3Ev();
extern void _ZN6S466C12v4Ev();
extern void _ZN6S466C12v5Ev();
extern void _ZN6S466C12v6Ev();
extern void _ZN6S466C12v7Ev();
extern void _ZN6S466C12v8Ev();
static  VTBL_ENTRY vtc_S466C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S466C1[0]),
  (VTBL_ENTRY)&_ZN6S466C1D1Ev,
  (VTBL_ENTRY)&_ZN6S466C1D0Ev,
  (VTBL_ENTRY)&_ZN6S466C42v9Ev,
  (VTBL_ENTRY)&_ZN6S466C33v10Ev,
  (VTBL_ENTRY)&_ZN6S466C33v11Ev,
  (VTBL_ENTRY)&_ZN6S466C33v12Ev,
  (VTBL_ENTRY)&_ZN6S466C33v13Ev,
  (VTBL_ENTRY)&_ZN6S466C33v14Ev,
  (VTBL_ENTRY)&_ZN6S466C33v15Ev,
  (VTBL_ENTRY)&_ZN6S466C33v16Ev,
  (VTBL_ENTRY)&_ZN6S466C33v17Ev,
  (VTBL_ENTRY)&_ZN6S466C33v18Ev,
  (VTBL_ENTRY)&_ZN6S466C33v19Ev,
  (VTBL_ENTRY)&_ZN6S466C33v20Ev,
  (VTBL_ENTRY)&_ZN6S466C33v21Ev,
  (VTBL_ENTRY)&_ZN6S466C33v22Ev,
  (VTBL_ENTRY)&_ZN6S466C33v23Ev,
  (VTBL_ENTRY)&_ZN6S466C33v24Ev,
  (VTBL_ENTRY)&_ZN6S466C33v25Ev,
  (VTBL_ENTRY)&_ZN6S466C33v26Ev,
  (VTBL_ENTRY)&_ZN6S466C33v27Ev,
  (VTBL_ENTRY)&_ZN6S466C33v28Ev,
  (VTBL_ENTRY)&_ZN6S466C33v29Ev,
  (VTBL_ENTRY)&_ZN6S466C33v30Ev,
  (VTBL_ENTRY)&_ZN6S466C33v31Ev,
  (VTBL_ENTRY)&_ZN6S466C33v32Ev,
  (VTBL_ENTRY)&_ZN6S466C33v33Ev,
  (VTBL_ENTRY)&_ZN6S466C33v34Ev,
  (VTBL_ENTRY)&_ZN6S466C33v35Ev,
  (VTBL_ENTRY)&_ZN6S466C33v36Ev,
  (VTBL_ENTRY)&_ZN6S466C33v37Ev,
  (VTBL_ENTRY)&_ZN6S466C33v38Ev,
  (VTBL_ENTRY)&_ZN6S466C33v39Ev,
  (VTBL_ENTRY)&_ZN6S466C33v40Ev,
  (VTBL_ENTRY)&_ZN6S466C33v41Ev,
  (VTBL_ENTRY)&_ZN6S466C33v42Ev,
  (VTBL_ENTRY)&_ZN6S466C33v43Ev,
  (VTBL_ENTRY)&_ZN6S466C33v44Ev,
  (VTBL_ENTRY)&_ZN6S466C33v45Ev,
  (VTBL_ENTRY)&_ZN6S466C33v46Ev,
  (VTBL_ENTRY)&_ZN6S466C33v47Ev,
  (VTBL_ENTRY)&_ZN6S466C33v48Ev,
  (VTBL_ENTRY)&_ZN6S466C33v49Ev,
  (VTBL_ENTRY)&_ZN6S466C33v50Ev,
  (VTBL_ENTRY)&_ZN6S466C33v51Ev,
  (VTBL_ENTRY)&_ZN6S466C23v52Ev,
  (VTBL_ENTRY)&_ZN6S466C23v53Ev,
  (VTBL_ENTRY)&_ZN6S466C23v54Ev,
  (VTBL_ENTRY)&_ZN6S466C23v55Ev,
  (VTBL_ENTRY)&_ZN6S466C23v56Ev,
  (VTBL_ENTRY)&_ZN6S466C12v1Ev,
  (VTBL_ENTRY)&_ZN6S466C12v2Ev,
  (VTBL_ENTRY)&_ZN6S466C12v3Ev,
  (VTBL_ENTRY)&_ZN6S466C12v4Ev,
  (VTBL_ENTRY)&_ZN6S466C12v5Ev,
  (VTBL_ENTRY)&_ZN6S466C12v6Ev,
  (VTBL_ENTRY)&_ZN6S466C12v7Ev,
  (VTBL_ENTRY)&_ZN6S466C12v8Ev,
};
extern VTBL_ENTRY _ZTI6S466C1[];
extern  VTBL_ENTRY _ZTV6S466C1[];
Class_Descriptor cd_S466C1 = {  "S466C1", // class name
  bases_S466C1, 4,
  &(vtc_S466C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(384,372), // object size
  NSPAIRA(_ZTI6S466C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S466C1),60, //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  S1201C3  : S4677C37 {
  virtual  ~S1201C3(); // _ZN7S1201C3D1Ev
  virtual void  v14(); // _ZN7S1201C33v14Ev
  S1201C3(); // tgen
};
//SIG(-1 S1201C3) C1{ BC2{ m} vd v1}


 S1201C3 ::~S1201C3(){ note_dtor("S1201C3", this);}
void  S1201C3 ::v14(){vfunc_called(this, "_ZN7S1201C33v14Ev");}
S1201C3 ::S1201C3(){ note_ctor("S1201C3", this);} // tgen

static void Test_S1201C3()
{
  extern Class_Descriptor cd_S1201C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1201C3, buf);
    S1201C3 *dp, &lv = *(dp=new (buf) S1201C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1201C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1201C3)");
    check_base_class_offset(lv, (S4677C37*), 0, "S1201C3");
    test_class_info(&lv, &cd_S1201C3);
    dp->~S1201C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1201C3(Test_S1201C3, "S1201C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1201C3C1Ev();
extern void _ZN7S1201C3D1Ev();
Name_Map name_map_S1201C3[] = {
  NSPAIR(_ZN7S1201C3C1Ev),
  NSPAIR(_ZN7S1201C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
static Base_Class bases_S1201C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1201C3[];
extern void _ZN7S1201C3D1Ev();
extern void _ZN7S1201C3D0Ev();
extern void _ZN7S1201C33v14Ev();
static  VTBL_ENTRY vtc_S1201C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1201C3[0]),
  (VTBL_ENTRY)&_ZN7S1201C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1201C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1201C33v14Ev,
};
extern VTBL_ENTRY _ZTI7S1201C3[];
extern  VTBL_ENTRY _ZTV7S1201C3[];
Class_Descriptor cd_S1201C3 = {  "S1201C3", // class name
  bases_S1201C3, 1,
  &(vtc_S1201C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1201C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1201C3),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  S1201C2  : S1201C3 {
  char s1201c2f0[4];
  int s1201c2f1[23];
  char s1201c2f2[23];
  int s1201c2f3[24];
  __tsi64 s1201c2f4;
  char s1201c2f5;
  void *s1201c2f6;
  int s1201c2f7;
  char s1201c2f8;
  int s1201c2f9[4];
  char s1201c2f10[112];
  virtual  ~S1201C2(); // _ZN7S1201C2D1Ev
  virtual void  v15(); // _ZN7S1201C23v15Ev
  virtual void  v16(); // _ZN7S1201C23v16Ev
  virtual void  v17(); // _ZN7S1201C23v17Ev
  virtual void  v18(); // _ZN7S1201C23v18Ev
  virtual void  v19(); // _ZN7S1201C23v19Ev
  virtual void  v20(); // _ZN7S1201C23v20Ev
  virtual void  v21(); // _ZN7S1201C23v21Ev
  virtual void  v22(); // _ZN7S1201C23v22Ev
  virtual void  v23(); // _ZN7S1201C23v23Ev
  virtual void  v24(); // _ZN7S1201C23v24Ev
  virtual void  v25(); // _ZN7S1201C23v25Ev
  virtual void  v26(); // _ZN7S1201C23v26Ev
  virtual void  v27(); // _ZN7S1201C23v27Ev
  virtual void  v28(); // _ZN7S1201C23v28Ev
  virtual void  v29(); // _ZN7S1201C23v29Ev
  virtual void  v30(); // _ZN7S1201C23v30Ev
  virtual void  v31(); // _ZN7S1201C23v31Ev
  virtual void  v32(); // _ZN7S1201C23v32Ev
  virtual void  v33(); // _ZN7S1201C23v33Ev
  virtual void  v34(); // _ZN7S1201C23v34Ev
  virtual void  v35(); // _ZN7S1201C23v35Ev
  virtual void  v36(); // _ZN7S1201C23v36Ev
  virtual void  v37(); // _ZN7S1201C23v37Ev
  virtual void  v38(); // _ZN7S1201C23v38Ev
  virtual void  v39(); // _ZN7S1201C23v39Ev
  virtual void  v40(); // _ZN7S1201C23v40Ev
  virtual void  v41(); // _ZN7S1201C23v41Ev
  virtual void  v42(); // _ZN7S1201C23v42Ev
  virtual void  v43(); // _ZN7S1201C23v43Ev
  virtual void  v44(); // _ZN7S1201C23v44Ev
  virtual void  v45(); // _ZN7S1201C23v45Ev
  virtual void  v46(); // _ZN7S1201C23v46Ev
  virtual void  v47(); // _ZN7S1201C23v47Ev
  virtual void  v48(); // _ZN7S1201C23v48Ev
  virtual void  v49(); // _ZN7S1201C23v49Ev
  virtual void  v50(); // _ZN7S1201C23v50Ev
  virtual void  v51(); // _ZN7S1201C23v51Ev
  virtual void  v52(); // _ZN7S1201C23v52Ev
  virtual void  v53(); // _ZN7S1201C23v53Ev
  virtual void  v54(); // _ZN7S1201C23v54Ev
  virtual void  v55(); // _ZN7S1201C23v55Ev
  virtual void  v56(); // _ZN7S1201C23v56Ev
  S1201C2(); // tgen
};
//SIG(-1 S1201C2) C1{ BC2{ BC3{ m} vd v43} 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 Fc[4] Fi[23] Fc[23] Fi[24] FL Fc Fp Fi Fc Fi[4] Fc[112]}


 S1201C2 ::~S1201C2(){ note_dtor("S1201C2", this);}
void  S1201C2 ::v15(){vfunc_called(this, "_ZN7S1201C23v15Ev");}
void  S1201C2 ::v16(){vfunc_called(this, "_ZN7S1201C23v16Ev");}
void  S1201C2 ::v17(){vfunc_called(this, "_ZN7S1201C23v17Ev");}
void  S1201C2 ::v18(){vfunc_called(this, "_ZN7S1201C23v18Ev");}
void  S1201C2 ::v19(){vfunc_called(this, "_ZN7S1201C23v19Ev");}
void  S1201C2 ::v20(){vfunc_called(this, "_ZN7S1201C23v20Ev");}
void  S1201C2 ::v21(){vfunc_called(this, "_ZN7S1201C23v21Ev");}
void  S1201C2 ::v22(){vfunc_called(this, "_ZN7S1201C23v22Ev");}
void  S1201C2 ::v23(){vfunc_called(this, "_ZN7S1201C23v23Ev");}
void  S1201C2 ::v24(){vfunc_called(this, "_ZN7S1201C23v24Ev");}
void  S1201C2 ::v25(){vfunc_called(this, "_ZN7S1201C23v25Ev");}
void  S1201C2 ::v26(){vfunc_called(this, "_ZN7S1201C23v26Ev");}
void  S1201C2 ::v27(){vfunc_called(this, "_ZN7S1201C23v27Ev");}
void  S1201C2 ::v28(){vfunc_called(this, "_ZN7S1201C23v28Ev");}
void  S1201C2 ::v29(){vfunc_called(this, "_ZN7S1201C23v29Ev");}
void  S1201C2 ::v30(){vfunc_called(this, "_ZN7S1201C23v30Ev");}
void  S1201C2 ::v31(){vfunc_called(this, "_ZN7S1201C23v31Ev");}
void  S1201C2 ::v32(){vfunc_called(this, "_ZN7S1201C23v32Ev");}
void  S1201C2 ::v33(){vfunc_called(this, "_ZN7S1201C23v33Ev");}
void  S1201C2 ::v34(){vfunc_called(this, "_ZN7S1201C23v34Ev");}
void  S1201C2 ::v35(){vfunc_called(this, "_ZN7S1201C23v35Ev");}
void  S1201C2 ::v36(){vfunc_called(this, "_ZN7S1201C23v36Ev");}
void  S1201C2 ::v37(){vfunc_called(this, "_ZN7S1201C23v37Ev");}
void  S1201C2 ::v38(){vfunc_called(this, "_ZN7S1201C23v38Ev");}
void  S1201C2 ::v39(){vfunc_called(this, "_ZN7S1201C23v39Ev");}
void  S1201C2 ::v40(){vfunc_called(this, "_ZN7S1201C23v40Ev");}
void  S1201C2 ::v41(){vfunc_called(this, "_ZN7S1201C23v41Ev");}
void  S1201C2 ::v42(){vfunc_called(this, "_ZN7S1201C23v42Ev");}
void  S1201C2 ::v43(){vfunc_called(this, "_ZN7S1201C23v43Ev");}
void  S1201C2 ::v44(){vfunc_called(this, "_ZN7S1201C23v44Ev");}
void  S1201C2 ::v45(){vfunc_called(this, "_ZN7S1201C23v45Ev");}
void  S1201C2 ::v46(){vfunc_called(this, "_ZN7S1201C23v46Ev");}
void  S1201C2 ::v47(){vfunc_called(this, "_ZN7S1201C23v47Ev");}
void  S1201C2 ::v48(){vfunc_called(this, "_ZN7S1201C23v48Ev");}
void  S1201C2 ::v49(){vfunc_called(this, "_ZN7S1201C23v49Ev");}
void  S1201C2 ::v50(){vfunc_called(this, "_ZN7S1201C23v50Ev");}
void  S1201C2 ::v51(){vfunc_called(this, "_ZN7S1201C23v51Ev");}
void  S1201C2 ::v52(){vfunc_called(this, "_ZN7S1201C23v52Ev");}
void  S1201C2 ::v53(){vfunc_called(this, "_ZN7S1201C23v53Ev");}
void  S1201C2 ::v54(){vfunc_called(this, "_ZN7S1201C23v54Ev");}
void  S1201C2 ::v55(){vfunc_called(this, "_ZN7S1201C23v55Ev");}
void  S1201C2 ::v56(){vfunc_called(this, "_ZN7S1201C23v56Ev");}
S1201C2 ::S1201C2(){ note_ctor("S1201C2", this);} // tgen

static void Test_S1201C2()
{
  extern Class_Descriptor cd_S1201C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(49,94)];
    init_test(&cd_S1201C2, buf);
    S1201C2 *dp, &lv = *(dp=new (buf) S1201C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,372), "sizeof(S1201C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1201C2)");
    check_base_class_offset(lv, (S4677C37*)(S1201C3*), 0, "S1201C2");
    check_base_class_offset(lv, (S1201C3*), 0, "S1201C2");
    check_field_offset(lv, s1201c2f0, ABISELECT(8,4), "S1201C2.s1201c2f0");
    check_field_offset(lv, s1201c2f1, ABISELECT(12,8), "S1201C2.s1201c2f1");
    check_field_offset(lv, s1201c2f2, ABISELECT(104,100), "S1201C2.s1201c2f2");
    check_field_offset(lv, s1201c2f3, ABISELECT(128,124), "S1201C2.s1201c2f3");
    check_field_offset(lv, s1201c2f4, ABISELECT(224,220), "S1201C2.s1201c2f4");
    check_field_offset(lv, s1201c2f5, ABISELECT(232,228), "S1201C2.s1201c2f5");
    check_field_offset(lv, s1201c2f6, ABISELECT(240,232), "S1201C2.s1201c2f6");
    check_field_offset(lv, s1201c2f7, ABISELECT(248,236), "S1201C2.s1201c2f7");
    check_field_offset(lv, s1201c2f8, ABISELECT(252,240), "S1201C2.s1201c2f8");
    check_field_offset(lv, s1201c2f9, ABISELECT(256,244), "S1201C2.s1201c2f9");
    check_field_offset(lv, s1201c2f10, ABISELECT(272,260), "S1201C2.s1201c2f10");
    test_class_info(&lv, &cd_S1201C2);
    dp->~S1201C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1201C2(Test_S1201C2, "S1201C2", ABISELECT(384,372));

#else // __cplusplus

extern void _ZN7S1201C2C1Ev();
extern void _ZN7S1201C2D1Ev();
Name_Map name_map_S1201C2[] = {
  NSPAIR(_ZN7S1201C2C1Ev),
  NSPAIR(_ZN7S1201C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S1201C3;
extern VTBL_ENTRY _ZTI7S1201C3[];
extern  VTBL_ENTRY _ZTV7S1201C3[];
static Base_Class bases_S1201C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1201C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1201C2[];
extern void _ZN7S1201C2D1Ev();
extern void _ZN7S1201C2D0Ev();
extern void _ZN7S1201C33v14Ev();
extern void _ZN7S1201C23v15Ev();
extern void _ZN7S1201C23v16Ev();
extern void _ZN7S1201C23v17Ev();
extern void _ZN7S1201C23v18Ev();
extern void _ZN7S1201C23v19Ev();
extern void _ZN7S1201C23v20Ev();
extern void _ZN7S1201C23v21Ev();
extern void _ZN7S1201C23v22Ev();
extern void _ZN7S1201C23v23Ev();
extern void _ZN7S1201C23v24Ev();
extern void _ZN7S1201C23v25Ev();
extern void _ZN7S1201C23v26Ev();
extern void _ZN7S1201C23v27Ev();
extern void _ZN7S1201C23v28Ev();
extern void _ZN7S1201C23v29Ev();
extern void _ZN7S1201C23v30Ev();
extern void _ZN7S1201C23v31Ev();
extern void _ZN7S1201C23v32Ev();
extern void _ZN7S1201C23v33Ev();
extern void _ZN7S1201C23v34Ev();
extern void _ZN7S1201C23v35Ev();
extern void _ZN7S1201C23v36Ev();
extern void _ZN7S1201C23v37Ev();
extern void _ZN7S1201C23v38Ev();
extern void _ZN7S1201C23v39Ev();
extern void _ZN7S1201C23v40Ev();
extern void _ZN7S1201C23v41Ev();
extern void _ZN7S1201C23v42Ev();
extern void _ZN7S1201C23v43Ev();
extern void _ZN7S1201C23v44Ev();
extern void _ZN7S1201C23v45Ev();
extern void _ZN7S1201C23v46Ev();
extern void _ZN7S1201C23v47Ev();
extern void _ZN7S1201C23v48Ev();
extern void _ZN7S1201C23v49Ev();
extern void _ZN7S1201C23v50Ev();
extern void _ZN7S1201C23v51Ev();
extern void _ZN7S1201C23v52Ev();
extern void _ZN7S1201C23v53Ev();
extern void _ZN7S1201C23v54Ev();
extern void _ZN7S1201C23v55Ev();
extern void _ZN7S1201C23v56Ev();
static  VTBL_ENTRY vtc_S1201C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1201C2[0]),
  (VTBL_ENTRY)&_ZN7S1201C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1201C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1201C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v27Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v28Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v29Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v30Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v31Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v32Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v33Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v34Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v35Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v36Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v37Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v38Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v39Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v40Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v41Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v42Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v43Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v44Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v45Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v46Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v47Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v48Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v49Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v50Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v51Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v52Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v53Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v54Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v55Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v56Ev,
};
extern VTBL_ENTRY _ZTI7S1201C2[];
extern  VTBL_ENTRY _ZTV7S1201C2[];
Class_Descriptor cd_S1201C2 = {  "S1201C2", // class name
  bases_S1201C2, 2,
  &(vtc_S1201C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(384,372), // object size
  NSPAIRA(_ZTI7S1201C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1201C2),47, //virtual function table var
  2, // 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  S1201C1  : S1201C2 {
  int s1201c1f0;
  virtual  ~S1201C1(); // _ZN7S1201C1D1Ev
  virtual void  v1(); // _ZN7S1201C12v1Ev
  virtual void  v2(); // _ZN7S1201C12v2Ev
  virtual void  v3(); // _ZN7S1201C12v3Ev
  virtual void  v4(); // _ZN7S1201C12v4Ev
  virtual void  v5(); // _ZN7S1201C12v5Ev
  virtual void  v6(); // _ZN7S1201C12v6Ev
  virtual void  v7(); // _ZN7S1201C12v7Ev
  virtual void  v8(); // _ZN7S1201C12v8Ev
  virtual void  v9(); // _ZN7S1201C12v9Ev
  virtual void  v10(); // _ZN7S1201C13v10Ev
  virtual void  v11(); // _ZN7S1201C13v11Ev
  virtual void  v12(); // _ZN7S1201C13v12Ev
  virtual void  v13(); // _ZN7S1201C13v13Ev
  S1201C1(); // tgen
};
//SIG(1 S1201C1) C1{ BC2{ BC3{ BC4{ m} vd v14} vd v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 Fc[4] Fi[23] Fc[23] Fi[24] FL Fc Fp Fi Fc Fi[4] Fc[112]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 Fi}


 S1201C1 ::~S1201C1(){ note_dtor("S1201C1", this);}
void  S1201C1 ::v1(){vfunc_called(this, "_ZN7S1201C12v1Ev");}
void  S1201C1 ::v2(){vfunc_called(this, "_ZN7S1201C12v2Ev");}
void  S1201C1 ::v3(){vfunc_called(this, "_ZN7S1201C12v3Ev");}
void  S1201C1 ::v4(){vfunc_called(this, "_ZN7S1201C12v4Ev");}
void  S1201C1 ::v5(){vfunc_called(this, "_ZN7S1201C12v5Ev");}
void  S1201C1 ::v6(){vfunc_called(this, "_ZN7S1201C12v6Ev");}
void  S1201C1 ::v7(){vfunc_called(this, "_ZN7S1201C12v7Ev");}
void  S1201C1 ::v8(){vfunc_called(this, "_ZN7S1201C12v8Ev");}
void  S1201C1 ::v9(){vfunc_called(this, "_ZN7S1201C12v9Ev");}
void  S1201C1 ::v10(){vfunc_called(this, "_ZN7S1201C13v10Ev");}
void  S1201C1 ::v11(){vfunc_called(this, "_ZN7S1201C13v11Ev");}
void  S1201C1 ::v12(){vfunc_called(this, "_ZN7S1201C13v12Ev");}
void  S1201C1 ::v13(){vfunc_called(this, "_ZN7S1201C13v13Ev");}
S1201C1 ::S1201C1(){ note_ctor("S1201C1", this);} // tgen

static void Test_S1201C1()
{
  extern Class_Descriptor cd_S1201C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(50,95)];
    init_test(&cd_S1201C1, buf);
    S1201C1 *dp, &lv = *(dp=new (buf) S1201C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(392,376), "sizeof(S1201C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1201C1)");
    check_base_class_offset(lv, (S4677C37*)(S1201C3*)(S1201C2*), 0, "S1201C1");
    check_base_class_offset(lv, (S1201C3*)(S1201C2*), 0, "S1201C1");
    check_base_class_offset(lv, (S1201C2*), 0, "S1201C1");
    check_field_offset(lv, s1201c1f0, ABISELECT(384,372), "S1201C1.s1201c1f0");
    test_class_info(&lv, &cd_S1201C1);
    dp->~S1201C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1201C1(Test_S1201C1, "S1201C1", ABISELECT(392,376));

#else // __cplusplus

extern void _ZN7S1201C1C1Ev();
extern void _ZN7S1201C1D1Ev();
Name_Map name_map_S1201C1[] = {
  NSPAIR(_ZN7S1201C1C1Ev),
  NSPAIR(_ZN7S1201C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S1201C3;
extern VTBL_ENTRY _ZTI7S1201C3[];
extern  VTBL_ENTRY _ZTV7S1201C3[];
extern Class_Descriptor cd_S1201C2;
extern VTBL_ENTRY _ZTI7S1201C2[];
extern  VTBL_ENTRY _ZTV7S1201C2[];
static Base_Class bases_S1201C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1201C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1201C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1201C1[];
extern void _ZN7S1201C1D1Ev();
extern void _ZN7S1201C1D0Ev();
extern void _ZN7S1201C33v14Ev();
extern void _ZN7S1201C23v15Ev();
extern void _ZN7S1201C23v16Ev();
extern void _ZN7S1201C23v17Ev();
extern void _ZN7S1201C23v18Ev();
extern void _ZN7S1201C23v19Ev();
extern void _ZN7S1201C23v20Ev();
extern void _ZN7S1201C23v21Ev();
extern void _ZN7S1201C23v22Ev();
extern void _ZN7S1201C23v23Ev();
extern void _ZN7S1201C23v24Ev();
extern void _ZN7S1201C23v25Ev();
extern void _ZN7S1201C23v26Ev();
extern void _ZN7S1201C23v27Ev();
extern void _ZN7S1201C23v28Ev();
extern void _ZN7S1201C23v29Ev();
extern void _ZN7S1201C23v30Ev();
extern void _ZN7S1201C23v31Ev();
extern void _ZN7S1201C23v32Ev();
extern void _ZN7S1201C23v33Ev();
extern void _ZN7S1201C23v34Ev();
extern void _ZN7S1201C23v35Ev();
extern void _ZN7S1201C23v36Ev();
extern void _ZN7S1201C23v37Ev();
extern void _ZN7S1201C23v38Ev();
extern void _ZN7S1201C23v39Ev();
extern void _ZN7S1201C23v40Ev();
extern void _ZN7S1201C23v41Ev();
extern void _ZN7S1201C23v42Ev();
extern void _ZN7S1201C23v43Ev();
extern void _ZN7S1201C23v44Ev();
extern void _ZN7S1201C23v45Ev();
extern void _ZN7S1201C23v46Ev();
extern void _ZN7S1201C23v47Ev();
extern void _ZN7S1201C23v48Ev();
extern void _ZN7S1201C23v49Ev();
extern void _ZN7S1201C23v50Ev();
extern void _ZN7S1201C23v51Ev();
extern void _ZN7S1201C23v52Ev();
extern void _ZN7S1201C23v53Ev();
extern void _ZN7S1201C23v54Ev();
extern void _ZN7S1201C23v55Ev();
extern void _ZN7S1201C23v56Ev();
extern void _ZN7S1201C12v1Ev();
extern void _ZN7S1201C12v2Ev();
extern void _ZN7S1201C12v3Ev();
extern void _ZN7S1201C12v4Ev();
extern void _ZN7S1201C12v5Ev();
extern void _ZN7S1201C12v6Ev();
extern void _ZN7S1201C12v7Ev();
extern void _ZN7S1201C12v8Ev();
extern void _ZN7S1201C12v9Ev();
extern void _ZN7S1201C13v10Ev();
extern void _ZN7S1201C13v11Ev();
extern void _ZN7S1201C13v12Ev();
extern void _ZN7S1201C13v13Ev();
static  VTBL_ENTRY vtc_S1201C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1201C1[0]),
  (VTBL_ENTRY)&_ZN7S1201C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1201C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1201C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v27Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v28Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v29Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v30Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v31Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v32Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v33Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v34Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v35Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v36Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v37Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v38Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v39Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v40Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v41Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v42Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v43Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v44Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v45Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v46Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v47Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v48Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v49Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v50Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v51Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v52Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v53Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v54Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v55Ev,
  (VTBL_ENTRY)&_ZN7S1201C23v56Ev,
  (VTBL_ENTRY)&_ZN7S1201C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1201C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1201C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1201C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1201C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1201C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1201C12v7Ev,
  (VTBL_ENTRY)&_ZN7S1201C12v8Ev,
  (VTBL_ENTRY)&_ZN7S1201C12v9Ev,
  (VTBL_ENTRY)&_ZN7S1201C13v10Ev,
  (VTBL_ENTRY)&_ZN7S1201C13v11Ev,
  (VTBL_ENTRY)&_ZN7S1201C13v12Ev,
  (VTBL_ENTRY)&_ZN7S1201C13v13Ev,
};
extern VTBL_ENTRY _ZTI7S1201C1[];
extern  VTBL_ENTRY _ZTV7S1201C1[];
Class_Descriptor cd_S1201C1 = {  "S1201C1", // class name
  bases_S1201C1, 3,
  &(vtc_S1201C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(392,376), // object size
  NSPAIRA(_ZTI7S1201C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1201C1),60, //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  S1202C3  : S4677C37 {
  virtual  ~S1202C3(); // _ZN7S1202C3D1Ev
  virtual void  v14(); // _ZN7S1202C33v14Ev
  S1202C3(); // tgen
};
//SIG(-1 S1202C3) C1{ BC2{ m} vd v1}


 S1202C3 ::~S1202C3(){ note_dtor("S1202C3", this);}
void  S1202C3 ::v14(){vfunc_called(this, "_ZN7S1202C33v14Ev");}
S1202C3 ::S1202C3(){ note_ctor("S1202C3", this);} // tgen

static void Test_S1202C3()
{
  extern Class_Descriptor cd_S1202C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1202C3, buf);
    S1202C3 *dp, &lv = *(dp=new (buf) S1202C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1202C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1202C3)");
    check_base_class_offset(lv, (S4677C37*), 0, "S1202C3");
    test_class_info(&lv, &cd_S1202C3);
    dp->~S1202C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1202C3(Test_S1202C3, "S1202C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1202C3C1Ev();
extern void _ZN7S1202C3D1Ev();
Name_Map name_map_S1202C3[] = {
  NSPAIR(_ZN7S1202C3C1Ev),
  NSPAIR(_ZN7S1202C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
static Base_Class bases_S1202C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1202C3[];
extern void _ZN7S1202C3D1Ev();
extern void _ZN7S1202C3D0Ev();
extern void _ZN7S1202C33v14Ev();
static  VTBL_ENTRY vtc_S1202C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1202C3[0]),
  (VTBL_ENTRY)&_ZN7S1202C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1202C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1202C33v14Ev,
};
extern VTBL_ENTRY _ZTI7S1202C3[];
extern  VTBL_ENTRY _ZTV7S1202C3[];
Class_Descriptor cd_S1202C3 = {  "S1202C3", // class name
  bases_S1202C3, 1,
  &(vtc_S1202C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1202C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1202C3),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  S1202C2  : S1202C3 {
  char s1202c2f0[4];
  int s1202c2f1[23];
  char s1202c2f2[23];
  int s1202c2f3[24];
  __tsi64 s1202c2f4;
  char s1202c2f5;
  void *s1202c2f6;
  int s1202c2f7;
  char s1202c2f8;
  int s1202c2f9[4];
  char s1202c2f10[112];
  virtual  ~S1202C2(); // _ZN7S1202C2D1Ev
  virtual void  v15(); // _ZN7S1202C23v15Ev
  virtual void  v16(); // _ZN7S1202C23v16Ev
  virtual void  v17(); // _ZN7S1202C23v17Ev
  virtual void  v18(); // _ZN7S1202C23v18Ev
  virtual void  v19(); // _ZN7S1202C23v19Ev
  virtual void  v20(); // _ZN7S1202C23v20Ev
  virtual void  v21(); // _ZN7S1202C23v21Ev
  virtual void  v22(); // _ZN7S1202C23v22Ev
  virtual void  v23(); // _ZN7S1202C23v23Ev
  virtual void  v24(); // _ZN7S1202C23v24Ev
  virtual void  v25(); // _ZN7S1202C23v25Ev
  virtual void  v26(); // _ZN7S1202C23v26Ev
  virtual void  v27(); // _ZN7S1202C23v27Ev
  virtual void  v28(); // _ZN7S1202C23v28Ev
  virtual void  v29(); // _ZN7S1202C23v29Ev
  virtual void  v30(); // _ZN7S1202C23v30Ev
  virtual void  v31(); // _ZN7S1202C23v31Ev
  virtual void  v32(); // _ZN7S1202C23v32Ev
  virtual void  v33(); // _ZN7S1202C23v33Ev
  virtual void  v34(); // _ZN7S1202C23v34Ev
  virtual void  v35(); // _ZN7S1202C23v35Ev
  virtual void  v36(); // _ZN7S1202C23v36Ev
  virtual void  v37(); // _ZN7S1202C23v37Ev
  virtual void  v38(); // _ZN7S1202C23v38Ev
  virtual void  v39(); // _ZN7S1202C23v39Ev
  virtual void  v40(); // _ZN7S1202C23v40Ev
  virtual void  v41(); // _ZN7S1202C23v41Ev
  virtual void  v42(); // _ZN7S1202C23v42Ev
  virtual void  v43(); // _ZN7S1202C23v43Ev
  virtual void  v44(); // _ZN7S1202C23v44Ev
  virtual void  v45(); // _ZN7S1202C23v45Ev
  virtual void  v46(); // _ZN7S1202C23v46Ev
  virtual void  v47(); // _ZN7S1202C23v47Ev
  virtual void  v48(); // _ZN7S1202C23v48Ev
  virtual void  v49(); // _ZN7S1202C23v49Ev
  virtual void  v50(); // _ZN7S1202C23v50Ev
  virtual void  v51(); // _ZN7S1202C23v51Ev
  virtual void  v52(); // _ZN7S1202C23v52Ev
  virtual void  v53(); // _ZN7S1202C23v53Ev
  virtual void  v54(); // _ZN7S1202C23v54Ev
  virtual void  v55(); // _ZN7S1202C23v55Ev
  virtual void  v56(); // _ZN7S1202C23v56Ev
  S1202C2(); // tgen
};
//SIG(-1 S1202C2) C1{ BC2{ BC3{ m} vd v43} 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 Fc[4] Fi[23] Fc[23] Fi[24] FL Fc Fp Fi Fc Fi[4] Fc[112]}


 S1202C2 ::~S1202C2(){ note_dtor("S1202C2", this);}
void  S1202C2 ::v15(){vfunc_called(this, "_ZN7S1202C23v15Ev");}
void  S1202C2 ::v16(){vfunc_called(this, "_ZN7S1202C23v16Ev");}
void  S1202C2 ::v17(){vfunc_called(this, "_ZN7S1202C23v17Ev");}
void  S1202C2 ::v18(){vfunc_called(this, "_ZN7S1202C23v18Ev");}
void  S1202C2 ::v19(){vfunc_called(this, "_ZN7S1202C23v19Ev");}
void  S1202C2 ::v20(){vfunc_called(this, "_ZN7S1202C23v20Ev");}
void  S1202C2 ::v21(){vfunc_called(this, "_ZN7S1202C23v21Ev");}
void  S1202C2 ::v22(){vfunc_called(this, "_ZN7S1202C23v22Ev");}
void  S1202C2 ::v23(){vfunc_called(this, "_ZN7S1202C23v23Ev");}
void  S1202C2 ::v24(){vfunc_called(this, "_ZN7S1202C23v24Ev");}
void  S1202C2 ::v25(){vfunc_called(this, "_ZN7S1202C23v25Ev");}
void  S1202C2 ::v26(){vfunc_called(this, "_ZN7S1202C23v26Ev");}
void  S1202C2 ::v27(){vfunc_called(this, "_ZN7S1202C23v27Ev");}
void  S1202C2 ::v28(){vfunc_called(this, "_ZN7S1202C23v28Ev");}
void  S1202C2 ::v29(){vfunc_called(this, "_ZN7S1202C23v29Ev");}
void  S1202C2 ::v30(){vfunc_called(this, "_ZN7S1202C23v30Ev");}
void  S1202C2 ::v31(){vfunc_called(this, "_ZN7S1202C23v31Ev");}
void  S1202C2 ::v32(){vfunc_called(this, "_ZN7S1202C23v32Ev");}
void  S1202C2 ::v33(){vfunc_called(this, "_ZN7S1202C23v33Ev");}
void  S1202C2 ::v34(){vfunc_called(this, "_ZN7S1202C23v34Ev");}
void  S1202C2 ::v35(){vfunc_called(this, "_ZN7S1202C23v35Ev");}
void  S1202C2 ::v36(){vfunc_called(this, "_ZN7S1202C23v36Ev");}
void  S1202C2 ::v37(){vfunc_called(this, "_ZN7S1202C23v37Ev");}
void  S1202C2 ::v38(){vfunc_called(this, "_ZN7S1202C23v38Ev");}
void  S1202C2 ::v39(){vfunc_called(this, "_ZN7S1202C23v39Ev");}
void  S1202C2 ::v40(){vfunc_called(this, "_ZN7S1202C23v40Ev");}
void  S1202C2 ::v41(){vfunc_called(this, "_ZN7S1202C23v41Ev");}
void  S1202C2 ::v42(){vfunc_called(this, "_ZN7S1202C23v42Ev");}
void  S1202C2 ::v43(){vfunc_called(this, "_ZN7S1202C23v43Ev");}
void  S1202C2 ::v44(){vfunc_called(this, "_ZN7S1202C23v44Ev");}
void  S1202C2 ::v45(){vfunc_called(this, "_ZN7S1202C23v45Ev");}
void  S1202C2 ::v46(){vfunc_called(this, "_ZN7S1202C23v46Ev");}
void  S1202C2 ::v47(){vfunc_called(this, "_ZN7S1202C23v47Ev");}
void  S1202C2 ::v48(){vfunc_called(this, "_ZN7S1202C23v48Ev");}
void  S1202C2 ::v49(){vfunc_called(this, "_ZN7S1202C23v49Ev");}
void  S1202C2 ::v50(){vfunc_called(this, "_ZN7S1202C23v50Ev");}
void  S1202C2 ::v51(){vfunc_called(this, "_ZN7S1202C23v51Ev");}
void  S1202C2 ::v52(){vfunc_called(this, "_ZN7S1202C23v52Ev");}
void  S1202C2 ::v53(){vfunc_called(this, "_ZN7S1202C23v53Ev");}
void  S1202C2 ::v54(){vfunc_called(this, "_ZN7S1202C23v54Ev");}
void  S1202C2 ::v55(){vfunc_called(this, "_ZN7S1202C23v55Ev");}
void  S1202C2 ::v56(){vfunc_called(this, "_ZN7S1202C23v56Ev");}
S1202C2 ::S1202C2(){ note_ctor("S1202C2", this);} // tgen

static void Test_S1202C2()
{
  extern Class_Descriptor cd_S1202C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(49,94)];
    init_test(&cd_S1202C2, buf);
    S1202C2 *dp, &lv = *(dp=new (buf) S1202C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,372), "sizeof(S1202C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1202C2)");
    check_base_class_offset(lv, (S4677C37*)(S1202C3*), 0, "S1202C2");
    check_base_class_offset(lv, (S1202C3*), 0, "S1202C2");
    check_field_offset(lv, s1202c2f0, ABISELECT(8,4), "S1202C2.s1202c2f0");
    check_field_offset(lv, s1202c2f1, ABISELECT(12,8), "S1202C2.s1202c2f1");
    check_field_offset(lv, s1202c2f2, ABISELECT(104,100), "S1202C2.s1202c2f2");
    check_field_offset(lv, s1202c2f3, ABISELECT(128,124), "S1202C2.s1202c2f3");
    check_field_offset(lv, s1202c2f4, ABISELECT(224,220), "S1202C2.s1202c2f4");
    check_field_offset(lv, s1202c2f5, ABISELECT(232,228), "S1202C2.s1202c2f5");
    check_field_offset(lv, s1202c2f6, ABISELECT(240,232), "S1202C2.s1202c2f6");
    check_field_offset(lv, s1202c2f7, ABISELECT(248,236), "S1202C2.s1202c2f7");
    check_field_offset(lv, s1202c2f8, ABISELECT(252,240), "S1202C2.s1202c2f8");
    check_field_offset(lv, s1202c2f9, ABISELECT(256,244), "S1202C2.s1202c2f9");
    check_field_offset(lv, s1202c2f10, ABISELECT(272,260), "S1202C2.s1202c2f10");
    test_class_info(&lv, &cd_S1202C2);
    dp->~S1202C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1202C2(Test_S1202C2, "S1202C2", ABISELECT(384,372));

#else // __cplusplus

extern void _ZN7S1202C2C1Ev();
extern void _ZN7S1202C2D1Ev();
Name_Map name_map_S1202C2[] = {
  NSPAIR(_ZN7S1202C2C1Ev),
  NSPAIR(_ZN7S1202C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S1202C3;
extern VTBL_ENTRY _ZTI7S1202C3[];
extern  VTBL_ENTRY _ZTV7S1202C3[];
static Base_Class bases_S1202C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1202C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1202C2[];
extern void _ZN7S1202C2D1Ev();
extern void _ZN7S1202C2D0Ev();
extern void _ZN7S1202C33v14Ev();
extern void _ZN7S1202C23v15Ev();
extern void _ZN7S1202C23v16Ev();
extern void _ZN7S1202C23v17Ev();
extern void _ZN7S1202C23v18Ev();
extern void _ZN7S1202C23v19Ev();
extern void _ZN7S1202C23v20Ev();
extern void _ZN7S1202C23v21Ev();
extern void _ZN7S1202C23v22Ev();
extern void _ZN7S1202C23v23Ev();
extern void _ZN7S1202C23v24Ev();
extern void _ZN7S1202C23v25Ev();
extern void _ZN7S1202C23v26Ev();
extern void _ZN7S1202C23v27Ev();
extern void _ZN7S1202C23v28Ev();
extern void _ZN7S1202C23v29Ev();
extern void _ZN7S1202C23v30Ev();
extern void _ZN7S1202C23v31Ev();
extern void _ZN7S1202C23v32Ev();
extern void _ZN7S1202C23v33Ev();
extern void _ZN7S1202C23v34Ev();
extern void _ZN7S1202C23v35Ev();
extern void _ZN7S1202C23v36Ev();
extern void _ZN7S1202C23v37Ev();
extern void _ZN7S1202C23v38Ev();
extern void _ZN7S1202C23v39Ev();
extern void _ZN7S1202C23v40Ev();
extern void _ZN7S1202C23v41Ev();
extern void _ZN7S1202C23v42Ev();
extern void _ZN7S1202C23v43Ev();
extern void _ZN7S1202C23v44Ev();
extern void _ZN7S1202C23v45Ev();
extern void _ZN7S1202C23v46Ev();
extern void _ZN7S1202C23v47Ev();
extern void _ZN7S1202C23v48Ev();
extern void _ZN7S1202C23v49Ev();
extern void _ZN7S1202C23v50Ev();
extern void _ZN7S1202C23v51Ev();
extern void _ZN7S1202C23v52Ev();
extern void _ZN7S1202C23v53Ev();
extern void _ZN7S1202C23v54Ev();
extern void _ZN7S1202C23v55Ev();
extern void _ZN7S1202C23v56Ev();
static  VTBL_ENTRY vtc_S1202C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1202C2[0]),
  (VTBL_ENTRY)&_ZN7S1202C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1202C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1202C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v27Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v28Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v29Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v30Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v31Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v32Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v33Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v34Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v35Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v36Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v37Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v38Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v39Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v40Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v41Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v42Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v43Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v44Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v45Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v46Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v47Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v48Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v49Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v50Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v51Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v52Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v53Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v54Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v55Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v56Ev,
};
extern VTBL_ENTRY _ZTI7S1202C2[];
extern  VTBL_ENTRY _ZTV7S1202C2[];
Class_Descriptor cd_S1202C2 = {  "S1202C2", // class name
  bases_S1202C2, 2,
  &(vtc_S1202C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(384,372), // object size
  NSPAIRA(_ZTI7S1202C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1202C2),47, //virtual function table var
  2, // 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  S1202C1  : S1202C2 {
  virtual  ~S1202C1(); // _ZN7S1202C1D1Ev
  virtual void  v1(); // _ZN7S1202C12v1Ev
  virtual void  v2(); // _ZN7S1202C12v2Ev
  virtual void  v3(); // _ZN7S1202C12v3Ev
  virtual void  v4(); // _ZN7S1202C12v4Ev
  virtual void  v5(); // _ZN7S1202C12v5Ev
  virtual void  v6(); // _ZN7S1202C12v6Ev
  virtual void  v7(); // _ZN7S1202C12v7Ev
  virtual void  v8(); // _ZN7S1202C12v8Ev
  virtual void  v9(); // _ZN7S1202C12v9Ev
  virtual void  v10(); // _ZN7S1202C13v10Ev
  virtual void  v11(); // _ZN7S1202C13v11Ev
  virtual void  v12(); // _ZN7S1202C13v12Ev
  virtual void  v13(); // _ZN7S1202C13v13Ev
  S1202C1(); // tgen
};
//SIG(1 S1202C1) C1{ BC2{ BC3{ BC4{ m} vd v14} vd v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 Fc[4] Fi[23] Fc[23] Fi[24] FL Fc Fp Fi Fc Fi[4] Fc[112]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13}


 S1202C1 ::~S1202C1(){ note_dtor("S1202C1", this);}
void  S1202C1 ::v1(){vfunc_called(this, "_ZN7S1202C12v1Ev");}
void  S1202C1 ::v2(){vfunc_called(this, "_ZN7S1202C12v2Ev");}
void  S1202C1 ::v3(){vfunc_called(this, "_ZN7S1202C12v3Ev");}
void  S1202C1 ::v4(){vfunc_called(this, "_ZN7S1202C12v4Ev");}
void  S1202C1 ::v5(){vfunc_called(this, "_ZN7S1202C12v5Ev");}
void  S1202C1 ::v6(){vfunc_called(this, "_ZN7S1202C12v6Ev");}
void  S1202C1 ::v7(){vfunc_called(this, "_ZN7S1202C12v7Ev");}
void  S1202C1 ::v8(){vfunc_called(this, "_ZN7S1202C12v8Ev");}
void  S1202C1 ::v9(){vfunc_called(this, "_ZN7S1202C12v9Ev");}
void  S1202C1 ::v10(){vfunc_called(this, "_ZN7S1202C13v10Ev");}
void  S1202C1 ::v11(){vfunc_called(this, "_ZN7S1202C13v11Ev");}
void  S1202C1 ::v12(){vfunc_called(this, "_ZN7S1202C13v12Ev");}
void  S1202C1 ::v13(){vfunc_called(this, "_ZN7S1202C13v13Ev");}
S1202C1 ::S1202C1(){ note_ctor("S1202C1", this);} // tgen

static void Test_S1202C1()
{
  extern Class_Descriptor cd_S1202C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(49,94)];
    init_test(&cd_S1202C1, buf);
    S1202C1 *dp, &lv = *(dp=new (buf) S1202C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,372), "sizeof(S1202C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1202C1)");
    check_base_class_offset(lv, (S4677C37*)(S1202C3*)(S1202C2*), 0, "S1202C1");
    check_base_class_offset(lv, (S1202C3*)(S1202C2*), 0, "S1202C1");
    check_base_class_offset(lv, (S1202C2*), 0, "S1202C1");
    test_class_info(&lv, &cd_S1202C1);
    dp->~S1202C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1202C1(Test_S1202C1, "S1202C1", ABISELECT(384,372));

#else // __cplusplus

extern void _ZN7S1202C1C1Ev();
extern void _ZN7S1202C1D1Ev();
Name_Map name_map_S1202C1[] = {
  NSPAIR(_ZN7S1202C1C1Ev),
  NSPAIR(_ZN7S1202C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S1202C3;
extern VTBL_ENTRY _ZTI7S1202C3[];
extern  VTBL_ENTRY _ZTV7S1202C3[];
extern Class_Descriptor cd_S1202C2;
extern VTBL_ENTRY _ZTI7S1202C2[];
extern  VTBL_ENTRY _ZTV7S1202C2[];
static Base_Class bases_S1202C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1202C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1202C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1202C1[];
extern void _ZN7S1202C1D1Ev();
extern void _ZN7S1202C1D0Ev();
extern void _ZN7S1202C33v14Ev();
extern void _ZN7S1202C23v15Ev();
extern void _ZN7S1202C23v16Ev();
extern void _ZN7S1202C23v17Ev();
extern void _ZN7S1202C23v18Ev();
extern void _ZN7S1202C23v19Ev();
extern void _ZN7S1202C23v20Ev();
extern void _ZN7S1202C23v21Ev();
extern void _ZN7S1202C23v22Ev();
extern void _ZN7S1202C23v23Ev();
extern void _ZN7S1202C23v24Ev();
extern void _ZN7S1202C23v25Ev();
extern void _ZN7S1202C23v26Ev();
extern void _ZN7S1202C23v27Ev();
extern void _ZN7S1202C23v28Ev();
extern void _ZN7S1202C23v29Ev();
extern void _ZN7S1202C23v30Ev();
extern void _ZN7S1202C23v31Ev();
extern void _ZN7S1202C23v32Ev();
extern void _ZN7S1202C23v33Ev();
extern void _ZN7S1202C23v34Ev();
extern void _ZN7S1202C23v35Ev();
extern void _ZN7S1202C23v36Ev();
extern void _ZN7S1202C23v37Ev();
extern void _ZN7S1202C23v38Ev();
extern void _ZN7S1202C23v39Ev();
extern void _ZN7S1202C23v40Ev();
extern void _ZN7S1202C23v41Ev();
extern void _ZN7S1202C23v42Ev();
extern void _ZN7S1202C23v43Ev();
extern void _ZN7S1202C23v44Ev();
extern void _ZN7S1202C23v45Ev();
extern void _ZN7S1202C23v46Ev();
extern void _ZN7S1202C23v47Ev();
extern void _ZN7S1202C23v48Ev();
extern void _ZN7S1202C23v49Ev();
extern void _ZN7S1202C23v50Ev();
extern void _ZN7S1202C23v51Ev();
extern void _ZN7S1202C23v52Ev();
extern void _ZN7S1202C23v53Ev();
extern void _ZN7S1202C23v54Ev();
extern void _ZN7S1202C23v55Ev();
extern void _ZN7S1202C23v56Ev();
extern void _ZN7S1202C12v1Ev();
extern void _ZN7S1202C12v2Ev();
extern void _ZN7S1202C12v3Ev();
extern void _ZN7S1202C12v4Ev();
extern void _ZN7S1202C12v5Ev();
extern void _ZN7S1202C12v6Ev();
extern void _ZN7S1202C12v7Ev();
extern void _ZN7S1202C12v8Ev();
extern void _ZN7S1202C12v9Ev();
extern void _ZN7S1202C13v10Ev();
extern void _ZN7S1202C13v11Ev();
extern void _ZN7S1202C13v12Ev();
extern void _ZN7S1202C13v13Ev();
static  VTBL_ENTRY vtc_S1202C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1202C1[0]),
  (VTBL_ENTRY)&_ZN7S1202C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1202C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1202C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v27Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v28Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v29Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v30Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v31Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v32Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v33Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v34Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v35Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v36Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v37Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v38Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v39Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v40Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v41Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v42Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v43Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v44Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v45Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v46Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v47Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v48Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v49Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v50Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v51Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v52Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v53Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v54Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v55Ev,
  (VTBL_ENTRY)&_ZN7S1202C23v56Ev,
  (VTBL_ENTRY)&_ZN7S1202C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1202C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1202C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1202C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1202C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1202C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1202C12v7Ev,
  (VTBL_ENTRY)&_ZN7S1202C12v8Ev,
  (VTBL_ENTRY)&_ZN7S1202C12v9Ev,
  (VTBL_ENTRY)&_ZN7S1202C13v10Ev,
  (VTBL_ENTRY)&_ZN7S1202C13v11Ev,
  (VTBL_ENTRY)&_ZN7S1202C13v12Ev,
  (VTBL_ENTRY)&_ZN7S1202C13v13Ev,
};
extern VTBL_ENTRY _ZTI7S1202C1[];
extern  VTBL_ENTRY _ZTV7S1202C1[];
Class_Descriptor cd_S1202C1 = {  "S1202C1", // class name
  bases_S1202C1, 3,
  &(vtc_S1202C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(384,372), // object size
  NSPAIRA(_ZTI7S1202C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1202C1),60, //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  S20649C2  : virtual S3216C8_nt {
  virtual  ~S20649C2(); // _ZN8S20649C2D2Ev
  S20649C2(); // tgen
};
//SIG(-1 S20649C2) C1{ VBC2{ m Fi} vd}


 S20649C2 ::~S20649C2(){ note_dtor("S20649C2", this);}
S20649C2 ::S20649C2(){ note_ctor("S20649C2", this);} // tgen

static void Test_S20649C2()
{
  extern Class_Descriptor cd_S20649C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20649C2, buf);
    S20649C2 *dp, &lv = *(dp=new (buf) S20649C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20649C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20649C2)");
    check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(8,4), "S20649C2");
    test_class_info(&lv, &cd_S20649C2);
    dp->~S20649C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20649C2(Test_S20649C2, "S20649C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20649C2C1Ev();
extern void _ZN8S20649C2D2Ev();
Name_Map name_map_S20649C2[] = {
  NSPAIR(_ZN8S20649C2C1Ev),
  NSPAIR(_ZN8S20649C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S20649C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20649C2[];
extern void _ZN8S20649C2D1Ev();
extern void _ZN8S20649C2D0Ev();
static  VTBL_ENTRY vtc_S20649C2[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C2[0]),
  (VTBL_ENTRY)&_ZN8S20649C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20649C2D0Ev,
};
extern VTBL_ENTRY _ZTV8S20649C2[];
static  VTT_ENTRY vtt_S20649C2[] = {
  {&(_ZTV8S20649C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20649C2[];
extern  VTBL_ENTRY _ZTV8S20649C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C2[];
Class_Descriptor cd_S20649C2 = {  "S20649C2", // class name
  bases_S20649C2, 1,
  &(vtc_S20649C2[0]), // expected_vtbl_contents
  &(vtt_S20649C2[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20649C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20649C2),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20649C2),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  S20649C8  : virtual S7883C3_nt , virtual S3216C8_nt , S4677C37 {
  int s20649c8f0;
  ~S20649C8(); // tgen
  S20649C8(); // tgen
};
//SIG(-1 S20649C8) C1{ VBC2{ vd m} VBC3{ m Fi} BC4{ m} Fi}


S20649C8 ::~S20649C8(){ note_dtor("S20649C8", this);} // tgen
S20649C8 ::S20649C8(){ note_ctor("S20649C8", this);} // tgen

static void Test_S20649C8()
{
  extern Class_Descriptor cd_S20649C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S20649C8, buf);
    S20649C8 *dp, &lv = *(dp=new (buf) S20649C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S20649C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20649C8)");
    check_base_class_offset(lv, (S7883C3_nt*), 0, "S20649C8");
    check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(12,8), "S20649C8");
    check_base_class_offset(lv, (S4677C37*), 0, "S20649C8");
    check_field_offset(lv, s20649c8f0, ABISELECT(8,4), "S20649C8.s20649c8f0");
    test_class_info(&lv, &cd_S20649C8);
    dp->~S20649C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20649C8(Test_S20649C8, "S20649C8", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S20649C8C1Ev();
extern void _ZN8S20649C8D1Ev();
Name_Map name_map_S20649C8[] = {
  NSPAIR(_ZN8S20649C8C1Ev),
  NSPAIR(_ZN8S20649C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
static Base_Class bases_S20649C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20649C8[];
extern void _ZN8S20649C8D1Ev();
extern void _ZN8S20649C8D0Ev();
static  VTBL_ENTRY vtc_S20649C8[] = {
  ABISELECT(12,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&_ZN8S20649C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20649C8D0Ev,
};
extern VTBL_ENTRY _ZTV8S20649C8[];
static  VTT_ENTRY vtt_S20649C8[] = {
  {&(_ZTV8S20649C8[5]),  5,7},
  {&(_ZTV8S20649C8[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
Class_Descriptor cd_S20649C8 = {  "S20649C8", // class name
  bases_S20649C8, 3,
  &(vtc_S20649C8[0]), // expected_vtbl_contents
  &(vtt_S20649C8[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S20649C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20649C8),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20649C8),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  S20649C7  : S20649C8 {
  int s20649c7f0;
  ~S20649C7(); // tgen
  S20649C7(); // tgen
};
//SIG(-1 S20649C7) C1{ BC2{ VBC3{ vd m} VBC4{ m Fi} BC5{ m} Fi} Fi}


S20649C7 ::~S20649C7(){ note_dtor("S20649C7", this);} // tgen
S20649C7 ::S20649C7(){ note_ctor("S20649C7", this);} // tgen

static void Test_S20649C7()
{
  extern Class_Descriptor cd_S20649C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20649C7, buf);
    S20649C7 *dp, &lv = *(dp=new (buf) S20649C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20649C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20649C7)");
    check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*), 0, "S20649C7");
    check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*), ABISELECT(16,12), "S20649C7");
    check_base_class_offset(lv, (S4677C37*)(S20649C8*), 0, "S20649C7");
    check_base_class_offset(lv, (S20649C8*), 0, "S20649C7");
    check_field_offset(lv, s20649c7f0, ABISELECT(12,8), "S20649C7.s20649c7f0");
    test_class_info(&lv, &cd_S20649C7);
    dp->~S20649C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20649C7(Test_S20649C7, "S20649C7", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S20649C7C1Ev();
extern void _ZN8S20649C7D1Ev();
Name_Map name_map_S20649C7[] = {
  NSPAIR(_ZN8S20649C7C1Ev),
  NSPAIR(_ZN8S20649C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
static Base_Class bases_S20649C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20649C8,    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 _ZTI8S20649C7[];
extern void _ZN8S20649C7D1Ev();
extern void _ZN8S20649C7D0Ev();
static  VTBL_ENTRY vtc_S20649C7[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&_ZN8S20649C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20649C7D0Ev,
};
extern VTBL_ENTRY _ZTV8S20649C7[];
extern void _ZN8S20649C8D1Ev();
extern void _ZN8S20649C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20649C8__8S20649C7[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&_ZN8S20649C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20649C8D0Ev,
};
static  VTT_ENTRY vtt_S20649C7[] = {
  {&(_ZTV8S20649C7[5]),  5,7},
  {&(_tg__ZTV8S20649C8__8S20649C7[5]),  5,7},
  {&(_tg__ZTV8S20649C8__8S20649C7[5]),  5,7},
  {&(_ZTV8S20649C7[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S20649C7[];
extern  VTBL_ENTRY _ZTV8S20649C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C7[];
Class_Descriptor cd_S20649C7 = {  "S20649C7", // class name
  bases_S20649C7, 4,
  &(vtc_S20649C7[0]), // expected_vtbl_contents
  &(vtt_S20649C7[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S20649C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20649C7),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20649C7),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20649C6  : virtual S20649C7 , S4677C37 {
  ~S20649C6(); // tgen
  S20649C6(); // tgen
};
//SIG(-1 S20649C6) C1{ VBC2{ BC3{ VBC4{ vd m} VBC5{ m Fi} BC6{ m} Fi} Fi} BC6}


S20649C6 ::~S20649C6(){ note_dtor("S20649C6", this);} // tgen
S20649C6 ::S20649C6(){ note_ctor("S20649C6", this);} // tgen

static void Test_S20649C6()
{
  extern Class_Descriptor cd_S20649C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20649C6, buf);
    S20649C6 *dp, &lv = *(dp=new (buf) S20649C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20649C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20649C6)");
    check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C7*), 0, "S20649C6");
    check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C7*), ABISELECT(24,16), "S20649C6");
    check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C7*), ABISELECT(8,4), "S20649C6");
    check_base_class_offset(lv, (S20649C8*)(S20649C7*), ABISELECT(8,4), "S20649C6");
    check_base_class_offset(lv, (S20649C7*), ABISELECT(8,4), "S20649C6");
    /*is_ambiguous_... S20649C6::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*), 0, "S20649C6");
    test_class_info(&lv, &cd_S20649C6);
    dp->~S20649C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20649C6(Test_S20649C6, "S20649C6", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S20649C6C1Ev();
extern void _ZN8S20649C6D1Ev();
Name_Map name_map_S20649C6[] = {
  NSPAIR(_ZN8S20649C6C1Ev),
  NSPAIR(_ZN8S20649C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C7;
extern VTBL_ENTRY _ZTI8S20649C7[];
extern  VTBL_ENTRY _ZTV8S20649C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C7[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
static Base_Class bases_S20649C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20649C8,    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
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20649C7,    ABISELECT(8,4), //bcp->offset
    8, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20649C6[];
extern void _ZN8S20649C6D1Ev();
extern void _ZN8S20649C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void ABISELECT(_ZThn8_N8S20649C6D1Ev,_ZThn4_N8S20649C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
extern void ABISELECT(_ZThn8_N8S20649C6D0Ev,_ZThn4_N8S20649C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20649C6[] = {
  ABISELECT(24,16),
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&_ZN8S20649C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20649C6D0Ev,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S20649C6[];
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void _ZN8S20649C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
extern void _ZN8S20649C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__8S20649C6[] = {
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C88S20649C7__8S20649C6[] = {
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C88S20649C7__8S20649C6[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C7__8S20649C6[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
static  VTT_ENTRY vtt_S20649C6[] = {
  {&(_ZTV8S20649C6[6]),  6,15},
  {&(_ZTV8S20649C6[13]),  13,15},
  {&(_ZTV8S20649C6[6]),  6,15},
  {&(_tg__ZTV8S20649C7__8S20649C6[5]),  5,7},
  {&(_tg__ZTV8S20649C88S20649C7__8S20649C6[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C88S20649C7__8S20649C6[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20649C7__8S20649C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20649C6[];
extern  VTBL_ENTRY _ZTV8S20649C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C6[];
static VTBL_ENTRY alt_thunk_names66[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S20649C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S20649C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20649C6D0Ev,_ZThn4_N8S20649C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20649C6D1Ev,_ZThn4_N8S20649C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20649C6 = {  "S20649C6", // class name
  bases_S20649C6, 6,
  &(vtc_S20649C6[0]), // expected_vtbl_contents
  &(vtt_S20649C6[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S20649C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20649C6),15, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20649C6),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names66,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20649C12  : virtual S7883C3_nt , S3216C8_nt , S20649C6 , virtual S4677C37 , S20649C8 {
  virtual  ~S20649C12(); // _ZN9S20649C12D2Ev
  S20649C12(); // tgen
};
//SIG(-1 S20649C12) C1{ VBC2{ vd m} BC3{ m Fi} BC4{ VBC5{ BC6{ VBC2 VBC3 BC7{ m} Fi} Fi} BC7} VBC7 BC6 vd}


 S20649C12 ::~S20649C12(){ note_dtor("S20649C12", this);}
S20649C12 ::S20649C12(){ note_ctor("S20649C12", this);} // tgen

static void Test_S20649C12()
{
  extern Class_Descriptor cd_S20649C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S20649C12, buf);
    S20649C12 *dp, &lv = *(dp=new (buf) S20649C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S20649C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20649C12)");
    check_base_class_offset(lv, (S7883C3_nt*), 0, "S20649C12");
    check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C7*), 0, "S20649C12");
    /*is_ambiguous_... S20649C12::S20649C8 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*), 0, "S20649C12");
    /*is_ambiguous_... S20649C12::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(8,4), "S20649C12");
    check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C7*), ABISELECT(48,28), "S20649C12");
    /*is_ambiguous_... S20649C12::S20649C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*), ABISELECT(48,28), "S20649C12");
    check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C7*), ABISELECT(32,16), "S20649C12");
    check_base_class_offset(lv, (S20649C8*)(S20649C7*), ABISELECT(32,16), "S20649C12");
    check_base_class_offset(lv, (S20649C7*)(S20649C6*), ABISELECT(32,16), "S20649C12");
    /*is_ambiguous_... S20649C6::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C6*), 0, "S20649C12");
    check_base_class_offset(lv, (S20649C6*), 0, "S20649C12");
    /*is_ambiguous_... S20649C12::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*), ABISELECT(52,32), "S20649C12");
    /*is_ambiguous_... S20649C12::S20649C8 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C8*), ABISELECT(16,8), "S20649C12");
    /*is_ambiguous_... S20649C12::S20649C8 */ AMB_check_base_class_offset(lv, (S20649C8*), ABISELECT(16,8), "S20649C12");
    test_class_info(&lv, &cd_S20649C12);
    dp->~S20649C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20649C12(Test_S20649C12, "S20649C12", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN9S20649C12C1Ev();
extern void _ZN9S20649C12D2Ev();
Name_Map name_map_S20649C12[] = {
  NSPAIR(_ZN9S20649C12C1Ev),
  NSPAIR(_ZN9S20649C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C7;
extern VTBL_ENTRY _ZTI8S20649C7[];
extern  VTBL_ENTRY _ZTV8S20649C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C7[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C6;
extern VTBL_ENTRY _ZTI8S20649C6[];
extern  VTBL_ENTRY _ZTV8S20649C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
static Base_Class bases_S20649C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_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_S3216C8_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
    4, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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_S20649C8,    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
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20649C7,    ABISELECT(32,16), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20649C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4677C37,    ABISELECT(52,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_S4677C37,    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
    10, //immediately_derived
  0, 0},
  {&cd_S20649C8,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20649C12[];
extern void _ZN9S20649C12D1Ev();
extern void _ZN9S20649C12D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S20649C12D1Ev,_ZThn8_N9S20649C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S20649C12D0Ev,_ZThn8_N9S20649C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S20649C12D1Ev,_ZThn16_N9S20649C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
extern void ABISELECT(_ZThn32_N9S20649C12D0Ev,_ZThn16_N9S20649C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20649C12[] = {
  ABISELECT(52,32),
  ABISELECT(48,28),
  0,
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&_ZN9S20649C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20649C12D0Ev,
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S20649C12[];
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void _ZN8S20649C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
extern void _ZN8S20649C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C6__9S20649C12[] = {
  ABISELECT(48,28),
  0,
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void ABISELECT(_ZThn32_N8S20649C6D1Ev,_ZThn16_N8S20649C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
extern void ABISELECT(_ZThn32_N8S20649C6D0Ev,_ZThn16_N8S20649C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__8S20649C6__9S20649C12[] = {
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C8__A1__9S20649C12[] = {
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C8__A1__9S20649C12[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void _ZN8S20649C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
extern void _ZN8S20649C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C12[] = {
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C88S20649C7__9S20649C12[] = {
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C88S20649C7__9S20649C12[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C7__9S20649C12[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
static  VTT_ENTRY vtt_S20649C12[] = {
  {&(_ZTV9S20649C12[7]),  7,23},
  {&(_tg__ZTV8S20649C6__9S20649C12[6]),  6,8},
  {&(_tg__ZTV8S20649C7__8S20649C6__9S20649C12[5]),  5,7},
  {&(_tg__ZTV8S20649C6__9S20649C12[6]),  6,8},
  {&(_tg__ZTV8S20649C8__A1__9S20649C12[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C8__A1__9S20649C12[3]),  3,5},
  {&(_ZTV9S20649C12[7]),  7,23},
  {&(_ZTV9S20649C12[21]),  21,23},
  {&(_ZTV9S20649C12[14]),  14,23},
  {&(_tg__ZTV8S20649C7__9S20649C12[5]),  5,7},
  {&(_tg__ZTV8S20649C88S20649C7__9S20649C12[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C88S20649C7__9S20649C12[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20649C7__9S20649C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20649C12[];
extern  VTBL_ENTRY _ZTV9S20649C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C12[];
static VTBL_ENTRY alt_thunk_names67[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S20649C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S20649C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20649C6D0Ev,_ZThn16_N8S20649C6D0Ev),
  (VTBL_ENTRY)_ZN8S20649C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20649C6D1Ev,_ZThn16_N8S20649C6D1Ev),
  (VTBL_ENTRY)_ZN8S20649C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20649C12D0Ev,_ZThn16_N9S20649C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C12D0Ev,_ZThn8_N9S20649C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20649C12D1Ev,_ZThn16_N9S20649C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C12D1Ev,_ZThn8_N9S20649C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20649C12 = {  "S20649C12", // class name
  bases_S20649C12, 11,
  &(vtc_S20649C12[0]), // expected_vtbl_contents
  &(vtt_S20649C12[0]), // expected_vtt_contents
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI9S20649C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20649C12),23, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20649C12),13, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names67,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20649C11  : virtual S20649C12 {
  virtual  ~S20649C11(); // _ZN9S20649C11D2Ev
  S20649C11(); // tgen
};
//SIG(-1 S20649C11) C1{ VBC2{ VBC3{ vd m} BC4{ m Fi} BC5{ VBC6{ BC7{ VBC3 VBC4 BC8{ m} Fi} Fi} BC8} VBC8 BC7 vd} vd}


 S20649C11 ::~S20649C11(){ note_dtor("S20649C11", this);}
S20649C11 ::S20649C11(){ note_ctor("S20649C11", this);} // tgen

static void Test_S20649C11()
{
  extern Class_Descriptor cd_S20649C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S20649C11, buf);
    S20649C11 *dp, &lv = *(dp=new (buf) S20649C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S20649C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20649C11)");
    check_base_class_offset(lv, (S7883C3_nt*)(S20649C12*), 0, "S20649C11");
    check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C7*), 0, "S20649C11");
    /*is_ambiguous_... S20649C12::S20649C8 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C12*), 0, "S20649C11");
    /*is_ambiguous_... S20649C12::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C12*), ABISELECT(16,8), "S20649C11");
    check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C7*), ABISELECT(56,32), "S20649C11");
    /*is_ambiguous_... S20649C12::S20649C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C12*), ABISELECT(56,32), "S20649C11");
    check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C7*), ABISELECT(40,20), "S20649C11");
    check_base_class_offset(lv, (S20649C8*)(S20649C7*), ABISELECT(40,20), "S20649C11");
    check_base_class_offset(lv, (S20649C7*)(S20649C6*)(S20649C12*), ABISELECT(40,20), "S20649C11");
    /*is_ambiguous_... S20649C6::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C6*)(S20649C12*), ABISELECT(8,4), "S20649C11");
    check_base_class_offset(lv, (S20649C6*)(S20649C12*), ABISELECT(8,4), "S20649C11");
    /*is_ambiguous_... S20649C12::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C12*), 0, "S20649C11");
    /*is_ambiguous_... S20649C12::S20649C8 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C12*), ABISELECT(24,12), "S20649C11");
    /*is_ambiguous_... S20649C12::S20649C8 */ AMB_check_base_class_offset(lv, (S20649C8*)(S20649C12*), ABISELECT(24,12), "S20649C11");
    check_base_class_offset(lv, (S20649C12*), ABISELECT(8,4), "S20649C11");
    test_class_info(&lv, &cd_S20649C11);
    dp->~S20649C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20649C11(Test_S20649C11, "S20649C11", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN9S20649C11C1Ev();
extern void _ZN9S20649C11D2Ev();
Name_Map name_map_S20649C11[] = {
  NSPAIR(_ZN9S20649C11C1Ev),
  NSPAIR(_ZN9S20649C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C7;
extern VTBL_ENTRY _ZTI8S20649C7[];
extern  VTBL_ENTRY _ZTV8S20649C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C7[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C6;
extern VTBL_ENTRY _ZTI8S20649C6[];
extern  VTBL_ENTRY _ZTV8S20649C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C12;
extern VTBL_ENTRY _ZTI9S20649C12[];
extern  VTBL_ENTRY _ZTV9S20649C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C12[];
static Base_Class bases_S20649C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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_S20649C8,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //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
    5, //immediately_derived
  0, 0},
  {&cd_S20649C7,    ABISELECT(40,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20649C6,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4677C37,    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_S20649C8,    ABISELECT(24,12), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20649C12,    ABISELECT(8,4), //bcp->offset
    10, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20649C11[];
extern void _ZN9S20649C11D1Ev();
extern void _ZN9S20649C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S20649C11D1Ev,_ZThn4_N9S20649C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev)();
extern void ABISELECT(_ZThn8_N9S20649C11D0Ev,_ZThn4_N9S20649C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev)();
extern void ABISELECT(_ZThn24_N9S20649C11D1Ev,_ZThn12_N9S20649C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev)();
extern void ABISELECT(_ZThn24_N9S20649C11D0Ev,_ZThn12_N9S20649C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev)();
extern void ABISELECT(_ZThn40_N9S20649C11D1Ev,_ZThn20_N9S20649C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev)();
extern void ABISELECT(_ZThn40_N9S20649C11D0Ev,_ZThn20_N9S20649C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20649C11[] = {
  0,
  ABISELECT(56,32),
  ABISELECT(40,20),
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C11[0]),
  (VTBL_ENTRY)&_ZN9S20649C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20649C11D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20649C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev),
  ABISELECT(32,20),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20649C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev),
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20649C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S20649C11[];
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void _ZN9S20649C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
extern void _ZN9S20649C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C12__9S20649C11[] = {
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void _ZN8S20649C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
extern void _ZN8S20649C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C69S20649C12__9S20649C11[] = {
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void ABISELECT(_ZThn32_N8S20649C6D1Ev,_ZThn16_N8S20649C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
extern void ABISELECT(_ZThn32_N8S20649C6D0Ev,_ZThn16_N8S20649C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__8S20649C69S20649C12__9S20649C11[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C69S20649C12__9S20649C11[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C12__A1__9S20649C11[] = {
  ABISELECT(32,20),
  ABISELECT(-24,-12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C89S20649C12__A1__9S20649C11[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C12__9S20649C11[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S20649C12D1Ev,_ZThn16_N9S20649C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
extern void ABISELECT(_ZThn32_N9S20649C12D0Ev,_ZThn16_N9S20649C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C12__9S20649C11[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S20649C12D1Ev,_ZThn8_N9S20649C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S20649C12D0Ev,_ZThn8_N9S20649C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C8__A1__9S20649C12__9S20649C11[] = {
  ABISELECT(32,20),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void _ZN8S20649C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
extern void _ZN8S20649C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C11[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C88S20649C7__9S20649C11[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C88S20649C7__9S20649C11[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C7__9S20649C11[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
static  VTT_ENTRY vtt_S20649C11[] = {
  {&(_ZTV9S20649C11[8]),  8,33},
  {&(_ZTV9S20649C11[17]),  17,33},
  {&(_ZTV9S20649C11[8]),  8,33},
  {&(_ZTV9S20649C11[31]),  31,33},
  {&(_ZTV9S20649C11[24]),  24,33},
  {&(_tg__ZTV9S20649C12__9S20649C11[7]),  7,9},
  {&(_tg__ZTV8S20649C69S20649C12__9S20649C11[6]),  6,8},
  {&(_tg__ZTV8S20649C7__8S20649C69S20649C12__9S20649C11[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C69S20649C12__9S20649C11[3]),  3,5},
  {&(_tg__ZTV8S20649C89S20649C12__A1__9S20649C11[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C89S20649C12__A1__9S20649C11[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20649C12__9S20649C11[3]),  3,5},
  {&(_tg__ZTV8S20649C7__9S20649C12__9S20649C11[5]),  5,7},
  {&(_tg__ZTV8S20649C8__A1__9S20649C12__9S20649C11[5]),  5,7},
  {&(_tg__ZTV8S20649C7__9S20649C11[5]),  5,7},
  {&(_tg__ZTV8S20649C88S20649C7__9S20649C11[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C88S20649C7__9S20649C11[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20649C7__9S20649C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20649C11[];
extern  VTBL_ENTRY _ZTV9S20649C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C11[];
static VTBL_ENTRY alt_thunk_names68[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S20649C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S20649C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20649C6D0Ev,_ZThn16_N8S20649C6D0Ev),
  (VTBL_ENTRY)_ZN8S20649C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20649C6D1Ev,_ZThn16_N8S20649C6D1Ev),
  (VTBL_ENTRY)_ZN8S20649C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C12D0Ev,_ZThn8_N9S20649C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20649C12D0Ev,_ZThn16_N9S20649C12D0Ev),
  (VTBL_ENTRY)_ZN9S20649C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C12D1Ev,_ZThn8_N9S20649C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20649C12D1Ev,_ZThn16_N9S20649C12D1Ev),
  (VTBL_ENTRY)_ZN9S20649C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20649C11D0Ev,_ZThn20_N9S20649C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20649C11D0Ev,_ZThn12_N9S20649C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20649C11D0Ev,_ZThn4_N9S20649C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20649C11D1Ev,_ZThn20_N9S20649C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20649C11D1Ev,_ZThn12_N9S20649C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20649C11D1Ev,_ZThn4_N9S20649C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20649C11 = {  "S20649C11", // class name
  bases_S20649C11, 12,
  &(vtc_S20649C11[0]), // expected_vtbl_contents
  &(vtt_S20649C11[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI9S20649C11),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20649C11),33, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20649C11),18, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names68,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20649C14  : virtual S20649C6 {
  ::S3216C8_nt s20649c14f0;
  ~S20649C14(); // tgen
  S20649C14(); // tgen
};
//SIG(-1 S20649C14) C1{ VBC2{ VBC3{ BC4{ VBC5{ vd m} VBC6{ m Fi} BC7{ m} Fi} Fi} BC7} FC6}


S20649C14 ::~S20649C14(){ note_dtor("S20649C14", this);} // tgen
S20649C14 ::S20649C14(){ note_ctor("S20649C14", this);} // tgen

static void Test_S20649C14()
{
  extern Class_Descriptor cd_S20649C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S20649C14, buf);
    S20649C14 *dp, &lv = *(dp=new (buf) S20649C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S20649C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20649C14)");
    check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C7*), 0, "S20649C14");
    check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C7*), ABISELECT(32,20), "S20649C14");
    check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C7*), ABISELECT(16,8), "S20649C14");
    check_base_class_offset(lv, (S20649C8*)(S20649C7*), ABISELECT(16,8), "S20649C14");
    check_base_class_offset(lv, (S20649C7*)(S20649C6*), ABISELECT(16,8), "S20649C14");
    /*is_ambiguous_... S20649C6::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C6*), 0, "S20649C14");
    check_base_class_offset(lv, (S20649C6*), 0, "S20649C14");
    check_field_offset(lv, s20649c14f0, ABISELECT(8,4), "S20649C14.s20649c14f0");
    test_class_info(&lv, &cd_S20649C14);
    dp->~S20649C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20649C14(Test_S20649C14, "S20649C14", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN9S20649C14C1Ev();
extern void _ZN9S20649C14D1Ev();
Name_Map name_map_S20649C14[] = {
  NSPAIR(_ZN9S20649C14C1Ev),
  NSPAIR(_ZN9S20649C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C7;
extern VTBL_ENTRY _ZTI8S20649C7[];
extern  VTBL_ENTRY _ZTV8S20649C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C7[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C6;
extern VTBL_ENTRY _ZTI8S20649C6[];
extern  VTBL_ENTRY _ZTV8S20649C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C6[];
static Base_Class bases_S20649C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_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
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20649C8,    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
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20649C7,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20649C6,    0, //bcp->offset
    -1, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20649C14[];
extern void _ZN9S20649C14D1Ev();
extern void _ZN9S20649C14D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev)();
extern void ABISELECT(_ZThn16_N9S20649C14D1Ev,_ZThn8_N9S20649C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev)();
extern void ABISELECT(_ZThn16_N9S20649C14D0Ev,_ZThn8_N9S20649C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20649C14[] = {
  0,
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C14[0]),
  (VTBL_ENTRY)&_ZN9S20649C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20649C14D0Ev,
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20649C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev),
};
extern VTBL_ENTRY _ZTV9S20649C14[];
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void _ZN8S20649C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
extern void _ZN8S20649C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C6__9S20649C14[] = {
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S20649C6D1Ev,_ZThn8_N8S20649C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
extern void ABISELECT(_ZThn16_N8S20649C6D0Ev,_ZThn8_N8S20649C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__8S20649C6__9S20649C14[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void _ZN8S20649C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
extern void _ZN8S20649C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C14[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C88S20649C7__9S20649C14[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C88S20649C7__9S20649C14[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C7__9S20649C14[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
static  VTT_ENTRY vtt_S20649C14[] = {
  {&(_ZTV9S20649C14[7]),  7,16},
  {&(_ZTV9S20649C14[7]),  7,16},
  {&(_ZTV9S20649C14[14]),  14,16},
  {&(_ZTV9S20649C14[7]),  7,16},
  {&(_tg__ZTV8S20649C6__9S20649C14[6]),  6,8},
  {&(_tg__ZTV8S20649C7__8S20649C6__9S20649C14[5]),  5,7},
  {&(_tg__ZTV8S20649C6__9S20649C14[6]),  6,8},
  {&(_tg__ZTV8S20649C7__9S20649C14[5]),  5,7},
  {&(_tg__ZTV8S20649C88S20649C7__9S20649C14[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C88S20649C7__9S20649C14[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20649C7__9S20649C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20649C14[];
extern  VTBL_ENTRY _ZTV9S20649C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C14[];
static VTBL_ENTRY alt_thunk_names69[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S20649C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S20649C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20649C6D0Ev,_ZThn8_N8S20649C6D0Ev),
  (VTBL_ENTRY)_ZN8S20649C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20649C6D1Ev,_ZThn8_N8S20649C6D1Ev),
  (VTBL_ENTRY)_ZN8S20649C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C14D0Ev,_ZThn8_N9S20649C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C14D1Ev,_ZThn8_N9S20649C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20649C14 = {  "S20649C14", // class name
  bases_S20649C14, 7,
  &(vtc_S20649C14[0]), // expected_vtbl_contents
  &(vtt_S20649C14[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI9S20649C14),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20649C14),16, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20649C14),11, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names69,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20649C13  : virtual S3216C8_nt , virtual S20649C14 , virtual S20649C2 , virtual S4677C37 , S20649C8 {
  int s20649c13f0;
  void *s20649c13f1;
  virtual  ~S20649C13(); // _ZN9S20649C13D2Ev
  S20649C13(); // tgen
};
//SIG(-1 S20649C13) C1{ VBC2{ m Fi} VBC3{ VBC4{ VBC5{ BC6{ VBC7{ vd m} VBC2 BC8{ m} Fi} Fi} BC8} FC2} VBC9{ VBC2 vd} VBC8 BC6 vd Fi Fp}


 S20649C13 ::~S20649C13(){ note_dtor("S20649C13", this);}
S20649C13 ::S20649C13(){ note_ctor("S20649C13", this);} // tgen

static void Test_S20649C13()
{
  extern Class_Descriptor cd_S20649C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S20649C13, buf);
    S20649C13 *dp, &lv = *(dp=new (buf) S20649C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S20649C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20649C13)");
    check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(24,16), "S20649C13");
    check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C7*), ABISELECT(24,16), "S20649C13");
    check_base_class_offset(lv, (S3216C8_nt*)(S20649C2*), ABISELECT(24,16), "S20649C13");
    /*is_ambiguous_... S20649C13::S20649C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*), ABISELECT(24,16), "S20649C13");
    check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C7*), ABISELECT(32,20), "S20649C13");
    /*is_ambiguous_... S20649C13::S20649C8 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*), ABISELECT(32,20), "S20649C13");
    check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C7*), ABISELECT(48,28), "S20649C13");
    check_base_class_offset(lv, (S20649C8*)(S20649C7*), ABISELECT(48,28), "S20649C13");
    check_base_class_offset(lv, (S20649C7*)(S20649C6*), ABISELECT(48,28), "S20649C13");
    /*is_ambiguous_... S20649C6::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C6*), ABISELECT(32,20), "S20649C13");
    check_base_class_offset(lv, (S20649C6*)(S20649C14*), ABISELECT(32,20), "S20649C13");
    check_base_class_offset(lv, (S20649C14*), ABISELECT(32,20), "S20649C13");
    check_base_class_offset(lv, (S20649C2*), ABISELECT(64,40), "S20649C13");
    /*is_ambiguous_... S20649C13::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*), ABISELECT(72,44), "S20649C13");
    /*is_ambiguous_... S20649C13::S20649C8 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C8*), 0, "S20649C13");
    /*is_ambiguous_... S20649C13::S20649C8 */ AMB_check_base_class_offset(lv, (S20649C8*), 0, "S20649C13");
    check_field_offset(lv, s20649c13f0, ABISELECT(12,8), "S20649C13.s20649c13f0");
    check_field_offset(lv, s20649c13f1, ABISELECT(16,12), "S20649C13.s20649c13f1");
    test_class_info(&lv, &cd_S20649C13);
    dp->~S20649C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20649C13(Test_S20649C13, "S20649C13", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN9S20649C13C1Ev();
extern void _ZN9S20649C13D2Ev();
Name_Map name_map_S20649C13[] = {
  NSPAIR(_ZN9S20649C13C1Ev),
  NSPAIR(_ZN9S20649C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C7;
extern VTBL_ENTRY _ZTI8S20649C7[];
extern  VTBL_ENTRY _ZTV8S20649C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C7[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C6;
extern VTBL_ENTRY _ZTI8S20649C6[];
extern  VTBL_ENTRY _ZTV8S20649C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C6[];
extern Class_Descriptor cd_S20649C14;
extern VTBL_ENTRY _ZTI9S20649C14[];
extern  VTBL_ENTRY _ZTV9S20649C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C14[];
extern Class_Descriptor cd_S20649C2;
extern VTBL_ENTRY _ZTI8S20649C2[];
extern  VTBL_ENTRY _ZTV8S20649C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C2[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
static Base_Class bases_S20649C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7883C3_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20649C8,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20649C7,    ABISELECT(48,28), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    6, //immediately_derived
  0, 0},
  {&cd_S20649C6,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20649C14,    ABISELECT(32,20), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20649C2,    ABISELECT(64,40), //bcp->offset
    28, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20649C8,    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},
  {0}};
extern VTBL_ENTRY _ZTI9S20649C13[];
extern void ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev)();
extern void _ZN9S20649C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev)();
extern void _ZN9S20649C13D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev)();
extern void ABISELECT(_ZThn32_N9S20649C13D1Ev,_ZThn20_N9S20649C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev)();
extern void ABISELECT(_ZThn32_N9S20649C13D0Ev,_ZThn20_N9S20649C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev)();
extern void ABISELECT(_ZThn48_N9S20649C13D1Ev,_ZThn28_N9S20649C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev)();
extern void ABISELECT(_ZThn48_N9S20649C13D0Ev,_ZThn28_N9S20649C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20649C13D1Ev,_ZTv0_n16_N9S20649C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20649C13D1Ev,_ZThn40_N9S20649C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20649C13D0Ev,_ZTv0_n16_N9S20649C13D0Ev)();
extern void ABISELECT(_ZThn64_N9S20649C13D0Ev,_ZThn40_N9S20649C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20649C13[] = {
  ABISELECT(72,44),
  ABISELECT(64,40),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(32,20),
  ABISELECT(24,16),
  ABISELECT(32,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev),
  0,
  ABISELECT(-8,-4),
  0,
  ABISELECT(16,8),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C13D1Ev,_ZTv0_n16_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C13D0Ev,_ZTv0_n16_N9S20649C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S20649C13[];
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C8__A1__9S20649C13[] = {
  ABISELECT(24,16),
  ABISELECT(32,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZThn32_N8S20649C8D1Ev,_ZThn20_N8S20649C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void ABISELECT(_ZThn32_N8S20649C8D0Ev,_ZThn20_N8S20649C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C8__A1__9S20649C13[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev)();
extern void _ZN9S20649C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev)();
extern void _ZN9S20649C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C14__9S20649C13[] = {
  0,
  ABISELECT(-8,-4),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev)();
extern void ABISELECT(_ZThn16_N9S20649C14D1Ev,_ZThn8_N9S20649C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev)();
extern void ABISELECT(_ZThn16_N9S20649C14D0Ev,_ZThn8_N9S20649C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C14__9S20649C13[] = {
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20649C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void _ZN8S20649C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
extern void _ZN8S20649C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C6__9S20649C13[] = {
  ABISELECT(-8,-4),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S20649C6D1Ev,_ZThn8_N8S20649C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
extern void ABISELECT(_ZThn16_N8S20649C6D0Ev,_ZThn8_N8S20649C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__8S20649C6__9S20649C13[] = {
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void _ZN8S20649C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
extern void _ZN8S20649C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C13[] = {
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C88S20649C7__9S20649C13[] = {
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C88S20649C7__9S20649C13[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C7__9S20649C13[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void _ZN8S20649C2D1Ev();
extern void _ZN8S20649C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20649C2__9S20649C13[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C2[0]),
  (VTBL_ENTRY)&_ZN8S20649C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20649C2D0Ev,
};
static  VTT_ENTRY vtt_S20649C13[] = {
  {&(_ZTV9S20649C13[10]),  10,34},
  {&(_tg__ZTV8S20649C8__A1__9S20649C13[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C8__A1__9S20649C13[3]),  3,5},
  {&(_ZTV9S20649C13[19]),  19,34},
  {&(_ZTV9S20649C13[19]),  19,34},
  {&(_ZTV9S20649C13[26]),  26,34},
  {&(_ZTV9S20649C13[19]),  19,34},
  {&(_ZTV9S20649C13[32]),  32,34},
  {&(_tg__ZTV9S20649C14__9S20649C13[7]),  7,9},
  {&(_tg__ZTV9S20649C14__9S20649C13[7]),  7,9},
  {&(_tg__ZTV8S20649C7__9S20649C14__9S20649C13[5]),  5,7},
  {&(_tg__ZTV9S20649C14__9S20649C13[7]),  7,9},
  {&(_tg__ZTV8S20649C6__9S20649C13[6]),  6,8},
  {&(_tg__ZTV8S20649C7__8S20649C6__9S20649C13[5]),  5,7},
  {&(_tg__ZTV8S20649C6__9S20649C13[6]),  6,8},
  {&(_tg__ZTV8S20649C7__9S20649C13[5]),  5,7},
  {&(_tg__ZTV8S20649C88S20649C7__9S20649C13[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C88S20649C7__9S20649C13[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20649C7__9S20649C13[3]),  3,5},
  {&(_tg__ZTV8S20649C2__9S20649C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20649C13[];
extern  VTBL_ENTRY _ZTV9S20649C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C13[];
static VTBL_ENTRY alt_thunk_names70[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S20649C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S20649C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20649C6D0Ev,_ZThn8_N8S20649C6D0Ev),
  (VTBL_ENTRY)_ZN8S20649C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20649C6D1Ev,_ZThn8_N8S20649C6D1Ev),
  (VTBL_ENTRY)_ZN8S20649C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C14D0Ev,_ZThn8_N9S20649C14D0Ev),
  (VTBL_ENTRY)_ZN9S20649C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C14D1Ev,_ZThn8_N9S20649C14D1Ev),
  (VTBL_ENTRY)_ZN9S20649C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20649C8D0Ev,_ZThn20_N8S20649C8D0Ev),
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20649C8D1Ev,_ZThn20_N8S20649C8D1Ev),
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20649C13D0Ev,_ZTv0_n16_N9S20649C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20649C13D0Ev,_ZThn40_N9S20649C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20649C13D1Ev,_ZTv0_n16_N9S20649C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20649C13D1Ev,_ZThn40_N9S20649C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20649C13D0Ev,_ZThn28_N9S20649C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20649C13D0Ev,_ZThn20_N9S20649C13D0Ev),
  (VTBL_ENTRY)_ZN9S20649C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20649C13D1Ev,_ZThn28_N9S20649C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20649C13D1Ev,_ZThn20_N9S20649C13D1Ev),
  (VTBL_ENTRY)_ZN9S20649C13D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20649C13 = {  "S20649C13", // class name
  bases_S20649C13, 12,
  &(vtc_S20649C13[0]), // expected_vtbl_contents
  &(vtt_S20649C13[0]), // expected_vtt_contents
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI9S20649C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20649C13),34, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20649C13),20, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names70,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20649C16  : S20649C7 {
  ~S20649C16(); // tgen
  S20649C16(); // tgen
};
//SIG(-1 S20649C16) C1{ BC2{ BC3{ VBC4{ vd m} VBC5{ m Fi} BC6{ m} Fi} Fi}}


S20649C16 ::~S20649C16(){ note_dtor("S20649C16", this);} // tgen
S20649C16 ::S20649C16(){ note_ctor("S20649C16", this);} // tgen

static void Test_S20649C16()
{
  extern Class_Descriptor cd_S20649C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20649C16, buf);
    S20649C16 *dp, &lv = *(dp=new (buf) S20649C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20649C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20649C16)");
    check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C7*), 0, "S20649C16");
    check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C7*), ABISELECT(16,12), "S20649C16");
    check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C7*), 0, "S20649C16");
    check_base_class_offset(lv, (S20649C8*)(S20649C7*), 0, "S20649C16");
    check_base_class_offset(lv, (S20649C7*), 0, "S20649C16");
    test_class_info(&lv, &cd_S20649C16);
    dp->~S20649C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20649C16(Test_S20649C16, "S20649C16", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN9S20649C16C1Ev();
extern void _ZN9S20649C16D1Ev();
Name_Map name_map_S20649C16[] = {
  NSPAIR(_ZN9S20649C16C1Ev),
  NSPAIR(_ZN9S20649C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C7;
extern VTBL_ENTRY _ZTI8S20649C7[];
extern  VTBL_ENTRY _ZTV8S20649C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C7[];
static Base_Class bases_S20649C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20649C8,    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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20649C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20649C16[];
extern void _ZN9S20649C16D1Ev();
extern void _ZN9S20649C16D0Ev();
static  VTBL_ENTRY vtc_S20649C16[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C16[0]),
  (VTBL_ENTRY)&_ZN9S20649C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20649C16D0Ev,
};
extern VTBL_ENTRY _ZTV9S20649C16[];
extern void _ZN8S20649C7D1Ev();
extern void _ZN8S20649C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C16[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&_ZN8S20649C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20649C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C88S20649C7__9S20649C16[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
static  VTT_ENTRY vtt_S20649C16[] = {
  {&(_ZTV9S20649C16[5]),  5,7},
  {&(_tg__ZTV8S20649C7__9S20649C16[5]),  5,7},
  {&(_tg__ZTV8S20649C88S20649C7__9S20649C16[5]),  5,7},
  {&(_tg__ZTV8S20649C88S20649C7__9S20649C16[5]),  5,7},
  {&(_tg__ZTV8S20649C7__9S20649C16[5]),  5,7},
  {&(_ZTV9S20649C16[5]),  5,7},
};
extern VTBL_ENTRY _ZTI9S20649C16[];
extern  VTBL_ENTRY _ZTV9S20649C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C16[];
static VTBL_ENTRY alt_thunk_names71[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20649C16 = {  "S20649C16", // class name
  bases_S20649C16, 5,
  &(vtc_S20649C16[0]), // expected_vtbl_contents
  &(vtt_S20649C16[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI9S20649C16),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20649C16),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20649C16),6, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names71,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20649C18  : S20649C12 , S3216C8_nt {
  int s20649c18f0;
  virtual  ~S20649C18(); // _ZN9S20649C18D2Ev
  S20649C18(); // tgen
};
//SIG(-1 S20649C18) C1{ BC2{ VBC3{ vd m} BC4{ m Fi} BC5{ VBC6{ BC7{ VBC3 VBC4 BC8{ m} Fi} Fi} BC8} VBC8 BC7 vd} BC4 vd Fi}


 S20649C18 ::~S20649C18(){ note_dtor("S20649C18", this);}
S20649C18 ::S20649C18(){ note_ctor("S20649C18", this);} // tgen

static void Test_S20649C18()
{
  extern Class_Descriptor cd_S20649C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S20649C18, buf);
    S20649C18 *dp, &lv = *(dp=new (buf) S20649C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S20649C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20649C18)");
    check_base_class_offset(lv, (S7883C3_nt*)(S20649C12*), 0, "S20649C18");
    check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C7*), 0, "S20649C18");
    /*is_ambiguous_... S20649C12::S20649C8 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C12*), 0, "S20649C18");
    /*is_ambiguous_... S20649C12::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C12*), ABISELECT(8,4), "S20649C18");
    check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C7*), ABISELECT(56,36), "S20649C18");
    /*is_ambiguous_... S20649C12::S20649C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C12*), ABISELECT(56,36), "S20649C18");
    check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C7*), ABISELECT(40,24), "S20649C18");
    check_base_class_offset(lv, (S20649C8*)(S20649C7*), ABISELECT(40,24), "S20649C18");
    check_base_class_offset(lv, (S20649C7*)(S20649C6*)(S20649C12*), ABISELECT(40,24), "S20649C18");
    /*is_ambiguous_... S20649C6::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C6*)(S20649C12*), 0, "S20649C18");
    check_base_class_offset(lv, (S20649C6*)(S20649C12*), 0, "S20649C18");
    /*is_ambiguous_... S20649C12::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C12*), ABISELECT(60,40), "S20649C18");
    /*is_ambiguous_... S20649C12::S20649C8 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C12*), ABISELECT(16,8), "S20649C18");
    /*is_ambiguous_... S20649C12::S20649C8 */ AMB_check_base_class_offset(lv, (S20649C8*)(S20649C12*), ABISELECT(16,8), "S20649C18");
    check_base_class_offset(lv, (S20649C12*), 0, "S20649C18");
    /*is_ambiguous_... S20649C18::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(28,16), "S20649C18");
    check_field_offset(lv, s20649c18f0, ABISELECT(32,20), "S20649C18.s20649c18f0");
    test_class_info(&lv, &cd_S20649C18);
    dp->~S20649C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20649C18(Test_S20649C18, "S20649C18", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN9S20649C18C1Ev();
extern void _ZN9S20649C18D2Ev();
Name_Map name_map_S20649C18[] = {
  NSPAIR(_ZN9S20649C18C1Ev),
  NSPAIR(_ZN9S20649C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C7;
extern VTBL_ENTRY _ZTI8S20649C7[];
extern  VTBL_ENTRY _ZTV8S20649C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C7[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C6;
extern VTBL_ENTRY _ZTI8S20649C6[];
extern  VTBL_ENTRY _ZTV8S20649C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C12;
extern VTBL_ENTRY _ZTI9S20649C12[];
extern  VTBL_ENTRY _ZTV9S20649C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C12[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S20649C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    4, //immediately_derived
  0, 0},
  {&cd_S20649C8,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20649C7,    ABISELECT(40,24), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20649C6,    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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(60,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    10, //immediately_derived
  0, 0},
  {&cd_S20649C8,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20649C12,    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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20649C18[];
extern void _ZN9S20649C18D1Ev();
extern void _ZN9S20649C18D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev)();
extern void ABISELECT(_ZThn16_N9S20649C18D1Ev,_ZThn8_N9S20649C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev)();
extern void ABISELECT(_ZThn16_N9S20649C18D0Ev,_ZThn8_N9S20649C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20649C18D1Ev,_ZThn24_N9S20649C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev)();
extern void ABISELECT(_ZThn40_N9S20649C18D0Ev,_ZThn24_N9S20649C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20649C18[] = {
  ABISELECT(60,40),
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C18[0]),
  (VTBL_ENTRY)&_ZN9S20649C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20649C18D0Ev,
  ABISELECT(40,28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20649C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev),
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20649C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev),
};
extern VTBL_ENTRY _ZTV9S20649C18[];
extern void _ZN9S20649C12D1Ev();
extern void _ZN9S20649C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20649C12__9S20649C18[] = {
  ABISELECT(60,40),
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&_ZN9S20649C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20649C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void _ZN8S20649C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
extern void _ZN8S20649C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C69S20649C12__9S20649C18[] = {
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S20649C6D1Ev,_ZThn24_N8S20649C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S20649C6D0Ev,_ZThn24_N8S20649C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__8S20649C69S20649C12__9S20649C18[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C12__A1__9S20649C18[] = {
  ABISELECT(40,28),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C89S20649C12__A1__9S20649C18[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void ABISELECT(_ZThn40_N9S20649C12D1Ev,_ZThn24_N9S20649C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
extern void ABISELECT(_ZThn40_N9S20649C12D0Ev,_ZThn24_N9S20649C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C12__9S20649C18[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S20649C12D1Ev,_ZThn8_N9S20649C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S20649C12D0Ev,_ZThn8_N9S20649C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C8__A1__9S20649C12__9S20649C18[] = {
  ABISELECT(40,28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void _ZN8S20649C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
extern void _ZN8S20649C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C18[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C88S20649C7__9S20649C18[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C88S20649C7__9S20649C18[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C7__9S20649C18[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
static  VTT_ENTRY vtt_S20649C18[] = {
  {&(_ZTV9S20649C18[7]),  7,23},
  {&(_tg__ZTV9S20649C12__9S20649C18[7]),  7,9},
  {&(_tg__ZTV8S20649C69S20649C12__9S20649C18[6]),  6,8},
  {&(_tg__ZTV8S20649C7__8S20649C69S20649C12__9S20649C18[5]),  5,7},
  {&(_tg__ZTV8S20649C69S20649C12__9S20649C18[6]),  6,8},
  {&(_tg__ZTV8S20649C89S20649C12__A1__9S20649C18[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C89S20649C12__A1__9S20649C18[3]),  3,5},
  {&(_tg__ZTV9S20649C12__9S20649C18[7]),  7,9},
  {&(_tg__ZTV8S20649C7__9S20649C12__9S20649C18[5]),  5,7},
  {&(_tg__ZTV8S20649C8__A1__9S20649C12__9S20649C18[5]),  5,7},
  {&(_ZTV9S20649C18[7]),  7,23},
  {&(_ZTV9S20649C18[21]),  21,23},
  {&(_ZTV9S20649C18[14]),  14,23},
  {&(_tg__ZTV8S20649C7__9S20649C18[5]),  5,7},
  {&(_tg__ZTV8S20649C88S20649C7__9S20649C18[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C88S20649C7__9S20649C18[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20649C7__9S20649C18[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20649C18[];
extern  VTBL_ENTRY _ZTV9S20649C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C18[];
static VTBL_ENTRY alt_thunk_names72[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S20649C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S20649C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C12D0Ev,_ZThn8_N9S20649C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20649C12D0Ev,_ZThn24_N9S20649C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C12D1Ev,_ZThn8_N9S20649C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20649C12D1Ev,_ZThn24_N9S20649C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20649C6D0Ev,_ZThn24_N8S20649C6D0Ev),
  (VTBL_ENTRY)_ZN8S20649C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20649C6D1Ev,_ZThn24_N8S20649C6D1Ev),
  (VTBL_ENTRY)_ZN8S20649C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20649C18D0Ev,_ZThn24_N9S20649C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C18D0Ev,_ZThn8_N9S20649C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20649C18D1Ev,_ZThn24_N9S20649C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C18D1Ev,_ZThn8_N9S20649C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20649C18 = {  "S20649C18", // class name
  bases_S20649C18, 13,
  &(vtc_S20649C18[0]), // expected_vtbl_contents
  &(vtt_S20649C18[0]), // expected_vtt_contents
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI9S20649C18),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20649C18),23, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20649C18),17, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names72,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20649C17  : S20649C18 {
  virtual  ~S20649C17(); // _ZN9S20649C17D2Ev
  S20649C17(); // tgen
};
//SIG(-1 S20649C17) C1{ BC2{ BC3{ VBC4{ vd m} BC5{ m Fi} BC6{ VBC7{ BC8{ VBC4 VBC5 BC9{ m} Fi} Fi} BC9} VBC9 BC8 vd} BC5 vd Fi} vd}


 S20649C17 ::~S20649C17(){ note_dtor("S20649C17", this);}
S20649C17 ::S20649C17(){ note_ctor("S20649C17", this);} // tgen

static void Test_S20649C17()
{
  extern Class_Descriptor cd_S20649C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S20649C17, buf);
    S20649C17 *dp, &lv = *(dp=new (buf) S20649C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S20649C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20649C17)");
    check_base_class_offset(lv, (S7883C3_nt*)(S20649C12*)(S20649C18*), 0, "S20649C17");
    check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C7*), 0, "S20649C17");
    /*is_ambiguous_... S20649C12::S20649C8 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C12*)(S20649C18*), 0, "S20649C17");
    /*is_ambiguous_... S20649C12::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C12*)(S20649C18*), ABISELECT(8,4), "S20649C17");
    check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C7*), ABISELECT(56,36), "S20649C17");
    /*is_ambiguous_... S20649C12::S20649C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C12*)(S20649C18*), ABISELECT(56,36), "S20649C17");
    check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C7*), ABISELECT(40,24), "S20649C17");
    check_base_class_offset(lv, (S20649C8*)(S20649C7*), ABISELECT(40,24), "S20649C17");
    check_base_class_offset(lv, (S20649C7*)(S20649C6*)(S20649C12*)(S20649C18*), ABISELECT(40,24), "S20649C17");
    /*is_ambiguous_... S20649C6::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C6*)(S20649C12*)(S20649C18*), 0, "S20649C17");
    check_base_class_offset(lv, (S20649C6*)(S20649C12*)(S20649C18*), 0, "S20649C17");
    /*is_ambiguous_... S20649C12::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C12*)(S20649C18*), ABISELECT(60,40), "S20649C17");
    /*is_ambiguous_... S20649C12::S20649C8 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C12*)(S20649C18*), ABISELECT(16,8), "S20649C17");
    /*is_ambiguous_... S20649C12::S20649C8 */ AMB_check_base_class_offset(lv, (S20649C8*)(S20649C12*)(S20649C18*), ABISELECT(16,8), "S20649C17");
    check_base_class_offset(lv, (S20649C12*)(S20649C18*), 0, "S20649C17");
    /*is_ambiguous_... S20649C18::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C18*), ABISELECT(28,16), "S20649C17");
    check_base_class_offset(lv, (S20649C18*), 0, "S20649C17");
    test_class_info(&lv, &cd_S20649C17);
    dp->~S20649C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20649C17(Test_S20649C17, "S20649C17", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN9S20649C17C1Ev();
extern void _ZN9S20649C17D2Ev();
Name_Map name_map_S20649C17[] = {
  NSPAIR(_ZN9S20649C17C1Ev),
  NSPAIR(_ZN9S20649C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C7;
extern VTBL_ENTRY _ZTI8S20649C7[];
extern  VTBL_ENTRY _ZTV8S20649C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C7[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C6;
extern VTBL_ENTRY _ZTI8S20649C6[];
extern  VTBL_ENTRY _ZTV8S20649C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C12;
extern VTBL_ENTRY _ZTI9S20649C12[];
extern  VTBL_ENTRY _ZTV9S20649C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C12[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20649C18;
extern VTBL_ENTRY _ZTI9S20649C18[];
extern  VTBL_ENTRY _ZTV9S20649C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C18[];
static Base_Class bases_S20649C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //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
    4, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    4, //immediately_derived
  0, 0},
  {&cd_S20649C8,    ABISELECT(40,24), //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
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20649C7,    ABISELECT(40,24), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20649C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(60,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    10, //immediately_derived
  0, 0},
  {&cd_S20649C8,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20649C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20649C18,    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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20649C17[];
extern void _ZN9S20649C17D1Ev();
extern void _ZN9S20649C17D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20649C17D1Ev,_ZThn8_N9S20649C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev)();
extern void ABISELECT(_ZThn16_N9S20649C17D0Ev,_ZThn8_N9S20649C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev)();
extern void ABISELECT(_ZThn40_N9S20649C17D1Ev,_ZThn24_N9S20649C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev)();
extern void ABISELECT(_ZThn40_N9S20649C17D0Ev,_ZThn24_N9S20649C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20649C17[] = {
  ABISELECT(60,40),
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C17[0]),
  (VTBL_ENTRY)&_ZN9S20649C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20649C17D0Ev,
  ABISELECT(40,28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20649C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev),
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20649C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev),
};
extern VTBL_ENTRY _ZTV9S20649C17[];
extern void _ZN9S20649C18D1Ev();
extern void _ZN9S20649C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20649C18__9S20649C17[] = {
  ABISELECT(60,40),
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C18[0]),
  (VTBL_ENTRY)&_ZN9S20649C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20649C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void _ZN9S20649C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
extern void _ZN9S20649C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C129S20649C18__9S20649C17[] = {
  ABISELECT(60,40),
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void _ZN8S20649C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
extern void _ZN8S20649C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C69S20649C129S20649C18__9S20649C17[] = {
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S20649C6D1Ev,_ZThn24_N8S20649C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S20649C6D0Ev,_ZThn24_N8S20649C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__8S20649C69S20649C129S20649C18__9S20649C17[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C129S20649C18__A1__9S20649C17[] = {
  ABISELECT(40,28),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C89S20649C129S20649C18__A1__9S20649C17[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void ABISELECT(_ZThn40_N9S20649C12D1Ev,_ZThn24_N9S20649C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
extern void ABISELECT(_ZThn40_N9S20649C12D0Ev,_ZThn24_N9S20649C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C129S20649C18__9S20649C17[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S20649C12D1Ev,_ZThn8_N9S20649C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S20649C12D0Ev,_ZThn8_N9S20649C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C8__A1__9S20649C129S20649C18__9S20649C17[] = {
  ABISELECT(40,28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20649C18D1Ev,_ZThn24_N9S20649C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev)();
extern void ABISELECT(_ZThn40_N9S20649C18D0Ev,_ZThn24_N9S20649C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C18__9S20649C17[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20649C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev)();
extern void ABISELECT(_ZThn16_N9S20649C18D1Ev,_ZThn8_N9S20649C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev)();
extern void ABISELECT(_ZThn16_N9S20649C18D0Ev,_ZThn8_N9S20649C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C12__A1__9S20649C18__9S20649C17[] = {
  ABISELECT(40,28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20649C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void _ZN8S20649C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
extern void _ZN8S20649C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C17[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C88S20649C7__9S20649C17[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C88S20649C7__9S20649C17[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C7__9S20649C17[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
static  VTT_ENTRY vtt_S20649C17[] = {
  {&(_ZTV9S20649C17[7]),  7,23},
  {&(_tg__ZTV9S20649C18__9S20649C17[7]),  7,9},
  {&(_tg__ZTV9S20649C129S20649C18__9S20649C17[7]),  7,9},
  {&(_tg__ZTV8S20649C69S20649C129S20649C18__9S20649C17[6]),  6,8},
  {&(_tg__ZTV8S20649C7__8S20649C69S20649C129S20649C18__9S20649C17[5]),  5,7},
  {&(_tg__ZTV8S20649C69S20649C129S20649C18__9S20649C17[6]),  6,8},
  {&(_tg__ZTV8S20649C89S20649C129S20649C18__A1__9S20649C17[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C89S20649C129S20649C18__A1__9S20649C17[3]),  3,5},
  {&(_tg__ZTV9S20649C129S20649C18__9S20649C17[7]),  7,9},
  {&(_tg__ZTV8S20649C7__9S20649C129S20649C18__9S20649C17[5]),  5,7},
  {&(_tg__ZTV8S20649C8__A1__9S20649C129S20649C18__9S20649C17[5]),  5,7},
  {&(_tg__ZTV9S20649C18__9S20649C17[7]),  7,9},
  {&(_tg__ZTV8S20649C7__9S20649C18__9S20649C17[5]),  5,7},
  {&(_tg__ZTV8S20649C89S20649C12__A1__9S20649C18__9S20649C17[5]),  5,7},
  {&(_ZTV9S20649C17[7]),  7,23},
  {&(_ZTV9S20649C17[21]),  21,23},
  {&(_ZTV9S20649C17[14]),  14,23},
  {&(_tg__ZTV8S20649C7__9S20649C17[5]),  5,7},
  {&(_tg__ZTV8S20649C88S20649C7__9S20649C17[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C88S20649C7__9S20649C17[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20649C7__9S20649C17[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20649C17[];
extern  VTBL_ENTRY _ZTV9S20649C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C17[];
static VTBL_ENTRY alt_thunk_names73[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S20649C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S20649C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C18D0Ev,_ZThn8_N9S20649C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20649C18D0Ev,_ZThn24_N9S20649C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C18D1Ev,_ZThn8_N9S20649C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20649C18D1Ev,_ZThn24_N9S20649C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20649C6D0Ev,_ZThn24_N8S20649C6D0Ev),
  (VTBL_ENTRY)_ZN8S20649C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20649C6D1Ev,_ZThn24_N8S20649C6D1Ev),
  (VTBL_ENTRY)_ZN8S20649C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C12D0Ev,_ZThn8_N9S20649C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20649C12D0Ev,_ZThn24_N9S20649C12D0Ev),
  (VTBL_ENTRY)_ZN9S20649C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C12D1Ev,_ZThn8_N9S20649C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20649C12D1Ev,_ZThn24_N9S20649C12D1Ev),
  (VTBL_ENTRY)_ZN9S20649C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20649C17D0Ev,_ZThn24_N9S20649C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C17D0Ev,_ZThn8_N9S20649C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20649C17D1Ev,_ZThn24_N9S20649C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C17D1Ev,_ZThn8_N9S20649C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20649C17 = {  "S20649C17", // class name
  bases_S20649C17, 14,
  &(vtc_S20649C17[0]), // expected_vtbl_contents
  &(vtt_S20649C17[0]), // expected_vtt_contents
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI9S20649C17),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20649C17),23, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20649C17),21, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names73,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20649C19  : S20649C16 , virtual S20649C13 {
  int s20649c19f0;
  virtual  ~S20649C19(); // _ZN9S20649C19D2Ev
  S20649C19(); // tgen
};
//SIG(-1 S20649C19) C1{ BC2{ BC3{ BC4{ VBC5{ vd m} VBC6{ m Fi} BC7{ m} Fi} Fi}} VBC8{ VBC6 VBC9{ VBC10{ VBC3 BC7} FC6} VBC11{ VBC6 vd} VBC7 BC4 vd Fi Fp} vd Fi}


 S20649C19 ::~S20649C19(){ note_dtor("S20649C19", this);}
S20649C19 ::S20649C19(){ note_ctor("S20649C19", this);} // tgen

static void Test_S20649C19()
{
  extern Class_Descriptor cd_S20649C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,17)];
    init_test(&cd_S20649C19, buf);
    S20649C19 *dp, &lv = *(dp=new (buf) S20649C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,64), "sizeof(S20649C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20649C19)");
    check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C7*)(S20649C16*), 0, "S20649C19");
    /*is_ambiguous_... S20649C19::S20649C7 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C7*), 0, "S20649C19");
    /*is_ambiguous_... S20649C13::S20649C8 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C13*), 0, "S20649C19");
    check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C7*)(S20649C16*), ABISELECT(20,16), "S20649C19");
    check_base_class_offset(lv, (S3216C8_nt*)(S20649C13*), ABISELECT(20,16), "S20649C19");
    /*is_ambiguous_... S20649C19::S20649C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C7*), ABISELECT(20,16), "S20649C19");
    check_base_class_offset(lv, (S3216C8_nt*)(S20649C2*), ABISELECT(20,16), "S20649C19");
    /*is_ambiguous_... S20649C13::S20649C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C13*), ABISELECT(20,16), "S20649C19");
    check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C7*)(S20649C16*), 0, "S20649C19");
    check_base_class_offset(lv, (S20649C8*)(S20649C7*)(S20649C16*), 0, "S20649C19");
    check_base_class_offset(lv, (S20649C7*)(S20649C16*), 0, "S20649C19");
    check_base_class_offset(lv, (S20649C16*), 0, "S20649C19");
    /*is_ambiguous_... S20649C19::S20649C7 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C7*), ABISELECT(64,44), "S20649C19");
    /*is_ambiguous_... S20649C19::S20649C7 */ AMB_check_base_class_offset(lv, (S20649C8*)(S20649C7*), ABISELECT(64,44), "S20649C19");
    check_base_class_offset(lv, (S20649C7*)(S20649C6*), ABISELECT(64,44), "S20649C19");
    /*is_ambiguous_... S20649C6::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C6*), ABISELECT(48,36), "S20649C19");
    check_base_class_offset(lv, (S20649C6*)(S20649C14*), ABISELECT(48,36), "S20649C19");
    check_base_class_offset(lv, (S20649C14*)(S20649C13*), ABISELECT(48,36), "S20649C19");
    check_base_class_offset(lv, (S20649C2*)(S20649C13*), ABISELECT(80,56), "S20649C19");
    /*is_ambiguous_... S20649C13::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C13*), ABISELECT(88,60), "S20649C19");
    /*is_ambiguous_... S20649C13::S20649C8 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C13*), ABISELECT(24,20), "S20649C19");
    /*is_ambiguous_... S20649C13::S20649C8 */ AMB_check_base_class_offset(lv, (S20649C8*)(S20649C13*), ABISELECT(24,20), "S20649C19");
    check_base_class_offset(lv, (S20649C13*), ABISELECT(24,20), "S20649C19");
    check_field_offset(lv, s20649c19f0, ABISELECT(16,12), "S20649C19.s20649c19f0");
    test_class_info(&lv, &cd_S20649C19);
    dp->~S20649C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20649C19(Test_S20649C19, "S20649C19", ABISELECT(96,64));

#else // __cplusplus

extern void _ZN9S20649C19C1Ev();
extern void _ZN9S20649C19D2Ev();
Name_Map name_map_S20649C19[] = {
  NSPAIR(_ZN9S20649C19C1Ev),
  NSPAIR(_ZN9S20649C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C7;
extern VTBL_ENTRY _ZTI8S20649C7[];
extern  VTBL_ENTRY _ZTV8S20649C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C7[];
extern Class_Descriptor cd_S20649C16;
extern VTBL_ENTRY _ZTI9S20649C16[];
extern  VTBL_ENTRY _ZTV9S20649C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C16[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C7;
extern VTBL_ENTRY _ZTI8S20649C7[];
extern  VTBL_ENTRY _ZTV8S20649C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C7[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C6;
extern VTBL_ENTRY _ZTI8S20649C6[];
extern  VTBL_ENTRY _ZTV8S20649C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C6[];
extern Class_Descriptor cd_S20649C14;
extern VTBL_ENTRY _ZTI9S20649C14[];
extern  VTBL_ENTRY _ZTV9S20649C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C14[];
extern Class_Descriptor cd_S20649C2;
extern VTBL_ENTRY _ZTI8S20649C2[];
extern  VTBL_ENTRY _ZTV8S20649C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C2[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C13;
extern VTBL_ENTRY _ZTI9S20649C13[];
extern  VTBL_ENTRY _ZTV9S20649C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C13[];
static Base_Class bases_S20649C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(20,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20649C8,    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
    9, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20649C7,    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
    10, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20649C16,    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_S4677C37,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20649C8,    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
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20649C7,    ABISELECT(64,44), //bcp->offset
    34, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20649C6,    ABISELECT(48,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20649C14,    ABISELECT(48,36), //bcp->offset
    25, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20649C2,    ABISELECT(80,56), //bcp->offset
    41, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    16, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(24,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
    15, //immediately_derived
  0, 0},
  {&cd_S20649C8,    ABISELECT(24,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20649C13,    ABISELECT(24,20), //bcp->offset
    13, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20649C19[];
extern void _ZN9S20649C19D1Ev();
extern void _ZN9S20649C19D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev)();
extern void ABISELECT(_ZThn24_N9S20649C19D1Ev,_ZThn20_N9S20649C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev)();
extern void ABISELECT(_ZThn24_N9S20649C19D0Ev,_ZThn20_N9S20649C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev)();
extern void ABISELECT(_ZThn48_N9S20649C19D1Ev,_ZThn36_N9S20649C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev)();
extern void ABISELECT(_ZThn48_N9S20649C19D0Ev,_ZThn36_N9S20649C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev)();
extern void ABISELECT(_ZThn64_N9S20649C19D1Ev,_ZThn44_N9S20649C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev)();
extern void ABISELECT(_ZThn64_N9S20649C19D0Ev,_ZThn44_N9S20649C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20649C19D1Ev,_ZTv0_n16_N9S20649C19D1Ev)();
extern void ABISELECT(_ZThn80_N9S20649C19D1Ev,_ZThn56_N9S20649C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20649C19D0Ev,_ZTv0_n16_N9S20649C19D0Ev)();
extern void ABISELECT(_ZThn80_N9S20649C19D0Ev,_ZThn56_N9S20649C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20649C19[] = {
  ABISELECT(88,60),
  ABISELECT(80,56),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(24,20),
  ABISELECT(20,16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C19[0]),
  (VTBL_ENTRY)&_ZN9S20649C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20649C19D0Ev,
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(24,16),
  -4,
  ABISELECT(-24,-20),
  ABISELECT(-24,-20),
  ABISELECT(-24,-20),
  (VTBL_ENTRY)&(_ZTI9S20649C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev),
  0,
  ABISELECT(-28,-20),
  ABISELECT(-48,-36),
  ABISELECT(16,8),
  ABISELECT(-48,-36),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI9S20649C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev),
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S20649C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev),
  ABISELECT(-80,-56),
  ABISELECT(-60,-40),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S20649C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C19D1Ev,_ZTv0_n16_N9S20649C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C19D0Ev,_ZTv0_n16_N9S20649C19D0Ev),
};
extern VTBL_ENTRY _ZTV9S20649C19[];
extern void _ZN9S20649C16D1Ev();
extern void _ZN9S20649C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20649C16__9S20649C19[] = {
  ABISELECT(20,16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C16[0]),
  (VTBL_ENTRY)&_ZN9S20649C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20649C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void _ZN8S20649C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
extern void _ZN8S20649C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C79S20649C16__9S20649C19[] = {
  ABISELECT(20,16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C88S20649C79S20649C16__9S20649C19[] = {
  ABISELECT(20,16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev)();
extern void _ZN9S20649C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev)();
extern void _ZN9S20649C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C13__9S20649C19[] = {
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(24,16),
  -4,
  ABISELECT(-24,-20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C13__A2__9S20649C19[] = {
  -4,
  ABISELECT(-24,-20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C89S20649C13__A2__9S20649C19[] = {
  ABISELECT(24,20),
  ABISELECT(24,20),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev)();
extern void ABISELECT(_ZThn24_N9S20649C13D1Ev,_ZThn16_N9S20649C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev)();
extern void ABISELECT(_ZThn24_N9S20649C13D0Ev,_ZThn16_N9S20649C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C14__9S20649C13__9S20649C19[] = {
  0,
  ABISELECT(-28,-20),
  ABISELECT(-48,-36),
  ABISELECT(16,8),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev)();
extern void ABISELECT(_ZThn40_N9S20649C13D1Ev,_ZThn24_N9S20649C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev)();
extern void ABISELECT(_ZThn40_N9S20649C13D0Ev,_ZThn24_N9S20649C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C13__9S20649C19[] = {
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C13__9S20649C19[] = {
  ABISELECT(24,20),
  ABISELECT(24,20),
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20649C13D1Ev,_ZTv0_n16_N9S20649C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S20649C13D1Ev,_ZThn36_N9S20649C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20649C13D0Ev,_ZTv0_n16_N9S20649C13D0Ev)();
extern void ABISELECT(_ZThn56_N9S20649C13D0Ev,_ZThn36_N9S20649C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C2__9S20649C13__9S20649C19[] = {
  ABISELECT(-56,-36),
  ABISELECT(-60,-40),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C13D1Ev,_ZTv0_n16_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C13D0Ev,_ZTv0_n16_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev)();
extern void _ZN9S20649C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev)();
extern void _ZN9S20649C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C14__9S20649C19[] = {
  0,
  ABISELECT(-28,-20),
  ABISELECT(-48,-36),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev)();
extern void ABISELECT(_ZThn16_N9S20649C14D1Ev,_ZThn8_N9S20649C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev)();
extern void ABISELECT(_ZThn16_N9S20649C14D0Ev,_ZThn8_N9S20649C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C14__9S20649C19[] = {
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20649C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C14__9S20649C19[] = {
  ABISELECT(48,36),
  ABISELECT(48,36),
  (VTBL_ENTRY)&(_ZTI9S20649C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void _ZN8S20649C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
extern void _ZN8S20649C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C6__9S20649C19[] = {
  ABISELECT(-28,-20),
  ABISELECT(-48,-36),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S20649C6D1Ev,_ZThn8_N8S20649C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
extern void ABISELECT(_ZThn16_N8S20649C6D0Ev,_ZThn8_N8S20649C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__8S20649C6__9S20649C19[] = {
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C6__9S20649C19[] = {
  ABISELECT(48,36),
  ABISELECT(48,36),
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void _ZN8S20649C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
extern void _ZN8S20649C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__A1__9S20649C19[] = {
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C88S20649C7__A1__9S20649C19[] = {
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C88S20649C7__A1__9S20649C19[] = {
  ABISELECT(64,44),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C7__A1__9S20649C19[] = {
  ABISELECT(64,44),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void _ZN8S20649C2D1Ev();
extern void _ZN8S20649C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20649C2__9S20649C19[] = {
  ABISELECT(-60,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C2[0]),
  (VTBL_ENTRY)&_ZN8S20649C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20649C2D0Ev,
};
static  VTT_ENTRY vtt_S20649C19[] = {
  {&(_ZTV9S20649C19[11]),  11,47},
  {&(_tg__ZTV9S20649C16__9S20649C19[5]),  5,7},
  {&(_tg__ZTV8S20649C79S20649C16__9S20649C19[5]),  5,7},
  {&(_tg__ZTV8S20649C88S20649C79S20649C16__9S20649C19[5]),  5,7},
  {&(_tg__ZTV8S20649C88S20649C79S20649C16__9S20649C19[5]),  5,7},
  {&(_tg__ZTV8S20649C79S20649C16__9S20649C19[5]),  5,7},
  {&(_tg__ZTV9S20649C16__9S20649C19[5]),  5,7},
  {&(_ZTV9S20649C19[11]),  11,47},
  {&(_ZTV9S20649C19[23]),  23,47},
  {&(_ZTV9S20649C19[32]),  32,47},
  {&(_ZTV9S20649C19[32]),  32,47},
  {&(_ZTV9S20649C19[39]),  39,47},
  {&(_ZTV9S20649C19[45]),  45,47},
  {&(_tg__ZTV9S20649C13__9S20649C19[10]),  10,12},
  {&(_tg__ZTV8S20649C89S20649C13__A2__9S20649C19[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C89S20649C13__A2__9S20649C19[3]),  3,5},
  {&(_tg__ZTV9S20649C14__9S20649C13__9S20649C19[7]),  7,9},
  {&(_tg__ZTV9S20649C14__9S20649C13__9S20649C19[7]),  7,9},
  {&(_tg__ZTV8S20649C7__9S20649C13__9S20649C19[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__9S20649C13__9S20649C19[3]),  3,5},
  {&(_tg__ZTV8S20649C2__9S20649C13__9S20649C19[4]),  4,6},
  {&(_tg__ZTV9S20649C14__9S20649C19[7]),  7,9},
  {&(_tg__ZTV9S20649C14__9S20649C19[7]),  7,9},
  {&(_tg__ZTV8S20649C7__9S20649C14__9S20649C19[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__9S20649C14__9S20649C19[3]),  3,5},
  {&(_tg__ZTV8S20649C6__9S20649C19[6]),  6,8},
  {&(_tg__ZTV8S20649C7__8S20649C6__9S20649C19[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C6__9S20649C19[3]),  3,5},
  {&(_tg__ZTV8S20649C7__A1__9S20649C19[5]),  5,7},
  {&(_tg__ZTV8S20649C88S20649C7__A1__9S20649C19[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C88S20649C7__A1__9S20649C19[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20649C7__A1__9S20649C19[3]),  3,5},
  {&(_tg__ZTV8S20649C2__9S20649C19[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20649C19[];
extern  VTBL_ENTRY _ZTV9S20649C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C19[];
static VTBL_ENTRY alt_thunk_names74[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20649C6D0Ev,_ZThn8_N8S20649C6D0Ev),
  (VTBL_ENTRY)_ZN8S20649C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20649C6D1Ev,_ZThn8_N8S20649C6D1Ev),
  (VTBL_ENTRY)_ZN8S20649C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C14D0Ev,_ZThn8_N9S20649C14D0Ev),
  (VTBL_ENTRY)_ZN9S20649C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C14D1Ev,_ZThn8_N9S20649C14D1Ev),
  (VTBL_ENTRY)_ZN9S20649C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20649C13D0Ev,_ZTv0_n16_N9S20649C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20649C13D0Ev,_ZThn36_N9S20649C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20649C13D1Ev,_ZTv0_n16_N9S20649C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20649C13D1Ev,_ZThn36_N9S20649C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20649C13D0Ev,_ZThn24_N9S20649C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20649C13D0Ev,_ZThn16_N9S20649C13D0Ev),
  (VTBL_ENTRY)_ZN9S20649C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20649C13D1Ev,_ZThn24_N9S20649C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20649C13D1Ev,_ZThn16_N9S20649C13D1Ev),
  (VTBL_ENTRY)_ZN9S20649C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S20649C7D0Ev,
  (VTBL_ENTRY)_ZN8S20649C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S20649C7D1Ev,
  (VTBL_ENTRY)_ZN8S20649C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20649C19D0Ev,_ZTv0_n16_N9S20649C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20649C19D0Ev,_ZThn56_N9S20649C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20649C19D1Ev,_ZTv0_n16_N9S20649C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20649C19D1Ev,_ZThn56_N9S20649C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20649C19D0Ev,_ZThn44_N9S20649C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20649C19D0Ev,_ZThn36_N9S20649C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20649C19D0Ev,_ZThn20_N9S20649C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20649C19D1Ev,_ZThn44_N9S20649C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20649C19D1Ev,_ZThn36_N9S20649C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20649C19D1Ev,_ZThn20_N9S20649C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20649C19 = {  "S20649C19", // class name
  bases_S20649C19, 17,
  &(vtc_S20649C19[0]), // expected_vtbl_contents
  &(vtt_S20649C19[0]), // expected_vtt_contents
  ABISELECT(96,64), // object size
  NSPAIRA(_ZTI9S20649C19),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20649C19),47, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20649C19),33, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names74,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20649C15  : virtual S7883C3_nt , virtual S20649C16 , virtual S20649C17 , virtual S20649C19 {
  int s20649c15f0;
  virtual  ~S20649C15(); // _ZN9S20649C15D2Ev
  S20649C15(); // tgen
};
//SIG(-1 S20649C15) C1{ VBC2{ vd m} VBC3{ BC4{ BC5{ VBC2 VBC6{ m Fi} BC7{ m} Fi} Fi}} VBC8{ BC9{ BC10{ VBC2 BC6 BC11{ VBC4 BC7} VBC7 BC5 vd} BC6 vd Fi} vd} VBC12{ BC3 VBC13{ VBC6 VBC14{ VBC11 FC6} VBC15{ VBC6 vd} VBC7 BC5 vd Fi Fp} vd Fi} vd Fi}


 S20649C15 ::~S20649C15(){ note_dtor("S20649C15", this);}
S20649C15 ::S20649C15(){ note_ctor("S20649C15", this);} // tgen

static void Test_S20649C15()
{
  extern Class_Descriptor cd_S20649C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,26)];
    init_test(&cd_S20649C15, buf);
    S20649C15 *dp, &lv = *(dp=new (buf) S20649C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,100), "sizeof(S20649C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20649C15)");
    check_base_class_offset(lv, (S7883C3_nt*), ABISELECT(16,8), "S20649C15");
    /*is_ambiguous_... S20649C15::S20649C16 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C7*)(S20649C16*), ABISELECT(16,8), "S20649C15");
    check_base_class_offset(lv, (S7883C3_nt*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(16,8), "S20649C15");
    /*is_ambiguous_... S20649C15::S20649C7 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C7*), ABISELECT(16,8), "S20649C15");
    /*is_ambiguous_... S20649C12::S20649C8 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(16,8), "S20649C15");
    check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C7*)(S20649C16*)(S20649C19*), ABISELECT(16,8), "S20649C15");
    /*is_ambiguous_... S20649C13::S20649C8 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C13*), ABISELECT(16,8), "S20649C15");
    /*is_ambiguous_... S20649C15::S20649C16 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C7*)(S20649C16*), ABISELECT(32,20), "S20649C15");
    /*is_ambiguous_... S20649C15::S20649C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C7*), ABISELECT(32,20), "S20649C15");
    /*is_ambiguous_... S20649C12::S20649C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(32,20), "S20649C15");
    check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C7*)(S20649C16*)(S20649C19*), ABISELECT(32,20), "S20649C15");
    check_base_class_offset(lv, (S3216C8_nt*)(S20649C13*), ABISELECT(32,20), "S20649C15");
    check_base_class_offset(lv, (S3216C8_nt*)(S20649C2*), ABISELECT(32,20), "S20649C15");
    /*is_ambiguous_... S20649C13::S20649C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C13*), ABISELECT(32,20), "S20649C15");
    /*is_ambiguous_... S20649C15::S20649C16 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C7*)(S20649C16*), ABISELECT(16,8), "S20649C15");
    /*is_ambiguous_... S20649C15::S20649C16 */ AMB_check_base_class_offset(lv, (S20649C8*)(S20649C7*)(S20649C16*), ABISELECT(16,8), "S20649C15");
    /*is_ambiguous_... S20649C15::S20649C16 */ AMB_check_base_class_offset(lv, (S20649C7*)(S20649C16*), ABISELECT(16,8), "S20649C15");
    /*is_ambiguous_... S20649C15::S20649C16 */ AMB_check_base_class_offset(lv, (S20649C16*), ABISELECT(16,8), "S20649C15");
    /*is_ambiguous_... S20649C12::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(48,28), "S20649C15");
    /*is_ambiguous_... S20649C15::S20649C7 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C7*), ABISELECT(80,48), "S20649C15");
    /*is_ambiguous_... S20649C15::S20649C7 */ AMB_check_base_class_offset(lv, (S20649C8*)(S20649C7*), ABISELECT(80,48), "S20649C15");
    check_base_class_offset(lv, (S20649C7*)(S20649C6*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(80,48), "S20649C15");
    /*is_ambiguous_... S20649C15::S20649C6 */ AMB_check_base_class_offset(lv, (S20649C7*)(S20649C6*), ABISELECT(80,48), "S20649C15");
    /*is_ambiguous_... S20649C6::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C6*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(40,24), "S20649C15");
    check_base_class_offset(lv, (S20649C6*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(40,24), "S20649C15");
    /*is_ambiguous_... S20649C12::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C12*)(S20649C18*)(S20649C17*), 0, "S20649C15");
    /*is_ambiguous_... S20649C13::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C13*), 0, "S20649C15");
    /*is_ambiguous_... S20649C12::S20649C8 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(56,32), "S20649C15");
    /*is_ambiguous_... S20649C12::S20649C8 */ AMB_check_base_class_offset(lv, (S20649C8*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(56,32), "S20649C15");
    check_base_class_offset(lv, (S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(40,24), "S20649C15");
    /*is_ambiguous_... S20649C18::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C18*)(S20649C17*), ABISELECT(68,40), "S20649C15");
    check_base_class_offset(lv, (S20649C18*)(S20649C17*), ABISELECT(40,24), "S20649C15");
    check_base_class_offset(lv, (S20649C17*), ABISELECT(40,24), "S20649C15");
    check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C7*)(S20649C16*)(S20649C19*), ABISELECT(96,60), "S20649C15");
    check_base_class_offset(lv, (S20649C8*)(S20649C7*)(S20649C16*)(S20649C19*), ABISELECT(96,60), "S20649C15");
    check_base_class_offset(lv, (S20649C7*)(S20649C16*)(S20649C19*), ABISELECT(96,60), "S20649C15");
    check_base_class_offset(lv, (S20649C16*)(S20649C19*), ABISELECT(96,60), "S20649C15");
    /*is_ambiguous_... S20649C15::S20649C6 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C6*), ABISELECT(144,92), "S20649C15");
    check_base_class_offset(lv, (S20649C6*)(S20649C14*), ABISELECT(144,92), "S20649C15");
    check_base_class_offset(lv, (S20649C14*)(S20649C13*), ABISELECT(144,92), "S20649C15");
    check_base_class_offset(lv, (S20649C2*)(S20649C13*), 0, "S20649C15");
    /*is_ambiguous_... S20649C13::S20649C8 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C13*), ABISELECT(120,76), "S20649C15");
    /*is_ambiguous_... S20649C13::S20649C8 */ AMB_check_base_class_offset(lv, (S20649C8*)(S20649C13*), ABISELECT(120,76), "S20649C15");
    check_base_class_offset(lv, (S20649C13*)(S20649C19*), ABISELECT(120,76), "S20649C15");
    check_base_class_offset(lv, (S20649C19*), ABISELECT(96,60), "S20649C15");
    check_field_offset(lv, s20649c15f0, ABISELECT(8,4), "S20649C15.s20649c15f0");
    test_class_info(&lv, &cd_S20649C15);
    dp->~S20649C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20649C15(Test_S20649C15, "S20649C15", ABISELECT(160,100));

#else // __cplusplus

extern void _ZN9S20649C15C1Ev();
extern void _ZN9S20649C15D2Ev();
Name_Map name_map_S20649C15[] = {
  NSPAIR(_ZN9S20649C15C1Ev),
  NSPAIR(_ZN9S20649C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C7;
extern VTBL_ENTRY _ZTI8S20649C7[];
extern  VTBL_ENTRY _ZTV8S20649C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C7[];
extern Class_Descriptor cd_S20649C16;
extern VTBL_ENTRY _ZTI9S20649C16[];
extern  VTBL_ENTRY _ZTV9S20649C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C16[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C7;
extern VTBL_ENTRY _ZTI8S20649C7[];
extern  VTBL_ENTRY _ZTV8S20649C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C7[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C6;
extern VTBL_ENTRY _ZTI8S20649C6[];
extern  VTBL_ENTRY _ZTV8S20649C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C12;
extern VTBL_ENTRY _ZTI9S20649C12[];
extern  VTBL_ENTRY _ZTV9S20649C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C12[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20649C18;
extern VTBL_ENTRY _ZTI9S20649C18[];
extern  VTBL_ENTRY _ZTV9S20649C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C18[];
extern Class_Descriptor cd_S20649C17;
extern VTBL_ENTRY _ZTI9S20649C17[];
extern  VTBL_ENTRY _ZTV9S20649C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C17[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C7;
extern VTBL_ENTRY _ZTI8S20649C7[];
extern  VTBL_ENTRY _ZTV8S20649C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C7[];
extern Class_Descriptor cd_S20649C16;
extern VTBL_ENTRY _ZTI9S20649C16[];
extern  VTBL_ENTRY _ZTV9S20649C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C16[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C6;
extern VTBL_ENTRY _ZTI8S20649C6[];
extern  VTBL_ENTRY _ZTV8S20649C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C6[];
extern Class_Descriptor cd_S20649C14;
extern VTBL_ENTRY _ZTI9S20649C14[];
extern  VTBL_ENTRY _ZTV9S20649C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C14[];
extern Class_Descriptor cd_S20649C2;
extern VTBL_ENTRY _ZTI8S20649C2[];
extern  VTBL_ENTRY _ZTV8S20649C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C2[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C13;
extern VTBL_ENTRY _ZTI9S20649C13[];
extern  VTBL_ENTRY _ZTV9S20649C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C13[];
extern Class_Descriptor cd_S20649C19;
extern VTBL_ENTRY _ZTI9S20649C19[];
extern  VTBL_ENTRY _ZTV9S20649C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C19[];
static Base_Class bases_S20649C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_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
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20649C8,    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
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20649C7,    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
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20649C16,    ABISELECT(16,8), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_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
    15, //immediately_derived
  0, 0},
  {&cd_S4677C37,    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
    8, //immediately_derived
  0, 0},
  {&cd_S20649C8,    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
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20649C7,    ABISELECT(80,48), //bcp->offset
    39, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    11, //immediately_derived
  0, 0},
  {&cd_S20649C6,    ABISELECT(40,24), //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
    7, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20649C8,    ABISELECT(56,32), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20649C12,    ABISELECT(40,24), //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
    17, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(68,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20649C18,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20649C17,    ABISELECT(40,24), //bcp->offset
    23, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    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
    20, //immediately_derived
  0, 0},
  {&cd_S20649C8,    ABISELECT(96,60), //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
    17, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20649C7,    ABISELECT(96,60), //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
    18, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20649C16,    ABISELECT(96,60), //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
    19, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S4677C37,    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_S20649C6,    ABISELECT(144,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S20649C14,    ABISELECT(144,92), //bcp->offset
    71, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S20649C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    28, //immediately_derived
  0, 0},
  {&cd_S20649C8,    ABISELECT(120,76), //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
    15, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20649C13,    ABISELECT(120,76), //bcp->offset
    59, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S20649C19,    ABISELECT(96,60), //bcp->offset
    46, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20649C15[];
extern void _ZN9S20649C15D1Ev();
extern void _ZN9S20649C15D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S20649C15D1Ev,_ZThn8_N9S20649C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev)();
extern void ABISELECT(_ZThn16_N9S20649C15D0Ev,_ZThn8_N9S20649C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev)();
extern void ABISELECT(_ZThn40_N9S20649C15D1Ev,_ZThn24_N9S20649C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev)();
extern void ABISELECT(_ZThn40_N9S20649C15D0Ev,_ZThn24_N9S20649C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S20649C15D1Ev,_ZThn32_N9S20649C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S20649C15D0Ev,_ZThn32_N9S20649C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev)();
extern void ABISELECT(_ZThn80_N9S20649C15D1Ev,_ZThn48_N9S20649C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev)();
extern void ABISELECT(_ZThn80_N9S20649C15D0Ev,_ZThn48_N9S20649C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev)();
extern void ABISELECT(_ZThn96_N9S20649C15D1Ev,_ZThn60_N9S20649C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev)();
extern void ABISELECT(_ZThn96_N9S20649C15D0Ev,_ZThn60_N9S20649C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev)();
extern void ABISELECT(_ZThn120_N9S20649C15D1Ev,_ZThn76_N9S20649C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev)();
extern void ABISELECT(_ZThn120_N9S20649C15D0Ev,_ZThn76_N9S20649C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev)();
extern void ABISELECT(_ZThn144_N9S20649C15D1Ev,_ZThn92_N9S20649C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev)();
extern void ABISELECT(_ZThn144_N9S20649C15D0Ev,_ZThn92_N9S20649C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20649C15[] = {
  0,
  ABISELECT(144,92),
  ABISELECT(144,92),
  ABISELECT(120,76),
  ABISELECT(96,60),
  0,
  ABISELECT(80,48),
  ABISELECT(40,24),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&_ZN9S20649C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20649C15D0Ev,
  ABISELECT(16,12),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(40,24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-40,-24),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-16,-12),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(24,16),
  ABISELECT(-64,-40),
  ABISELECT(-80,-52),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev),
  ABISELECT(-120,-76),
  ABISELECT(-120,-76),
  ABISELECT(-40,-28),
  ABISELECT(24,16),
  ABISELECT(24,16),
  ABISELECT(-88,-56),
  ABISELECT(-104,-68),
  ABISELECT(-120,-76),
  ABISELECT(-120,-76),
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev),
  0,
  ABISELECT(-112,-72),
  ABISELECT(-128,-84),
  ABISELECT(-64,-44),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S20649C15[];
extern void ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev)();
extern void _ZN9S20649C16D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev)();
extern void _ZN9S20649C16D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C16__9S20649C15[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void _ZN8S20649C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
extern void _ZN8S20649C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C79S20649C16__9S20649C15[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C88S20649C79S20649C16__9S20649C15[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev)();
extern void _ZN9S20649C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev)();
extern void _ZN9S20649C17D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C17__9S20649C15[] = {
  ABISELECT(-40,-24),
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev)();
extern void _ZN9S20649C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev)();
extern void _ZN9S20649C18D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C189S20649C17__9S20649C15[] = {
  ABISELECT(-40,-24),
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void _ZN9S20649C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
extern void _ZN9S20649C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C129S20649C189S20649C17__9S20649C15[] = {
  ABISELECT(-40,-24),
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void _ZN8S20649C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
extern void _ZN8S20649C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C69S20649C129S20649C189S20649C17__9S20649C15[] = {
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S20649C6D1Ev,_ZThn24_N8S20649C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S20649C6D0Ev,_ZThn24_N8S20649C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__8S20649C69S20649C129S20649C189S20649C17__9S20649C15[] = {
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C69S20649C129S20649C189S20649C17__9S20649C15[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C129S20649C189S20649C17__A2__9S20649C15[] = {
  ABISELECT(-24,-12),
  ABISELECT(-40,-24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C89S20649C129S20649C189S20649C17__A2__9S20649C15[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C129S20649C189S20649C17__9S20649C15[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void ABISELECT(_ZThn40_N9S20649C12D1Ev,_ZThn24_N9S20649C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
extern void ABISELECT(_ZThn40_N9S20649C12D0Ev,_ZThn24_N9S20649C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C129S20649C189S20649C17__9S20649C15[] = {
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S20649C12D1Ev,_ZThn8_N9S20649C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S20649C12D0Ev,_ZThn8_N9S20649C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C8__A1__9S20649C129S20649C189S20649C17__9S20649C15[] = {
  ABISELECT(-24,-12),
  ABISELECT(-40,-24),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C189S20649C17__9S20649C15[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20649C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20649C18D1Ev,_ZThn24_N9S20649C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev)();
extern void ABISELECT(_ZThn40_N9S20649C18D0Ev,_ZThn24_N9S20649C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C189S20649C17__9S20649C15[] = {
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20649C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev)();
extern void ABISELECT(_ZThn16_N9S20649C18D1Ev,_ZThn8_N9S20649C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev)();
extern void ABISELECT(_ZThn16_N9S20649C18D0Ev,_ZThn8_N9S20649C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C12__A1__9S20649C189S20649C17__9S20649C15[] = {
  ABISELECT(-24,-12),
  ABISELECT(-40,-24),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20649C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C17__9S20649C15[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20649C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev)();
extern void ABISELECT(_ZThn40_N9S20649C17D1Ev,_ZThn24_N9S20649C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev)();
extern void ABISELECT(_ZThn40_N9S20649C17D0Ev,_ZThn24_N9S20649C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C17__9S20649C15[] = {
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20649C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20649C17D1Ev,_ZThn8_N9S20649C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev)();
extern void ABISELECT(_ZThn16_N9S20649C17D0Ev,_ZThn8_N9S20649C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C129S20649C18__A1__9S20649C17__9S20649C15[] = {
  ABISELECT(-24,-12),
  ABISELECT(-40,-24),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20649C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void _ZN8S20649C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
extern void _ZN8S20649C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__A1__9S20649C15[] = {
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C88S20649C7__A1__9S20649C15[] = {
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C88S20649C7__A1__9S20649C15[] = {
  ABISELECT(64,40),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C7__A1__9S20649C15[] = {
  ABISELECT(64,40),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev)();
extern void _ZN9S20649C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev)();
extern void _ZN9S20649C19D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C19__9S20649C15[] = {
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-16,-12),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(24,16),
  ABISELECT(-64,-40),
  ABISELECT(-80,-52),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev)();
extern void _ZN9S20649C16D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev)();
extern void _ZN9S20649C16D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C169S20649C19__A1__9S20649C15[] = {
  ABISELECT(-64,-40),
  ABISELECT(-80,-52),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void _ZN8S20649C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
extern void _ZN8S20649C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C79S20649C169S20649C19__A2__9S20649C15[] = {
  ABISELECT(-64,-40),
  ABISELECT(-80,-52),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C88S20649C79S20649C169S20649C19__A3__9S20649C15[] = {
  ABISELECT(-64,-40),
  ABISELECT(-80,-52),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C88S20649C79S20649C169S20649C19__A3__9S20649C15[] = {
  ABISELECT(80,52),
  ABISELECT(80,52),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C79S20649C169S20649C19__A2__9S20649C15[] = {
  ABISELECT(80,52),
  ABISELECT(80,52),
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C169S20649C19__A1__9S20649C15[] = {
  ABISELECT(80,52),
  ABISELECT(80,52),
  (VTBL_ENTRY)&(_ZTI9S20649C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C19__9S20649C15[] = {
  ABISELECT(80,52),
  ABISELECT(80,52),
  (VTBL_ENTRY)&(_ZTI9S20649C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev)();
extern void ABISELECT(_ZThn24_N9S20649C19D1Ev,_ZThn16_N9S20649C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev)();
extern void ABISELECT(_ZThn24_N9S20649C19D0Ev,_ZThn16_N9S20649C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C13__9S20649C19__9S20649C15[] = {
  ABISELECT(-120,-76),
  ABISELECT(-120,-76),
  ABISELECT(-40,-28),
  ABISELECT(24,16),
  ABISELECT(24,16),
  ABISELECT(-88,-56),
  ABISELECT(-104,-68),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20649C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev)();
extern void ABISELECT(_ZThn48_N9S20649C19D1Ev,_ZThn32_N9S20649C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev)();
extern void ABISELECT(_ZThn48_N9S20649C19D0Ev,_ZThn32_N9S20649C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C14__9S20649C19__9S20649C15[] = {
  0,
  ABISELECT(-112,-72),
  ABISELECT(-128,-84),
  ABISELECT(-64,-44),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S20649C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__A1__9S20649C19__9S20649C15[] = {
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20649C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20649C19D1Ev,_ZTv0_n16_N9S20649C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20649C19D0Ev,_ZTv0_n16_N9S20649C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C2__9S20649C19__9S20649C15[] = {
  ABISELECT(96,60),
  ABISELECT(32,20),
  ABISELECT(96,60),
  (VTBL_ENTRY)&(_ZTI9S20649C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C19D1Ev,_ZTv0_n16_N9S20649C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C19D0Ev,_ZTv0_n16_N9S20649C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev)();
extern void _ZN9S20649C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev)();
extern void _ZN9S20649C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C13__9S20649C15[] = {
  ABISELECT(-120,-76),
  ABISELECT(-120,-76),
  ABISELECT(-40,-28),
  ABISELECT(24,16),
  ABISELECT(24,16),
  ABISELECT(-88,-56),
  ABISELECT(-104,-68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C13__A4__9S20649C15[] = {
  ABISELECT(-88,-56),
  ABISELECT(-104,-68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C89S20649C13__A4__9S20649C15[] = {
  ABISELECT(104,68),
  ABISELECT(104,68),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev)();
extern void ABISELECT(_ZThn24_N9S20649C13D1Ev,_ZThn16_N9S20649C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev)();
extern void ABISELECT(_ZThn24_N9S20649C13D0Ev,_ZThn16_N9S20649C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C14__9S20649C13__9S20649C15[] = {
  0,
  ABISELECT(-112,-72),
  ABISELECT(-128,-84),
  ABISELECT(-64,-44),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C13__9S20649C15[] = {
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  ABISELECT(40,28),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C13__9S20649C15[] = {
  ABISELECT(104,68),
  ABISELECT(104,68),
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20649C13D1Ev,_ZTv0_n16_N9S20649C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20649C13D0Ev,_ZTv0_n16_N9S20649C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C2__9S20649C13__9S20649C15[] = {
  ABISELECT(120,76),
  ABISELECT(32,20),
  ABISELECT(120,76),
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C13D1Ev,_ZTv0_n16_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C13D0Ev,_ZTv0_n16_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev)();
extern void _ZN9S20649C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev)();
extern void _ZN9S20649C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C14__9S20649C15[] = {
  0,
  ABISELECT(-112,-72),
  ABISELECT(-128,-84),
  ABISELECT(-64,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C14__9S20649C15[] = {
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  ABISELECT(64,44),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20649C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C14__9S20649C15[] = {
  ABISELECT(128,84),
  ABISELECT(128,84),
  (VTBL_ENTRY)&(_ZTI9S20649C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void _ZN8S20649C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
extern void _ZN8S20649C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C6__A1__9S20649C15[] = {
  ABISELECT(-112,-72),
  ABISELECT(-128,-84),
  ABISELECT(-64,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__8S20649C6__A1__9S20649C15[] = {
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  ABISELECT(64,44),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C6__A1__9S20649C15[] = {
  ABISELECT(128,84),
  ABISELECT(128,84),
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void _ZN8S20649C2D1Ev();
extern void _ZN8S20649C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20649C2__9S20649C15[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C2[0]),
  (VTBL_ENTRY)&_ZN8S20649C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20649C2D0Ev,
};
static  VTT_ENTRY vtt_S20649C15[] = {
  {&(_ZTV9S20649C15[14]),  14,80},
  {&(_ZTV9S20649C15[21]),  21,80},
  {&(_ZTV9S20649C15[21]),  21,80},
  {&(_ZTV9S20649C15[30]),  30,80},
  {&(_ZTV9S20649C15[44]),  44,80},
  {&(_ZTV9S20649C15[37]),  37,80},
  {&(_ZTV9S20649C15[57]),  57,80},
  {&(_ZTV9S20649C15[69]),  69,80},
  {&(_ZTV9S20649C15[78]),  78,80},
  {&(_ZTV9S20649C15[78]),  78,80},
  {&(_ZTV9S20649C15[14]),  14,80},
  {&(_tg__ZTV9S20649C16__9S20649C15[5]),  5,7},
  {&(_tg__ZTV8S20649C79S20649C16__9S20649C15[5]),  5,7},
  {&(_tg__ZTV8S20649C88S20649C79S20649C16__9S20649C15[5]),  5,7},
  {&(_tg__ZTV8S20649C88S20649C79S20649C16__9S20649C15[5]),  5,7},
  {&(_tg__ZTV8S20649C79S20649C16__9S20649C15[5]),  5,7},
  {&(_tg__ZTV9S20649C16__9S20649C15[5]),  5,7},
  {&(_tg__ZTV9S20649C17__9S20649C15[7]),  7,9},
  {&(_tg__ZTV9S20649C189S20649C17__9S20649C15[7]),  7,9},
  {&(_tg__ZTV9S20649C129S20649C189S20649C17__9S20649C15[7]),  7,9},
  {&(_tg__ZTV8S20649C69S20649C129S20649C189S20649C17__9S20649C15[6]),  6,8},
  {&(_tg__ZTV8S20649C7__8S20649C69S20649C129S20649C189S20649C17__9S20649C15[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C69S20649C129S20649C189S20649C17__9S20649C15[3]),  3,5},
  {&(_tg__ZTV8S20649C89S20649C129S20649C189S20649C17__A2__9S20649C15[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C89S20649C129S20649C189S20649C17__A2__9S20649C15[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20649C129S20649C189S20649C17__9S20649C15[3]),  3,5},
  {&(_tg__ZTV8S20649C7__9S20649C129S20649C189S20649C17__9S20649C15[5]),  5,7},
  {&(_tg__ZTV8S20649C8__A1__9S20649C129S20649C189S20649C17__9S20649C15[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__9S20649C189S20649C17__9S20649C15[3]),  3,5},
  {&(_tg__ZTV8S20649C7__9S20649C189S20649C17__9S20649C15[5]),  5,7},
  {&(_tg__ZTV8S20649C89S20649C12__A1__9S20649C189S20649C17__9S20649C15[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__9S20649C17__9S20649C15[3]),  3,5},
  {&(_tg__ZTV8S20649C7__9S20649C17__9S20649C15[5]),  5,7},
  {&(_tg__ZTV8S20649C89S20649C129S20649C18__A1__9S20649C17__9S20649C15[5]),  5,7},
  {&(_tg__ZTV8S20649C7__A1__9S20649C15[5]),  5,7},
  {&(_tg__ZTV8S20649C88S20649C7__A1__9S20649C15[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C88S20649C7__A1__9S20649C15[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20649C7__A1__9S20649C15[3]),  3,5},
  {&(_tg__ZTV9S20649C19__9S20649C15[11]),  11,13},
  {&(_tg__ZTV9S20649C169S20649C19__A1__9S20649C15[5]),  5,7},
  {&(_tg__ZTV8S20649C79S20649C169S20649C19__A2__9S20649C15[5]),  5,7},
  {&(_tg__ZTV8S20649C88S20649C79S20649C169S20649C19__A3__9S20649C15[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C88S20649C79S20649C169S20649C19__A3__9S20649C15[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20649C79S20649C169S20649C19__A2__9S20649C15[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20649C169S20649C19__A1__9S20649C15[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20649C19__9S20649C15[3]),  3,5},
  {&(_tg__ZTV9S20649C13__9S20649C19__9S20649C15[10]),  10,12},
  {&(_tg__ZTV9S20649C14__9S20649C19__9S20649C15[7]),  7,9},
  {&(_tg__ZTV9S20649C14__9S20649C19__9S20649C15[7]),  7,9},
  {&(_tg__ZTV8S20649C7__A1__9S20649C19__9S20649C15[5]),  5,7},
  {&(_tg__ZTV8S20649C2__9S20649C19__9S20649C15[4]),  4,6},
  {&(_tg__ZTV9S20649C13__9S20649C15[10]),  10,12},
  {&(_tg__ZTV8S20649C89S20649C13__A4__9S20649C15[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C89S20649C13__A4__9S20649C15[3]),  3,5},
  {&(_tg__ZTV9S20649C14__9S20649C13__9S20649C15[7]),  7,9},
  {&(_tg__ZTV9S20649C14__9S20649C13__9S20649C15[7]),  7,9},
  {&(_tg__ZTV8S20649C7__9S20649C13__9S20649C15[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__9S20649C13__9S20649C15[3]),  3,5},
  {&(_tg__ZTV8S20649C2__9S20649C13__9S20649C15[4]),  4,6},
  {&(_tg__ZTV9S20649C14__9S20649C15[7]),  7,9},
  {&(_tg__ZTV9S20649C14__9S20649C15[7]),  7,9},
  {&(_tg__ZTV8S20649C7__9S20649C14__9S20649C15[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__9S20649C14__9S20649C15[3]),  3,5},
  {&(_tg__ZTV8S20649C6__A1__9S20649C15[6]),  6,8},
  {&(_tg__ZTV8S20649C7__8S20649C6__A1__9S20649C15[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C6__A1__9S20649C15[3]),  3,5},
  {&(_tg__ZTV8S20649C2__9S20649C15[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20649C15[];
extern  VTBL_ENTRY _ZTV9S20649C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C15[];
static VTBL_ENTRY alt_thunk_names75[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev), // 
  (VTBL_ENTRY)_ZN9S20649C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev), // 
  (VTBL_ENTRY)_ZN9S20649C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20649C13D0Ev,_ZThn16_N9S20649C13D0Ev),
  (VTBL_ENTRY)_ZN9S20649C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20649C13D1Ev,_ZThn16_N9S20649C13D1Ev),
  (VTBL_ENTRY)_ZN9S20649C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20649C19D0Ev,_ZThn32_N9S20649C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20649C19D0Ev,_ZThn16_N9S20649C19D0Ev),
  (VTBL_ENTRY)_ZN9S20649C19D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20649C19D1Ev,_ZThn32_N9S20649C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20649C19D1Ev,_ZThn16_N9S20649C19D1Ev),
  (VTBL_ENTRY)_ZN9S20649C19D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev), // 
  (VTBL_ENTRY)_ZN8S20649C6D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20649C6D0Ev,_ZThn24_N8S20649C6D0Ev),
  (VTBL_ENTRY)_ZN8S20649C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev), // 
  (VTBL_ENTRY)_ZN8S20649C6D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20649C6D1Ev,_ZThn24_N8S20649C6D1Ev),
  (VTBL_ENTRY)_ZN8S20649C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C12D0Ev,_ZThn8_N9S20649C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20649C12D0Ev,_ZThn24_N9S20649C12D0Ev),
  (VTBL_ENTRY)_ZN9S20649C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C12D1Ev,_ZThn8_N9S20649C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20649C12D1Ev,_ZThn24_N9S20649C12D1Ev),
  (VTBL_ENTRY)_ZN9S20649C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C18D0Ev,_ZThn8_N9S20649C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20649C18D0Ev,_ZThn24_N9S20649C18D0Ev),
  (VTBL_ENTRY)_ZN9S20649C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C18D1Ev,_ZThn8_N9S20649C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20649C18D1Ev,_ZThn24_N9S20649C18D1Ev),
  (VTBL_ENTRY)_ZN9S20649C18D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C17D0Ev,_ZThn8_N9S20649C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20649C17D0Ev,_ZThn24_N9S20649C17D0Ev),
  (VTBL_ENTRY)_ZN9S20649C17D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C17D1Ev,_ZThn8_N9S20649C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20649C17D1Ev,_ZThn24_N9S20649C17D1Ev),
  (VTBL_ENTRY)_ZN9S20649C17D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S20649C7D0Ev,
  (VTBL_ENTRY)_ZN8S20649C7D0Ev,
  (VTBL_ENTRY)_ZN8S20649C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S20649C7D1Ev,
  (VTBL_ENTRY)_ZN8S20649C7D1Ev,
  (VTBL_ENTRY)_ZN8S20649C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev), // 
  (VTBL_ENTRY)_ZN9S20649C16D0Ev,
  (VTBL_ENTRY)_ZN9S20649C16D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev), // 
  (VTBL_ENTRY)_ZN9S20649C16D1Ev,
  (VTBL_ENTRY)_ZN9S20649C16D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S20649C15D0Ev,_ZThn92_N9S20649C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20649C15D0Ev,_ZThn76_N9S20649C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20649C15D0Ev,_ZThn60_N9S20649C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20649C15D0Ev,_ZThn48_N9S20649C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20649C15D0Ev,_ZThn32_N9S20649C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20649C15D0Ev,_ZThn24_N9S20649C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C15D0Ev,_ZThn8_N9S20649C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S20649C15D1Ev,_ZThn92_N9S20649C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20649C15D1Ev,_ZThn76_N9S20649C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20649C15D1Ev,_ZThn60_N9S20649C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20649C15D1Ev,_ZThn48_N9S20649C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20649C15D1Ev,_ZThn32_N9S20649C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20649C15D1Ev,_ZThn24_N9S20649C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C15D1Ev,_ZThn8_N9S20649C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20649C15 = {  "S20649C15", // class name
  bases_S20649C15, 31,
  &(vtc_S20649C15[0]), // expected_vtbl_contents
  &(vtt_S20649C15[0]), // expected_vtt_contents
  ABISELECT(160,100), // object size
  NSPAIRA(_ZTI9S20649C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20649C15),80, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20649C15),67, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names75,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20649C10  : S7883C3_nt , virtual S20649C11 , S20649C13 , S20649C15 {
  int s20649c10f0;
  virtual  ~S20649C10(); // _ZN9S20649C10D2Ev
  S20649C10(); // tgen
};
//SIG(-1 S20649C10) C1{ BC2{ vd m} VBC3{ VBC4{ VBC2 BC5{ m Fi} BC6{ VBC7{ BC8{ VBC2 VBC5 BC9{ m} Fi} Fi} BC9} VBC9 BC8 vd} vd} BC10{ VBC5 VBC11{ VBC6 FC5} VBC12{ VBC5 vd} VBC9 BC8 vd Fi Fp} BC13{ VBC2 VBC14{ BC7} VBC15{ BC16{ BC4 BC5 vd Fi} vd} VBC17{ BC14 VBC10 vd Fi} vd Fi} vd Fi}


 S20649C10 ::~S20649C10(){ note_dtor("S20649C10", this);}
S20649C10 ::S20649C10(){ note_ctor("S20649C10", this);} // tgen

static void Test_S20649C10()
{
  extern Class_Descriptor cd_S20649C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,37)];
    init_test(&cd_S20649C10, buf);
    S20649C10 *dp, &lv = *(dp=new (buf) S20649C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,144), "sizeof(S20649C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20649C10)");
    /*is_ambiguous_... S20649C10::S7883C3_nt */ AMB_check_base_class_offset(lv, (S7883C3_nt*), 0, "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C12 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C12*), ABISELECT(48,32), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C7 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C7*), ABISELECT(48,32), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C12 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C12*), ABISELECT(48,32), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C13*), ABISELECT(48,32), "S20649C10");
    check_base_class_offset(lv, (S7883C3_nt*)(S20649C15*), ABISELECT(48,32), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C16 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C7*)(S20649C16*), ABISELECT(48,32), "S20649C10");
    check_base_class_offset(lv, (S7883C3_nt*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(48,32), "S20649C10");
    /*is_ambiguous_... S20649C12::S20649C8 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(48,32), "S20649C10");
    check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C7*)(S20649C16*)(S20649C19*), ABISELECT(48,32), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C13*), ABISELECT(48,32), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C12 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C12*), ABISELECT(64,40), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C7*), ABISELECT(104,64), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C12 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C12*), ABISELECT(104,64), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C13*), ABISELECT(104,64), "S20649C10");
    check_base_class_offset(lv, (S3216C8_nt*)(S20649C2*), ABISELECT(104,64), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C13*), ABISELECT(104,64), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C16 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C7*)(S20649C16*), ABISELECT(104,64), "S20649C10");
    /*is_ambiguous_... S20649C12::S20649C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(104,64), "S20649C10");
    check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C7*)(S20649C16*)(S20649C19*), ABISELECT(104,64), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C13*), ABISELECT(104,64), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C13*), ABISELECT(104,64), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C7 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C7*), ABISELECT(88,52), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C7 */ AMB_check_base_class_offset(lv, (S20649C8*)(S20649C7*), ABISELECT(88,52), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C12 */ AMB_check_base_class_offset(lv, (S20649C7*)(S20649C6*)(S20649C12*), ABISELECT(88,52), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C6 */ AMB_check_base_class_offset(lv, (S20649C7*)(S20649C6*), ABISELECT(88,52), "S20649C10");
    check_base_class_offset(lv, (S20649C7*)(S20649C6*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(88,52), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C12 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C6*)(S20649C12*), ABISELECT(56,36), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C12 */ AMB_check_base_class_offset(lv, (S20649C6*)(S20649C12*), ABISELECT(56,36), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C12 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C12*), 0, "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C13*), 0, "S20649C10");
    /*is_ambiguous_... S20649C12::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C12*)(S20649C18*)(S20649C17*), 0, "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C13*), 0, "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C12 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C12*), ABISELECT(72,44), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C12 */ AMB_check_base_class_offset(lv, (S20649C8*)(S20649C12*), ABISELECT(72,44), "S20649C10");
    check_base_class_offset(lv, (S20649C12*)(S20649C11*), ABISELECT(56,36), "S20649C10");
    check_base_class_offset(lv, (S20649C11*), ABISELECT(48,32), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C6 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C6*), ABISELECT(112,68), "S20649C10");
    check_base_class_offset(lv, (S20649C6*)(S20649C14*), ABISELECT(112,68), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S20649C14*)(S20649C13*), ABISELECT(112,68), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S20649C14*)(S20649C13*), ABISELECT(112,68), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S20649C2*)(S20649C13*), ABISELECT(32,20), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S20649C2*)(S20649C13*), ABISELECT(32,20), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C13*), ABISELECT(8,4), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S20649C8*)(S20649C13*), ABISELECT(8,4), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S20649C13*), ABISELECT(8,4), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C16 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C7*)(S20649C16*), ABISELECT(128,76), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C16 */ AMB_check_base_class_offset(lv, (S20649C8*)(S20649C7*)(S20649C16*), ABISELECT(128,76), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C16 */ AMB_check_base_class_offset(lv, (S20649C7*)(S20649C16*), ABISELECT(128,76), "S20649C10");
    /*is_ambiguous_... S20649C15::S20649C16 */ AMB_check_base_class_offset(lv, (S20649C16*)(S20649C15*), ABISELECT(128,76), "S20649C10");
    /*is_ambiguous_... S20649C12::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(152,92), "S20649C10");
    /*is_ambiguous_... S20649C6::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C6*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(144,88), "S20649C10");
    check_base_class_offset(lv, (S20649C6*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(144,88), "S20649C10");
    /*is_ambiguous_... S20649C12::S20649C8 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(160,96), "S20649C10");
    /*is_ambiguous_... S20649C12::S20649C8 */ AMB_check_base_class_offset(lv, (S20649C8*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(160,96), "S20649C10");
    check_base_class_offset(lv, (S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(144,88), "S20649C10");
    /*is_ambiguous_... S20649C18::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C18*)(S20649C17*), ABISELECT(172,104), "S20649C10");
    check_base_class_offset(lv, (S20649C18*)(S20649C17*), ABISELECT(144,88), "S20649C10");
    check_base_class_offset(lv, (S20649C17*)(S20649C15*), ABISELECT(144,88), "S20649C10");
    check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C7*)(S20649C16*)(S20649C19*), ABISELECT(184,112), "S20649C10");
    check_base_class_offset(lv, (S20649C8*)(S20649C7*)(S20649C16*)(S20649C19*), ABISELECT(184,112), "S20649C10");
    check_base_class_offset(lv, (S20649C7*)(S20649C16*)(S20649C19*), ABISELECT(184,112), "S20649C10");
    check_base_class_offset(lv, (S20649C16*)(S20649C19*), ABISELECT(184,112), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C13*), ABISELECT(208,128), "S20649C10");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S20649C8*)(S20649C13*), ABISELECT(208,128), "S20649C10");
    check_base_class_offset(lv, (S20649C13*)(S20649C19*), ABISELECT(208,128), "S20649C10");
    check_base_class_offset(lv, (S20649C19*)(S20649C15*), ABISELECT(184,112), "S20649C10");
    check_base_class_offset(lv, (S20649C15*), ABISELECT(32,20), "S20649C10");
    check_field_offset(lv, s20649c10f0, ABISELECT(44,28), "S20649C10.s20649c10f0");
    test_class_info(&lv, &cd_S20649C10);
    dp->~S20649C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20649C10(Test_S20649C10, "S20649C10", ABISELECT(232,144));

#else // __cplusplus

extern void _ZN9S20649C10C1Ev();
extern void _ZN9S20649C10D2Ev();
Name_Map name_map_S20649C10[] = {
  NSPAIR(_ZN9S20649C10C1Ev),
  NSPAIR(_ZN9S20649C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C7;
extern VTBL_ENTRY _ZTI8S20649C7[];
extern  VTBL_ENTRY _ZTV8S20649C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C7[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C6;
extern VTBL_ENTRY _ZTI8S20649C6[];
extern  VTBL_ENTRY _ZTV8S20649C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C12;
extern VTBL_ENTRY _ZTI9S20649C12[];
extern  VTBL_ENTRY _ZTV9S20649C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C12[];
extern Class_Descriptor cd_S20649C11;
extern VTBL_ENTRY _ZTI9S20649C11[];
extern  VTBL_ENTRY _ZTV9S20649C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C11[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C6;
extern VTBL_ENTRY _ZTI8S20649C6[];
extern  VTBL_ENTRY _ZTV8S20649C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C6[];
extern Class_Descriptor cd_S20649C14;
extern VTBL_ENTRY _ZTI9S20649C14[];
extern  VTBL_ENTRY _ZTV9S20649C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C14[];
extern Class_Descriptor cd_S20649C2;
extern VTBL_ENTRY _ZTI8S20649C2[];
extern  VTBL_ENTRY _ZTV8S20649C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C2[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C13;
extern VTBL_ENTRY _ZTI9S20649C13[];
extern  VTBL_ENTRY _ZTV9S20649C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C13[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C7;
extern VTBL_ENTRY _ZTI8S20649C7[];
extern  VTBL_ENTRY _ZTV8S20649C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C7[];
extern Class_Descriptor cd_S20649C16;
extern VTBL_ENTRY _ZTI9S20649C16[];
extern  VTBL_ENTRY _ZTV9S20649C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C16[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C6;
extern VTBL_ENTRY _ZTI8S20649C6[];
extern  VTBL_ENTRY _ZTV8S20649C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C12;
extern VTBL_ENTRY _ZTI9S20649C12[];
extern  VTBL_ENTRY _ZTV9S20649C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C12[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20649C18;
extern VTBL_ENTRY _ZTI9S20649C18[];
extern  VTBL_ENTRY _ZTV9S20649C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C18[];
extern Class_Descriptor cd_S20649C17;
extern VTBL_ENTRY _ZTI9S20649C17[];
extern  VTBL_ENTRY _ZTV9S20649C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C17[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C7;
extern VTBL_ENTRY _ZTI8S20649C7[];
extern  VTBL_ENTRY _ZTV8S20649C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C7[];
extern Class_Descriptor cd_S20649C16;
extern VTBL_ENTRY _ZTI9S20649C16[];
extern  VTBL_ENTRY _ZTV9S20649C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C16[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C13;
extern VTBL_ENTRY _ZTI9S20649C13[];
extern  VTBL_ENTRY _ZTV9S20649C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C13[];
extern Class_Descriptor cd_S20649C19;
extern VTBL_ENTRY _ZTI9S20649C19[];
extern  VTBL_ENTRY _ZTV9S20649C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C19[];
extern Class_Descriptor cd_S20649C15;
extern VTBL_ENTRY _ZTI9S20649C15[];
extern  VTBL_ENTRY _ZTV9S20649C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C15[];
static Base_Class bases_S20649C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7883C3_nt,    ABISELECT(48,32), //bcp->offset
    -1, //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
    5, //immediately_derived
  0, 1},
  {&cd_S3216C8_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
    12, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20649C8,    ABISELECT(88,52), //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
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20649C7,    ABISELECT(88,52), //bcp->offset
    71, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    8, //immediately_derived
  0, 0},
  {&cd_S20649C6,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4677C37,    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
    11, //immediately_derived
  0, 0},
  {&cd_S20649C8,    ABISELECT(72,44), //bcp->offset
    64, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20649C12,    ABISELECT(56,36), //bcp->offset
    55, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20649C11,    ABISELECT(48,32), //bcp->offset
    45, //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
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20649C6,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20649C14,    ABISELECT(112,68), //bcp->offset
    78, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S20649C2,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20649C8,    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
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20649C13,    ABISELECT(8,4), //bcp->offset
    17, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4677C37,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20649C8,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20649C7,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20649C16,    ABISELECT(128,76), //bcp->offset
    87, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(152,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
    30, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20649C6,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(160,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20649C8,    ABISELECT(160,96), //bcp->offset
    103, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20649C12,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(172,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
    32, //immediately_derived
  0, 0},
  {&cd_S20649C18,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20649C17,    ABISELECT(144,88), //bcp->offset
    94, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(184,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20649C8,    ABISELECT(184,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20649C7,    ABISELECT(184,112), //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
    22, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20649C16,    ABISELECT(184,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(208,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20649C8,    ABISELECT(208,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20649C13,    ABISELECT(208,128), //bcp->offset
    123, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S20649C19,    ABISELECT(184,112), //bcp->offset
    110, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S20649C15,    ABISELECT(32,20), //bcp->offset
    29, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20649C10[];
extern void _ZN9S20649C10D1Ev();
extern void _ZN9S20649C10D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZThn8_N9S20649C10D1Ev,_ZThn4_N9S20649C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
extern void ABISELECT(_ZThn8_N9S20649C10D0Ev,_ZThn4_N9S20649C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20649C10D1Ev,_ZTv0_n16_N9S20649C10D1Ev)();
extern void ABISELECT(_ZThn32_N9S20649C10D1Ev,_ZThn20_N9S20649C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20649C10D0Ev,_ZTv0_n16_N9S20649C10D0Ev)();
extern void ABISELECT(_ZThn32_N9S20649C10D0Ev,_ZThn20_N9S20649C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S20649C10D1Ev,_ZThn32_N9S20649C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
extern void ABISELECT(_ZThn48_N9S20649C10D0Ev,_ZThn32_N9S20649C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZThn56_N9S20649C10D1Ev,_ZThn36_N9S20649C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
extern void ABISELECT(_ZThn56_N9S20649C10D0Ev,_ZThn36_N9S20649C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZThn72_N9S20649C10D1Ev,_ZThn44_N9S20649C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
extern void ABISELECT(_ZThn72_N9S20649C10D0Ev,_ZThn44_N9S20649C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZThn88_N9S20649C10D1Ev,_ZThn52_N9S20649C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
extern void ABISELECT(_ZThn88_N9S20649C10D0Ev,_ZThn52_N9S20649C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZThn112_N9S20649C10D1Ev,_ZThn68_N9S20649C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
extern void ABISELECT(_ZThn112_N9S20649C10D0Ev,_ZThn68_N9S20649C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZThn128_N9S20649C10D1Ev,_ZThn76_N9S20649C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
extern void ABISELECT(_ZThn128_N9S20649C10D0Ev,_ZThn76_N9S20649C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZThn144_N9S20649C10D1Ev,_ZThn88_N9S20649C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
extern void ABISELECT(_ZThn144_N9S20649C10D0Ev,_ZThn88_N9S20649C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZThn160_N9S20649C10D1Ev,_ZThn96_N9S20649C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
extern void ABISELECT(_ZThn160_N9S20649C10D0Ev,_ZThn96_N9S20649C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZThn184_N9S20649C10D1Ev,_ZThn112_N9S20649C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
extern void ABISELECT(_ZThn184_N9S20649C10D0Ev,_ZThn112_N9S20649C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZThn208_N9S20649C10D1Ev,_ZThn128_N9S20649C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
extern void ABISELECT(_ZThn208_N9S20649C10D0Ev,_ZThn128_N9S20649C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20649C10[] = {
  ABISELECT(208,128),
  ABISELECT(184,112),
  ABISELECT(144,88),
  ABISELECT(128,76),
  ABISELECT(32,20),
  ABISELECT(112,68),
  ABISELECT(112,68),
  0,
  ABISELECT(104,64),
  ABISELECT(88,52),
  ABISELECT(48,32),
  ABISELECT(56,36),
  ABISELECT(48,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&_ZN9S20649C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20649C10D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(24,16),
  ABISELECT(80,48),
  ABISELECT(104,64),
  ABISELECT(104,64),
  ABISELECT(96,60),
  ABISELECT(40,28),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
  0,
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(176,108),
  ABISELECT(152,92),
  ABISELECT(-32,-20),
  ABISELECT(56,32),
  ABISELECT(112,68),
  ABISELECT(96,56),
  ABISELECT(16,12),
  ABISELECT(-32,-20),
  ABISELECT(72,44),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C10D1Ev,_ZTv0_n16_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C10D0Ev,_ZTv0_n16_N9S20649C10D0Ev),
  ABISELECT(-48,-32),
  ABISELECT(56,32),
  ABISELECT(40,20),
  0,
  ABISELECT(8,4),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
  ABISELECT(-56,-36),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
  ABISELECT(32,20),
  ABISELECT(-24,-12),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(-88,-52),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
  0,
  ABISELECT(-8,-4),
  ABISELECT(-64,-36),
  ABISELECT(-24,-16),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-80,-44),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
  ABISELECT(-144,-88),
  ABISELECT(-40,-24),
  ABISELECT(-96,-56),
  ABISELECT(-56,-36),
  ABISELECT(-144,-88),
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
  ABISELECT(-56,-32),
  ABISELECT(-112,-64),
  ABISELECT(-160,-96),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
  ABISELECT(-184,-112),
  ABISELECT(-152,-92),
  ABISELECT(-96,-60),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(24,16),
  ABISELECT(-80,-48),
  ABISELECT(-136,-80),
  ABISELECT(-184,-112),
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
  ABISELECT(-208,-128),
  ABISELECT(-176,-108),
  ABISELECT(-120,-76),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-104,-64),
  ABISELECT(-160,-96),
  ABISELECT(-208,-128),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S20649C10[];
extern void ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev)();
extern void _ZN9S20649C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev)();
extern void _ZN9S20649C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C13__A__9S20649C10[] = {
  ABISELECT(-8,-4),
  ABISELECT(24,16),
  ABISELECT(80,48),
  ABISELECT(104,64),
  ABISELECT(104,64),
  ABISELECT(96,60),
  ABISELECT(40,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C13__A2__9S20649C10[] = {
  ABISELECT(96,60),
  ABISELECT(40,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S20649C8D1Ev,_ZThn28_N8S20649C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void ABISELECT(_ZThn40_N8S20649C8D0Ev,_ZThn28_N8S20649C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C89S20649C13__A2__9S20649C10[] = {
  ABISELECT(-40,-28),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev)();
extern void ABISELECT(_ZThn104_N9S20649C13D1Ev,_ZThn64_N9S20649C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev)();
extern void ABISELECT(_ZThn104_N9S20649C13D0Ev,_ZThn64_N9S20649C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C14__9S20649C13__A__9S20649C10[] = {
  0,
  ABISELECT(-8,-4),
  ABISELECT(-64,-36),
  ABISELECT(-24,-16),
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev)();
extern void ABISELECT(_ZThn80_N9S20649C13D1Ev,_ZThn48_N9S20649C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev)();
extern void ABISELECT(_ZThn80_N9S20649C13D0Ev,_ZThn48_N9S20649C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C13__A__9S20649C10[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev)();
extern void ABISELECT(_ZThn40_N9S20649C13D1Ev,_ZThn28_N9S20649C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev)();
extern void ABISELECT(_ZThn40_N9S20649C13D0Ev,_ZThn28_N9S20649C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C13__A__9S20649C10[] = {
  ABISELECT(-40,-28),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20649C13D1Ev,_ZTv0_n16_N9S20649C13D1Ev)();
extern void ABISELECT(_ZThn24_N9S20649C13D1Ev,_ZThn16_N9S20649C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20649C13D0Ev,_ZTv0_n16_N9S20649C13D0Ev)();
extern void ABISELECT(_ZThn24_N9S20649C13D0Ev,_ZThn16_N9S20649C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C2__9S20649C13__A__9S20649C10[] = {
  ABISELECT(-24,-16),
  ABISELECT(72,44),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C13D1Ev,_ZTv0_n16_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C13D0Ev,_ZTv0_n16_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20649C15D1Ev,_ZTv0_n16_N9S20649C15D1Ev)();
extern void _ZN9S20649C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20649C15D0Ev,_ZTv0_n16_N9S20649C15D0Ev)();
extern void _ZN9S20649C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C15__9S20649C10[] = {
  0,
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(176,108),
  ABISELECT(152,92),
  ABISELECT(-32,-20),
  ABISELECT(56,32),
  ABISELECT(112,68),
  ABISELECT(96,56),
  ABISELECT(16,12),
  0,
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C15D1Ev,_ZTv0_n16_N9S20649C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C15D0Ev,_ZTv0_n16_N9S20649C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S20649C15D1Ev,_ZThn12_N9S20649C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev)();
extern void ABISELECT(_ZThn16_N9S20649C15D0Ev,_ZThn12_N9S20649C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C15__9S20649C10[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev)();
extern void ABISELECT(_ZThn96_N9S20649C15D1Ev,_ZThn56_N9S20649C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev)();
extern void ABISELECT(_ZThn96_N9S20649C15D0Ev,_ZThn56_N9S20649C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C16__9S20649C15__9S20649C10[] = {
  ABISELECT(-24,-12),
  ABISELECT(-80,-44),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev)();
extern void ABISELECT(_ZThn112_N9S20649C15D1Ev,_ZThn68_N9S20649C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev)();
extern void ABISELECT(_ZThn112_N9S20649C15D0Ev,_ZThn68_N9S20649C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C17__9S20649C15__9S20649C10[] = {
  ABISELECT(-144,-88),
  ABISELECT(-40,-24),
  ABISELECT(-96,-56),
  ABISELECT(-56,-36),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S20649C15D1Ev,_ZThn32_N9S20649C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S20649C15D0Ev,_ZThn32_N9S20649C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__A1__9S20649C15__9S20649C10[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev)();
extern void ABISELECT(_ZThn128_N9S20649C15D1Ev,_ZThn76_N9S20649C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev)();
extern void ABISELECT(_ZThn128_N9S20649C15D0Ev,_ZThn76_N9S20649C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C129S20649C189S20649C17__A2__9S20649C15__9S20649C10[] = {
  ABISELECT(-56,-32),
  ABISELECT(-112,-64),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev)();
extern void ABISELECT(_ZThn152_N9S20649C15D1Ev,_ZThn92_N9S20649C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev)();
extern void ABISELECT(_ZThn152_N9S20649C15D0Ev,_ZThn92_N9S20649C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C19__9S20649C15__9S20649C10[] = {
  ABISELECT(-184,-112),
  ABISELECT(-152,-92),
  ABISELECT(-96,-60),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(24,16),
  ABISELECT(-80,-48),
  ABISELECT(-136,-80),
  ABISELECT(-152,-92),
  ABISELECT(-152,-92),
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev)();
extern void ABISELECT(_ZThn176_N9S20649C15D1Ev,_ZThn108_N9S20649C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev)();
extern void ABISELECT(_ZThn176_N9S20649C15D0Ev,_ZThn108_N9S20649C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C13__9S20649C15__9S20649C10[] = {
  ABISELECT(-208,-128),
  ABISELECT(-176,-108),
  ABISELECT(-120,-76),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-104,-64),
  ABISELECT(-160,-96),
  ABISELECT(-176,-108),
  ABISELECT(-176,-108),
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev)();
extern void ABISELECT(_ZThn80_N9S20649C15D1Ev,_ZThn48_N9S20649C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev)();
extern void ABISELECT(_ZThn80_N9S20649C15D0Ev,_ZThn48_N9S20649C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C14__9S20649C15__9S20649C10[] = {
  0,
  ABISELECT(-8,-4),
  ABISELECT(-64,-36),
  ABISELECT(-24,-16),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev)();
extern void _ZN9S20649C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev)();
extern void _ZN9S20649C11D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C11__9S20649C10[] = {
  ABISELECT(-48,-32),
  ABISELECT(56,32),
  ABISELECT(40,20),
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S20649C11D1Ev,_ZThn4_N9S20649C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev)();
extern void ABISELECT(_ZThn8_N9S20649C11D0Ev,_ZThn4_N9S20649C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C12__9S20649C11__9S20649C10[] = {
  ABISELECT(-56,-36),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20649C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev)();
extern void ABISELECT(_ZThn40_N9S20649C11D1Ev,_ZThn20_N9S20649C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev)();
extern void ABISELECT(_ZThn40_N9S20649C11D0Ev,_ZThn20_N9S20649C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C11__9S20649C10[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20649C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev)();
extern void ABISELECT(_ZThn24_N9S20649C11D1Ev,_ZThn12_N9S20649C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev)();
extern void ABISELECT(_ZThn24_N9S20649C11D0Ev,_ZThn12_N9S20649C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C12__A1__9S20649C11__9S20649C10[] = {
  ABISELECT(32,20),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20649C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void _ZN9S20649C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
extern void _ZN9S20649C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C12__9S20649C10[] = {
  ABISELECT(-56,-36),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void _ZN8S20649C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
extern void _ZN8S20649C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C69S20649C12__9S20649C10[] = {
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void ABISELECT(_ZThn32_N8S20649C6D1Ev,_ZThn16_N8S20649C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
extern void ABISELECT(_ZThn32_N8S20649C6D0Ev,_ZThn16_N8S20649C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__8S20649C69S20649C12__9S20649C10[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C69S20649C12__9S20649C10[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C12__A1__9S20649C10[] = {
  ABISELECT(32,20),
  ABISELECT(-24,-12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C89S20649C12__A1__9S20649C10[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C12__9S20649C10[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S20649C12D1Ev,_ZThn16_N9S20649C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
extern void ABISELECT(_ZThn32_N9S20649C12D0Ev,_ZThn16_N9S20649C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C12__9S20649C10[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S20649C12D1Ev,_ZThn8_N9S20649C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S20649C12D0Ev,_ZThn8_N9S20649C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C8__A1__9S20649C12__9S20649C10[] = {
  ABISELECT(32,20),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void _ZN8S20649C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
extern void _ZN8S20649C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C10[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C88S20649C7__9S20649C10[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C88S20649C7__9S20649C10[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C7__9S20649C10[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev)();
extern void _ZN9S20649C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev)();
extern void _ZN9S20649C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C14__9S20649C10[] = {
  0,
  ABISELECT(-8,-4),
  ABISELECT(-64,-36),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C14__9S20649C10[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20649C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C14__9S20649C10[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI9S20649C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void _ZN8S20649C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
extern void _ZN8S20649C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C6__A1__9S20649C10[] = {
  ABISELECT(-8,-4),
  ABISELECT(-64,-36),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__8S20649C6__A1__9S20649C10[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C6__A1__9S20649C10[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void _ZN8S20649C2D1Ev();
extern void _ZN8S20649C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20649C2__9S20649C10[] = {
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C2[0]),
  (VTBL_ENTRY)&_ZN8S20649C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20649C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev)();
extern void _ZN9S20649C16D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev)();
extern void _ZN9S20649C16D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C16__9S20649C10[] = {
  ABISELECT(-24,-12),
  ABISELECT(-80,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void _ZN8S20649C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
extern void _ZN8S20649C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C79S20649C16__A1__9S20649C10[] = {
  ABISELECT(-24,-12),
  ABISELECT(-80,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C88S20649C79S20649C16__A3__9S20649C10[] = {
  ABISELECT(-24,-12),
  ABISELECT(-80,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C88S20649C79S20649C16__A3__9S20649C10[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C79S20649C16__A1__9S20649C10[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C16__9S20649C10[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S20649C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev)();
extern void _ZN9S20649C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev)();
extern void _ZN9S20649C17D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C17__9S20649C10[] = {
  ABISELECT(-144,-88),
  ABISELECT(-40,-24),
  ABISELECT(-96,-56),
  ABISELECT(-56,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev)();
extern void _ZN9S20649C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev)();
extern void _ZN9S20649C18D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C189S20649C17__9S20649C10[] = {
  ABISELECT(-144,-88),
  ABISELECT(-40,-24),
  ABISELECT(-96,-56),
  ABISELECT(-56,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void _ZN9S20649C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
extern void _ZN9S20649C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C129S20649C189S20649C17__A1__9S20649C10[] = {
  ABISELECT(-144,-88),
  ABISELECT(-40,-24),
  ABISELECT(-96,-56),
  ABISELECT(-56,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void _ZN8S20649C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
extern void _ZN8S20649C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C69S20649C129S20649C189S20649C17__A2__9S20649C10[] = {
  ABISELECT(-40,-24),
  ABISELECT(-96,-56),
  ABISELECT(-56,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__8S20649C69S20649C129S20649C189S20649C17__A2__9S20649C10[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(56,36),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C69S20649C129S20649C189S20649C17__A2__9S20649C10[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C129S20649C189S20649C17__A4__9S20649C10[] = {
  ABISELECT(-56,-32),
  ABISELECT(-112,-64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C89S20649C129S20649C189S20649C17__A4__9S20649C10[] = {
  ABISELECT(112,64),
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C129S20649C189S20649C17__A1__9S20649C10[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C129S20649C189S20649C17__A1__9S20649C10[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(56,36),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S20649C12D1Ev,_ZThn8_N9S20649C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S20649C12D0Ev,_ZThn8_N9S20649C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C8__A1__9S20649C129S20649C189S20649C17__A1__9S20649C10[] = {
  ABISELECT(-56,-32),
  ABISELECT(-112,-64),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C189S20649C17__9S20649C10[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S20649C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C189S20649C17__9S20649C10[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(56,36),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI9S20649C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev)();
extern void ABISELECT(_ZThn16_N9S20649C18D1Ev,_ZThn8_N9S20649C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev)();
extern void ABISELECT(_ZThn16_N9S20649C18D0Ev,_ZThn8_N9S20649C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C12__A1__9S20649C189S20649C17__9S20649C10[] = {
  ABISELECT(-56,-32),
  ABISELECT(-112,-64),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20649C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C17__9S20649C10[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S20649C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C17__9S20649C10[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(56,36),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI9S20649C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20649C17D1Ev,_ZThn8_N9S20649C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev)();
extern void ABISELECT(_ZThn16_N9S20649C17D0Ev,_ZThn8_N9S20649C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C129S20649C18__A1__9S20649C17__9S20649C10[] = {
  ABISELECT(-56,-32),
  ABISELECT(-112,-64),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20649C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev)();
extern void _ZN9S20649C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev)();
extern void _ZN9S20649C19D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C19__9S20649C10[] = {
  ABISELECT(-184,-112),
  ABISELECT(-152,-92),
  ABISELECT(-96,-60),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(24,16),
  ABISELECT(-80,-48),
  ABISELECT(-136,-80),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev)();
extern void _ZN9S20649C16D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev)();
extern void _ZN9S20649C16D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C169S20649C19__A1__9S20649C10[] = {
  ABISELECT(-80,-48),
  ABISELECT(-136,-80),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void _ZN8S20649C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
extern void _ZN8S20649C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C79S20649C169S20649C19__A2__9S20649C10[] = {
  ABISELECT(-80,-48),
  ABISELECT(-136,-80),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C88S20649C79S20649C169S20649C19__A5__9S20649C10[] = {
  ABISELECT(-80,-48),
  ABISELECT(-136,-80),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C88S20649C79S20649C169S20649C19__A5__9S20649C10[] = {
  ABISELECT(136,80),
  ABISELECT(136,80),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C79S20649C169S20649C19__A2__9S20649C10[] = {
  ABISELECT(136,80),
  ABISELECT(136,80),
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C169S20649C19__A1__9S20649C10[] = {
  ABISELECT(136,80),
  ABISELECT(136,80),
  (VTBL_ENTRY)&(_ZTI9S20649C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C19__9S20649C10[] = {
  ABISELECT(136,80),
  ABISELECT(136,80),
  (VTBL_ENTRY)&(_ZTI9S20649C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev)();
extern void ABISELECT(_ZThn24_N9S20649C19D1Ev,_ZThn16_N9S20649C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev)();
extern void ABISELECT(_ZThn24_N9S20649C19D0Ev,_ZThn16_N9S20649C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C13__9S20649C19__9S20649C10[] = {
  ABISELECT(-208,-128),
  ABISELECT(-176,-108),
  ABISELECT(-120,-76),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-104,-64),
  ABISELECT(-160,-96),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20649C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20649C14__9S20649C19__9S20649C10[] = {
  0,
  ABISELECT(-8,-4),
  ABISELECT(-64,-36),
  ABISELECT(-24,-16),
  ABISELECT(72,44),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI9S20649C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__A1__9S20649C19__9S20649C10[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(96,60),
  ABISELECT(96,60),
  (VTBL_ENTRY)&(_ZTI9S20649C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20649C19D1Ev,_ZTv0_n16_N9S20649C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20649C19D0Ev,_ZTv0_n16_N9S20649C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C2__9S20649C19__9S20649C10[] = {
  ABISELECT(152,92),
  ABISELECT(72,44),
  ABISELECT(152,92),
  (VTBL_ENTRY)&(_ZTI9S20649C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C19D1Ev,_ZTv0_n16_N9S20649C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C19D0Ev,_ZTv0_n16_N9S20649C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev)();
extern void _ZN9S20649C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev)();
extern void _ZN9S20649C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C13__A1__9S20649C10[] = {
  ABISELECT(-208,-128),
  ABISELECT(-176,-108),
  ABISELECT(-120,-76),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-104,-64),
  ABISELECT(-160,-96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C13__A6__9S20649C10[] = {
  ABISELECT(-104,-64),
  ABISELECT(-160,-96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C89S20649C13__A6__9S20649C10[] = {
  ABISELECT(160,96),
  ABISELECT(160,96),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20649C14__9S20649C13__A1__9S20649C10[] = {
  0,
  ABISELECT(-8,-4),
  ABISELECT(-64,-36),
  ABISELECT(-24,-16),
  ABISELECT(96,60),
  ABISELECT(96,60),
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C13__A1__9S20649C10[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(120,76),
  ABISELECT(120,76),
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C13__A1__9S20649C10[] = {
  ABISELECT(160,96),
  ABISELECT(160,96),
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20649C13D1Ev,_ZTv0_n16_N9S20649C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20649C13D0Ev,_ZTv0_n16_N9S20649C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C2__9S20649C13__A1__9S20649C10[] = {
  ABISELECT(176,108),
  ABISELECT(72,44),
  ABISELECT(176,108),
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C13D1Ev,_ZTv0_n16_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C13D0Ev,_ZTv0_n16_N9S20649C13D0Ev),
};
static  VTT_ENTRY vtt_S20649C10[] = {
  {&(_ZTV9S20649C10[15]),  15,135},
  {&(_tg__ZTV9S20649C13__A__9S20649C10[10]),  10,12},
  {&(_tg__ZTV8S20649C89S20649C13__A2__9S20649C10[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C89S20649C13__A2__9S20649C10[3]),  3,5},
  {&(_tg__ZTV9S20649C14__9S20649C13__A__9S20649C10[7]),  7,9},
  {&(_tg__ZTV9S20649C14__9S20649C13__A__9S20649C10[7]),  7,9},
  {&(_tg__ZTV8S20649C7__9S20649C13__A__9S20649C10[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__9S20649C13__A__9S20649C10[3]),  3,5},
  {&(_tg__ZTV8S20649C2__9S20649C13__A__9S20649C10[4]),  4,6},
  {&(_tg__ZTV9S20649C15__9S20649C10[14]),  14,16},
  {&(_tg__ZTV10S7883C3_nt__9S20649C15__9S20649C10[3]),  3,5},
  {&(_tg__ZTV9S20649C16__9S20649C15__9S20649C10[5]),  5,7},
  {&(_tg__ZTV9S20649C17__9S20649C15__9S20649C10[7]),  7,9},
  {&(_tg__ZTV8S20649C7__A1__9S20649C15__9S20649C10[5]),  5,7},
  {&(_tg__ZTV8S20649C89S20649C129S20649C189S20649C17__A2__9S20649C15__9S20649C10[5]),  5,7},
  {&(_tg__ZTV9S20649C19__9S20649C15__9S20649C10[11]),  11,13},
  {&(_tg__ZTV9S20649C13__9S20649C15__9S20649C10[10]),  10,12},
  {&(_tg__ZTV9S20649C14__9S20649C15__9S20649C10[7]),  7,9},
  {&(_tg__ZTV9S20649C14__9S20649C15__9S20649C10[7]),  7,9},
  {&(_tg__ZTV9S20649C15__9S20649C10[14]),  14,16},
  {&(_ZTV9S20649C10[53]),  53,135},
  {&(_ZTV9S20649C10[62]),  62,135},
  {&(_ZTV9S20649C10[53]),  53,135},
  {&(_ZTV9S20649C10[76]),  76,135},
  {&(_ZTV9S20649C10[69]),  69,135},
  {&(_ZTV9S20649C10[27]),  27,135},
  {&(_ZTV9S20649C10[85]),  85,135},
  {&(_ZTV9S20649C10[85]),  85,135},
  {&(_ZTV9S20649C10[43]),  43,135},
  {&(_ZTV9S20649C10[43]),  43,135},
  {&(_ZTV9S20649C10[92]),  92,135},
  {&(_ZTV9S20649C10[101]),  101,135},
  {&(_ZTV9S20649C10[108]),  108,135},
  {&(_ZTV9S20649C10[121]),  121,135},
  {&(_ZTV9S20649C10[133]),  133,135},
  {&(_tg__ZTV9S20649C11__9S20649C10[8]),  8,10},
  {&(_tg__ZTV9S20649C12__9S20649C11__9S20649C10[7]),  7,9},
  {&(_tg__ZTV9S20649C11__9S20649C10[8]),  8,10},
  {&(_tg__ZTV8S20649C7__9S20649C11__9S20649C10[5]),  5,7},
  {&(_tg__ZTV8S20649C89S20649C12__A1__9S20649C11__9S20649C10[5]),  5,7},
  {&(_tg__ZTV9S20649C12__9S20649C10[7]),  7,9},
  {&(_tg__ZTV8S20649C69S20649C12__9S20649C10[6]),  6,8},
  {&(_tg__ZTV8S20649C7__8S20649C69S20649C12__9S20649C10[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C69S20649C12__9S20649C10[3]),  3,5},
  {&(_tg__ZTV8S20649C89S20649C12__A1__9S20649C10[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C89S20649C12__A1__9S20649C10[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20649C12__9S20649C10[3]),  3,5},
  {&(_tg__ZTV8S20649C7__9S20649C12__9S20649C10[5]),  5,7},
  {&(_tg__ZTV8S20649C8__A1__9S20649C12__9S20649C10[5]),  5,7},
  {&(_tg__ZTV8S20649C7__9S20649C10[5]),  5,7},
  {&(_tg__ZTV8S20649C88S20649C7__9S20649C10[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C88S20649C7__9S20649C10[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20649C7__9S20649C10[3]),  3,5},
  {&(_tg__ZTV9S20649C14__9S20649C10[7]),  7,9},
  {&(_tg__ZTV9S20649C14__9S20649C10[7]),  7,9},
  {&(_tg__ZTV8S20649C7__9S20649C14__9S20649C10[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__9S20649C14__9S20649C10[3]),  3,5},
  {&(_tg__ZTV8S20649C6__A1__9S20649C10[6]),  6,8},
  {&(_tg__ZTV8S20649C7__8S20649C6__A1__9S20649C10[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C6__A1__9S20649C10[3]),  3,5},
  {&(_tg__ZTV8S20649C2__9S20649C10[3]),  3,5},
  {&(_tg__ZTV9S20649C16__9S20649C10[5]),  5,7},
  {&(_tg__ZTV8S20649C79S20649C16__A1__9S20649C10[5]),  5,7},
  {&(_tg__ZTV8S20649C88S20649C79S20649C16__A3__9S20649C10[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C88S20649C79S20649C16__A3__9S20649C10[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20649C79S20649C16__A1__9S20649C10[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20649C16__9S20649C10[3]),  3,5},
  {&(_tg__ZTV9S20649C17__9S20649C10[7]),  7,9},
  {&(_tg__ZTV9S20649C189S20649C17__9S20649C10[7]),  7,9},
  {&(_tg__ZTV9S20649C129S20649C189S20649C17__A1__9S20649C10[7]),  7,9},
  {&(_tg__ZTV8S20649C69S20649C129S20649C189S20649C17__A2__9S20649C10[6]),  6,8},
  {&(_tg__ZTV8S20649C7__8S20649C69S20649C129S20649C189S20649C17__A2__9S20649C10[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C69S20649C129S20649C189S20649C17__A2__9S20649C10[3]),  3,5},
  {&(_tg__ZTV8S20649C89S20649C129S20649C189S20649C17__A4__9S20649C10[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C89S20649C129S20649C189S20649C17__A4__9S20649C10[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20649C129S20649C189S20649C17__A1__9S20649C10[3]),  3,5},
  {&(_tg__ZTV8S20649C7__9S20649C129S20649C189S20649C17__A1__9S20649C10[5]),  5,7},
  {&(_tg__ZTV8S20649C8__A1__9S20649C129S20649C189S20649C17__A1__9S20649C10[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__9S20649C189S20649C17__9S20649C10[3]),  3,5},
  {&(_tg__ZTV8S20649C7__9S20649C189S20649C17__9S20649C10[5]),  5,7},
  {&(_tg__ZTV8S20649C89S20649C12__A1__9S20649C189S20649C17__9S20649C10[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__9S20649C17__9S20649C10[3]),  3,5},
  {&(_tg__ZTV8S20649C7__9S20649C17__9S20649C10[5]),  5,7},
  {&(_tg__ZTV8S20649C89S20649C129S20649C18__A1__9S20649C17__9S20649C10[5]),  5,7},
  {&(_tg__ZTV9S20649C19__9S20649C10[11]),  11,13},
  {&(_tg__ZTV9S20649C169S20649C19__A1__9S20649C10[5]),  5,7},
  {&(_tg__ZTV8S20649C79S20649C169S20649C19__A2__9S20649C10[5]),  5,7},
  {&(_tg__ZTV8S20649C88S20649C79S20649C169S20649C19__A5__9S20649C10[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C88S20649C79S20649C169S20649C19__A5__9S20649C10[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20649C79S20649C169S20649C19__A2__9S20649C10[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20649C169S20649C19__A1__9S20649C10[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20649C19__9S20649C10[3]),  3,5},
  {&(_tg__ZTV9S20649C13__9S20649C19__9S20649C10[10]),  10,12},
  {&(_tg__ZTV9S20649C14__9S20649C19__9S20649C10[7]),  7,9},
  {&(_tg__ZTV9S20649C14__9S20649C19__9S20649C10[7]),  7,9},
  {&(_tg__ZTV8S20649C7__A1__9S20649C19__9S20649C10[5]),  5,7},
  {&(_tg__ZTV8S20649C2__9S20649C19__9S20649C10[4]),  4,6},
  {&(_tg__ZTV9S20649C13__A1__9S20649C10[10]),  10,12},
  {&(_tg__ZTV8S20649C89S20649C13__A6__9S20649C10[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C89S20649C13__A6__9S20649C10[3]),  3,5},
  {&(_tg__ZTV9S20649C14__9S20649C13__A1__9S20649C10[7]),  7,9},
  {&(_tg__ZTV9S20649C14__9S20649C13__A1__9S20649C10[7]),  7,9},
  {&(_tg__ZTV8S20649C7__9S20649C13__A1__9S20649C10[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__9S20649C13__A1__9S20649C10[3]),  3,5},
  {&(_tg__ZTV8S20649C2__9S20649C13__A1__9S20649C10[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S20649C10[];
extern  VTBL_ENTRY _ZTV9S20649C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C10[];
static VTBL_ENTRY alt_thunk_names76[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20649C19D0Ev,_ZThn16_N9S20649C19D0Ev),
  (VTBL_ENTRY)_ZN9S20649C19D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20649C19D1Ev,_ZThn16_N9S20649C19D1Ev),
  (VTBL_ENTRY)_ZN9S20649C19D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C18D0Ev,_ZThn8_N9S20649C18D0Ev),
  (VTBL_ENTRY)_ZN9S20649C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C18D1Ev,_ZThn8_N9S20649C18D1Ev),
  (VTBL_ENTRY)_ZN9S20649C18D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C17D0Ev,_ZThn8_N9S20649C17D0Ev),
  (VTBL_ENTRY)_ZN9S20649C17D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C17D1Ev,_ZThn8_N9S20649C17D1Ev),
  (VTBL_ENTRY)_ZN9S20649C17D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev), // 
  (VTBL_ENTRY)_ZN9S20649C16D0Ev,
  (VTBL_ENTRY)_ZN9S20649C16D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev), // 
  (VTBL_ENTRY)_ZN9S20649C16D1Ev,
  (VTBL_ENTRY)_ZN9S20649C16D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev), // 
  (VTBL_ENTRY)_ZN9S20649C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev), // 
  (VTBL_ENTRY)_ZN9S20649C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S20649C7D0Ev,
  (VTBL_ENTRY)_ZN8S20649C7D0Ev,
  (VTBL_ENTRY)_ZN8S20649C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S20649C7D1Ev,
  (VTBL_ENTRY)_ZN8S20649C7D1Ev,
  (VTBL_ENTRY)_ZN8S20649C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev), // 
  (VTBL_ENTRY)_ZN8S20649C6D0Ev,
  (VTBL_ENTRY)_ZN8S20649C6D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20649C6D0Ev,_ZThn16_N8S20649C6D0Ev),
  (VTBL_ENTRY)_ZN8S20649C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev), // 
  (VTBL_ENTRY)_ZN8S20649C6D1Ev,
  (VTBL_ENTRY)_ZN8S20649C6D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20649C6D1Ev,_ZThn16_N8S20649C6D1Ev),
  (VTBL_ENTRY)_ZN8S20649C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C12D0Ev,_ZThn8_N9S20649C12D0Ev),
  (VTBL_ENTRY)_ZN9S20649C12D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C12D0Ev,_ZThn8_N9S20649C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20649C12D0Ev,_ZThn16_N9S20649C12D0Ev),
  (VTBL_ENTRY)_ZN9S20649C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C12D1Ev,_ZThn8_N9S20649C12D1Ev),
  (VTBL_ENTRY)_ZN9S20649C12D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C12D1Ev,_ZThn8_N9S20649C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20649C12D1Ev,_ZThn16_N9S20649C12D1Ev),
  (VTBL_ENTRY)_ZN9S20649C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20649C11D0Ev,_ZThn12_N9S20649C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20649C11D0Ev,_ZThn20_N9S20649C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20649C11D0Ev,_ZThn4_N9S20649C11D0Ev),
  (VTBL_ENTRY)_ZN9S20649C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20649C11D1Ev,_ZThn12_N9S20649C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20649C11D1Ev,_ZThn20_N9S20649C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20649C11D1Ev,_ZThn4_N9S20649C11D1Ev),
  (VTBL_ENTRY)_ZN9S20649C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20649C15D0Ev,_ZThn48_N9S20649C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20649C15D0Ev,_ZThn108_N9S20649C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20649C15D0Ev,_ZThn92_N9S20649C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20649C15D0Ev,_ZThn76_N9S20649C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20649C15D0Ev,_ZThn32_N9S20649C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20649C15D0Ev,_ZThn68_N9S20649C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20649C15D0Ev,_ZThn56_N9S20649C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C15D0Ev,_ZThn12_N9S20649C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20649C15D1Ev,_ZThn48_N9S20649C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20649C15D1Ev,_ZThn108_N9S20649C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20649C15D1Ev,_ZThn92_N9S20649C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20649C15D1Ev,_ZThn76_N9S20649C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20649C15D1Ev,_ZThn32_N9S20649C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20649C15D1Ev,_ZThn68_N9S20649C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20649C15D1Ev,_ZThn56_N9S20649C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C15D1Ev,_ZThn12_N9S20649C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20649C15D0Ev,_ZTv0_n16_N9S20649C15D0Ev), // 
  (VTBL_ENTRY)_ZN9S20649C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20649C15D1Ev,_ZTv0_n16_N9S20649C15D1Ev), // 
  (VTBL_ENTRY)_ZN9S20649C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20649C13D0Ev,_ZTv0_n16_N9S20649C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20649C13D0Ev,_ZThn16_N9S20649C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20649C13D1Ev,_ZTv0_n16_N9S20649C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20649C13D1Ev,_ZThn16_N9S20649C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20649C8D0Ev,_ZThn28_N8S20649C8D0Ev),
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20649C8D1Ev,_ZThn28_N8S20649C8D1Ev),
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S20649C13D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20649C13D0Ev,_ZThn28_N9S20649C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20649C13D0Ev,_ZThn48_N9S20649C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20649C13D0Ev,_ZThn64_N9S20649C13D0Ev),
  (VTBL_ENTRY)_ZN9S20649C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S20649C13D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20649C13D1Ev,_ZThn28_N9S20649C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20649C13D1Ev,_ZThn48_N9S20649C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20649C13D1Ev,_ZThn64_N9S20649C13D1Ev),
  (VTBL_ENTRY)_ZN9S20649C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20649C10D0Ev,_ZTv0_n16_N9S20649C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20649C10D0Ev,_ZThn20_N9S20649C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20649C10D1Ev,_ZTv0_n16_N9S20649C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20649C10D1Ev,_ZThn20_N9S20649C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20649C10D0Ev,_ZThn128_N9S20649C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S20649C10D0Ev,_ZThn112_N9S20649C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20649C10D0Ev,_ZThn96_N9S20649C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S20649C10D0Ev,_ZThn88_N9S20649C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20649C10D0Ev,_ZThn76_N9S20649C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20649C10D0Ev,_ZThn68_N9S20649C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20649C10D0Ev,_ZThn52_N9S20649C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20649C10D0Ev,_ZThn44_N9S20649C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20649C10D0Ev,_ZThn36_N9S20649C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20649C10D0Ev,_ZThn32_N9S20649C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20649C10D0Ev,_ZThn4_N9S20649C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20649C10D1Ev,_ZThn128_N9S20649C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S20649C10D1Ev,_ZThn112_N9S20649C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20649C10D1Ev,_ZThn96_N9S20649C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S20649C10D1Ev,_ZThn88_N9S20649C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20649C10D1Ev,_ZThn76_N9S20649C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20649C10D1Ev,_ZThn68_N9S20649C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20649C10D1Ev,_ZThn52_N9S20649C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20649C10D1Ev,_ZThn44_N9S20649C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20649C10D1Ev,_ZThn36_N9S20649C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20649C10D1Ev,_ZThn32_N9S20649C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20649C10D1Ev,_ZThn4_N9S20649C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20649C10 = {  "S20649C10", // class name
  bases_S20649C10, 43,
  &(vtc_S20649C10[0]), // expected_vtbl_contents
  &(vtt_S20649C10[0]), // expected_vtt_contents
  ABISELECT(232,144), // object size
  NSPAIRA(_ZTI9S20649C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20649C10),135, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20649C10),105, //virtual table table var
  28, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names76,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20649C5  : virtual S20649C6 , virtual S20649C10 , virtual S4677C27 {
  ~S20649C5(); // tgen
  S20649C5(); // tgen
};
//SIG(-1 S20649C5) C1{ VBC2{ VBC3{ BC4{ VBC5{ vd m} VBC6{ m Fi} BC7{ m} Fi} Fi} BC7} VBC8{ BC5 VBC9{ VBC10{ VBC5 BC6 BC2 VBC7 BC4 vd} vd} BC11{ VBC6 VBC12{ VBC2 FC6} VBC13{ VBC6 vd} VBC7 BC4 vd Fi Fp} BC14{ VBC5 VBC15{ BC3} VBC16{ BC17{ BC10 BC6 vd Fi} vd} VBC18{ BC15 VBC11 vd Fi} vd Fi} vd Fi} VBC19{ m}}


S20649C5 ::~S20649C5(){ note_dtor("S20649C5", this);} // tgen
S20649C5 ::S20649C5(){ note_ctor("S20649C5", this);} // tgen

static void Test_S20649C5()
{
  extern Class_Descriptor cd_S20649C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,37)];
    init_test(&cd_S20649C5, buf);
    S20649C5 *dp, &lv = *(dp=new (buf) S20649C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,144), "sizeof(S20649C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20649C5)");
    /*is_ambiguous_... S20649C5::S20649C7 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C7*), ABISELECT(112,68), "S20649C5");
    /*is_ambiguous_... S20649C5::S20649C12 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C12*), ABISELECT(112,68), "S20649C5");
    /*is_ambiguous_... S20649C5::S20649C12 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C12*), ABISELECT(112,68), "S20649C5");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C13*)(S20649C10*), ABISELECT(112,68), "S20649C5");
    check_base_class_offset(lv, (S7883C3_nt*)(S20649C15*)(S20649C10*), ABISELECT(112,68), "S20649C5");
    /*is_ambiguous_... S20649C5::S20649C16 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C7*)(S20649C16*), ABISELECT(112,68), "S20649C5");
    check_base_class_offset(lv, (S7883C3_nt*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(112,68), "S20649C5");
    /*is_ambiguous_... S20649C12::S20649C8 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(112,68), "S20649C5");
    check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C7*)(S20649C16*)(S20649C19*), ABISELECT(112,68), "S20649C5");
    /*is_ambiguous_... S20649C5::S20649C13 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C13*), ABISELECT(112,68), "S20649C5");
    /*is_ambiguous_... S20649C5::S20649C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C7*), ABISELECT(24,16), "S20649C5");
    /*is_ambiguous_... S20649C5::S20649C12 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C12*), ABISELECT(24,16), "S20649C5");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C13*)(S20649C10*), ABISELECT(24,16), "S20649C5");
    check_base_class_offset(lv, (S3216C8_nt*)(S20649C2*), ABISELECT(24,16), "S20649C5");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C13*)(S20649C10*), ABISELECT(24,16), "S20649C5");
    /*is_ambiguous_... S20649C5::S20649C16 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C7*)(S20649C16*), ABISELECT(24,16), "S20649C5");
    /*is_ambiguous_... S20649C12::S20649C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(24,16), "S20649C5");
    check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C7*)(S20649C16*)(S20649C19*), ABISELECT(24,16), "S20649C5");
    /*is_ambiguous_... S20649C5::S20649C13 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C13*), ABISELECT(24,16), "S20649C5");
    /*is_ambiguous_... S20649C5::S20649C13 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C13*), ABISELECT(24,16), "S20649C5");
    /*is_ambiguous_... S20649C5::S20649C7 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C7*), ABISELECT(8,4), "S20649C5");
    /*is_ambiguous_... S20649C5::S20649C7 */ AMB_check_base_class_offset(lv, (S20649C8*)(S20649C7*), ABISELECT(8,4), "S20649C5");
    /*is_ambiguous_... S20649C5::S20649C6 */ AMB_check_base_class_offset(lv, (S20649C7*)(S20649C6*), ABISELECT(8,4), "S20649C5");
    /*is_ambiguous_... S20649C5::S20649C12 */ AMB_check_base_class_offset(lv, (S20649C7*)(S20649C6*)(S20649C12*), ABISELECT(8,4), "S20649C5");
    check_base_class_offset(lv, (S20649C7*)(S20649C6*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(8,4), "S20649C5");
    /*is_ambiguous_... S20649C5::S20649C6 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C6*), ABISELECT(112,68), "S20649C5");
    /*is_ambiguous_... S20649C5::S20649C6 */ AMB_check_base_class_offset(lv, (S20649C6*), ABISELECT(112,68), "S20649C5");
    check_base_class_offset(lv, (S20649C6*)(S20649C14*), ABISELECT(112,68), "S20649C5");
    /*is_ambiguous_... S20649C10::S7883C3_nt */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C10*), ABISELECT(32,20), "S20649C5");
    /*is_ambiguous_... S20649C5::S20649C12 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C12*), ABISELECT(88,56), "S20649C5");
    /*is_ambiguous_... S20649C5::S20649C12 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C6*)(S20649C12*), ABISELECT(80,52), "S20649C5");
    /*is_ambiguous_... S20649C5::S20649C12 */ AMB_check_base_class_offset(lv, (S20649C6*)(S20649C12*), ABISELECT(80,52), "S20649C5");
    /*is_ambiguous_... S20649C5::S20649C12 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C12*), 0, "S20649C5");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C13*)(S20649C10*), 0, "S20649C5");
    /*is_ambiguous_... S20649C12::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C12*)(S20649C18*)(S20649C17*), 0, "S20649C5");
    /*is_ambiguous_... S20649C5::S20649C13 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C13*), 0, "S20649C5");
    /*is_ambiguous_... S20649C5::S20649C12 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C12*), ABISELECT(96,60), "S20649C5");
    /*is_ambiguous_... S20649C5::S20649C12 */ AMB_check_base_class_offset(lv, (S20649C8*)(S20649C12*), ABISELECT(96,60), "S20649C5");
    check_base_class_offset(lv, (S20649C12*)(S20649C11*), ABISELECT(80,52), "S20649C5");
    check_base_class_offset(lv, (S20649C11*)(S20649C10*), 0, "S20649C5");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S20649C14*)(S20649C13*)(S20649C10*), ABISELECT(112,68), "S20649C5");
    /*is_ambiguous_... S20649C5::S20649C13 */ AMB_check_base_class_offset(lv, (S20649C14*)(S20649C13*), ABISELECT(112,68), "S20649C5");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S20649C2*)(S20649C13*)(S20649C10*), ABISELECT(64,40), "S20649C5");
    /*is_ambiguous_... S20649C5::S20649C13 */ AMB_check_base_class_offset(lv, (S20649C2*)(S20649C13*), ABISELECT(64,40), "S20649C5");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C13*)(S20649C10*), ABISELECT(40,24), "S20649C5");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S20649C8*)(S20649C13*)(S20649C10*), ABISELECT(40,24), "S20649C5");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S20649C13*)(S20649C10*), ABISELECT(40,24), "S20649C5");
    /*is_ambiguous_... S20649C5::S20649C16 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C7*)(S20649C16*), ABISELECT(128,76), "S20649C5");
    /*is_ambiguous_... S20649C5::S20649C16 */ AMB_check_base_class_offset(lv, (S20649C8*)(S20649C7*)(S20649C16*), ABISELECT(128,76), "S20649C5");
    /*is_ambiguous_... S20649C5::S20649C16 */ AMB_check_base_class_offset(lv, (S20649C7*)(S20649C16*), ABISELECT(128,76), "S20649C5");
    /*is_ambiguous_... S20649C15::S20649C16 */ AMB_check_base_class_offset(lv, (S20649C16*)(S20649C15*)(S20649C10*), ABISELECT(128,76), "S20649C5");
    /*is_ambiguous_... S20649C12::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(152,92), "S20649C5");
    /*is_ambiguous_... S20649C6::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C6*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(144,88), "S20649C5");
    check_base_class_offset(lv, (S20649C6*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(144,88), "S20649C5");
    /*is_ambiguous_... S20649C12::S20649C8 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(160,96), "S20649C5");
    /*is_ambiguous_... S20649C12::S20649C8 */ AMB_check_base_class_offset(lv, (S20649C8*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(160,96), "S20649C5");
    check_base_class_offset(lv, (S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(144,88), "S20649C5");
    /*is_ambiguous_... S20649C18::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C18*)(S20649C17*), ABISELECT(172,104), "S20649C5");
    check_base_class_offset(lv, (S20649C18*)(S20649C17*), ABISELECT(144,88), "S20649C5");
    check_base_class_offset(lv, (S20649C17*)(S20649C15*)(S20649C10*), ABISELECT(144,88), "S20649C5");
    check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C7*)(S20649C16*)(S20649C19*), ABISELECT(184,112), "S20649C5");
    check_base_class_offset(lv, (S20649C8*)(S20649C7*)(S20649C16*)(S20649C19*), ABISELECT(184,112), "S20649C5");
    check_base_class_offset(lv, (S20649C7*)(S20649C16*)(S20649C19*), ABISELECT(184,112), "S20649C5");
    check_base_class_offset(lv, (S20649C16*)(S20649C19*), ABISELECT(184,112), "S20649C5");
    /*is_ambiguous_... S20649C5::S20649C13 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C13*), ABISELECT(208,128), "S20649C5");
    /*is_ambiguous_... S20649C5::S20649C13 */ AMB_check_base_class_offset(lv, (S20649C8*)(S20649C13*), ABISELECT(208,128), "S20649C5");
    check_base_class_offset(lv, (S20649C13*)(S20649C19*), ABISELECT(208,128), "S20649C5");
    check_base_class_offset(lv, (S20649C19*)(S20649C15*)(S20649C10*), ABISELECT(184,112), "S20649C5");
    check_base_class_offset(lv, (S20649C15*)(S20649C10*), ABISELECT(64,40), "S20649C5");
    check_base_class_offset(lv, (S20649C10*), ABISELECT(32,20), "S20649C5");
    check_base_class_offset(lv, (S4677C27*), 0, "S20649C5");
    test_class_info(&lv, &cd_S20649C5);
    dp->~S20649C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20649C5(Test_S20649C5, "S20649C5", ABISELECT(232,144));

#else // __cplusplus

extern void _ZN8S20649C5C1Ev();
extern void _ZN8S20649C5D1Ev();
Name_Map name_map_S20649C5[] = {
  NSPAIR(_ZN8S20649C5C1Ev),
  NSPAIR(_ZN8S20649C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C7;
extern VTBL_ENTRY _ZTI8S20649C7[];
extern  VTBL_ENTRY _ZTV8S20649C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C7[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C6;
extern VTBL_ENTRY _ZTI8S20649C6[];
extern  VTBL_ENTRY _ZTV8S20649C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C6[];
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C6;
extern VTBL_ENTRY _ZTI8S20649C6[];
extern  VTBL_ENTRY _ZTV8S20649C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C12;
extern VTBL_ENTRY _ZTI9S20649C12[];
extern  VTBL_ENTRY _ZTV9S20649C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C12[];
extern Class_Descriptor cd_S20649C11;
extern VTBL_ENTRY _ZTI9S20649C11[];
extern  VTBL_ENTRY _ZTV9S20649C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C11[];
extern Class_Descriptor cd_S20649C14;
extern VTBL_ENTRY _ZTI9S20649C14[];
extern  VTBL_ENTRY _ZTV9S20649C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C14[];
extern Class_Descriptor cd_S20649C2;
extern VTBL_ENTRY _ZTI8S20649C2[];
extern  VTBL_ENTRY _ZTV8S20649C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C2[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C13;
extern VTBL_ENTRY _ZTI9S20649C13[];
extern  VTBL_ENTRY _ZTV9S20649C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C13[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C7;
extern VTBL_ENTRY _ZTI8S20649C7[];
extern  VTBL_ENTRY _ZTV8S20649C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C7[];
extern Class_Descriptor cd_S20649C16;
extern VTBL_ENTRY _ZTI9S20649C16[];
extern  VTBL_ENTRY _ZTV9S20649C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C16[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C6;
extern VTBL_ENTRY _ZTI8S20649C6[];
extern  VTBL_ENTRY _ZTV8S20649C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C12;
extern VTBL_ENTRY _ZTI9S20649C12[];
extern  VTBL_ENTRY _ZTV9S20649C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C12[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20649C18;
extern VTBL_ENTRY _ZTI9S20649C18[];
extern  VTBL_ENTRY _ZTV9S20649C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C18[];
extern Class_Descriptor cd_S20649C17;
extern VTBL_ENTRY _ZTI9S20649C17[];
extern  VTBL_ENTRY _ZTV9S20649C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C17[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C7;
extern VTBL_ENTRY _ZTI8S20649C7[];
extern  VTBL_ENTRY _ZTV8S20649C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C7[];
extern Class_Descriptor cd_S20649C16;
extern VTBL_ENTRY _ZTI9S20649C16[];
extern  VTBL_ENTRY _ZTV9S20649C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C16[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C13;
extern VTBL_ENTRY _ZTI9S20649C13[];
extern  VTBL_ENTRY _ZTV9S20649C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C13[];
extern Class_Descriptor cd_S20649C19;
extern VTBL_ENTRY _ZTI9S20649C19[];
extern  VTBL_ENTRY _ZTV9S20649C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C19[];
extern Class_Descriptor cd_S20649C15;
extern VTBL_ENTRY _ZTI9S20649C15[];
extern  VTBL_ENTRY _ZTV9S20649C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C15[];
extern Class_Descriptor cd_S20649C10;
extern VTBL_ENTRY _ZTI9S20649C10[];
extern  VTBL_ENTRY _ZTV9S20649C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C10[];
extern Class_Descriptor cd_S4677C27;
extern VTBL_ENTRY _ZTI8S4677C27[];
static Base_Class bases_S20649C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20649C8,    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
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20649C7,    ABISELECT(8,4), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20649C6,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7883C3_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
    25, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(88,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20649C6,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4677C37,    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
    13, //immediately_derived
  0, 0},
  {&cd_S20649C8,    ABISELECT(96,60), //bcp->offset
    82, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20649C12,    ABISELECT(80,52), //bcp->offset
    73, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20649C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    43, //immediately_derived
  0, 1},
  {&cd_S20649C14,    ABISELECT(112,68), //bcp->offset
    89, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S20649C2,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    19, //immediately_derived
  0, 0},
  {&cd_S20649C8,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20649C13,    ABISELECT(40,24), //bcp->offset
    45, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20649C8,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20649C7,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //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
    24, //immediately_derived
  0, 0},
  {&cd_S20649C16,    ABISELECT(128,76), //bcp->offset
    98, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(152,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
    30, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20649C6,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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
    30, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(160,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20649C8,    ABISELECT(160,96), //bcp->offset
    114, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20649C12,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(172,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
    32, //immediately_derived
  0, 0},
  {&cd_S20649C18,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20649C17,    ABISELECT(144,88), //bcp->offset
    105, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(184,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20649C8,    ABISELECT(184,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20649C7,    ABISELECT(184,112), //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
    22, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20649C16,    ABISELECT(184,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(208,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20649C8,    ABISELECT(208,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20649C13,    ABISELECT(208,128), //bcp->offset
    134, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S20649C19,    ABISELECT(184,112), //bcp->offset
    121, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    102, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S20649C15,    ABISELECT(64,40), //bcp->offset
    57, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S20649C10,    ABISELECT(32,20), //bcp->offset
    27, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S20649C5[];
extern void ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev)();
extern void _ZN8S20649C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev)();
extern void _ZN8S20649C5D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev)();
extern void ABISELECT(_ZThn8_N8S20649C5D1Ev,_ZThn4_N8S20649C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev)();
extern void ABISELECT(_ZThn8_N8S20649C5D0Ev,_ZThn4_N8S20649C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S20649C5D1Ev,_ZTv0_n64_N8S20649C5D1Ev)();
extern void ABISELECT(_ZThn32_N8S20649C5D1Ev,_ZThn20_N8S20649C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S20649C5D0Ev,_ZTv0_n64_N8S20649C5D0Ev)();
extern void ABISELECT(_ZThn32_N8S20649C5D0Ev,_ZThn20_N8S20649C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev)();
extern void ABISELECT(_ZThn40_N8S20649C5D1Ev,_ZThn24_N8S20649C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev)();
extern void ABISELECT(_ZThn40_N8S20649C5D0Ev,_ZThn24_N8S20649C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20649C5D1Ev,_ZTv0_n16_N8S20649C5D1Ev)();
extern void ABISELECT(_ZThn64_N8S20649C5D1Ev,_ZThn40_N8S20649C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20649C5D0Ev,_ZTv0_n16_N8S20649C5D0Ev)();
extern void ABISELECT(_ZThn64_N8S20649C5D0Ev,_ZThn40_N8S20649C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev)();
extern void ABISELECT(_ZThn80_N8S20649C5D1Ev,_ZThn52_N8S20649C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev)();
extern void ABISELECT(_ZThn80_N8S20649C5D0Ev,_ZThn52_N8S20649C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev)();
extern void ABISELECT(_ZThn96_N8S20649C5D1Ev,_ZThn60_N8S20649C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev)();
extern void ABISELECT(_ZThn96_N8S20649C5D0Ev,_ZThn60_N8S20649C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev)();
extern void ABISELECT(_ZThn112_N8S20649C5D1Ev,_ZThn68_N8S20649C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev)();
extern void ABISELECT(_ZThn112_N8S20649C5D0Ev,_ZThn68_N8S20649C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S20649C5D1Ev,_ZThn76_N8S20649C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S20649C5D0Ev,_ZThn76_N8S20649C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev)();
extern void ABISELECT(_ZThn144_N8S20649C5D1Ev,_ZThn88_N8S20649C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev)();
extern void ABISELECT(_ZThn144_N8S20649C5D0Ev,_ZThn88_N8S20649C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev)();
extern void ABISELECT(_ZThn160_N8S20649C5D1Ev,_ZThn96_N8S20649C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev)();
extern void ABISELECT(_ZThn160_N8S20649C5D0Ev,_ZThn96_N8S20649C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev)();
extern void ABISELECT(_ZThn184_N8S20649C5D1Ev,_ZThn112_N8S20649C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev)();
extern void ABISELECT(_ZThn184_N8S20649C5D0Ev,_ZThn112_N8S20649C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev)();
extern void ABISELECT(_ZThn208_N8S20649C5D1Ev,_ZThn128_N8S20649C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev)();
extern void ABISELECT(_ZThn208_N8S20649C5D0Ev,_ZThn128_N8S20649C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20649C5[] = {
  0,
  ABISELECT(208,128),
  ABISELECT(184,112),
  ABISELECT(144,88),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(112,68),
  0,
  ABISELECT(32,20),
  ABISELECT(112,68),
  0,
  ABISELECT(24,16),
  ABISELECT(8,4),
  ABISELECT(112,68),
  ABISELECT(80,52),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev),
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20649C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(176,108),
  ABISELECT(152,92),
  ABISELECT(112,68),
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(-32,-20),
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(80,48),
  ABISELECT(48,32),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20649C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20649C5D1Ev,_ZTv0_n64_N8S20649C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20649C5D0Ev,_ZTv0_n64_N8S20649C5D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(24,16),
  ABISELECT(-32,-20),
  ABISELECT(72,44),
  ABISELECT(72,44),
  ABISELECT(-16,-8),
  ABISELECT(72,44),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20649C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev),
  0,
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(144,88),
  ABISELECT(120,72),
  ABISELECT(-64,-40),
  ABISELECT(-56,-36),
  ABISELECT(80,48),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(-64,-40),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S20649C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20649C5D1Ev,_ZTv0_n16_N8S20649C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20649C5D0Ev,_ZTv0_n16_N8S20649C5D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(-56,-36),
  ABISELECT(32,16),
  ABISELECT(-72,-48),
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S20649C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev),
  ABISELECT(-72,-44),
  ABISELECT(16,8),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S20649C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev),
  0,
  ABISELECT(-88,-52),
  0,
  ABISELECT(-104,-64),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S20649C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev),
  ABISELECT(-104,-60),
  ABISELECT(-16,-8),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S20649C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev),
  ABISELECT(-144,-88),
  ABISELECT(-120,-72),
  ABISELECT(-32,-20),
  ABISELECT(-136,-84),
  ABISELECT(-144,-88),
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI8S20649C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev),
  ABISELECT(-136,-80),
  ABISELECT(-48,-28),
  ABISELECT(-160,-96),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S20649C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev),
  ABISELECT(-184,-112),
  ABISELECT(-120,-72),
  ABISELECT(-176,-108),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(24,16),
  ABISELECT(-160,-96),
  ABISELECT(-72,-44),
  ABISELECT(-184,-112),
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI8S20649C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev),
  ABISELECT(-208,-128),
  ABISELECT(-144,-88),
  ABISELECT(-200,-124),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-184,-112),
  ABISELECT(-96,-60),
  ABISELECT(-208,-128),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S20649C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S20649C5[];
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void _ZN8S20649C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
extern void _ZN8S20649C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C6__8S20649C5[] = {
  ABISELECT(-88,-52),
  0,
  ABISELECT(-104,-64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__8S20649C6__8S20649C5[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(104,64),
  ABISELECT(104,64),
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void _ZN8S20649C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
extern void _ZN8S20649C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__8S20649C5[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C88S20649C7__8S20649C5[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZThn104_N8S20649C8D1Ev,_ZThn64_N8S20649C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void ABISELECT(_ZThn104_N8S20649C8D0Ev,_ZThn64_N8S20649C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C88S20649C7__8S20649C5[] = {
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void ABISELECT(_ZThn104_N8S20649C7D1Ev,_ZThn64_N8S20649C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
extern void ABISELECT(_ZThn104_N8S20649C7D0Ev,_ZThn64_N8S20649C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C7__8S20649C5[] = {
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void _ZN9S20649C10D1Ev();
extern void _ZN9S20649C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20649C10__8S20649C5[] = {
  ABISELECT(176,108),
  ABISELECT(152,92),
  ABISELECT(112,68),
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(-32,-20),
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(80,48),
  ABISELECT(48,32),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&_ZN9S20649C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20649C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev)();
extern void _ZN9S20649C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev)();
extern void _ZN9S20649C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C139S20649C10__8S20649C5[] = {
  ABISELECT(-40,-24),
  ABISELECT(24,16),
  ABISELECT(-32,-20),
  ABISELECT(72,44),
  ABISELECT(72,44),
  ABISELECT(-16,-8),
  ABISELECT(72,44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C139S20649C10__A2__8S20649C5[] = {
  ABISELECT(-16,-8),
  ABISELECT(72,44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZThn72_N8S20649C8D1Ev,_ZThn44_N8S20649C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void ABISELECT(_ZThn72_N8S20649C8D0Ev,_ZThn44_N8S20649C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C89S20649C139S20649C10__A2__8S20649C5[] = {
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev)();
extern void ABISELECT(_ZThn72_N9S20649C13D1Ev,_ZThn44_N9S20649C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev)();
extern void ABISELECT(_ZThn72_N9S20649C13D0Ev,_ZThn44_N9S20649C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C14__9S20649C139S20649C10__8S20649C5[] = {
  0,
  ABISELECT(-88,-52),
  0,
  ABISELECT(-104,-64),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C139S20649C10__8S20649C5[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20649C13D1Ev,_ZTv0_n16_N9S20649C13D1Ev)();
extern void ABISELECT(_ZThn24_N9S20649C13D1Ev,_ZThn16_N9S20649C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20649C13D0Ev,_ZTv0_n16_N9S20649C13D0Ev)();
extern void ABISELECT(_ZThn24_N9S20649C13D0Ev,_ZThn16_N9S20649C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C2__9S20649C139S20649C10__8S20649C5[] = {
  ABISELECT(-24,-16),
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C13D1Ev,_ZTv0_n16_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C13D0Ev,_ZTv0_n16_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20649C15D1Ev,_ZTv0_n16_N9S20649C15D1Ev)();
extern void _ZN9S20649C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20649C15D0Ev,_ZTv0_n16_N9S20649C15D0Ev)();
extern void _ZN9S20649C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C159S20649C10__8S20649C5[] = {
  0,
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(144,88),
  ABISELECT(120,72),
  ABISELECT(-64,-40),
  ABISELECT(-56,-36),
  ABISELECT(80,48),
  ABISELECT(64,36),
  ABISELECT(48,28),
  0,
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C15D1Ev,_ZTv0_n16_N9S20649C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C15D0Ev,_ZTv0_n16_N9S20649C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev)();
extern void ABISELECT(_ZThn48_N9S20649C15D1Ev,_ZThn28_N9S20649C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev)();
extern void ABISELECT(_ZThn48_N9S20649C15D0Ev,_ZThn28_N9S20649C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C14__9S20649C159S20649C10__8S20649C5[] = {
  0,
  ABISELECT(-88,-52),
  0,
  ABISELECT(-104,-64),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev)();
extern void ABISELECT(_ZThn64_N9S20649C15D1Ev,_ZThn36_N9S20649C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev)();
extern void ABISELECT(_ZThn64_N9S20649C15D0Ev,_ZThn36_N9S20649C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C16__9S20649C159S20649C10__8S20649C5[] = {
  ABISELECT(-104,-60),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev)();
extern void ABISELECT(_ZThn80_N9S20649C15D1Ev,_ZThn48_N9S20649C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev)();
extern void ABISELECT(_ZThn80_N9S20649C15D0Ev,_ZThn48_N9S20649C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C17__9S20649C159S20649C10__8S20649C5[] = {
  ABISELECT(-144,-88),
  ABISELECT(-120,-72),
  ABISELECT(-32,-20),
  ABISELECT(-136,-84),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__A1__9S20649C159S20649C10__8S20649C5[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(56,36),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev)();
extern void ABISELECT(_ZThn96_N9S20649C15D1Ev,_ZThn56_N9S20649C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev)();
extern void ABISELECT(_ZThn96_N9S20649C15D0Ev,_ZThn56_N9S20649C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C129S20649C189S20649C17__A2__9S20649C159S20649C10__8S20649C5[] = {
  ABISELECT(-136,-80),
  ABISELECT(-48,-28),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev)();
extern void ABISELECT(_ZThn120_N9S20649C15D1Ev,_ZThn72_N9S20649C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev)();
extern void ABISELECT(_ZThn120_N9S20649C15D0Ev,_ZThn72_N9S20649C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C19__9S20649C159S20649C10__8S20649C5[] = {
  ABISELECT(-184,-112),
  ABISELECT(-120,-72),
  ABISELECT(-176,-108),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(24,16),
  ABISELECT(-160,-96),
  ABISELECT(-72,-44),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev)();
extern void ABISELECT(_ZThn144_N9S20649C15D1Ev,_ZThn88_N9S20649C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev)();
extern void ABISELECT(_ZThn144_N9S20649C15D0Ev,_ZThn88_N9S20649C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C13__9S20649C159S20649C10__8S20649C5[] = {
  ABISELECT(-208,-128),
  ABISELECT(-144,-88),
  ABISELECT(-200,-124),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-184,-112),
  ABISELECT(-96,-60),
  ABISELECT(-144,-88),
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20649C11__9S20649C10__8S20649C5[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(8,4),
  ABISELECT(112,68),
  ABISELECT(80,52),
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S20649C10D1Ev,_ZThn32_N9S20649C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
extern void ABISELECT(_ZThn48_N9S20649C10D0Ev,_ZThn32_N9S20649C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C12__9S20649C10__8S20649C5[] = {
  ABISELECT(-80,-52),
  ABISELECT(-56,-36),
  ABISELECT(32,16),
  ABISELECT(-72,-48),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZThn80_N9S20649C10D1Ev,_ZThn48_N9S20649C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
extern void ABISELECT(_ZThn80_N9S20649C10D0Ev,_ZThn48_N9S20649C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C14__9S20649C10__8S20649C5[] = {
  0,
  ABISELECT(-88,-52),
  0,
  ABISELECT(-104,-64),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C10__8S20649C5[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZThn64_N9S20649C10D1Ev,_ZThn40_N9S20649C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
extern void ABISELECT(_ZThn64_N9S20649C10D0Ev,_ZThn40_N9S20649C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C12__A1__9S20649C10__8S20649C5[] = {
  ABISELECT(-72,-44),
  ABISELECT(16,8),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZThn8_N9S20649C10D1Ev,_ZThn4_N9S20649C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
extern void ABISELECT(_ZThn8_N9S20649C10D0Ev,_ZThn4_N9S20649C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C13__A__9S20649C10__8S20649C5[] = {
  ABISELECT(-40,-24),
  ABISELECT(24,16),
  ABISELECT(-32,-20),
  ABISELECT(72,44),
  ABISELECT(72,44),
  ABISELECT(-16,-8),
  ABISELECT(72,44),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20649C10D1Ev,_ZTv0_n16_N9S20649C10D1Ev)();
extern void ABISELECT(_ZThn32_N9S20649C10D1Ev,_ZThn20_N9S20649C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20649C10D0Ev,_ZTv0_n16_N9S20649C10D0Ev)();
extern void ABISELECT(_ZThn32_N9S20649C10D0Ev,_ZThn20_N9S20649C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C15__9S20649C10__8S20649C5[] = {
  0,
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(144,88),
  ABISELECT(120,72),
  ABISELECT(-64,-40),
  ABISELECT(-56,-36),
  ABISELECT(80,48),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(-32,-20),
  ABISELECT(-40,-24),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C10D1Ev,_ZTv0_n16_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C10D0Ev,_ZTv0_n16_N9S20649C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZThn96_N9S20649C10D1Ev,_ZThn56_N9S20649C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
extern void ABISELECT(_ZThn96_N9S20649C10D0Ev,_ZThn56_N9S20649C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C16__9S20649C10__8S20649C5[] = {
  ABISELECT(-104,-60),
  ABISELECT(-16,-8),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZThn112_N9S20649C10D1Ev,_ZThn68_N9S20649C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
extern void ABISELECT(_ZThn112_N9S20649C10D0Ev,_ZThn68_N9S20649C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C17__9S20649C10__8S20649C5[] = {
  ABISELECT(-144,-88),
  ABISELECT(-120,-72),
  ABISELECT(-32,-20),
  ABISELECT(-136,-84),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZThn128_N9S20649C10D1Ev,_ZThn76_N9S20649C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
extern void ABISELECT(_ZThn128_N9S20649C10D0Ev,_ZThn76_N9S20649C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C129S20649C189S20649C17__A4__9S20649C10__8S20649C5[] = {
  ABISELECT(-136,-80),
  ABISELECT(-48,-28),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZThn152_N9S20649C10D1Ev,_ZThn92_N9S20649C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
extern void ABISELECT(_ZThn152_N9S20649C10D0Ev,_ZThn92_N9S20649C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C19__9S20649C10__8S20649C5[] = {
  ABISELECT(-184,-112),
  ABISELECT(-120,-72),
  ABISELECT(-176,-108),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(24,16),
  ABISELECT(-160,-96),
  ABISELECT(-72,-44),
  ABISELECT(-152,-92),
  ABISELECT(-152,-92),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZThn176_N9S20649C10D1Ev,_ZThn108_N9S20649C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
extern void ABISELECT(_ZThn176_N9S20649C10D0Ev,_ZThn108_N9S20649C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C13__A1__9S20649C10__8S20649C5[] = {
  ABISELECT(-208,-128),
  ABISELECT(-144,-88),
  ABISELECT(-200,-124),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-184,-112),
  ABISELECT(-96,-60),
  ABISELECT(-176,-108),
  ABISELECT(-176,-108),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev)();
extern void _ZN9S20649C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev)();
extern void _ZN9S20649C11D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C11__8S20649C5[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(8,4),
  ABISELECT(112,68),
  ABISELECT(80,52),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev)();
extern void ABISELECT(_ZThn80_N9S20649C11D1Ev,_ZThn52_N9S20649C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev)();
extern void ABISELECT(_ZThn80_N9S20649C11D0Ev,_ZThn52_N9S20649C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C12__9S20649C11__8S20649C5[] = {
  ABISELECT(-80,-52),
  ABISELECT(-56,-36),
  ABISELECT(32,16),
  ABISELECT(-72,-48),
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20649C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S20649C11D1Ev,_ZThn68_N9S20649C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S20649C11D0Ev,_ZThn68_N9S20649C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C11__8S20649C5[] = {
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S20649C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S20649C11D1Ev,_ZThn4_N9S20649C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev)();
extern void ABISELECT(_ZThn8_N9S20649C11D0Ev,_ZThn4_N9S20649C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C11__8S20649C5[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20649C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev)();
extern void ABISELECT(_ZThn96_N9S20649C11D1Ev,_ZThn60_N9S20649C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev)();
extern void ABISELECT(_ZThn96_N9S20649C11D0Ev,_ZThn60_N9S20649C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C12__A1__9S20649C11__8S20649C5[] = {
  ABISELECT(-72,-44),
  ABISELECT(16,8),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI9S20649C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void _ZN9S20649C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
extern void _ZN9S20649C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C12__8S20649C5[] = {
  ABISELECT(-80,-52),
  ABISELECT(-56,-36),
  ABISELECT(32,16),
  ABISELECT(-72,-48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void _ZN8S20649C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
extern void _ZN8S20649C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C69S20649C12__A1__8S20649C5[] = {
  ABISELECT(-56,-36),
  ABISELECT(32,16),
  ABISELECT(-72,-48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__8S20649C69S20649C12__A1__8S20649C5[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(72,48),
  ABISELECT(72,48),
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void ABISELECT(_ZThn32_N8S20649C6D1Ev,_ZThn16_N8S20649C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
extern void ABISELECT(_ZThn32_N8S20649C6D0Ev,_ZThn16_N8S20649C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C69S20649C12__A1__8S20649C5[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C12__A1__8S20649C5[] = {
  ABISELECT(-72,-44),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S20649C8D1Ev,_ZThn8_N8S20649C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S20649C8D0Ev,_ZThn8_N8S20649C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C89S20649C12__A1__8S20649C5[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S20649C12D1Ev,_ZThn16_N9S20649C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
extern void ABISELECT(_ZThn32_N9S20649C12D0Ev,_ZThn16_N9S20649C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C12__8S20649C5[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C12__8S20649C5[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(72,48),
  ABISELECT(72,48),
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S20649C12D1Ev,_ZThn8_N9S20649C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S20649C12D0Ev,_ZThn8_N9S20649C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C8__A1__9S20649C12__8S20649C5[] = {
  ABISELECT(-72,-44),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev)();
extern void _ZN9S20649C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev)();
extern void _ZN9S20649C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C14__8S20649C5[] = {
  0,
  ABISELECT(-88,-52),
  0,
  ABISELECT(-104,-64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C14__8S20649C5[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(104,64),
  ABISELECT(104,64),
  (VTBL_ENTRY)&(_ZTI9S20649C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev),
};
extern void _ZN8S20649C2D1Ev();
extern void _ZN8S20649C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20649C2__8S20649C5[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C2[0]),
  (VTBL_ENTRY)&_ZN8S20649C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20649C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev)();
extern void _ZN9S20649C16D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev)();
extern void _ZN9S20649C16D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C16__8S20649C5[] = {
  ABISELECT(-104,-60),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void _ZN8S20649C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
extern void _ZN8S20649C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C79S20649C16__A1__8S20649C5[] = {
  ABISELECT(-104,-60),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C88S20649C79S20649C16__A3__8S20649C5[] = {
  ABISELECT(-104,-60),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C88S20649C79S20649C16__A3__8S20649C5[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C79S20649C16__A1__8S20649C5[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C16__8S20649C5[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S20649C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev)();
extern void _ZN9S20649C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev)();
extern void _ZN9S20649C17D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C17__8S20649C5[] = {
  ABISELECT(-144,-88),
  ABISELECT(-120,-72),
  ABISELECT(-32,-20),
  ABISELECT(-136,-84),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev)();
extern void _ZN9S20649C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev)();
extern void _ZN9S20649C18D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C189S20649C17__8S20649C5[] = {
  ABISELECT(-144,-88),
  ABISELECT(-120,-72),
  ABISELECT(-32,-20),
  ABISELECT(-136,-84),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void _ZN9S20649C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
extern void _ZN9S20649C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C129S20649C189S20649C17__A1__8S20649C5[] = {
  ABISELECT(-144,-88),
  ABISELECT(-120,-72),
  ABISELECT(-32,-20),
  ABISELECT(-136,-84),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void _ZN8S20649C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
extern void _ZN8S20649C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C69S20649C129S20649C189S20649C17__A2__8S20649C5[] = {
  ABISELECT(-120,-72),
  ABISELECT(-32,-20),
  ABISELECT(-136,-84),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__8S20649C69S20649C129S20649C189S20649C17__A2__8S20649C5[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(136,84),
  ABISELECT(136,84),
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C69S20649C129S20649C189S20649C17__A2__8S20649C5[] = {
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C129S20649C189S20649C17__A4__8S20649C5[] = {
  ABISELECT(-136,-80),
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C89S20649C129S20649C189S20649C17__A4__8S20649C5[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C129S20649C189S20649C17__A1__8S20649C5[] = {
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C129S20649C189S20649C17__A1__8S20649C5[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(136,84),
  ABISELECT(136,84),
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S20649C12D1Ev,_ZThn8_N9S20649C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S20649C12D0Ev,_ZThn8_N9S20649C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C8__A1__9S20649C129S20649C189S20649C17__A1__8S20649C5[] = {
  ABISELECT(-136,-80),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C189S20649C17__8S20649C5[] = {
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI9S20649C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C189S20649C17__8S20649C5[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(136,84),
  ABISELECT(136,84),
  (VTBL_ENTRY)&(_ZTI9S20649C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev)();
extern void ABISELECT(_ZThn16_N9S20649C18D1Ev,_ZThn8_N9S20649C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev)();
extern void ABISELECT(_ZThn16_N9S20649C18D0Ev,_ZThn8_N9S20649C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C12__A1__9S20649C189S20649C17__8S20649C5[] = {
  ABISELECT(-136,-80),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20649C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C17__8S20649C5[] = {
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI9S20649C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C17__8S20649C5[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(136,84),
  ABISELECT(136,84),
  (VTBL_ENTRY)&(_ZTI9S20649C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20649C17D1Ev,_ZThn8_N9S20649C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev)();
extern void ABISELECT(_ZThn16_N9S20649C17D0Ev,_ZThn8_N9S20649C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C129S20649C18__A1__9S20649C17__8S20649C5[] = {
  ABISELECT(-136,-80),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20649C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev)();
extern void _ZN9S20649C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev)();
extern void _ZN9S20649C19D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C19__8S20649C5[] = {
  ABISELECT(-184,-112),
  ABISELECT(-120,-72),
  ABISELECT(-176,-108),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(24,16),
  ABISELECT(-160,-96),
  ABISELECT(-72,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev)();
extern void _ZN9S20649C16D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev)();
extern void _ZN9S20649C16D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C169S20649C19__A1__8S20649C5[] = {
  ABISELECT(-160,-96),
  ABISELECT(-72,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void _ZN8S20649C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
extern void _ZN8S20649C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C79S20649C169S20649C19__A2__8S20649C5[] = {
  ABISELECT(-160,-96),
  ABISELECT(-72,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C88S20649C79S20649C169S20649C19__A5__8S20649C5[] = {
  ABISELECT(-160,-96),
  ABISELECT(-72,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C88S20649C79S20649C169S20649C19__A5__8S20649C5[] = {
  ABISELECT(72,44),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C79S20649C169S20649C19__A2__8S20649C5[] = {
  ABISELECT(72,44),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C169S20649C19__A1__8S20649C5[] = {
  ABISELECT(72,44),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI9S20649C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20649C14__9S20649C19__8S20649C5[] = {
  0,
  ABISELECT(-88,-52),
  0,
  ABISELECT(-104,-64),
  ABISELECT(72,44),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI9S20649C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev)();
extern void ABISELECT(_ZThn24_N9S20649C19D1Ev,_ZThn16_N9S20649C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev)();
extern void ABISELECT(_ZThn24_N9S20649C19D0Ev,_ZThn16_N9S20649C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C13__9S20649C19__8S20649C5[] = {
  ABISELECT(-208,-128),
  ABISELECT(-144,-88),
  ABISELECT(-200,-124),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-184,-112),
  ABISELECT(-96,-60),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20649C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__A1__9S20649C19__8S20649C5[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(176,108),
  ABISELECT(176,108),
  (VTBL_ENTRY)&(_ZTI9S20649C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20649C19D1Ev,_ZTv0_n16_N9S20649C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20649C19D0Ev,_ZTv0_n16_N9S20649C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C2__9S20649C19__8S20649C5[] = {
  ABISELECT(120,72),
  ABISELECT(-40,-24),
  ABISELECT(120,72),
  (VTBL_ENTRY)&(_ZTI9S20649C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C19D1Ev,_ZTv0_n16_N9S20649C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C19D0Ev,_ZTv0_n16_N9S20649C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev)();
extern void _ZN9S20649C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev)();
extern void _ZN9S20649C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C13__A1__8S20649C5[] = {
  ABISELECT(-208,-128),
  ABISELECT(-144,-88),
  ABISELECT(-200,-124),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-184,-112),
  ABISELECT(-96,-60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C13__A6__8S20649C5[] = {
  ABISELECT(-184,-112),
  ABISELECT(-96,-60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C89S20649C13__A6__8S20649C5[] = {
  ABISELECT(96,60),
  ABISELECT(96,60),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20649C14__9S20649C13__A1__8S20649C5[] = {
  0,
  ABISELECT(-88,-52),
  0,
  ABISELECT(-104,-64),
  ABISELECT(96,60),
  ABISELECT(96,60),
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C13__A1__8S20649C5[] = {
  ABISELECT(16,12),
  ABISELECT(104,64),
  ABISELECT(200,124),
  ABISELECT(200,124),
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20649C13D1Ev,_ZTv0_n16_N9S20649C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20649C13D0Ev,_ZTv0_n16_N9S20649C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C2__9S20649C13__A1__8S20649C5[] = {
  ABISELECT(144,88),
  ABISELECT(-40,-24),
  ABISELECT(144,88),
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C13D1Ev,_ZTv0_n16_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C13D0Ev,_ZTv0_n16_N9S20649C13D0Ev),
};
static  VTT_ENTRY vtt_S20649C5[] = {
  {&(_ZTV8S20649C5[18]),  18,146},
  {&(_ZTV8S20649C5[96]),  96,146},
  {&(_ZTV8S20649C5[25]),  25,146},
  {&(_ZTV8S20649C5[96]),  96,146},
  {&(_ZTV8S20649C5[43]),  43,146},
  {&(_ZTV8S20649C5[18]),  18,146},
  {&(_ZTV8S20649C5[80]),  80,146},
  {&(_ZTV8S20649C5[87]),  87,146},
  {&(_ZTV8S20649C5[55]),  55,146},
  {&(_ZTV8S20649C5[96]),  96,146},
  {&(_ZTV8S20649C5[71]),  71,146},
  {&(_ZTV8S20649C5[71]),  71,146},
  {&(_ZTV8S20649C5[103]),  103,146},
  {&(_ZTV8S20649C5[112]),  112,146},
  {&(_ZTV8S20649C5[119]),  119,146},
  {&(_ZTV8S20649C5[132]),  132,146},
  {&(_ZTV8S20649C5[144]),  144,146},
  {&(_tg__ZTV8S20649C6__8S20649C5[6]),  6,8},
  {&(_tg__ZTV8S20649C7__8S20649C6__8S20649C5[5]),  5,7},
  {&(_tg__ZTV8S20649C6__8S20649C5[6]),  6,8},
  {&(_tg__ZTV8S20649C7__8S20649C5[5]),  5,7},
  {&(_tg__ZTV8S20649C88S20649C7__8S20649C5[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C88S20649C7__8S20649C5[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20649C7__8S20649C5[3]),  3,5},
  {&(_tg__ZTV9S20649C10__8S20649C5[15]),  15,17},
  {&(_tg__ZTV9S20649C139S20649C10__8S20649C5[10]),  10,12},
  {&(_tg__ZTV8S20649C89S20649C139S20649C10__A2__8S20649C5[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C89S20649C139S20649C10__A2__8S20649C5[3]),  3,5},
  {&(_tg__ZTV9S20649C14__9S20649C139S20649C10__8S20649C5[7]),  7,9},
  {&(_tg__ZTV9S20649C14__9S20649C139S20649C10__8S20649C5[7]),  7,9},
  {&(_tg__ZTV8S20649C7__9S20649C139S20649C10__8S20649C5[5]),  5,7},
  {&(_tg__ZTV9S20649C14__9S20649C139S20649C10__8S20649C5[7]),  7,9},
  {&(_tg__ZTV8S20649C2__9S20649C139S20649C10__8S20649C5[4]),  4,6},
  {&(_tg__ZTV9S20649C159S20649C10__8S20649C5[14]),  14,16},
  {&(_tg__ZTV9S20649C14__9S20649C159S20649C10__8S20649C5[7]),  7,9},
  {&(_tg__ZTV9S20649C16__9S20649C159S20649C10__8S20649C5[5]),  5,7},
  {&(_tg__ZTV9S20649C17__9S20649C159S20649C10__8S20649C5[7]),  7,9},
  {&(_tg__ZTV8S20649C7__A1__9S20649C159S20649C10__8S20649C5[5]),  5,7},
  {&(_tg__ZTV8S20649C89S20649C129S20649C189S20649C17__A2__9S20649C159S20649C10__8S20649C5[5]),  5,7},
  {&(_tg__ZTV9S20649C19__9S20649C159S20649C10__8S20649C5[11]),  11,13},
  {&(_tg__ZTV9S20649C13__9S20649C159S20649C10__8S20649C5[10]),  10,12},
  {&(_tg__ZTV9S20649C14__9S20649C159S20649C10__8S20649C5[7]),  7,9},
  {&(_tg__ZTV9S20649C14__9S20649C159S20649C10__8S20649C5[7]),  7,9},
  {&(_tg__ZTV9S20649C159S20649C10__8S20649C5[14]),  14,16},
  {&(_tg__ZTV9S20649C11__9S20649C10__8S20649C5[8]),  8,10},
  {&(_tg__ZTV9S20649C12__9S20649C10__8S20649C5[7]),  7,9},
  {&(_tg__ZTV9S20649C14__9S20649C10__8S20649C5[7]),  7,9},
  {&(_tg__ZTV8S20649C7__9S20649C10__8S20649C5[5]),  5,7},
  {&(_tg__ZTV8S20649C89S20649C12__A1__9S20649C10__8S20649C5[5]),  5,7},
  {&(_tg__ZTV9S20649C13__A__9S20649C10__8S20649C5[10]),  10,12},
  {&(_tg__ZTV9S20649C14__9S20649C10__8S20649C5[7]),  7,9},
  {&(_tg__ZTV9S20649C14__9S20649C10__8S20649C5[7]),  7,9},
  {&(_tg__ZTV9S20649C15__9S20649C10__8S20649C5[14]),  14,16},
  {&(_tg__ZTV9S20649C15__9S20649C10__8S20649C5[14]),  14,16},
  {&(_tg__ZTV9S20649C16__9S20649C10__8S20649C5[5]),  5,7},
  {&(_tg__ZTV9S20649C17__9S20649C10__8S20649C5[7]),  7,9},
  {&(_tg__ZTV8S20649C89S20649C129S20649C189S20649C17__A4__9S20649C10__8S20649C5[5]),  5,7},
  {&(_tg__ZTV9S20649C19__9S20649C10__8S20649C5[11]),  11,13},
  {&(_tg__ZTV9S20649C13__A1__9S20649C10__8S20649C5[10]),  10,12},
  {&(_tg__ZTV9S20649C11__8S20649C5[8]),  8,10},
  {&(_tg__ZTV9S20649C12__9S20649C11__8S20649C5[7]),  7,9},
  {&(_tg__ZTV10S7883C3_nt__9S20649C11__8S20649C5[3]),  3,5},
  {&(_tg__ZTV8S20649C7__9S20649C11__8S20649C5[5]),  5,7},
  {&(_tg__ZTV8S20649C89S20649C12__A1__9S20649C11__8S20649C5[5]),  5,7},
  {&(_tg__ZTV9S20649C12__8S20649C5[7]),  7,9},
  {&(_tg__ZTV8S20649C69S20649C12__A1__8S20649C5[6]),  6,8},
  {&(_tg__ZTV8S20649C7__8S20649C69S20649C12__A1__8S20649C5[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C69S20649C12__A1__8S20649C5[3]),  3,5},
  {&(_tg__ZTV8S20649C89S20649C12__A1__8S20649C5[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C89S20649C12__A1__8S20649C5[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20649C12__8S20649C5[3]),  3,5},
  {&(_tg__ZTV8S20649C7__9S20649C12__8S20649C5[5]),  5,7},
  {&(_tg__ZTV8S20649C8__A1__9S20649C12__8S20649C5[5]),  5,7},
  {&(_tg__ZTV9S20649C14__8S20649C5[7]),  7,9},
  {&(_tg__ZTV9S20649C14__8S20649C5[7]),  7,9},
  {&(_tg__ZTV8S20649C7__9S20649C14__8S20649C5[5]),  5,7},
  {&(_tg__ZTV9S20649C14__8S20649C5[7]),  7,9},
  {&(_tg__ZTV8S20649C2__8S20649C5[3]),  3,5},
  {&(_tg__ZTV9S20649C16__8S20649C5[5]),  5,7},
  {&(_tg__ZTV8S20649C79S20649C16__A1__8S20649C5[5]),  5,7},
  {&(_tg__ZTV8S20649C88S20649C79S20649C16__A3__8S20649C5[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C88S20649C79S20649C16__A3__8S20649C5[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20649C79S20649C16__A1__8S20649C5[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20649C16__8S20649C5[3]),  3,5},
  {&(_tg__ZTV9S20649C17__8S20649C5[7]),  7,9},
  {&(_tg__ZTV9S20649C189S20649C17__8S20649C5[7]),  7,9},
  {&(_tg__ZTV9S20649C129S20649C189S20649C17__A1__8S20649C5[7]),  7,9},
  {&(_tg__ZTV8S20649C69S20649C129S20649C189S20649C17__A2__8S20649C5[6]),  6,8},
  {&(_tg__ZTV8S20649C7__8S20649C69S20649C129S20649C189S20649C17__A2__8S20649C5[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C69S20649C129S20649C189S20649C17__A2__8S20649C5[3]),  3,5},
  {&(_tg__ZTV8S20649C89S20649C129S20649C189S20649C17__A4__8S20649C5[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C89S20649C129S20649C189S20649C17__A4__8S20649C5[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20649C129S20649C189S20649C17__A1__8S20649C5[3]),  3,5},
  {&(_tg__ZTV8S20649C7__9S20649C129S20649C189S20649C17__A1__8S20649C5[5]),  5,7},
  {&(_tg__ZTV8S20649C8__A1__9S20649C129S20649C189S20649C17__A1__8S20649C5[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__9S20649C189S20649C17__8S20649C5[3]),  3,5},
  {&(_tg__ZTV8S20649C7__9S20649C189S20649C17__8S20649C5[5]),  5,7},
  {&(_tg__ZTV8S20649C89S20649C12__A1__9S20649C189S20649C17__8S20649C5[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__9S20649C17__8S20649C5[3]),  3,5},
  {&(_tg__ZTV8S20649C7__9S20649C17__8S20649C5[5]),  5,7},
  {&(_tg__ZTV8S20649C89S20649C129S20649C18__A1__9S20649C17__8S20649C5[5]),  5,7},
  {&(_tg__ZTV9S20649C19__8S20649C5[11]),  11,13},
  {&(_tg__ZTV9S20649C169S20649C19__A1__8S20649C5[5]),  5,7},
  {&(_tg__ZTV8S20649C79S20649C169S20649C19__A2__8S20649C5[5]),  5,7},
  {&(_tg__ZTV8S20649C88S20649C79S20649C169S20649C19__A5__8S20649C5[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C88S20649C79S20649C169S20649C19__A5__8S20649C5[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20649C79S20649C169S20649C19__A2__8S20649C5[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20649C169S20649C19__A1__8S20649C5[3]),  3,5},
  {&(_tg__ZTV9S20649C14__9S20649C19__8S20649C5[7]),  7,9},
  {&(_tg__ZTV9S20649C13__9S20649C19__8S20649C5[10]),  10,12},
  {&(_tg__ZTV9S20649C14__9S20649C19__8S20649C5[7]),  7,9},
  {&(_tg__ZTV9S20649C14__9S20649C19__8S20649C5[7]),  7,9},
  {&(_tg__ZTV8S20649C7__A1__9S20649C19__8S20649C5[5]),  5,7},
  {&(_tg__ZTV8S20649C2__9S20649C19__8S20649C5[4]),  4,6},
  {&(_tg__ZTV9S20649C13__A1__8S20649C5[10]),  10,12},
  {&(_tg__ZTV8S20649C89S20649C13__A6__8S20649C5[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C89S20649C13__A6__8S20649C5[3]),  3,5},
  {&(_tg__ZTV9S20649C14__9S20649C13__A1__8S20649C5[7]),  7,9},
  {&(_tg__ZTV9S20649C14__9S20649C13__A1__8S20649C5[7]),  7,9},
  {&(_tg__ZTV8S20649C7__9S20649C13__A1__8S20649C5[5]),  5,7},
  {&(_tg__ZTV9S20649C14__9S20649C13__A1__8S20649C5[7]),  7,9},
  {&(_tg__ZTV8S20649C2__9S20649C13__A1__8S20649C5[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20649C5[];
extern  VTBL_ENTRY _ZTV8S20649C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C5[];
static VTBL_ENTRY alt_thunk_names77[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20649C19D0Ev,_ZThn16_N9S20649C19D0Ev),
  (VTBL_ENTRY)_ZN9S20649C19D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20649C19D1Ev,_ZThn16_N9S20649C19D1Ev),
  (VTBL_ENTRY)_ZN9S20649C19D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C18D0Ev,_ZThn8_N9S20649C18D0Ev),
  (VTBL_ENTRY)_ZN9S20649C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C18D1Ev,_ZThn8_N9S20649C18D1Ev),
  (VTBL_ENTRY)_ZN9S20649C18D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C17D0Ev,_ZThn8_N9S20649C17D0Ev),
  (VTBL_ENTRY)_ZN9S20649C17D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C17D1Ev,_ZThn8_N9S20649C17D1Ev),
  (VTBL_ENTRY)_ZN9S20649C17D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev), // 
  (VTBL_ENTRY)_ZN9S20649C16D0Ev,
  (VTBL_ENTRY)_ZN9S20649C16D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev), // 
  (VTBL_ENTRY)_ZN9S20649C16D1Ev,
  (VTBL_ENTRY)_ZN9S20649C16D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev), // 
  (VTBL_ENTRY)_ZN9S20649C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev), // 
  (VTBL_ENTRY)_ZN9S20649C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C12D0Ev,_ZThn8_N9S20649C12D0Ev),
  (VTBL_ENTRY)_ZN9S20649C12D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C12D0Ev,_ZThn8_N9S20649C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20649C12D0Ev,_ZThn16_N9S20649C12D0Ev),
  (VTBL_ENTRY)_ZN9S20649C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C12D1Ev,_ZThn8_N9S20649C12D1Ev),
  (VTBL_ENTRY)_ZN9S20649C12D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C12D1Ev,_ZThn8_N9S20649C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20649C12D1Ev,_ZThn16_N9S20649C12D1Ev),
  (VTBL_ENTRY)_ZN9S20649C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20649C11D0Ev,_ZThn60_N9S20649C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20649C11D0Ev,_ZThn4_N9S20649C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20649C11D0Ev,_ZThn68_N9S20649C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20649C11D0Ev,_ZThn52_N9S20649C11D0Ev),
  (VTBL_ENTRY)_ZN9S20649C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20649C11D1Ev,_ZThn60_N9S20649C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20649C11D1Ev,_ZThn4_N9S20649C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20649C11D1Ev,_ZThn68_N9S20649C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20649C11D1Ev,_ZThn52_N9S20649C11D1Ev),
  (VTBL_ENTRY)_ZN9S20649C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20649C10D0Ev,_ZTv0_n16_N9S20649C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20649C10D0Ev,_ZThn20_N9S20649C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20649C10D1Ev,_ZTv0_n16_N9S20649C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20649C10D1Ev,_ZThn20_N9S20649C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20649C10D0Ev,_ZThn108_N9S20649C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20649C10D0Ev,_ZThn92_N9S20649C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20649C10D0Ev,_ZThn76_N9S20649C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20649C10D0Ev,_ZThn68_N9S20649C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20649C10D0Ev,_ZThn56_N9S20649C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20649C10D0Ev,_ZThn4_N9S20649C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20649C10D0Ev,_ZThn40_N9S20649C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20649C10D0Ev,_ZThn48_N9S20649C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20649C10D0Ev,_ZThn32_N9S20649C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20649C10D1Ev,_ZThn108_N9S20649C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20649C10D1Ev,_ZThn92_N9S20649C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20649C10D1Ev,_ZThn76_N9S20649C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20649C10D1Ev,_ZThn68_N9S20649C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20649C10D1Ev,_ZThn56_N9S20649C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20649C10D1Ev,_ZThn4_N9S20649C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20649C10D1Ev,_ZThn40_N9S20649C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20649C10D1Ev,_ZThn48_N9S20649C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20649C10D1Ev,_ZThn32_N9S20649C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S20649C15D0Ev,_ZThn88_N9S20649C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20649C15D0Ev,_ZThn72_N9S20649C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20649C15D0Ev,_ZThn56_N9S20649C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20649C15D0Ev,_ZThn48_N9S20649C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20649C15D0Ev,_ZThn36_N9S20649C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20649C15D0Ev,_ZThn28_N9S20649C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S20649C15D1Ev,_ZThn88_N9S20649C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20649C15D1Ev,_ZThn72_N9S20649C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20649C15D1Ev,_ZThn56_N9S20649C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20649C15D1Ev,_ZThn48_N9S20649C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20649C15D1Ev,_ZThn36_N9S20649C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20649C15D1Ev,_ZThn28_N9S20649C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20649C15D0Ev,_ZTv0_n16_N9S20649C15D0Ev), // 
  (VTBL_ENTRY)_ZN9S20649C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20649C15D1Ev,_ZTv0_n16_N9S20649C15D1Ev), // 
  (VTBL_ENTRY)_ZN9S20649C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20649C13D0Ev,_ZTv0_n16_N9S20649C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20649C13D0Ev,_ZThn16_N9S20649C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20649C13D1Ev,_ZTv0_n16_N9S20649C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20649C13D1Ev,_ZThn16_N9S20649C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S20649C13D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20649C13D0Ev,_ZThn44_N9S20649C13D0Ev),
  (VTBL_ENTRY)_ZN9S20649C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S20649C13D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20649C13D1Ev,_ZThn44_N9S20649C13D1Ev),
  (VTBL_ENTRY)_ZN9S20649C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20649C8D0Ev,_ZThn8_N8S20649C8D0Ev),
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20649C8D0Ev,_ZThn44_N8S20649C8D0Ev),
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S20649C8D0Ev,_ZThn64_N8S20649C8D0Ev),
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20649C8D1Ev,_ZThn8_N8S20649C8D1Ev),
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20649C8D1Ev,_ZThn44_N8S20649C8D1Ev),
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S20649C8D1Ev,_ZThn64_N8S20649C8D1Ev),
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S20649C7D0Ev,
  (VTBL_ENTRY)_ZN8S20649C7D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S20649C7D0Ev,_ZThn64_N8S20649C7D0Ev),
  (VTBL_ENTRY)_ZN8S20649C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S20649C7D1Ev,
  (VTBL_ENTRY)_ZN8S20649C7D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S20649C7D1Ev,_ZThn64_N8S20649C7D1Ev),
  (VTBL_ENTRY)_ZN8S20649C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev), // 
  (VTBL_ENTRY)_ZN8S20649C6D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20649C6D0Ev,_ZThn16_N8S20649C6D0Ev),
  (VTBL_ENTRY)_ZN8S20649C6D0Ev,
  (VTBL_ENTRY)_ZN8S20649C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev), // 
  (VTBL_ENTRY)_ZN8S20649C6D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20649C6D1Ev,_ZThn16_N8S20649C6D1Ev),
  (VTBL_ENTRY)_ZN8S20649C6D1Ev,
  (VTBL_ENTRY)_ZN8S20649C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20649C5D0Ev,_ZTv0_n16_N8S20649C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20649C5D0Ev,_ZThn40_N8S20649C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20649C5D1Ev,_ZTv0_n16_N8S20649C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20649C5D1Ev,_ZThn40_N8S20649C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20649C5D0Ev,_ZTv0_n64_N8S20649C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20649C5D0Ev,_ZThn20_N8S20649C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20649C5D1Ev,_ZTv0_n64_N8S20649C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20649C5D1Ev,_ZThn20_N8S20649C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20649C5D0Ev,_ZThn128_N8S20649C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S20649C5D0Ev,_ZThn112_N8S20649C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20649C5D0Ev,_ZThn96_N8S20649C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20649C5D0Ev,_ZThn88_N8S20649C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20649C5D0Ev,_ZThn76_N8S20649C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20649C5D0Ev,_ZThn68_N8S20649C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20649C5D0Ev,_ZThn60_N8S20649C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20649C5D0Ev,_ZThn52_N8S20649C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20649C5D0Ev,_ZThn24_N8S20649C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20649C5D0Ev,_ZThn4_N8S20649C5D0Ev),
  (VTBL_ENTRY)_ZN8S20649C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20649C5D1Ev,_ZThn128_N8S20649C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S20649C5D1Ev,_ZThn112_N8S20649C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20649C5D1Ev,_ZThn96_N8S20649C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20649C5D1Ev,_ZThn88_N8S20649C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20649C5D1Ev,_ZThn76_N8S20649C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20649C5D1Ev,_ZThn68_N8S20649C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20649C5D1Ev,_ZThn60_N8S20649C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20649C5D1Ev,_ZThn52_N8S20649C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20649C5D1Ev,_ZThn24_N8S20649C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20649C5D1Ev,_ZThn4_N8S20649C5D1Ev),
  (VTBL_ENTRY)_ZN8S20649C5D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20649C5 = {  "S20649C5", // class name
  bases_S20649C5, 45,
  &(vtc_S20649C5[0]), // expected_vtbl_contents
  &(vtt_S20649C5[0]), // expected_vtt_contents
  ABISELECT(232,144), // object size
  NSPAIRA(_ZTI8S20649C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20649C5),146, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20649C5),122, //virtual table table var
  29, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names77,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20649C1  : virtual S20649C2 , virtual S4677C37 , virtual S20649C5 , S7883C3_nt , S20649C16 {
  ::S20649C12 s20649c1f0;
  virtual  ~S20649C1(); // _ZN8S20649C1D2Ev
  S20649C1(); // tgen
};
//SIG(1 S20649C1) C1{ VBC2{ VBC3{ m Fi} vd} VBC4{ m} VBC5{ VBC6{ VBC7{ BC8{ VBC9{ vd m} VBC3 BC4 Fi} Fi} BC4} VBC10{ BC9 VBC11{ VBC12{ VBC9 BC3 BC6 VBC4 BC8 vd} vd} BC13{ VBC3 VBC14{ VBC6 FC3} VBC2 VBC4 BC8 vd Fi Fp} BC15{ VBC9 VBC16{ BC7} VBC17{ BC18{ BC12 BC3 vd Fi} vd} VBC19{ BC16 VBC13 vd Fi} vd Fi} vd Fi} VBC20{ m}} BC9 BC16 vd FC12}


 S20649C1 ::~S20649C1(){ note_dtor("S20649C1", this);}
S20649C1 ::S20649C1(){ note_ctor("S20649C1", this);} // tgen

static void Test_S20649C1()
{
  extern Class_Descriptor cd_S20649C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,50)];
    init_test(&cd_S20649C1, buf);
    S20649C1 *dp, &lv = *(dp=new (buf) S20649C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,196), "sizeof(S20649C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20649C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S20649C2*), ABISELECT(80,52), "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C7*), ABISELECT(80,52), "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C12 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C12*), ABISELECT(80,52), "S20649C1");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C13*)(S20649C10*), ABISELECT(80,52), "S20649C1");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C13*)(S20649C10*), ABISELECT(80,52), "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C16 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C7*)(S20649C16*), ABISELECT(80,52), "S20649C1");
    /*is_ambiguous_... S20649C12::S20649C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(80,52), "S20649C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C7*)(S20649C16*)(S20649C19*), ABISELECT(80,52), "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C13 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C13*), ABISELECT(80,52), "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C13 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C13*), ABISELECT(80,52), "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C16 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C8*)(S20649C7*)(S20649C16*), ABISELECT(80,52), "S20649C1");
    check_base_class_offset(lv, (S20649C2*), ABISELECT(144,92), "S20649C1");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S20649C2*)(S20649C13*)(S20649C10*), ABISELECT(144,92), "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C13 */ AMB_check_base_class_offset(lv, (S20649C2*)(S20649C13*), ABISELECT(144,92), "S20649C1");
    /*is_ambiguous_... S20649C1::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*), 0, "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C12 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C12*), 0, "S20649C1");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C13*)(S20649C10*), 0, "S20649C1");
    /*is_ambiguous_... S20649C12::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C12*)(S20649C18*)(S20649C17*), 0, "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C13 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C13*), 0, "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C7 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C7*), ABISELECT(192,120), "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C12 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C12*), ABISELECT(192,120), "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C12 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C12*), ABISELECT(192,120), "S20649C1");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C13*)(S20649C10*), ABISELECT(192,120), "S20649C1");
    check_base_class_offset(lv, (S7883C3_nt*)(S20649C15*)(S20649C10*), ABISELECT(192,120), "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C16 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C7*)(S20649C16*), ABISELECT(192,120), "S20649C1");
    check_base_class_offset(lv, (S7883C3_nt*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(192,120), "S20649C1");
    /*is_ambiguous_... S20649C12::S20649C8 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(192,120), "S20649C1");
    check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C7*)(S20649C16*)(S20649C19*), ABISELECT(192,120), "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C13 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C13*), ABISELECT(192,120), "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C16 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C8*)(S20649C7*)(S20649C16*), ABISELECT(192,120), "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C7 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C7*), ABISELECT(96,60), "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C7 */ AMB_check_base_class_offset(lv, (S20649C8*)(S20649C7*), ABISELECT(96,60), "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C6 */ AMB_check_base_class_offset(lv, (S20649C7*)(S20649C6*), ABISELECT(96,60), "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C12 */ AMB_check_base_class_offset(lv, (S20649C7*)(S20649C6*)(S20649C12*), ABISELECT(96,60), "S20649C1");
    check_base_class_offset(lv, (S20649C7*)(S20649C6*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(96,60), "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C6 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C6*), ABISELECT(192,120), "S20649C1");
    /*is_ambiguous_... S20649C5::S20649C6 */ AMB_check_base_class_offset(lv, (S20649C6*)(S20649C5*), ABISELECT(192,120), "S20649C1");
    check_base_class_offset(lv, (S20649C6*)(S20649C14*), ABISELECT(192,120), "S20649C1");
    /*is_ambiguous_... S20649C10::S7883C3_nt */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20649C10*), ABISELECT(112,72), "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C12 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C12*), ABISELECT(168,108), "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C12 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C6*)(S20649C12*), ABISELECT(160,104), "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C12 */ AMB_check_base_class_offset(lv, (S20649C6*)(S20649C12*), ABISELECT(160,104), "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C12 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C12*), ABISELECT(176,112), "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C12 */ AMB_check_base_class_offset(lv, (S20649C8*)(S20649C12*), ABISELECT(176,112), "S20649C1");
    check_base_class_offset(lv, (S20649C12*)(S20649C11*), ABISELECT(160,104), "S20649C1");
    check_base_class_offset(lv, (S20649C11*)(S20649C10*), ABISELECT(88,56), "S20649C1");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S20649C14*)(S20649C13*)(S20649C10*), ABISELECT(192,120), "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C13 */ AMB_check_base_class_offset(lv, (S20649C14*)(S20649C13*), ABISELECT(192,120), "S20649C1");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C13*)(S20649C10*), ABISELECT(120,76), "S20649C1");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S20649C8*)(S20649C13*)(S20649C10*), ABISELECT(120,76), "S20649C1");
    /*is_ambiguous_... S20649C10::S20649C13 */ AMB_check_base_class_offset(lv, (S20649C13*)(S20649C10*), ABISELECT(120,76), "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C16 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C7*)(S20649C16*), ABISELECT(208,128), "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C16 */ AMB_check_base_class_offset(lv, (S20649C8*)(S20649C7*)(S20649C16*), ABISELECT(208,128), "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C16 */ AMB_check_base_class_offset(lv, (S20649C7*)(S20649C16*), ABISELECT(208,128), "S20649C1");
    /*is_ambiguous_... S20649C15::S20649C16 */ AMB_check_base_class_offset(lv, (S20649C16*)(S20649C15*)(S20649C10*), ABISELECT(208,128), "S20649C1");
    /*is_ambiguous_... S20649C12::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(232,144), "S20649C1");
    /*is_ambiguous_... S20649C6::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C6*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(224,140), "S20649C1");
    check_base_class_offset(lv, (S20649C6*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(224,140), "S20649C1");
    /*is_ambiguous_... S20649C12::S20649C8 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(240,148), "S20649C1");
    /*is_ambiguous_... S20649C12::S20649C8 */ AMB_check_base_class_offset(lv, (S20649C8*)(S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(240,148), "S20649C1");
    check_base_class_offset(lv, (S20649C12*)(S20649C18*)(S20649C17*), ABISELECT(224,140), "S20649C1");
    /*is_ambiguous_... S20649C18::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20649C18*)(S20649C17*), ABISELECT(252,156), "S20649C1");
    check_base_class_offset(lv, (S20649C18*)(S20649C17*), ABISELECT(224,140), "S20649C1");
    check_base_class_offset(lv, (S20649C17*)(S20649C15*)(S20649C10*), ABISELECT(224,140), "S20649C1");
    check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C7*)(S20649C16*)(S20649C19*), ABISELECT(264,164), "S20649C1");
    check_base_class_offset(lv, (S20649C8*)(S20649C7*)(S20649C16*)(S20649C19*), ABISELECT(264,164), "S20649C1");
    check_base_class_offset(lv, (S20649C7*)(S20649C16*)(S20649C19*), ABISELECT(264,164), "S20649C1");
    check_base_class_offset(lv, (S20649C16*)(S20649C19*), ABISELECT(264,164), "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C13 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C13*), ABISELECT(288,180), "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C13 */ AMB_check_base_class_offset(lv, (S20649C8*)(S20649C13*), ABISELECT(288,180), "S20649C1");
    check_base_class_offset(lv, (S20649C13*)(S20649C19*), ABISELECT(288,180), "S20649C1");
    check_base_class_offset(lv, (S20649C19*)(S20649C15*)(S20649C10*), ABISELECT(264,164), "S20649C1");
    check_base_class_offset(lv, (S20649C15*)(S20649C10*), ABISELECT(144,92), "S20649C1");
    check_base_class_offset(lv, (S20649C10*)(S20649C5*), ABISELECT(112,72), "S20649C1");
    check_base_class_offset(lv, (S4677C27*)(S20649C5*), 0, "S20649C1");
    check_base_class_offset(lv, (S20649C5*), ABISELECT(88,56), "S20649C1");
    /*is_ambiguous_... S20649C1::S7883C3_nt */ AMB_check_base_class_offset(lv, (S7883C3_nt*), 0, "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C16 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20649C8*)(S20649C7*)(S20649C16*), ABISELECT(8,4), "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C16 */ AMB_check_base_class_offset(lv, (S20649C8*)(S20649C7*)(S20649C16*), ABISELECT(8,4), "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C16 */ AMB_check_base_class_offset(lv, (S20649C7*)(S20649C16*), ABISELECT(8,4), "S20649C1");
    /*is_ambiguous_... S20649C1::S20649C16 */ AMB_check_base_class_offset(lv, (S20649C16*), ABISELECT(8,4), "S20649C1");
    check_field_offset(lv, s20649c1f0, ABISELECT(24,16), "S20649C1.s20649c1f0");
    test_class_info(&lv, &cd_S20649C1);
    dp->~S20649C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20649C1(Test_S20649C1, "S20649C1", ABISELECT(312,196));

#else // __cplusplus

extern void _ZN8S20649C1C1Ev();
extern void _ZN8S20649C1D2Ev();
Name_Map name_map_S20649C1[] = {
  NSPAIR(_ZN8S20649C1C1Ev),
  NSPAIR(_ZN8S20649C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20649C2;
extern VTBL_ENTRY _ZTI8S20649C2[];
extern  VTBL_ENTRY _ZTV8S20649C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C2[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C7;
extern VTBL_ENTRY _ZTI8S20649C7[];
extern  VTBL_ENTRY _ZTV8S20649C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C7[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C6;
extern VTBL_ENTRY _ZTI8S20649C6[];
extern  VTBL_ENTRY _ZTV8S20649C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C6[];
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C6;
extern VTBL_ENTRY _ZTI8S20649C6[];
extern  VTBL_ENTRY _ZTV8S20649C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C12;
extern VTBL_ENTRY _ZTI9S20649C12[];
extern  VTBL_ENTRY _ZTV9S20649C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C12[];
extern Class_Descriptor cd_S20649C11;
extern VTBL_ENTRY _ZTI9S20649C11[];
extern  VTBL_ENTRY _ZTV9S20649C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C11[];
extern Class_Descriptor cd_S20649C14;
extern VTBL_ENTRY _ZTI9S20649C14[];
extern  VTBL_ENTRY _ZTV9S20649C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C14[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C13;
extern VTBL_ENTRY _ZTI9S20649C13[];
extern  VTBL_ENTRY _ZTV9S20649C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C13[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C7;
extern VTBL_ENTRY _ZTI8S20649C7[];
extern  VTBL_ENTRY _ZTV8S20649C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C7[];
extern Class_Descriptor cd_S20649C16;
extern VTBL_ENTRY _ZTI9S20649C16[];
extern  VTBL_ENTRY _ZTV9S20649C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C16[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C6;
extern VTBL_ENTRY _ZTI8S20649C6[];
extern  VTBL_ENTRY _ZTV8S20649C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C12;
extern VTBL_ENTRY _ZTI9S20649C12[];
extern  VTBL_ENTRY _ZTV9S20649C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C12[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20649C18;
extern VTBL_ENTRY _ZTI9S20649C18[];
extern  VTBL_ENTRY _ZTV9S20649C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C18[];
extern Class_Descriptor cd_S20649C17;
extern VTBL_ENTRY _ZTI9S20649C17[];
extern  VTBL_ENTRY _ZTV9S20649C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C17[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C7;
extern VTBL_ENTRY _ZTI8S20649C7[];
extern  VTBL_ENTRY _ZTV8S20649C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C7[];
extern Class_Descriptor cd_S20649C16;
extern VTBL_ENTRY _ZTI9S20649C16[];
extern  VTBL_ENTRY _ZTV9S20649C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C16[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C13;
extern VTBL_ENTRY _ZTI9S20649C13[];
extern  VTBL_ENTRY _ZTV9S20649C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C13[];
extern Class_Descriptor cd_S20649C19;
extern VTBL_ENTRY _ZTI9S20649C19[];
extern  VTBL_ENTRY _ZTV9S20649C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C19[];
extern Class_Descriptor cd_S20649C15;
extern VTBL_ENTRY _ZTI9S20649C15[];
extern  VTBL_ENTRY _ZTV9S20649C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C15[];
extern Class_Descriptor cd_S20649C10;
extern VTBL_ENTRY _ZTI9S20649C10[];
extern  VTBL_ENTRY _ZTV9S20649C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C10[];
extern Class_Descriptor cd_S4677C27;
extern VTBL_ENTRY _ZTI8S4677C27[];
extern Class_Descriptor cd_S20649C5;
extern VTBL_ENTRY _ZTI8S20649C5[];
extern  VTBL_ENTRY _ZTV8S20649C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C5[];
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20649C8;
extern VTBL_ENTRY _ZTI8S20649C8[];
extern  VTBL_ENTRY _ZTV8S20649C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C8[];
extern Class_Descriptor cd_S20649C7;
extern VTBL_ENTRY _ZTI8S20649C7[];
extern  VTBL_ENTRY _ZTV8S20649C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C7[];
extern Class_Descriptor cd_S20649C16;
extern VTBL_ENTRY _ZTI9S20649C16[];
extern  VTBL_ENTRY _ZTV9S20649C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20649C16[];
static Base_Class bases_S20649C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20649C2,    ABISELECT(144,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7883C3_nt,    ABISELECT(192,120), //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
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    5, //immediately_derived
  0, 0},
  {&cd_S20649C8,    ABISELECT(96,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20649C7,    ABISELECT(96,60), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(192,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20649C6,    ABISELECT(192,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S7883C3_nt,    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
    25, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    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
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S4677C37,    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
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20649C6,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S4677C37,    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
    14, //immediately_derived
  0, 0},
  {&cd_S20649C8,    ABISELECT(176,112), //bcp->offset
    109, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20649C12,    ABISELECT(160,104), //bcp->offset
    100, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20649C11,    ABISELECT(88,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    43, //immediately_derived
  0, 1},
  {&cd_S20649C14,    ABISELECT(192,120), //bcp->offset
    116, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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, 0},
  {&cd_S20649C8,    ABISELECT(120,76), //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
    26, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20649C13,    ABISELECT(120,76), //bcp->offset
    72, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(208,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20649C8,    ABISELECT(208,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20649C7,    ABISELECT(208,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20649C16,    ABISELECT(208,128), //bcp->offset
    125, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    104, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(232,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
    30, //immediately_derived
  0, 0},
  {&cd_S4677C37,    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
    27, //immediately_derived
  0, 0},
  {&cd_S20649C6,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(240,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20649C8,    ABISELECT(240,148), //bcp->offset
    141, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20649C12,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    112, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(252,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
    32, //immediately_derived
  0, 0},
  {&cd_S20649C18,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    111, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20649C17,    ABISELECT(224,140), //bcp->offset
    132, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    110, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(264,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
    35, //immediately_derived
  0, 0},
  {&cd_S20649C8,    ABISELECT(264,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    130, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20649C7,    ABISELECT(264,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    129, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20649C16,    ABISELECT(264,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    128, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S4677C37,    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
    39, //immediately_derived
  0, 0},
  {&cd_S20649C8,    ABISELECT(288,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    141, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20649C13,    ABISELECT(288,180), //bcp->offset
    161, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    140, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S20649C19,    ABISELECT(264,164), //bcp->offset
    148, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    127, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S20649C15,    ABISELECT(144,92), //bcp->offset
    84, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S20649C10,    ABISELECT(112,72), //bcp->offset
    54, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S4677C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S20649C5,    ABISELECT(88,56), //bcp->offset
    27, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {&cd_S4677C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S20649C8,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S20649C7,    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
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S20649C16,    ABISELECT(8,4), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20649C1[];
extern void _ZN8S20649C1D1Ev();
extern void _ZN8S20649C1D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20649C1D1Ev,_ZTv0_n12_N8S20649C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S20649C1D1Ev,_ZThn4_N8S20649C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C1D0Ev,_ZTv0_n12_N8S20649C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S20649C1D0Ev,_ZThn4_N8S20649C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C1D1Ev,_ZTv0_n12_N8S20649C1D1Ev)();
extern void ABISELECT(_ZThn88_N8S20649C1D1Ev,_ZThn56_N8S20649C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C1D0Ev,_ZTv0_n12_N8S20649C1D0Ev)();
extern void ABISELECT(_ZThn88_N8S20649C1D0Ev,_ZThn56_N8S20649C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C1D1Ev,_ZTv0_n12_N8S20649C1D1Ev)();
extern void ABISELECT(_ZThn96_N8S20649C1D1Ev,_ZThn60_N8S20649C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C1D0Ev,_ZTv0_n12_N8S20649C1D0Ev)();
extern void ABISELECT(_ZThn96_N8S20649C1D0Ev,_ZThn60_N8S20649C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S20649C1D1Ev,_ZTv0_n64_N8S20649C1D1Ev)();
extern void ABISELECT(_ZThn112_N8S20649C1D1Ev,_ZThn72_N8S20649C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S20649C1D0Ev,_ZTv0_n64_N8S20649C1D0Ev)();
extern void ABISELECT(_ZThn112_N8S20649C1D0Ev,_ZThn72_N8S20649C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C1D1Ev,_ZTv0_n12_N8S20649C1D1Ev)();
extern void ABISELECT(_ZThn120_N8S20649C1D1Ev,_ZThn76_N8S20649C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C1D0Ev,_ZTv0_n12_N8S20649C1D0Ev)();
extern void ABISELECT(_ZThn120_N8S20649C1D0Ev,_ZThn76_N8S20649C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20649C1D1Ev,_ZTv0_n16_N8S20649C1D1Ev)();
extern void ABISELECT(_ZThn144_N8S20649C1D1Ev,_ZThn92_N8S20649C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20649C1D0Ev,_ZTv0_n16_N8S20649C1D0Ev)();
extern void ABISELECT(_ZThn144_N8S20649C1D0Ev,_ZThn92_N8S20649C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C1D1Ev,_ZTv0_n12_N8S20649C1D1Ev)();
extern void ABISELECT(_ZThn160_N8S20649C1D1Ev,_ZThn104_N8S20649C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C1D0Ev,_ZTv0_n12_N8S20649C1D0Ev)();
extern void ABISELECT(_ZThn160_N8S20649C1D0Ev,_ZThn104_N8S20649C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C1D1Ev,_ZTv0_n12_N8S20649C1D1Ev)();
extern void ABISELECT(_ZThn176_N8S20649C1D1Ev,_ZThn112_N8S20649C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C1D0Ev,_ZTv0_n12_N8S20649C1D0Ev)();
extern void ABISELECT(_ZThn176_N8S20649C1D0Ev,_ZThn112_N8S20649C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C1D1Ev,_ZTv0_n12_N8S20649C1D1Ev)();
extern void ABISELECT(_ZThn192_N8S20649C1D1Ev,_ZThn120_N8S20649C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C1D0Ev,_ZTv0_n12_N8S20649C1D0Ev)();
extern void ABISELECT(_ZThn192_N8S20649C1D0Ev,_ZThn120_N8S20649C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C1D1Ev,_ZTv0_n12_N8S20649C1D1Ev)();
extern void ABISELECT(_ZThn208_N8S20649C1D1Ev,_ZThn128_N8S20649C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C1D0Ev,_ZTv0_n12_N8S20649C1D0Ev)();
extern void ABISELECT(_ZThn208_N8S20649C1D0Ev,_ZThn128_N8S20649C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C1D1Ev,_ZTv0_n12_N8S20649C1D1Ev)();
extern void ABISELECT(_ZThn224_N8S20649C1D1Ev,_ZThn140_N8S20649C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C1D0Ev,_ZTv0_n12_N8S20649C1D0Ev)();
extern void ABISELECT(_ZThn224_N8S20649C1D0Ev,_ZThn140_N8S20649C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C1D1Ev,_ZTv0_n12_N8S20649C1D1Ev)();
extern void ABISELECT(_ZThn240_N8S20649C1D1Ev,_ZThn148_N8S20649C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C1D0Ev,_ZTv0_n12_N8S20649C1D0Ev)();
extern void ABISELECT(_ZThn240_N8S20649C1D0Ev,_ZThn148_N8S20649C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C1D1Ev,_ZTv0_n12_N8S20649C1D1Ev)();
extern void ABISELECT(_ZThn264_N8S20649C1D1Ev,_ZThn164_N8S20649C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C1D0Ev,_ZTv0_n12_N8S20649C1D0Ev)();
extern void ABISELECT(_ZThn264_N8S20649C1D0Ev,_ZThn164_N8S20649C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C1D1Ev,_ZTv0_n12_N8S20649C1D1Ev)();
extern void ABISELECT(_ZThn288_N8S20649C1D1Ev,_ZThn180_N8S20649C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C1D0Ev,_ZTv0_n12_N8S20649C1D0Ev)();
extern void ABISELECT(_ZThn288_N8S20649C1D0Ev,_ZThn180_N8S20649C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20649C1[] = {
  0,
  ABISELECT(288,180),
  ABISELECT(264,164),
  ABISELECT(224,140),
  ABISELECT(208,128),
  ABISELECT(192,120),
  ABISELECT(160,104),
  ABISELECT(88,56),
  ABISELECT(112,72),
  ABISELECT(192,120),
  ABISELECT(96,60),
  ABISELECT(192,120),
  ABISELECT(88,56),
  0,
  ABISELECT(80,52),
  ABISELECT(144,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C1[0]),
  (VTBL_ENTRY)&_ZN8S20649C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20649C1D0Ev,
  ABISELECT(72,48),
  ABISELECT(184,116),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20649C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C1D1Ev,_ZTv0_n12_N8S20649C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C1D0Ev,_ZTv0_n12_N8S20649C1D0Ev),
  ABISELECT(-88,-56),
  ABISELECT(200,124),
  ABISELECT(176,108),
  ABISELECT(136,84),
  ABISELECT(120,72),
  ABISELECT(56,36),
  ABISELECT(104,64),
  0,
  ABISELECT(24,16),
  ABISELECT(104,64),
  ABISELECT(-88,-56),
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(104,64),
  ABISELECT(72,48),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI8S20649C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C1D1Ev,_ZTv0_n12_N8S20649C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C1D0Ev,_ZTv0_n12_N8S20649C1D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(96,60),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S20649C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C1D1Ev,_ZTv0_n12_N8S20649C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C1D0Ev,_ZTv0_n12_N8S20649C1D0Ev),
  ABISELECT(-112,-72),
  ABISELECT(176,108),
  ABISELECT(152,92),
  ABISELECT(112,68),
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(-112,-72),
  ABISELECT(-32,-20),
  ABISELECT(-16,-12),
  ABISELECT(80,48),
  ABISELECT(48,32),
  ABISELECT(-24,-16),
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI8S20649C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20649C1D1Ev,_ZTv0_n64_N8S20649C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20649C1D0Ev,_ZTv0_n64_N8S20649C1D0Ev),
  ABISELECT(-120,-76),
  ABISELECT(24,16),
  ABISELECT(-24,-16),
  ABISELECT(72,44),
  ABISELECT(72,44),
  ABISELECT(-40,-24),
  ABISELECT(72,44),
  ABISELECT(-120,-76),
  ABISELECT(-120,-76),
  (VTBL_ENTRY)&(_ZTI8S20649C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C1D1Ev,_ZTv0_n12_N8S20649C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C1D0Ev,_ZTv0_n12_N8S20649C1D0Ev),
  0,
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(144,88),
  ABISELECT(120,72),
  ABISELECT(-144,-92),
  ABISELECT(-48,-32),
  ABISELECT(80,48),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(-144,-92),
  ABISELECT(-64,-40),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI8S20649C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20649C1D1Ev,_ZTv0_n16_N8S20649C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20649C1D0Ev,_ZTv0_n16_N8S20649C1D0Ev),
  ABISELECT(-160,-104),
  ABISELECT(-80,-52),
  ABISELECT(32,16),
  ABISELECT(-64,-44),
  ABISELECT(-160,-104),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI8S20649C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C1D1Ev,_ZTv0_n12_N8S20649C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C1D0Ev,_ZTv0_n12_N8S20649C1D0Ev),
  ABISELECT(-96,-60),
  ABISELECT(16,8),
  ABISELECT(-176,-112),
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI8S20649C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C1D1Ev,_ZTv0_n12_N8S20649C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C1D0Ev,_ZTv0_n12_N8S20649C1D0Ev),
  0,
  ABISELECT(-112,-68),
  0,
  ABISELECT(-96,-60),
  ABISELECT(-192,-120),
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI8S20649C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C1D1Ev,_ZTv0_n12_N8S20649C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C1D0Ev,_ZTv0_n12_N8S20649C1D0Ev),
  ABISELECT(-128,-76),
  ABISELECT(-16,-8),
  ABISELECT(-208,-128),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S20649C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C1D1Ev,_ZTv0_n12_N8S20649C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C1D0Ev,_ZTv0_n12_N8S20649C1D0Ev),
  ABISELECT(-224,-140),
  ABISELECT(-144,-88),
  ABISELECT(-32,-20),
  ABISELECT(-128,-80),
  ABISELECT(-224,-140),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI8S20649C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C1D1Ev,_ZTv0_n12_N8S20649C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C1D0Ev,_ZTv0_n12_N8S20649C1D0Ev),
  ABISELECT(-160,-96),
  ABISELECT(-48,-28),
  ABISELECT(-240,-148),
  ABISELECT(-240,-148),
  (VTBL_ENTRY)&(_ZTI8S20649C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C1D1Ev,_ZTv0_n12_N8S20649C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C1D0Ev,_ZTv0_n12_N8S20649C1D0Ev),
  ABISELECT(-264,-164),
  ABISELECT(-120,-72),
  ABISELECT(-168,-104),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(24,16),
  ABISELECT(-184,-112),
  ABISELECT(-72,-44),
  ABISELECT(-264,-164),
  ABISELECT(-264,-164),
  (VTBL_ENTRY)&(_ZTI8S20649C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C1D1Ev,_ZTv0_n12_N8S20649C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C1D0Ev,_ZTv0_n12_N8S20649C1D0Ev),
  ABISELECT(-288,-180),
  ABISELECT(-144,-88),
  ABISELECT(-192,-120),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-208,-128),
  ABISELECT(-96,-60),
  ABISELECT(-288,-180),
  ABISELECT(-288,-180),
  (VTBL_ENTRY)&(_ZTI8S20649C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C1D1Ev,_ZTv0_n12_N8S20649C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C1D0Ev,_ZTv0_n12_N8S20649C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S20649C1[];
extern void ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev)();
extern void _ZN9S20649C16D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev)();
extern void _ZN9S20649C16D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C16__A__8S20649C1[] = {
  ABISELECT(72,48),
  ABISELECT(184,116),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void _ZN8S20649C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
extern void _ZN8S20649C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C79S20649C16__A3__8S20649C1[] = {
  ABISELECT(72,48),
  ABISELECT(184,116),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C88S20649C79S20649C16__A7__8S20649C1[] = {
  ABISELECT(72,48),
  ABISELECT(184,116),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZThn184_N8S20649C8D1Ev,_ZThn116_N8S20649C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void ABISELECT(_ZThn184_N8S20649C8D0Ev,_ZThn116_N8S20649C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C88S20649C79S20649C16__A7__8S20649C1[] = {
  ABISELECT(-184,-116),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void ABISELECT(_ZThn184_N8S20649C7D1Ev,_ZThn116_N8S20649C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
extern void ABISELECT(_ZThn184_N8S20649C7D0Ev,_ZThn116_N8S20649C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C79S20649C16__A3__8S20649C1[] = {
  ABISELECT(-184,-116),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev)();
extern void ABISELECT(_ZThn184_N9S20649C16D1Ev,_ZThn116_N9S20649C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev)();
extern void ABISELECT(_ZThn184_N9S20649C16D0Ev,_ZThn116_N9S20649C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C16__A__8S20649C1[] = {
  ABISELECT(-184,-116),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI9S20649C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev),
};
extern void _ZN8S20649C2D1Ev();
extern void _ZN8S20649C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20649C2__8S20649C1[] = {
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C2[0]),
  (VTBL_ENTRY)&_ZN8S20649C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20649C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev)();
extern void _ZN8S20649C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev)();
extern void _ZN8S20649C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C5__8S20649C1[] = {
  ABISELECT(-88,-56),
  ABISELECT(200,124),
  ABISELECT(176,108),
  ABISELECT(136,84),
  ABISELECT(120,72),
  ABISELECT(56,36),
  ABISELECT(104,64),
  0,
  ABISELECT(24,16),
  ABISELECT(104,64),
  ABISELECT(-88,-56),
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(104,64),
  ABISELECT(72,48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev)();
extern void ABISELECT(_ZThn104_N8S20649C5D1Ev,_ZThn64_N8S20649C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev)();
extern void ABISELECT(_ZThn104_N8S20649C5D0Ev,_ZThn64_N8S20649C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C14__8S20649C5__8S20649C1[] = {
  0,
  ABISELECT(-112,-68),
  0,
  ABISELECT(-96,-60),
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI8S20649C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev)();
extern void ABISELECT(_ZThn8_N8S20649C5D1Ev,_ZThn4_N8S20649C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev)();
extern void ABISELECT(_ZThn8_N8S20649C5D0Ev,_ZThn4_N8S20649C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__8S20649C5__8S20649C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(96,60),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20649C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev),
};
extern void ABISELECT(_ZTv0_n128_N8S20649C5D1Ev,_ZTv0_n64_N8S20649C5D1Ev)();
extern void ABISELECT(_ZThn24_N8S20649C5D1Ev,_ZThn16_N8S20649C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S20649C5D0Ev,_ZTv0_n64_N8S20649C5D0Ev)();
extern void ABISELECT(_ZThn24_N8S20649C5D0Ev,_ZThn16_N8S20649C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C10__8S20649C5__8S20649C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(176,108),
  ABISELECT(152,92),
  ABISELECT(112,68),
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(-112,-72),
  ABISELECT(-32,-20),
  ABISELECT(-16,-12),
  ABISELECT(80,48),
  ABISELECT(48,32),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20649C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20649C5D1Ev,_ZTv0_n64_N8S20649C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20649C5D0Ev,_ZTv0_n64_N8S20649C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev)();
extern void ABISELECT(_ZThn72_N8S20649C5D1Ev,_ZThn48_N8S20649C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev)();
extern void ABISELECT(_ZThn72_N8S20649C5D0Ev,_ZThn48_N8S20649C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C12__8S20649C5__8S20649C1[] = {
  ABISELECT(-160,-104),
  ABISELECT(-80,-52),
  ABISELECT(32,16),
  ABISELECT(-64,-44),
  ABISELECT(-72,-48),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S20649C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev)();
extern void ABISELECT(_ZThn88_N8S20649C5D1Ev,_ZThn56_N8S20649C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev)();
extern void ABISELECT(_ZThn88_N8S20649C5D0Ev,_ZThn56_N8S20649C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C12__A1__8S20649C5__8S20649C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(16,8),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI8S20649C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev)();
extern void ABISELECT(_ZThn32_N8S20649C5D1Ev,_ZThn20_N8S20649C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev)();
extern void ABISELECT(_ZThn32_N8S20649C5D0Ev,_ZThn20_N8S20649C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C139S20649C10__8S20649C5__8S20649C1[] = {
  ABISELECT(-120,-76),
  ABISELECT(24,16),
  ABISELECT(-24,-16),
  ABISELECT(72,44),
  ABISELECT(72,44),
  ABISELECT(-40,-24),
  ABISELECT(72,44),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20649C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20649C5D1Ev,_ZTv0_n16_N8S20649C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S20649C5D1Ev,_ZThn36_N8S20649C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20649C5D0Ev,_ZTv0_n16_N8S20649C5D0Ev)();
extern void ABISELECT(_ZThn56_N8S20649C5D0Ev,_ZThn36_N8S20649C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C159S20649C10__8S20649C5__8S20649C1[] = {
  0,
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(144,88),
  ABISELECT(120,72),
  ABISELECT(-144,-92),
  ABISELECT(-48,-32),
  ABISELECT(80,48),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(-56,-36),
  ABISELECT(-64,-40),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S20649C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20649C5D1Ev,_ZTv0_n16_N8S20649C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20649C5D0Ev,_ZTv0_n16_N8S20649C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev)();
extern void ABISELECT(_ZThn120_N8S20649C5D1Ev,_ZThn72_N8S20649C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev)();
extern void ABISELECT(_ZThn120_N8S20649C5D0Ev,_ZThn72_N8S20649C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C16__8S20649C5__8S20649C1[] = {
  ABISELECT(-128,-76),
  ABISELECT(-16,-8),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI8S20649C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev)();
extern void ABISELECT(_ZThn136_N8S20649C5D1Ev,_ZThn84_N8S20649C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev)();
extern void ABISELECT(_ZThn136_N8S20649C5D0Ev,_ZThn84_N8S20649C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C17__8S20649C5__8S20649C1[] = {
  ABISELECT(-224,-140),
  ABISELECT(-144,-88),
  ABISELECT(-32,-20),
  ABISELECT(-128,-80),
  ABISELECT(-136,-84),
  ABISELECT(-136,-84),
  (VTBL_ENTRY)&(_ZTI8S20649C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev)();
extern void ABISELECT(_ZThn152_N8S20649C5D1Ev,_ZThn92_N8S20649C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev)();
extern void ABISELECT(_ZThn152_N8S20649C5D0Ev,_ZThn92_N8S20649C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C129S20649C189S20649C17__A4__8S20649C5__8S20649C1[] = {
  ABISELECT(-160,-96),
  ABISELECT(-48,-28),
  ABISELECT(-152,-92),
  ABISELECT(-152,-92),
  (VTBL_ENTRY)&(_ZTI8S20649C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev)();
extern void ABISELECT(_ZThn176_N8S20649C5D1Ev,_ZThn108_N8S20649C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev)();
extern void ABISELECT(_ZThn176_N8S20649C5D0Ev,_ZThn108_N8S20649C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C19__8S20649C5__8S20649C1[] = {
  ABISELECT(-264,-164),
  ABISELECT(-120,-72),
  ABISELECT(-168,-104),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(24,16),
  ABISELECT(-184,-112),
  ABISELECT(-72,-44),
  ABISELECT(-176,-108),
  ABISELECT(-176,-108),
  (VTBL_ENTRY)&(_ZTI8S20649C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev)();
extern void ABISELECT(_ZThn200_N8S20649C5D1Ev,_ZThn124_N8S20649C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev)();
extern void ABISELECT(_ZThn200_N8S20649C5D0Ev,_ZThn124_N8S20649C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C13__A1__8S20649C5__8S20649C1[] = {
  ABISELECT(-288,-180),
  ABISELECT(-144,-88),
  ABISELECT(-192,-120),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-208,-128),
  ABISELECT(-96,-60),
  ABISELECT(-200,-124),
  ABISELECT(-200,-124),
  (VTBL_ENTRY)&(_ZTI8S20649C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void _ZN8S20649C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
extern void _ZN8S20649C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C6__8S20649C1[] = {
  ABISELECT(-112,-68),
  0,
  ABISELECT(-96,-60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__8S20649C6__8S20649C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(96,60),
  ABISELECT(96,60),
  ABISELECT(96,60),
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void _ZN8S20649C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
extern void _ZN8S20649C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__8S20649C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(96,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C88S20649C7__8S20649C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(96,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S20649C8D1Ev,_ZThn60_N8S20649C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S20649C8D0Ev,_ZThn60_N8S20649C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C88S20649C7__8S20649C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void ABISELECT(_ZThn96_N8S20649C7D1Ev,_ZThn60_N8S20649C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
extern void ABISELECT(_ZThn96_N8S20649C7D0Ev,_ZThn60_N8S20649C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C7__8S20649C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void _ZN9S20649C10D1Ev();
extern void _ZN9S20649C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20649C10__8S20649C1[] = {
  ABISELECT(176,108),
  ABISELECT(152,92),
  ABISELECT(112,68),
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(-112,-72),
  ABISELECT(-32,-20),
  ABISELECT(-16,-12),
  ABISELECT(80,48),
  ABISELECT(48,32),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&_ZN9S20649C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20649C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev)();
extern void _ZN9S20649C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev)();
extern void _ZN9S20649C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C139S20649C10__8S20649C1[] = {
  ABISELECT(-120,-76),
  ABISELECT(24,16),
  ABISELECT(-24,-16),
  ABISELECT(72,44),
  ABISELECT(72,44),
  ABISELECT(-40,-24),
  ABISELECT(72,44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C139S20649C10__A2__8S20649C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(72,44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZThn72_N8S20649C8D1Ev,_ZThn44_N8S20649C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void ABISELECT(_ZThn72_N8S20649C8D0Ev,_ZThn44_N8S20649C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C89S20649C139S20649C10__A2__8S20649C1[] = {
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev)();
extern void ABISELECT(_ZThn72_N9S20649C13D1Ev,_ZThn44_N9S20649C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev)();
extern void ABISELECT(_ZThn72_N9S20649C13D0Ev,_ZThn44_N9S20649C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C14__9S20649C139S20649C10__8S20649C1[] = {
  0,
  ABISELECT(-112,-68),
  0,
  ABISELECT(-96,-60),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C139S20649C10__8S20649C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(96,60),
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20649C13D1Ev,_ZTv0_n16_N9S20649C13D1Ev)();
extern void ABISELECT(_ZThn24_N9S20649C13D1Ev,_ZThn16_N9S20649C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20649C13D0Ev,_ZTv0_n16_N9S20649C13D0Ev)();
extern void ABISELECT(_ZThn24_N9S20649C13D0Ev,_ZThn16_N9S20649C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C2__9S20649C139S20649C10__8S20649C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-64,-40),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C13D1Ev,_ZTv0_n16_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C13D0Ev,_ZTv0_n16_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20649C15D1Ev,_ZTv0_n16_N9S20649C15D1Ev)();
extern void _ZN9S20649C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20649C15D0Ev,_ZTv0_n16_N9S20649C15D0Ev)();
extern void _ZN9S20649C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C159S20649C10__8S20649C1[] = {
  0,
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(144,88),
  ABISELECT(120,72),
  ABISELECT(-144,-92),
  ABISELECT(-48,-32),
  ABISELECT(80,48),
  ABISELECT(64,36),
  ABISELECT(48,28),
  0,
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C15D1Ev,_ZTv0_n16_N9S20649C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C15D0Ev,_ZTv0_n16_N9S20649C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev)();
extern void ABISELECT(_ZThn48_N9S20649C15D1Ev,_ZThn28_N9S20649C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev)();
extern void ABISELECT(_ZThn48_N9S20649C15D0Ev,_ZThn28_N9S20649C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C14__9S20649C159S20649C10__8S20649C1[] = {
  0,
  ABISELECT(-112,-68),
  0,
  ABISELECT(-96,-60),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev)();
extern void ABISELECT(_ZThn64_N9S20649C15D1Ev,_ZThn36_N9S20649C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev)();
extern void ABISELECT(_ZThn64_N9S20649C15D0Ev,_ZThn36_N9S20649C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C16__9S20649C159S20649C10__8S20649C1[] = {
  ABISELECT(-128,-76),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev)();
extern void ABISELECT(_ZThn80_N9S20649C15D1Ev,_ZThn48_N9S20649C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev)();
extern void ABISELECT(_ZThn80_N9S20649C15D0Ev,_ZThn48_N9S20649C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C17__9S20649C159S20649C10__8S20649C1[] = {
  ABISELECT(-224,-140),
  ABISELECT(-144,-88),
  ABISELECT(-32,-20),
  ABISELECT(-128,-80),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__A1__9S20649C159S20649C10__8S20649C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(96,60),
  ABISELECT(48,32),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev)();
extern void ABISELECT(_ZThn96_N9S20649C15D1Ev,_ZThn56_N9S20649C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev)();
extern void ABISELECT(_ZThn96_N9S20649C15D0Ev,_ZThn56_N9S20649C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C129S20649C189S20649C17__A2__9S20649C159S20649C10__8S20649C1[] = {
  ABISELECT(-160,-96),
  ABISELECT(-48,-28),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev)();
extern void ABISELECT(_ZThn120_N9S20649C15D1Ev,_ZThn72_N9S20649C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev)();
extern void ABISELECT(_ZThn120_N9S20649C15D0Ev,_ZThn72_N9S20649C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C19__9S20649C159S20649C10__8S20649C1[] = {
  ABISELECT(-264,-164),
  ABISELECT(-120,-72),
  ABISELECT(-168,-104),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(24,16),
  ABISELECT(-184,-112),
  ABISELECT(-72,-44),
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev)();
extern void ABISELECT(_ZThn144_N9S20649C15D1Ev,_ZThn88_N9S20649C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev)();
extern void ABISELECT(_ZThn144_N9S20649C15D0Ev,_ZThn88_N9S20649C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C13__9S20649C159S20649C10__8S20649C1[] = {
  ABISELECT(-288,-180),
  ABISELECT(-144,-88),
  ABISELECT(-192,-120),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-208,-128),
  ABISELECT(-96,-60),
  ABISELECT(-144,-88),
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI9S20649C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20649C11__9S20649C10__8S20649C1[] = {
  ABISELECT(-88,-56),
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(104,64),
  ABISELECT(72,48),
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S20649C10D1Ev,_ZThn32_N9S20649C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
extern void ABISELECT(_ZThn48_N9S20649C10D0Ev,_ZThn32_N9S20649C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C12__9S20649C10__8S20649C1[] = {
  ABISELECT(-160,-104),
  ABISELECT(-80,-52),
  ABISELECT(32,16),
  ABISELECT(-64,-44),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZThn80_N9S20649C10D1Ev,_ZThn48_N9S20649C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
extern void ABISELECT(_ZThn80_N9S20649C10D0Ev,_ZThn48_N9S20649C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C14__9S20649C10__8S20649C1[] = {
  0,
  ABISELECT(-112,-68),
  0,
  ABISELECT(-96,-60),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C10__8S20649C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(96,60),
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZThn64_N9S20649C10D1Ev,_ZThn40_N9S20649C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
extern void ABISELECT(_ZThn64_N9S20649C10D0Ev,_ZThn40_N9S20649C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C12__A1__9S20649C10__8S20649C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(16,8),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZThn8_N9S20649C10D1Ev,_ZThn4_N9S20649C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
extern void ABISELECT(_ZThn8_N9S20649C10D0Ev,_ZThn4_N9S20649C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C13__A__9S20649C10__8S20649C1[] = {
  ABISELECT(-120,-76),
  ABISELECT(24,16),
  ABISELECT(-24,-16),
  ABISELECT(72,44),
  ABISELECT(72,44),
  ABISELECT(-40,-24),
  ABISELECT(72,44),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20649C10D1Ev,_ZTv0_n16_N9S20649C10D1Ev)();
extern void ABISELECT(_ZThn32_N9S20649C10D1Ev,_ZThn20_N9S20649C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20649C10D0Ev,_ZTv0_n16_N9S20649C10D0Ev)();
extern void ABISELECT(_ZThn32_N9S20649C10D0Ev,_ZThn20_N9S20649C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C15__9S20649C10__8S20649C1[] = {
  0,
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(144,88),
  ABISELECT(120,72),
  ABISELECT(-144,-92),
  ABISELECT(-48,-32),
  ABISELECT(80,48),
  ABISELECT(64,36),
  ABISELECT(48,28),
  ABISELECT(-32,-20),
  ABISELECT(-64,-40),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C10D1Ev,_ZTv0_n16_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C10D0Ev,_ZTv0_n16_N9S20649C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZThn96_N9S20649C10D1Ev,_ZThn56_N9S20649C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
extern void ABISELECT(_ZThn96_N9S20649C10D0Ev,_ZThn56_N9S20649C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C16__9S20649C10__8S20649C1[] = {
  ABISELECT(-128,-76),
  ABISELECT(-16,-8),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZThn112_N9S20649C10D1Ev,_ZThn68_N9S20649C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
extern void ABISELECT(_ZThn112_N9S20649C10D0Ev,_ZThn68_N9S20649C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C17__9S20649C10__8S20649C1[] = {
  ABISELECT(-224,-140),
  ABISELECT(-144,-88),
  ABISELECT(-32,-20),
  ABISELECT(-128,-80),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZThn128_N9S20649C10D1Ev,_ZThn76_N9S20649C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
extern void ABISELECT(_ZThn128_N9S20649C10D0Ev,_ZThn76_N9S20649C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C129S20649C189S20649C17__A4__9S20649C10__8S20649C1[] = {
  ABISELECT(-160,-96),
  ABISELECT(-48,-28),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZThn152_N9S20649C10D1Ev,_ZThn92_N9S20649C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
extern void ABISELECT(_ZThn152_N9S20649C10D0Ev,_ZThn92_N9S20649C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C19__9S20649C10__8S20649C1[] = {
  ABISELECT(-264,-164),
  ABISELECT(-120,-72),
  ABISELECT(-168,-104),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(24,16),
  ABISELECT(-184,-112),
  ABISELECT(-72,-44),
  ABISELECT(-152,-92),
  ABISELECT(-152,-92),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev)();
extern void ABISELECT(_ZThn176_N9S20649C10D1Ev,_ZThn108_N9S20649C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev)();
extern void ABISELECT(_ZThn176_N9S20649C10D0Ev,_ZThn108_N9S20649C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C13__A1__9S20649C10__8S20649C1[] = {
  ABISELECT(-288,-180),
  ABISELECT(-144,-88),
  ABISELECT(-192,-120),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-208,-128),
  ABISELECT(-96,-60),
  ABISELECT(-176,-108),
  ABISELECT(-176,-108),
  (VTBL_ENTRY)&(_ZTI9S20649C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev)();
extern void _ZN9S20649C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev)();
extern void _ZN9S20649C11D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C11__8S20649C1[] = {
  ABISELECT(-88,-56),
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(104,64),
  ABISELECT(72,48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev)();
extern void ABISELECT(_ZThn72_N9S20649C11D1Ev,_ZThn48_N9S20649C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev)();
extern void ABISELECT(_ZThn72_N9S20649C11D0Ev,_ZThn48_N9S20649C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C12__9S20649C11__8S20649C1[] = {
  ABISELECT(-160,-104),
  ABISELECT(-80,-52),
  ABISELECT(32,16),
  ABISELECT(-64,-44),
  ABISELECT(-72,-48),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI9S20649C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev)();
extern void ABISELECT(_ZThn104_N9S20649C11D1Ev,_ZThn64_N9S20649C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev)();
extern void ABISELECT(_ZThn104_N9S20649C11D0Ev,_ZThn64_N9S20649C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C11__8S20649C1[] = {
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI9S20649C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S20649C11D1Ev,_ZThn4_N9S20649C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev)();
extern void ABISELECT(_ZThn8_N9S20649C11D0Ev,_ZThn4_N9S20649C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C11__8S20649C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(96,60),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20649C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev)();
extern void ABISELECT(_ZThn88_N9S20649C11D1Ev,_ZThn56_N9S20649C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev)();
extern void ABISELECT(_ZThn88_N9S20649C11D0Ev,_ZThn56_N9S20649C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C12__A1__9S20649C11__8S20649C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(16,8),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI9S20649C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void _ZN9S20649C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
extern void _ZN9S20649C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C12__8S20649C1[] = {
  ABISELECT(-160,-104),
  ABISELECT(-80,-52),
  ABISELECT(32,16),
  ABISELECT(-64,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void _ZN8S20649C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
extern void _ZN8S20649C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C69S20649C12__A1__8S20649C1[] = {
  ABISELECT(-80,-52),
  ABISELECT(32,16),
  ABISELECT(-64,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__8S20649C69S20649C12__A1__8S20649C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(96,60),
  ABISELECT(64,44),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void ABISELECT(_ZThn32_N8S20649C6D1Ev,_ZThn16_N8S20649C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
extern void ABISELECT(_ZThn32_N8S20649C6D0Ev,_ZThn16_N8S20649C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C69S20649C12__A1__8S20649C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C12__A1__8S20649C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S20649C8D1Ev,_ZThn8_N8S20649C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S20649C8D0Ev,_ZThn8_N8S20649C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C89S20649C12__A1__8S20649C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S20649C12D1Ev,_ZThn16_N9S20649C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
extern void ABISELECT(_ZThn32_N9S20649C12D0Ev,_ZThn16_N9S20649C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C12__8S20649C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C12__8S20649C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(96,60),
  ABISELECT(64,44),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S20649C12D1Ev,_ZThn8_N9S20649C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S20649C12D0Ev,_ZThn8_N9S20649C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C8__A1__9S20649C12__8S20649C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev)();
extern void _ZN9S20649C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev)();
extern void _ZN9S20649C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C14__8S20649C1[] = {
  0,
  ABISELECT(-112,-68),
  0,
  ABISELECT(-96,-60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C14__8S20649C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(96,60),
  ABISELECT(96,60),
  ABISELECT(96,60),
  (VTBL_ENTRY)&(_ZTI9S20649C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev)();
extern void _ZN9S20649C16D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev)();
extern void _ZN9S20649C16D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C16__8S20649C1[] = {
  ABISELECT(-128,-76),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void _ZN8S20649C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
extern void _ZN8S20649C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C79S20649C16__A1__8S20649C1[] = {
  ABISELECT(-128,-76),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C88S20649C79S20649C16__A3__8S20649C1[] = {
  ABISELECT(-128,-76),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C88S20649C79S20649C16__A3__8S20649C1[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C79S20649C16__A1__8S20649C1[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C16__8S20649C1[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S20649C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev)();
extern void _ZN9S20649C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev)();
extern void _ZN9S20649C17D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C17__8S20649C1[] = {
  ABISELECT(-224,-140),
  ABISELECT(-144,-88),
  ABISELECT(-32,-20),
  ABISELECT(-128,-80),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev)();
extern void _ZN9S20649C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev)();
extern void _ZN9S20649C18D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C189S20649C17__8S20649C1[] = {
  ABISELECT(-224,-140),
  ABISELECT(-144,-88),
  ABISELECT(-32,-20),
  ABISELECT(-128,-80),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void _ZN9S20649C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
extern void _ZN9S20649C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C129S20649C189S20649C17__A1__8S20649C1[] = {
  ABISELECT(-224,-140),
  ABISELECT(-144,-88),
  ABISELECT(-32,-20),
  ABISELECT(-128,-80),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void _ZN8S20649C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
extern void _ZN8S20649C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C69S20649C129S20649C189S20649C17__A2__8S20649C1[] = {
  ABISELECT(-144,-88),
  ABISELECT(-32,-20),
  ABISELECT(-128,-80),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__8S20649C69S20649C129S20649C189S20649C17__A2__8S20649C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(96,60),
  ABISELECT(128,80),
  ABISELECT(128,80),
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C69S20649C129S20649C189S20649C17__A2__8S20649C1[] = {
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S20649C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C129S20649C189S20649C17__A4__8S20649C1[] = {
  ABISELECT(-160,-96),
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C89S20649C129S20649C189S20649C17__A4__8S20649C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C129S20649C189S20649C17__A1__8S20649C1[] = {
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C129S20649C189S20649C17__A1__8S20649C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(96,60),
  ABISELECT(128,80),
  ABISELECT(128,80),
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S20649C12D1Ev,_ZThn8_N9S20649C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S20649C12D0Ev,_ZThn8_N9S20649C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C8__A1__9S20649C129S20649C189S20649C17__A1__8S20649C1[] = {
  ABISELECT(-160,-96),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20649C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C189S20649C17__8S20649C1[] = {
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI9S20649C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C189S20649C17__8S20649C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(96,60),
  ABISELECT(128,80),
  ABISELECT(128,80),
  (VTBL_ENTRY)&(_ZTI9S20649C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev)();
extern void ABISELECT(_ZThn16_N9S20649C18D1Ev,_ZThn8_N9S20649C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev)();
extern void ABISELECT(_ZThn16_N9S20649C18D0Ev,_ZThn8_N9S20649C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C12__A1__9S20649C189S20649C17__8S20649C1[] = {
  ABISELECT(-160,-96),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20649C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C17__8S20649C1[] = {
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI9S20649C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C17__8S20649C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(96,60),
  ABISELECT(128,80),
  ABISELECT(128,80),
  (VTBL_ENTRY)&(_ZTI9S20649C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20649C17D1Ev,_ZThn8_N9S20649C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev)();
extern void ABISELECT(_ZThn16_N9S20649C17D0Ev,_ZThn8_N9S20649C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C129S20649C18__A1__9S20649C17__8S20649C1[] = {
  ABISELECT(-160,-96),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20649C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev)();
extern void _ZN9S20649C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev)();
extern void _ZN9S20649C19D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C19__8S20649C1[] = {
  ABISELECT(-264,-164),
  ABISELECT(-120,-72),
  ABISELECT(-168,-104),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  ABISELECT(24,16),
  ABISELECT(-184,-112),
  ABISELECT(-72,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev)();
extern void _ZN9S20649C16D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev)();
extern void _ZN9S20649C16D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C169S20649C19__A1__8S20649C1[] = {
  ABISELECT(-184,-112),
  ABISELECT(-72,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void _ZN8S20649C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
extern void _ZN8S20649C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C79S20649C169S20649C19__A2__8S20649C1[] = {
  ABISELECT(-184,-112),
  ABISELECT(-72,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C88S20649C79S20649C169S20649C19__A5__8S20649C1[] = {
  ABISELECT(-184,-112),
  ABISELECT(-72,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C88S20649C79S20649C169S20649C19__A5__8S20649C1[] = {
  ABISELECT(72,44),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C79S20649C169S20649C19__A2__8S20649C1[] = {
  ABISELECT(72,44),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI8S20649C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20649C169S20649C19__A1__8S20649C1[] = {
  ABISELECT(72,44),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI9S20649C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20649C14__9S20649C19__8S20649C1[] = {
  0,
  ABISELECT(-112,-68),
  0,
  ABISELECT(-96,-60),
  ABISELECT(72,44),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI9S20649C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev)();
extern void ABISELECT(_ZThn24_N9S20649C19D1Ev,_ZThn16_N9S20649C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev)();
extern void ABISELECT(_ZThn24_N9S20649C19D0Ev,_ZThn16_N9S20649C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C13__9S20649C19__8S20649C1[] = {
  ABISELECT(-288,-180),
  ABISELECT(-144,-88),
  ABISELECT(-192,-120),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-208,-128),
  ABISELECT(-96,-60),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20649C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__A1__9S20649C19__8S20649C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(96,60),
  ABISELECT(168,104),
  ABISELECT(168,104),
  (VTBL_ENTRY)&(_ZTI9S20649C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20649C19D1Ev,_ZTv0_n16_N9S20649C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20649C19D0Ev,_ZTv0_n16_N9S20649C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C2__9S20649C19__8S20649C1[] = {
  ABISELECT(120,72),
  ABISELECT(-64,-40),
  ABISELECT(120,72),
  (VTBL_ENTRY)&(_ZTI9S20649C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C19D1Ev,_ZTv0_n16_N9S20649C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C19D0Ev,_ZTv0_n16_N9S20649C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev)();
extern void _ZN9S20649C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev)();
extern void _ZN9S20649C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20649C13__A1__8S20649C1[] = {
  ABISELECT(-288,-180),
  ABISELECT(-144,-88),
  ABISELECT(-192,-120),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  ABISELECT(-208,-128),
  ABISELECT(-96,-60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void _ZN8S20649C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
extern void _ZN8S20649C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20649C89S20649C13__A6__8S20649C1[] = {
  ABISELECT(-208,-128),
  ABISELECT(-96,-60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20649C89S20649C13__A6__8S20649C1[] = {
  ABISELECT(96,60),
  ABISELECT(96,60),
  (VTBL_ENTRY)&(_ZTI8S20649C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20649C14__9S20649C13__A1__8S20649C1[] = {
  0,
  ABISELECT(-112,-68),
  0,
  ABISELECT(-96,-60),
  ABISELECT(96,60),
  ABISELECT(96,60),
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C7__9S20649C13__A1__8S20649C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(96,60),
  ABISELECT(192,120),
  ABISELECT(192,120),
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20649C13D1Ev,_ZTv0_n16_N9S20649C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20649C13D0Ev,_ZTv0_n16_N9S20649C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20649C2__9S20649C13__A1__8S20649C1[] = {
  ABISELECT(144,88),
  ABISELECT(-64,-40),
  ABISELECT(144,88),
  (VTBL_ENTRY)&(_ZTI9S20649C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C13D1Ev,_ZTv0_n16_N9S20649C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20649C13D0Ev,_ZTv0_n16_N9S20649C13D0Ev),
};
static  VTT_ENTRY vtt_S20649C1[] = {
  {&(_ZTV8S20649C1[18]),  18,173},
  {&(_tg__ZTV9S20649C16__A__8S20649C1[5]),  5,7},
  {&(_tg__ZTV8S20649C79S20649C16__A3__8S20649C1[5]),  5,7},
  {&(_tg__ZTV8S20649C88S20649C79S20649C16__A7__8S20649C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C88S20649C79S20649C16__A7__8S20649C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20649C79S20649C16__A3__8S20649C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20649C16__A__8S20649C1[3]),  3,5},
  {&(_ZTV8S20649C1[98]),  98,173},
  {&(_ZTV8S20649C1[45]),  45,173},
  {&(_ZTV8S20649C1[123]),  123,173},
  {&(_ZTV8S20649C1[52]),  52,173},
  {&(_ZTV8S20649C1[123]),  123,173},
  {&(_ZTV8S20649C1[70]),  70,173},
  {&(_ZTV8S20649C1[45]),  45,173},
  {&(_ZTV8S20649C1[107]),  107,173},
  {&(_ZTV8S20649C1[114]),  114,173},
  {&(_ZTV8S20649C1[82]),  82,173},
  {&(_ZTV8S20649C1[123]),  123,173},
  {&(_ZTV8S20649C1[98]),  98,173},
  {&(_ZTV8S20649C1[130]),  130,173},
  {&(_ZTV8S20649C1[139]),  139,173},
  {&(_ZTV8S20649C1[146]),  146,173},
  {&(_ZTV8S20649C1[159]),  159,173},
  {&(_ZTV8S20649C1[171]),  171,173},
  {&(_ZTV8S20649C1[25]),  25,173},
  {&(_tg__ZTV8S20649C2__8S20649C1[3]),  3,5},
  {&(_tg__ZTV8S20649C5__8S20649C1[18]),  18,20},
  {&(_tg__ZTV9S20649C14__8S20649C5__8S20649C1[7]),  7,9},
  {&(_tg__ZTV8S20649C7__8S20649C5__8S20649C1[5]),  5,7},
  {&(_tg__ZTV9S20649C14__8S20649C5__8S20649C1[7]),  7,9},
  {&(_tg__ZTV9S20649C10__8S20649C5__8S20649C1[16]),  16,18},
  {&(_tg__ZTV8S20649C5__8S20649C1[18]),  18,20},
  {&(_tg__ZTV9S20649C12__8S20649C5__8S20649C1[7]),  7,9},
  {&(_tg__ZTV8S20649C89S20649C12__A1__8S20649C5__8S20649C1[5]),  5,7},
  {&(_tg__ZTV9S20649C139S20649C10__8S20649C5__8S20649C1[10]),  10,12},
  {&(_tg__ZTV9S20649C14__8S20649C5__8S20649C1[7]),  7,9},
  {&(_tg__ZTV9S20649C159S20649C10__8S20649C5__8S20649C1[14]),  14,16},
  {&(_tg__ZTV9S20649C159S20649C10__8S20649C5__8S20649C1[14]),  14,16},
  {&(_tg__ZTV9S20649C16__8S20649C5__8S20649C1[5]),  5,7},
  {&(_tg__ZTV9S20649C17__8S20649C5__8S20649C1[7]),  7,9},
  {&(_tg__ZTV8S20649C89S20649C129S20649C189S20649C17__A4__8S20649C5__8S20649C1[5]),  5,7},
  {&(_tg__ZTV9S20649C19__8S20649C5__8S20649C1[11]),  11,13},
  {&(_tg__ZTV9S20649C13__A1__8S20649C5__8S20649C1[10]),  10,12},
  {&(_tg__ZTV8S20649C6__8S20649C1[6]),  6,8},
  {&(_tg__ZTV8S20649C7__8S20649C6__8S20649C1[5]),  5,7},
  {&(_tg__ZTV8S20649C6__8S20649C1[6]),  6,8},
  {&(_tg__ZTV8S20649C7__8S20649C1[5]),  5,7},
  {&(_tg__ZTV8S20649C88S20649C7__8S20649C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C88S20649C7__8S20649C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20649C7__8S20649C1[3]),  3,5},
  {&(_tg__ZTV9S20649C10__8S20649C1[15]),  15,17},
  {&(_tg__ZTV9S20649C139S20649C10__8S20649C1[10]),  10,12},
  {&(_tg__ZTV8S20649C89S20649C139S20649C10__A2__8S20649C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C89S20649C139S20649C10__A2__8S20649C1[3]),  3,5},
  {&(_tg__ZTV9S20649C14__9S20649C139S20649C10__8S20649C1[7]),  7,9},
  {&(_tg__ZTV9S20649C14__9S20649C139S20649C10__8S20649C1[7]),  7,9},
  {&(_tg__ZTV8S20649C7__9S20649C139S20649C10__8S20649C1[5]),  5,7},
  {&(_tg__ZTV9S20649C14__9S20649C139S20649C10__8S20649C1[7]),  7,9},
  {&(_tg__ZTV8S20649C2__9S20649C139S20649C10__8S20649C1[4]),  4,6},
  {&(_tg__ZTV9S20649C159S20649C10__8S20649C1[14]),  14,16},
  {&(_tg__ZTV9S20649C14__9S20649C159S20649C10__8S20649C1[7]),  7,9},
  {&(_tg__ZTV9S20649C16__9S20649C159S20649C10__8S20649C1[5]),  5,7},
  {&(_tg__ZTV9S20649C17__9S20649C159S20649C10__8S20649C1[7]),  7,9},
  {&(_tg__ZTV8S20649C7__A1__9S20649C159S20649C10__8S20649C1[5]),  5,7},
  {&(_tg__ZTV8S20649C89S20649C129S20649C189S20649C17__A2__9S20649C159S20649C10__8S20649C1[5]),  5,7},
  {&(_tg__ZTV9S20649C19__9S20649C159S20649C10__8S20649C1[11]),  11,13},
  {&(_tg__ZTV9S20649C13__9S20649C159S20649C10__8S20649C1[10]),  10,12},
  {&(_tg__ZTV9S20649C14__9S20649C159S20649C10__8S20649C1[7]),  7,9},
  {&(_tg__ZTV9S20649C14__9S20649C159S20649C10__8S20649C1[7]),  7,9},
  {&(_tg__ZTV9S20649C159S20649C10__8S20649C1[14]),  14,16},
  {&(_tg__ZTV9S20649C11__9S20649C10__8S20649C1[8]),  8,10},
  {&(_tg__ZTV9S20649C12__9S20649C10__8S20649C1[7]),  7,9},
  {&(_tg__ZTV9S20649C14__9S20649C10__8S20649C1[7]),  7,9},
  {&(_tg__ZTV8S20649C7__9S20649C10__8S20649C1[5]),  5,7},
  {&(_tg__ZTV8S20649C89S20649C12__A1__9S20649C10__8S20649C1[5]),  5,7},
  {&(_tg__ZTV9S20649C13__A__9S20649C10__8S20649C1[10]),  10,12},
  {&(_tg__ZTV9S20649C14__9S20649C10__8S20649C1[7]),  7,9},
  {&(_tg__ZTV9S20649C14__9S20649C10__8S20649C1[7]),  7,9},
  {&(_tg__ZTV9S20649C15__9S20649C10__8S20649C1[14]),  14,16},
  {&(_tg__ZTV9S20649C15__9S20649C10__8S20649C1[14]),  14,16},
  {&(_tg__ZTV9S20649C16__9S20649C10__8S20649C1[5]),  5,7},
  {&(_tg__ZTV9S20649C17__9S20649C10__8S20649C1[7]),  7,9},
  {&(_tg__ZTV8S20649C89S20649C129S20649C189S20649C17__A4__9S20649C10__8S20649C1[5]),  5,7},
  {&(_tg__ZTV9S20649C19__9S20649C10__8S20649C1[11]),  11,13},
  {&(_tg__ZTV9S20649C13__A1__9S20649C10__8S20649C1[10]),  10,12},
  {&(_tg__ZTV9S20649C11__8S20649C1[8]),  8,10},
  {&(_tg__ZTV9S20649C12__9S20649C11__8S20649C1[7]),  7,9},
  {&(_tg__ZTV10S7883C3_nt__9S20649C11__8S20649C1[3]),  3,5},
  {&(_tg__ZTV8S20649C7__9S20649C11__8S20649C1[5]),  5,7},
  {&(_tg__ZTV8S20649C89S20649C12__A1__9S20649C11__8S20649C1[5]),  5,7},
  {&(_tg__ZTV9S20649C12__8S20649C1[7]),  7,9},
  {&(_tg__ZTV8S20649C69S20649C12__A1__8S20649C1[6]),  6,8},
  {&(_tg__ZTV8S20649C7__8S20649C69S20649C12__A1__8S20649C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C69S20649C12__A1__8S20649C1[3]),  3,5},
  {&(_tg__ZTV8S20649C89S20649C12__A1__8S20649C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C89S20649C12__A1__8S20649C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20649C12__8S20649C1[3]),  3,5},
  {&(_tg__ZTV8S20649C7__9S20649C12__8S20649C1[5]),  5,7},
  {&(_tg__ZTV8S20649C8__A1__9S20649C12__8S20649C1[5]),  5,7},
  {&(_tg__ZTV9S20649C14__8S20649C1[7]),  7,9},
  {&(_tg__ZTV9S20649C14__8S20649C1[7]),  7,9},
  {&(_tg__ZTV8S20649C7__9S20649C14__8S20649C1[5]),  5,7},
  {&(_tg__ZTV9S20649C14__8S20649C1[7]),  7,9},
  {&(_tg__ZTV9S20649C16__8S20649C1[5]),  5,7},
  {&(_tg__ZTV8S20649C79S20649C16__A1__8S20649C1[5]),  5,7},
  {&(_tg__ZTV8S20649C88S20649C79S20649C16__A3__8S20649C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C88S20649C79S20649C16__A3__8S20649C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20649C79S20649C16__A1__8S20649C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20649C16__8S20649C1[3]),  3,5},
  {&(_tg__ZTV9S20649C17__8S20649C1[7]),  7,9},
  {&(_tg__ZTV9S20649C189S20649C17__8S20649C1[7]),  7,9},
  {&(_tg__ZTV9S20649C129S20649C189S20649C17__A1__8S20649C1[7]),  7,9},
  {&(_tg__ZTV8S20649C69S20649C129S20649C189S20649C17__A2__8S20649C1[6]),  6,8},
  {&(_tg__ZTV8S20649C7__8S20649C69S20649C129S20649C189S20649C17__A2__8S20649C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C69S20649C129S20649C189S20649C17__A2__8S20649C1[3]),  3,5},
  {&(_tg__ZTV8S20649C89S20649C129S20649C189S20649C17__A4__8S20649C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C89S20649C129S20649C189S20649C17__A4__8S20649C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20649C129S20649C189S20649C17__A1__8S20649C1[3]),  3,5},
  {&(_tg__ZTV8S20649C7__9S20649C129S20649C189S20649C17__A1__8S20649C1[5]),  5,7},
  {&(_tg__ZTV8S20649C8__A1__9S20649C129S20649C189S20649C17__A1__8S20649C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__9S20649C189S20649C17__8S20649C1[3]),  3,5},
  {&(_tg__ZTV8S20649C7__9S20649C189S20649C17__8S20649C1[5]),  5,7},
  {&(_tg__ZTV8S20649C89S20649C12__A1__9S20649C189S20649C17__8S20649C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__9S20649C17__8S20649C1[3]),  3,5},
  {&(_tg__ZTV8S20649C7__9S20649C17__8S20649C1[5]),  5,7},
  {&(_tg__ZTV8S20649C89S20649C129S20649C18__A1__9S20649C17__8S20649C1[5]),  5,7},
  {&(_tg__ZTV9S20649C19__8S20649C1[11]),  11,13},
  {&(_tg__ZTV9S20649C169S20649C19__A1__8S20649C1[5]),  5,7},
  {&(_tg__ZTV8S20649C79S20649C169S20649C19__A2__8S20649C1[5]),  5,7},
  {&(_tg__ZTV8S20649C88S20649C79S20649C169S20649C19__A5__8S20649C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C88S20649C79S20649C169S20649C19__A5__8S20649C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20649C79S20649C169S20649C19__A2__8S20649C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20649C169S20649C19__A1__8S20649C1[3]),  3,5},
  {&(_tg__ZTV9S20649C14__9S20649C19__8S20649C1[7]),  7,9},
  {&(_tg__ZTV9S20649C13__9S20649C19__8S20649C1[10]),  10,12},
  {&(_tg__ZTV9S20649C14__9S20649C19__8S20649C1[7]),  7,9},
  {&(_tg__ZTV9S20649C14__9S20649C19__8S20649C1[7]),  7,9},
  {&(_tg__ZTV8S20649C7__A1__9S20649C19__8S20649C1[5]),  5,7},
  {&(_tg__ZTV8S20649C2__9S20649C19__8S20649C1[4]),  4,6},
  {&(_tg__ZTV9S20649C13__A1__8S20649C1[10]),  10,12},
  {&(_tg__ZTV8S20649C89S20649C13__A6__8S20649C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20649C89S20649C13__A6__8S20649C1[3]),  3,5},
  {&(_tg__ZTV9S20649C14__9S20649C13__A1__8S20649C1[7]),  7,9},
  {&(_tg__ZTV9S20649C14__9S20649C13__A1__8S20649C1[7]),  7,9},
  {&(_tg__ZTV8S20649C7__9S20649C13__A1__8S20649C1[5]),  5,7},
  {&(_tg__ZTV9S20649C14__9S20649C13__A1__8S20649C1[7]),  7,9},
  {&(_tg__ZTV8S20649C2__9S20649C13__A1__8S20649C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20649C1[];
extern  VTBL_ENTRY _ZTV8S20649C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20649C1[];
static VTBL_ENTRY alt_thunk_names78[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C19D0Ev,_ZTv0_n12_N9S20649C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20649C19D0Ev,_ZThn16_N9S20649C19D0Ev),
  (VTBL_ENTRY)_ZN9S20649C19D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C19D1Ev,_ZTv0_n12_N9S20649C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20649C19D1Ev,_ZThn16_N9S20649C19D1Ev),
  (VTBL_ENTRY)_ZN9S20649C19D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C18D0Ev,_ZTv0_n12_N9S20649C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C18D0Ev,_ZThn8_N9S20649C18D0Ev),
  (VTBL_ENTRY)_ZN9S20649C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C18D1Ev,_ZTv0_n12_N9S20649C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C18D1Ev,_ZThn8_N9S20649C18D1Ev),
  (VTBL_ENTRY)_ZN9S20649C18D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C17D0Ev,_ZTv0_n12_N9S20649C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C17D0Ev,_ZThn8_N9S20649C17D0Ev),
  (VTBL_ENTRY)_ZN9S20649C17D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C17D1Ev,_ZTv0_n12_N9S20649C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C17D1Ev,_ZThn8_N9S20649C17D1Ev),
  (VTBL_ENTRY)_ZN9S20649C17D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C14D0Ev,_ZTv0_n12_N9S20649C14D0Ev), // 
  (VTBL_ENTRY)_ZN9S20649C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C14D1Ev,_ZTv0_n12_N9S20649C14D1Ev), // 
  (VTBL_ENTRY)_ZN9S20649C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C12D0Ev,_ZTv0_n12_N9S20649C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C12D0Ev,_ZThn8_N9S20649C12D0Ev),
  (VTBL_ENTRY)_ZN9S20649C12D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C12D0Ev,_ZThn8_N9S20649C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20649C12D0Ev,_ZThn16_N9S20649C12D0Ev),
  (VTBL_ENTRY)_ZN9S20649C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C12D1Ev,_ZTv0_n12_N9S20649C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C12D1Ev,_ZThn8_N9S20649C12D1Ev),
  (VTBL_ENTRY)_ZN9S20649C12D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20649C12D1Ev,_ZThn8_N9S20649C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20649C12D1Ev,_ZThn16_N9S20649C12D1Ev),
  (VTBL_ENTRY)_ZN9S20649C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C11D0Ev,_ZTv0_n12_N9S20649C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20649C11D0Ev,_ZThn56_N9S20649C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20649C11D0Ev,_ZThn4_N9S20649C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20649C11D0Ev,_ZThn64_N9S20649C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20649C11D0Ev,_ZThn48_N9S20649C11D0Ev),
  (VTBL_ENTRY)_ZN9S20649C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C11D1Ev,_ZTv0_n12_N9S20649C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20649C11D1Ev,_ZThn56_N9S20649C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20649C11D1Ev,_ZThn4_N9S20649C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20649C11D1Ev,_ZThn64_N9S20649C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20649C11D1Ev,_ZThn48_N9S20649C11D1Ev),
  (VTBL_ENTRY)_ZN9S20649C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20649C10D0Ev,_ZTv0_n16_N9S20649C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20649C10D0Ev,_ZThn20_N9S20649C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20649C10D1Ev,_ZTv0_n16_N9S20649C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20649C10D1Ev,_ZThn20_N9S20649C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C10D0Ev,_ZTv0_n12_N9S20649C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20649C10D0Ev,_ZThn108_N9S20649C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20649C10D0Ev,_ZThn92_N9S20649C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20649C10D0Ev,_ZThn76_N9S20649C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20649C10D0Ev,_ZThn68_N9S20649C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20649C10D0Ev,_ZThn56_N9S20649C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20649C10D0Ev,_ZThn4_N9S20649C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20649C10D0Ev,_ZThn40_N9S20649C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20649C10D0Ev,_ZThn48_N9S20649C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20649C10D0Ev,_ZThn32_N9S20649C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C10D1Ev,_ZTv0_n12_N9S20649C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20649C10D1Ev,_ZThn108_N9S20649C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20649C10D1Ev,_ZThn92_N9S20649C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20649C10D1Ev,_ZThn76_N9S20649C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20649C10D1Ev,_ZThn68_N9S20649C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20649C10D1Ev,_ZThn56_N9S20649C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20649C10D1Ev,_ZThn4_N9S20649C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20649C10D1Ev,_ZThn40_N9S20649C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20649C10D1Ev,_ZThn48_N9S20649C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20649C10D1Ev,_ZThn32_N9S20649C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C15D0Ev,_ZTv0_n12_N9S20649C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S20649C15D0Ev,_ZThn88_N9S20649C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20649C15D0Ev,_ZThn72_N9S20649C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20649C15D0Ev,_ZThn56_N9S20649C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20649C15D0Ev,_ZThn48_N9S20649C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20649C15D0Ev,_ZThn36_N9S20649C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20649C15D0Ev,_ZThn28_N9S20649C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C15D1Ev,_ZTv0_n12_N9S20649C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S20649C15D1Ev,_ZThn88_N9S20649C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20649C15D1Ev,_ZThn72_N9S20649C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20649C15D1Ev,_ZThn56_N9S20649C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20649C15D1Ev,_ZThn48_N9S20649C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20649C15D1Ev,_ZThn36_N9S20649C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20649C15D1Ev,_ZThn28_N9S20649C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20649C15D0Ev,_ZTv0_n16_N9S20649C15D0Ev), // 
  (VTBL_ENTRY)_ZN9S20649C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20649C15D1Ev,_ZTv0_n16_N9S20649C15D1Ev), // 
  (VTBL_ENTRY)_ZN9S20649C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20649C13D0Ev,_ZTv0_n16_N9S20649C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20649C13D0Ev,_ZThn16_N9S20649C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20649C13D1Ev,_ZTv0_n16_N9S20649C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20649C13D1Ev,_ZThn16_N9S20649C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C13D0Ev,_ZTv0_n12_N9S20649C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S20649C13D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20649C13D0Ev,_ZThn44_N9S20649C13D0Ev),
  (VTBL_ENTRY)_ZN9S20649C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C13D1Ev,_ZTv0_n12_N9S20649C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S20649C13D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20649C13D1Ev,_ZThn44_N9S20649C13D1Ev),
  (VTBL_ENTRY)_ZN9S20649C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C6D0Ev,_ZTv0_n12_N8S20649C6D0Ev), // 
  (VTBL_ENTRY)_ZN8S20649C6D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20649C6D0Ev,_ZThn16_N8S20649C6D0Ev),
  (VTBL_ENTRY)_ZN8S20649C6D0Ev,
  (VTBL_ENTRY)_ZN8S20649C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C6D1Ev,_ZTv0_n12_N8S20649C6D1Ev), // 
  (VTBL_ENTRY)_ZN8S20649C6D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20649C6D1Ev,_ZThn16_N8S20649C6D1Ev),
  (VTBL_ENTRY)_ZN8S20649C6D1Ev,
  (VTBL_ENTRY)_ZN8S20649C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20649C5D0Ev,_ZTv0_n16_N8S20649C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20649C5D0Ev,_ZThn36_N8S20649C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20649C5D1Ev,_ZTv0_n16_N8S20649C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20649C5D1Ev,_ZThn36_N8S20649C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20649C5D0Ev,_ZTv0_n64_N8S20649C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20649C5D0Ev,_ZThn16_N8S20649C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20649C5D1Ev,_ZTv0_n64_N8S20649C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20649C5D1Ev,_ZThn16_N8S20649C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C5D0Ev,_ZTv0_n12_N8S20649C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S20649C5D0Ev,_ZThn124_N8S20649C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20649C5D0Ev,_ZThn108_N8S20649C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S20649C5D0Ev,_ZThn92_N8S20649C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S20649C5D0Ev,_ZThn84_N8S20649C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S20649C5D0Ev,_ZThn72_N8S20649C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20649C5D0Ev,_ZThn20_N8S20649C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20649C5D0Ev,_ZThn56_N8S20649C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20649C5D0Ev,_ZThn48_N8S20649C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20649C5D0Ev,_ZThn4_N8S20649C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S20649C5D0Ev,_ZThn64_N8S20649C5D0Ev),
  (VTBL_ENTRY)_ZN8S20649C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C5D1Ev,_ZTv0_n12_N8S20649C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S20649C5D1Ev,_ZThn124_N8S20649C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20649C5D1Ev,_ZThn108_N8S20649C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S20649C5D1Ev,_ZThn92_N8S20649C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S20649C5D1Ev,_ZThn84_N8S20649C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S20649C5D1Ev,_ZThn72_N8S20649C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20649C5D1Ev,_ZThn20_N8S20649C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20649C5D1Ev,_ZThn56_N8S20649C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20649C5D1Ev,_ZThn48_N8S20649C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20649C5D1Ev,_ZThn4_N8S20649C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S20649C5D1Ev,_ZThn64_N8S20649C5D1Ev),
  (VTBL_ENTRY)_ZN8S20649C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C8D0Ev,_ZTv0_n12_N8S20649C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20649C8D0Ev,_ZThn8_N8S20649C8D0Ev),
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20649C8D0Ev,_ZThn44_N8S20649C8D0Ev),
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20649C8D0Ev,_ZThn60_N8S20649C8D0Ev),
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S20649C8D0Ev,_ZThn116_N8S20649C8D0Ev),
  (VTBL_ENTRY)_ZN8S20649C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C8D1Ev,_ZTv0_n12_N8S20649C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20649C8D1Ev,_ZThn8_N8S20649C8D1Ev),
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20649C8D1Ev,_ZThn44_N8S20649C8D1Ev),
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20649C8D1Ev,_ZThn60_N8S20649C8D1Ev),
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S20649C8D1Ev,_ZThn116_N8S20649C8D1Ev),
  (VTBL_ENTRY)_ZN8S20649C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C7D0Ev,_ZTv0_n12_N8S20649C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S20649C7D0Ev,
  (VTBL_ENTRY)_ZN8S20649C7D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20649C7D0Ev,_ZThn60_N8S20649C7D0Ev),
  (VTBL_ENTRY)_ZN8S20649C7D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S20649C7D0Ev,_ZThn116_N8S20649C7D0Ev),
  (VTBL_ENTRY)_ZN8S20649C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C7D1Ev,_ZTv0_n12_N8S20649C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S20649C7D1Ev,
  (VTBL_ENTRY)_ZN8S20649C7D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20649C7D1Ev,_ZThn60_N8S20649C7D1Ev),
  (VTBL_ENTRY)_ZN8S20649C7D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S20649C7D1Ev,_ZThn116_N8S20649C7D1Ev),
  (VTBL_ENTRY)_ZN8S20649C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C16D0Ev,_ZTv0_n12_N9S20649C16D0Ev), // 
  (VTBL_ENTRY)_ZN9S20649C16D0Ev,
  (VTBL_ENTRY)_ZN9S20649C16D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S20649C16D0Ev,_ZThn116_N9S20649C16D0Ev),
  (VTBL_ENTRY)_ZN9S20649C16D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20649C16D1Ev,_ZTv0_n12_N9S20649C16D1Ev), // 
  (VTBL_ENTRY)_ZN9S20649C16D1Ev,
  (VTBL_ENTRY)_ZN9S20649C16D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S20649C16D1Ev,_ZThn116_N9S20649C16D1Ev),
  (VTBL_ENTRY)_ZN9S20649C16D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20649C1D0Ev,_ZTv0_n16_N8S20649C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20649C1D0Ev,_ZThn92_N8S20649C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20649C1D1Ev,_ZTv0_n16_N8S20649C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20649C1D1Ev,_ZThn92_N8S20649C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20649C1D0Ev,_ZTv0_n64_N8S20649C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20649C1D0Ev,_ZThn72_N8S20649C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20649C1D1Ev,_ZTv0_n64_N8S20649C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20649C1D1Ev,_ZThn72_N8S20649C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C1D0Ev,_ZTv0_n12_N8S20649C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20649C1D0Ev,_ZThn180_N8S20649C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S20649C1D0Ev,_ZThn164_N8S20649C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20649C1D0Ev,_ZThn148_N8S20649C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20649C1D0Ev,_ZThn140_N8S20649C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20649C1D0Ev,_ZThn128_N8S20649C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20649C1D0Ev,_ZThn120_N8S20649C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20649C1D0Ev,_ZThn112_N8S20649C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20649C1D0Ev,_ZThn104_N8S20649C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S20649C1D0Ev,_ZThn76_N8S20649C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20649C1D0Ev,_ZThn60_N8S20649C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20649C1D0Ev,_ZThn56_N8S20649C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20649C1D0Ev,_ZThn4_N8S20649C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20649C1D1Ev,_ZTv0_n12_N8S20649C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20649C1D1Ev,_ZThn180_N8S20649C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S20649C1D1Ev,_ZThn164_N8S20649C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20649C1D1Ev,_ZThn148_N8S20649C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20649C1D1Ev,_ZThn140_N8S20649C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20649C1D1Ev,_ZThn128_N8S20649C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20649C1D1Ev,_ZThn120_N8S20649C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20649C1D1Ev,_ZThn112_N8S20649C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20649C1D1Ev,_ZThn104_N8S20649C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S20649C1D1Ev,_ZThn76_N8S20649C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20649C1D1Ev,_ZThn60_N8S20649C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20649C1D1Ev,_ZThn56_N8S20649C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20649C1D1Ev,_ZThn4_N8S20649C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20649C1 = {  "S20649C1", // class name
  bases_S20649C1, 51,
  &(vtc_S20649C1[0]), // expected_vtbl_contents
  &(vtt_S20649C1[0]), // expected_vtt_contents
  ABISELECT(312,196), // object size
  NSPAIRA(_ZTI8S20649C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20649C1),173, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20649C1),147, //virtual table table var
  34, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names78,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7727C3  : virtual S3216C8_nt {
  virtual  ~S7727C3(); // _ZN7S7727C3D2Ev
  S7727C3(); // tgen
};
//SIG(-1 S7727C3) C1{ VBC2{ m Fi} vd}


 S7727C3 ::~S7727C3(){ note_dtor("S7727C3", this);}
S7727C3 ::S7727C3(){ note_ctor("S7727C3", this);} // tgen

static void Test_S7727C3()
{
  extern Class_Descriptor cd_S7727C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7727C3, buf);
    S7727C3 *dp, &lv = *(dp=new (buf) S7727C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7727C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7727C3)");
    check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(8,4), "S7727C3");
    test_class_info(&lv, &cd_S7727C3);
    dp->~S7727C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7727C3(Test_S7727C3, "S7727C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7727C3C1Ev();
extern void _ZN7S7727C3D2Ev();
Name_Map name_map_S7727C3[] = {
  NSPAIR(_ZN7S7727C3C1Ev),
  NSPAIR(_ZN7S7727C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S7727C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7727C3[];
extern void _ZN7S7727C3D1Ev();
extern void _ZN7S7727C3D0Ev();
static  VTBL_ENTRY vtc_S7727C3[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C3[0]),
  (VTBL_ENTRY)&_ZN7S7727C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7727C3D0Ev,
};
extern VTBL_ENTRY _ZTV7S7727C3[];
static  VTT_ENTRY vtt_S7727C3[] = {
  {&(_ZTV7S7727C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7727C3[];
extern  VTBL_ENTRY _ZTV7S7727C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C3[];
Class_Descriptor cd_S7727C3 = {  "S7727C3", // class name
  bases_S7727C3, 1,
  &(vtc_S7727C3[0]), // expected_vtbl_contents
  &(vtt_S7727C3[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7727C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7727C3),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7727C3),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  S7727C9  : virtual S7883C3_nt , virtual S3216C8_nt , S4677C37 {
  int s7727c9f0;
  ~S7727C9(); // tgen
  S7727C9(); // tgen
};
//SIG(-1 S7727C9) C1{ VBC2{ vd m} VBC3{ m Fi} BC4{ m} Fi}


S7727C9 ::~S7727C9(){ note_dtor("S7727C9", this);} // tgen
S7727C9 ::S7727C9(){ note_ctor("S7727C9", this);} // tgen

static void Test_S7727C9()
{
  extern Class_Descriptor cd_S7727C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7727C9, buf);
    S7727C9 *dp, &lv = *(dp=new (buf) S7727C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7727C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7727C9)");
    check_base_class_offset(lv, (S7883C3_nt*), 0, "S7727C9");
    check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(12,8), "S7727C9");
    check_base_class_offset(lv, (S4677C37*), 0, "S7727C9");
    check_field_offset(lv, s7727c9f0, ABISELECT(8,4), "S7727C9.s7727c9f0");
    test_class_info(&lv, &cd_S7727C9);
    dp->~S7727C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7727C9(Test_S7727C9, "S7727C9", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7727C9C1Ev();
extern void _ZN7S7727C9D1Ev();
Name_Map name_map_S7727C9[] = {
  NSPAIR(_ZN7S7727C9C1Ev),
  NSPAIR(_ZN7S7727C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
static Base_Class bases_S7727C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7727C9[];
extern void _ZN7S7727C9D1Ev();
extern void _ZN7S7727C9D0Ev();
static  VTBL_ENTRY vtc_S7727C9[] = {
  ABISELECT(12,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&_ZN7S7727C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7727C9D0Ev,
};
extern VTBL_ENTRY _ZTV7S7727C9[];
static  VTT_ENTRY vtt_S7727C9[] = {
  {&(_ZTV7S7727C9[5]),  5,7},
  {&(_ZTV7S7727C9[5]),  5,7},
};
extern VTBL_ENTRY _ZTI7S7727C9[];
extern  VTBL_ENTRY _ZTV7S7727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C9[];
Class_Descriptor cd_S7727C9 = {  "S7727C9", // class name
  bases_S7727C9, 3,
  &(vtc_S7727C9[0]), // expected_vtbl_contents
  &(vtt_S7727C9[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7727C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7727C9),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7727C9),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  S7727C8  : S7727C9 {
  int s7727c8f0;
  ~S7727C8(); // tgen
  S7727C8(); // tgen
};
//SIG(-1 S7727C8) C1{ BC2{ VBC3{ vd m} VBC4{ m Fi} BC5{ m} Fi} Fi}


S7727C8 ::~S7727C8(){ note_dtor("S7727C8", this);} // tgen
S7727C8 ::S7727C8(){ note_ctor("S7727C8", this);} // tgen

static void Test_S7727C8()
{
  extern Class_Descriptor cd_S7727C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7727C8, buf);
    S7727C8 *dp, &lv = *(dp=new (buf) S7727C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7727C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7727C8)");
    check_base_class_offset(lv, (S7883C3_nt*)(S7727C9*), 0, "S7727C8");
    check_base_class_offset(lv, (S3216C8_nt*)(S7727C9*), ABISELECT(16,12), "S7727C8");
    check_base_class_offset(lv, (S4677C37*)(S7727C9*), 0, "S7727C8");
    check_base_class_offset(lv, (S7727C9*), 0, "S7727C8");
    check_field_offset(lv, s7727c8f0, ABISELECT(12,8), "S7727C8.s7727c8f0");
    test_class_info(&lv, &cd_S7727C8);
    dp->~S7727C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7727C8(Test_S7727C8, "S7727C8", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S7727C8C1Ev();
extern void _ZN7S7727C8D1Ev();
Name_Map name_map_S7727C8[] = {
  NSPAIR(_ZN7S7727C8C1Ev),
  NSPAIR(_ZN7S7727C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C9;
extern VTBL_ENTRY _ZTI7S7727C9[];
extern  VTBL_ENTRY _ZTV7S7727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C9[];
static Base_Class bases_S7727C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7727C9,    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 _ZTI7S7727C8[];
extern void _ZN7S7727C8D1Ev();
extern void _ZN7S7727C8D0Ev();
static  VTBL_ENTRY vtc_S7727C8[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C8[0]),
  (VTBL_ENTRY)&_ZN7S7727C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7727C8D0Ev,
};
extern VTBL_ENTRY _ZTV7S7727C8[];
extern void _ZN7S7727C9D1Ev();
extern void _ZN7S7727C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7727C9__7S7727C8[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&_ZN7S7727C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7727C9D0Ev,
};
static  VTT_ENTRY vtt_S7727C8[] = {
  {&(_ZTV7S7727C8[5]),  5,7},
  {&(_tg__ZTV7S7727C9__7S7727C8[5]),  5,7},
  {&(_tg__ZTV7S7727C9__7S7727C8[5]),  5,7},
  {&(_ZTV7S7727C8[5]),  5,7},
};
extern VTBL_ENTRY _ZTI7S7727C8[];
extern  VTBL_ENTRY _ZTV7S7727C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C8[];
Class_Descriptor cd_S7727C8 = {  "S7727C8", // class name
  bases_S7727C8, 4,
  &(vtc_S7727C8[0]), // expected_vtbl_contents
  &(vtt_S7727C8[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S7727C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7727C8),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7727C8),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7727C7  : virtual S7727C8 , S4677C37 {
  ~S7727C7(); // tgen
  S7727C7(); // tgen
};
//SIG(-1 S7727C7) C1{ VBC2{ BC3{ VBC4{ vd m} VBC5{ m Fi} BC6{ m} Fi} Fi} BC6}


S7727C7 ::~S7727C7(){ note_dtor("S7727C7", this);} // tgen
S7727C7 ::S7727C7(){ note_ctor("S7727C7", this);} // tgen

static void Test_S7727C7()
{
  extern Class_Descriptor cd_S7727C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S7727C7, buf);
    S7727C7 *dp, &lv = *(dp=new (buf) S7727C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S7727C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7727C7)");
    check_base_class_offset(lv, (S7883C3_nt*)(S7727C9*)(S7727C8*), 0, "S7727C7");
    check_base_class_offset(lv, (S3216C8_nt*)(S7727C9*)(S7727C8*), ABISELECT(24,16), "S7727C7");
    check_base_class_offset(lv, (S4677C37*)(S7727C9*)(S7727C8*), ABISELECT(8,4), "S7727C7");
    check_base_class_offset(lv, (S7727C9*)(S7727C8*), ABISELECT(8,4), "S7727C7");
    check_base_class_offset(lv, (S7727C8*), ABISELECT(8,4), "S7727C7");
    /*is_ambiguous_... S7727C7::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*), 0, "S7727C7");
    test_class_info(&lv, &cd_S7727C7);
    dp->~S7727C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7727C7(Test_S7727C7, "S7727C7", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S7727C7C1Ev();
extern void _ZN7S7727C7D1Ev();
Name_Map name_map_S7727C7[] = {
  NSPAIR(_ZN7S7727C7C1Ev),
  NSPAIR(_ZN7S7727C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C9;
extern VTBL_ENTRY _ZTI7S7727C9[];
extern  VTBL_ENTRY _ZTV7S7727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C9[];
extern Class_Descriptor cd_S7727C8;
extern VTBL_ENTRY _ZTI7S7727C8[];
extern  VTBL_ENTRY _ZTV7S7727C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C8[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
static Base_Class bases_S7727C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7727C9,    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
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7727C8,    ABISELECT(8,4), //bcp->offset
    8, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7727C7[];
extern void _ZN7S7727C7D1Ev();
extern void _ZN7S7727C7D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev)();
extern void ABISELECT(_ZThn8_N7S7727C7D1Ev,_ZThn4_N7S7727C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev)();
extern void ABISELECT(_ZThn8_N7S7727C7D0Ev,_ZThn4_N7S7727C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7727C7[] = {
  ABISELECT(24,16),
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C7[0]),
  (VTBL_ENTRY)&_ZN7S7727C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7727C7D0Ev,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7727C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev),
};
extern VTBL_ENTRY _ZTV7S7727C7[];
extern void ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev)();
extern void _ZN7S7727C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev)();
extern void _ZN7S7727C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C7[] = {
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void _ZN7S7727C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
extern void _ZN7S7727C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C97S7727C8__7S7727C7[] = {
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C97S7727C8__7S7727C7[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C8__7S7727C7[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev),
};
static  VTT_ENTRY vtt_S7727C7[] = {
  {&(_ZTV7S7727C7[6]),  6,15},
  {&(_ZTV7S7727C7[13]),  13,15},
  {&(_ZTV7S7727C7[6]),  6,15},
  {&(_tg__ZTV7S7727C8__7S7727C7[5]),  5,7},
  {&(_tg__ZTV7S7727C97S7727C8__7S7727C7[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7727C97S7727C8__7S7727C7[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7727C8__7S7727C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7727C7[];
extern  VTBL_ENTRY _ZTV7S7727C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C7[];
static VTBL_ENTRY alt_thunk_names79[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev), // 
  (VTBL_ENTRY)_ZN7S7727C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev), // 
  (VTBL_ENTRY)_ZN7S7727C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev), // 
  (VTBL_ENTRY)_ZN7S7727C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev), // 
  (VTBL_ENTRY)_ZN7S7727C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7727C7D0Ev,_ZThn4_N7S7727C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7727C7D1Ev,_ZThn4_N7S7727C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7727C7 = {  "S7727C7", // class name
  bases_S7727C7, 6,
  &(vtc_S7727C7[0]), // expected_vtbl_contents
  &(vtt_S7727C7[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S7727C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7727C7),15, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7727C7),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names79,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7727C6  : virtual S7727C7 {
  ::S3216C8_nt s7727c6f0;
  ~S7727C6(); // tgen
  S7727C6(); // tgen
};
//SIG(-1 S7727C6) C1{ VBC2{ VBC3{ BC4{ VBC5{ vd m} VBC6{ m Fi} BC7{ m} Fi} Fi} BC7} FC6}


S7727C6 ::~S7727C6(){ note_dtor("S7727C6", this);} // tgen
S7727C6 ::S7727C6(){ note_ctor("S7727C6", this);} // tgen

static void Test_S7727C6()
{
  extern Class_Descriptor cd_S7727C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S7727C6, buf);
    S7727C6 *dp, &lv = *(dp=new (buf) S7727C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S7727C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7727C6)");
    check_base_class_offset(lv, (S7883C3_nt*)(S7727C9*)(S7727C8*), 0, "S7727C6");
    check_base_class_offset(lv, (S3216C8_nt*)(S7727C9*)(S7727C8*), ABISELECT(32,20), "S7727C6");
    check_base_class_offset(lv, (S4677C37*)(S7727C9*)(S7727C8*), ABISELECT(16,8), "S7727C6");
    check_base_class_offset(lv, (S7727C9*)(S7727C8*), ABISELECT(16,8), "S7727C6");
    check_base_class_offset(lv, (S7727C8*)(S7727C7*), ABISELECT(16,8), "S7727C6");
    /*is_ambiguous_... S7727C7::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7727C7*), 0, "S7727C6");
    check_base_class_offset(lv, (S7727C7*), 0, "S7727C6");
    check_field_offset(lv, s7727c6f0, ABISELECT(8,4), "S7727C6.s7727c6f0");
    test_class_info(&lv, &cd_S7727C6);
    dp->~S7727C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7727C6(Test_S7727C6, "S7727C6", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S7727C6C1Ev();
extern void _ZN7S7727C6D1Ev();
Name_Map name_map_S7727C6[] = {
  NSPAIR(_ZN7S7727C6C1Ev),
  NSPAIR(_ZN7S7727C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C9;
extern VTBL_ENTRY _ZTI7S7727C9[];
extern  VTBL_ENTRY _ZTV7S7727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C9[];
extern Class_Descriptor cd_S7727C8;
extern VTBL_ENTRY _ZTI7S7727C8[];
extern  VTBL_ENTRY _ZTV7S7727C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C8[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C7;
extern VTBL_ENTRY _ZTI7S7727C7[];
extern  VTBL_ENTRY _ZTV7S7727C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C7[];
static Base_Class bases_S7727C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_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
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7727C9,    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
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7727C8,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7727C7,    0, //bcp->offset
    -1, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7727C6[];
extern void _ZN7S7727C6D1Ev();
extern void _ZN7S7727C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7727C6D1Ev,_ZThn8_N7S7727C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7727C6D0Ev,_ZThn8_N7S7727C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7727C6[] = {
  0,
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C6[0]),
  (VTBL_ENTRY)&_ZN7S7727C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7727C6D0Ev,
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev),
};
extern VTBL_ENTRY _ZTV7S7727C6[];
extern void ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev)();
extern void _ZN7S7727C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev)();
extern void _ZN7S7727C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C7__7S7727C6[] = {
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S7727C7D1Ev,_ZThn8_N7S7727C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev)();
extern void ABISELECT(_ZThn16_N7S7727C7D0Ev,_ZThn8_N7S7727C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C7__7S7727C6[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7727C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev)();
extern void _ZN7S7727C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev)();
extern void _ZN7S7727C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C6[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void _ZN7S7727C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
extern void _ZN7S7727C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C97S7727C8__7S7727C6[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C97S7727C8__7S7727C6[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C8__7S7727C6[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev),
};
static  VTT_ENTRY vtt_S7727C6[] = {
  {&(_ZTV7S7727C6[7]),  7,16},
  {&(_ZTV7S7727C6[7]),  7,16},
  {&(_ZTV7S7727C6[14]),  14,16},
  {&(_ZTV7S7727C6[7]),  7,16},
  {&(_tg__ZTV7S7727C7__7S7727C6[6]),  6,8},
  {&(_tg__ZTV7S7727C8__7S7727C7__7S7727C6[5]),  5,7},
  {&(_tg__ZTV7S7727C7__7S7727C6[6]),  6,8},
  {&(_tg__ZTV7S7727C8__7S7727C6[5]),  5,7},
  {&(_tg__ZTV7S7727C97S7727C8__7S7727C6[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7727C97S7727C8__7S7727C6[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7727C8__7S7727C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7727C6[];
extern  VTBL_ENTRY _ZTV7S7727C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C6[];
static VTBL_ENTRY alt_thunk_names80[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev), // 
  (VTBL_ENTRY)_ZN7S7727C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev), // 
  (VTBL_ENTRY)_ZN7S7727C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev), // 
  (VTBL_ENTRY)_ZN7S7727C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev), // 
  (VTBL_ENTRY)_ZN7S7727C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7727C7D0Ev,_ZThn8_N7S7727C7D0Ev),
  (VTBL_ENTRY)_ZN7S7727C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7727C7D1Ev,_ZThn8_N7S7727C7D1Ev),
  (VTBL_ENTRY)_ZN7S7727C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7727C6D0Ev,_ZThn8_N7S7727C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7727C6D1Ev,_ZThn8_N7S7727C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7727C6 = {  "S7727C6", // class name
  bases_S7727C6, 7,
  &(vtc_S7727C6[0]), // expected_vtbl_contents
  &(vtt_S7727C6[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S7727C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7727C6),16, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7727C6),11, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names80,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7727C5  : virtual S3216C8_nt , virtual S7727C6 , virtual S7727C3 , virtual S4677C37 , S7727C9 {
  int s7727c5f0;
  void *s7727c5f1;
  virtual  ~S7727C5(); // _ZN7S7727C5D2Ev
  S7727C5(); // tgen
};
//SIG(-1 S7727C5) C1{ VBC2{ m Fi} VBC3{ VBC4{ VBC5{ BC6{ VBC7{ vd m} VBC2 BC8{ m} Fi} Fi} BC8} FC2} VBC9{ VBC2 vd} VBC8 BC6 vd Fi Fp}


 S7727C5 ::~S7727C5(){ note_dtor("S7727C5", this);}
S7727C5 ::S7727C5(){ note_ctor("S7727C5", this);} // tgen

static void Test_S7727C5()
{
  extern Class_Descriptor cd_S7727C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S7727C5, buf);
    S7727C5 *dp, &lv = *(dp=new (buf) S7727C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S7727C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7727C5)");
    check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(24,16), "S7727C5");
    check_base_class_offset(lv, (S3216C8_nt*)(S7727C9*)(S7727C8*), ABISELECT(24,16), "S7727C5");
    check_base_class_offset(lv, (S3216C8_nt*)(S7727C3*), ABISELECT(24,16), "S7727C5");
    /*is_ambiguous_... S7727C5::S7727C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7727C9*), ABISELECT(24,16), "S7727C5");
    check_base_class_offset(lv, (S7883C3_nt*)(S7727C9*)(S7727C8*), ABISELECT(32,20), "S7727C5");
    /*is_ambiguous_... S7727C5::S7727C9 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7727C9*), ABISELECT(32,20), "S7727C5");
    check_base_class_offset(lv, (S4677C37*)(S7727C9*)(S7727C8*), ABISELECT(48,28), "S7727C5");
    check_base_class_offset(lv, (S7727C9*)(S7727C8*), ABISELECT(48,28), "S7727C5");
    check_base_class_offset(lv, (S7727C8*)(S7727C7*), ABISELECT(48,28), "S7727C5");
    /*is_ambiguous_... S7727C7::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7727C7*), ABISELECT(32,20), "S7727C5");
    check_base_class_offset(lv, (S7727C7*)(S7727C6*), ABISELECT(32,20), "S7727C5");
    check_base_class_offset(lv, (S7727C6*), ABISELECT(32,20), "S7727C5");
    check_base_class_offset(lv, (S7727C3*), ABISELECT(64,40), "S7727C5");
    /*is_ambiguous_... S7727C5::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*), ABISELECT(72,44), "S7727C5");
    /*is_ambiguous_... S7727C5::S7727C9 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7727C9*), 0, "S7727C5");
    /*is_ambiguous_... S7727C5::S7727C9 */ AMB_check_base_class_offset(lv, (S7727C9*), 0, "S7727C5");
    check_field_offset(lv, s7727c5f0, ABISELECT(12,8), "S7727C5.s7727c5f0");
    check_field_offset(lv, s7727c5f1, ABISELECT(16,12), "S7727C5.s7727c5f1");
    test_class_info(&lv, &cd_S7727C5);
    dp->~S7727C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7727C5(Test_S7727C5, "S7727C5", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN7S7727C5C1Ev();
extern void _ZN7S7727C5D2Ev();
Name_Map name_map_S7727C5[] = {
  NSPAIR(_ZN7S7727C5C1Ev),
  NSPAIR(_ZN7S7727C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C9;
extern VTBL_ENTRY _ZTI7S7727C9[];
extern  VTBL_ENTRY _ZTV7S7727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C9[];
extern Class_Descriptor cd_S7727C8;
extern VTBL_ENTRY _ZTI7S7727C8[];
extern  VTBL_ENTRY _ZTV7S7727C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C8[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C7;
extern VTBL_ENTRY _ZTI7S7727C7[];
extern  VTBL_ENTRY _ZTV7S7727C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C7[];
extern Class_Descriptor cd_S7727C6;
extern VTBL_ENTRY _ZTI7S7727C6[];
extern  VTBL_ENTRY _ZTV7S7727C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C6[];
extern Class_Descriptor cd_S7727C3;
extern VTBL_ENTRY _ZTI7S7727C3[];
extern  VTBL_ENTRY _ZTV7S7727C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C3[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C9;
extern VTBL_ENTRY _ZTI7S7727C9[];
extern  VTBL_ENTRY _ZTV7S7727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C9[];
static Base_Class bases_S7727C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7883C3_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7727C9,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7727C8,    ABISELECT(48,28), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7727C7,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7727C6,    ABISELECT(32,20), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7727C3,    ABISELECT(64,40), //bcp->offset
    28, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7727C9,    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},
  {0}};
extern VTBL_ENTRY _ZTI7S7727C5[];
extern void ABISELECT(_ZTv0_n24_N7S7727C5D1Ev,_ZTv0_n12_N7S7727C5D1Ev)();
extern void _ZN7S7727C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C5D0Ev,_ZTv0_n12_N7S7727C5D0Ev)();
extern void _ZN7S7727C5D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C5D1Ev,_ZTv0_n12_N7S7727C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7727C5D1Ev,_ZThn20_N7S7727C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C5D0Ev,_ZTv0_n12_N7S7727C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7727C5D0Ev,_ZThn20_N7S7727C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C5D1Ev,_ZTv0_n12_N7S7727C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7727C5D1Ev,_ZThn28_N7S7727C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C5D0Ev,_ZTv0_n12_N7S7727C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7727C5D0Ev,_ZThn28_N7S7727C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7727C5D1Ev,_ZTv0_n16_N7S7727C5D1Ev)();
extern void ABISELECT(_ZThn64_N7S7727C5D1Ev,_ZThn40_N7S7727C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7727C5D0Ev,_ZTv0_n16_N7S7727C5D0Ev)();
extern void ABISELECT(_ZThn64_N7S7727C5D0Ev,_ZThn40_N7S7727C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7727C5[] = {
  ABISELECT(72,44),
  ABISELECT(64,40),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(32,20),
  ABISELECT(24,16),
  ABISELECT(32,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C5D1Ev,_ZTv0_n12_N7S7727C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C5D0Ev,_ZTv0_n12_N7S7727C5D0Ev),
  0,
  ABISELECT(-8,-4),
  0,
  ABISELECT(16,8),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7727C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C5D1Ev,_ZTv0_n12_N7S7727C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C5D0Ev,_ZTv0_n12_N7S7727C5D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7727C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C5D1Ev,_ZTv0_n12_N7S7727C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C5D0Ev,_ZTv0_n12_N7S7727C5D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7727C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7727C5D1Ev,_ZTv0_n16_N7S7727C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7727C5D0Ev,_ZTv0_n16_N7S7727C5D0Ev),
};
extern VTBL_ENTRY _ZTV7S7727C5[];
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void _ZN7S7727C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
extern void _ZN7S7727C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C9__A1__7S7727C5[] = {
  ABISELECT(24,16),
  ABISELECT(32,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void ABISELECT(_ZThn32_N7S7727C9D1Ev,_ZThn20_N7S7727C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
extern void ABISELECT(_ZThn32_N7S7727C9D0Ev,_ZThn20_N7S7727C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C9__A1__7S7727C5[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev)();
extern void _ZN7S7727C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev)();
extern void _ZN7S7727C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C6__7S7727C5[] = {
  0,
  ABISELECT(-8,-4),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7727C6D1Ev,_ZThn8_N7S7727C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7727C6D0Ev,_ZThn8_N7S7727C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C6__7S7727C5[] = {
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev)();
extern void _ZN7S7727C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev)();
extern void _ZN7S7727C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C7__7S7727C5[] = {
  ABISELECT(-8,-4),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S7727C7D1Ev,_ZThn8_N7S7727C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev)();
extern void ABISELECT(_ZThn16_N7S7727C7D0Ev,_ZThn8_N7S7727C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C7__7S7727C5[] = {
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7727C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev)();
extern void _ZN7S7727C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev)();
extern void _ZN7S7727C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C5[] = {
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void _ZN7S7727C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
extern void _ZN7S7727C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C97S7727C8__7S7727C5[] = {
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C97S7727C8__7S7727C5[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C8__7S7727C5[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev),
};
extern void _ZN7S7727C3D1Ev();
extern void _ZN7S7727C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7727C3__7S7727C5[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C3[0]),
  (VTBL_ENTRY)&_ZN7S7727C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7727C3D0Ev,
};
static  VTT_ENTRY vtt_S7727C5[] = {
  {&(_ZTV7S7727C5[10]),  10,34},
  {&(_tg__ZTV7S7727C9__A1__7S7727C5[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7727C9__A1__7S7727C5[3]),  3,5},
  {&(_ZTV7S7727C5[19]),  19,34},
  {&(_ZTV7S7727C5[19]),  19,34},
  {&(_ZTV7S7727C5[26]),  26,34},
  {&(_ZTV7S7727C5[19]),  19,34},
  {&(_ZTV7S7727C5[32]),  32,34},
  {&(_tg__ZTV7S7727C6__7S7727C5[7]),  7,9},
  {&(_tg__ZTV7S7727C6__7S7727C5[7]),  7,9},
  {&(_tg__ZTV7S7727C8__7S7727C6__7S7727C5[5]),  5,7},
  {&(_tg__ZTV7S7727C6__7S7727C5[7]),  7,9},
  {&(_tg__ZTV7S7727C7__7S7727C5[6]),  6,8},
  {&(_tg__ZTV7S7727C8__7S7727C7__7S7727C5[5]),  5,7},
  {&(_tg__ZTV7S7727C7__7S7727C5[6]),  6,8},
  {&(_tg__ZTV7S7727C8__7S7727C5[5]),  5,7},
  {&(_tg__ZTV7S7727C97S7727C8__7S7727C5[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7727C97S7727C8__7S7727C5[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7727C8__7S7727C5[3]),  3,5},
  {&(_tg__ZTV7S7727C3__7S7727C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7727C5[];
extern  VTBL_ENTRY _ZTV7S7727C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C5[];
static VTBL_ENTRY alt_thunk_names81[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev), // 
  (VTBL_ENTRY)_ZN7S7727C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev), // 
  (VTBL_ENTRY)_ZN7S7727C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7727C7D0Ev,_ZThn8_N7S7727C7D0Ev),
  (VTBL_ENTRY)_ZN7S7727C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7727C7D1Ev,_ZThn8_N7S7727C7D1Ev),
  (VTBL_ENTRY)_ZN7S7727C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7727C6D0Ev,_ZThn8_N7S7727C6D0Ev),
  (VTBL_ENTRY)_ZN7S7727C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7727C6D1Ev,_ZThn8_N7S7727C6D1Ev),
  (VTBL_ENTRY)_ZN7S7727C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev), // 
  (VTBL_ENTRY)_ZN7S7727C9D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7727C9D0Ev,_ZThn20_N7S7727C9D0Ev),
  (VTBL_ENTRY)_ZN7S7727C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev), // 
  (VTBL_ENTRY)_ZN7S7727C9D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7727C9D1Ev,_ZThn20_N7S7727C9D1Ev),
  (VTBL_ENTRY)_ZN7S7727C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7727C5D0Ev,_ZTv0_n16_N7S7727C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7727C5D0Ev,_ZThn40_N7S7727C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7727C5D1Ev,_ZTv0_n16_N7S7727C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7727C5D1Ev,_ZThn40_N7S7727C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C5D0Ev,_ZTv0_n12_N7S7727C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7727C5D0Ev,_ZThn28_N7S7727C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7727C5D0Ev,_ZThn20_N7S7727C5D0Ev),
  (VTBL_ENTRY)_ZN7S7727C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C5D1Ev,_ZTv0_n12_N7S7727C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7727C5D1Ev,_ZThn28_N7S7727C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7727C5D1Ev,_ZThn20_N7S7727C5D1Ev),
  (VTBL_ENTRY)_ZN7S7727C5D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7727C5 = {  "S7727C5", // class name
  bases_S7727C5, 12,
  &(vtc_S7727C5[0]), // expected_vtbl_contents
  &(vtt_S7727C5[0]), // expected_vtt_contents
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI7S7727C5),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7727C5),34, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7727C5),20, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names81,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7727C2  : virtual S7727C3 , virtual S7727C5 , virtual S7727C9 {
  virtual  ~S7727C2(); // _ZN7S7727C2D2Ev
  S7727C2(); // tgen
};
//SIG(-1 S7727C2) C1{ VBC2{ VBC3{ m Fi} vd} VBC4{ VBC3 VBC5{ VBC6{ VBC7{ BC8{ VBC9{ vd m} VBC3 BC10{ m} Fi} Fi} BC10} FC3} VBC2 VBC10 BC8 vd Fi Fp} VBC8 vd}


 S7727C2 ::~S7727C2(){ note_dtor("S7727C2", this);}
S7727C2 ::S7727C2(){ note_ctor("S7727C2", this);} // tgen

static void Test_S7727C2()
{
  extern Class_Descriptor cd_S7727C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,14)];
    init_test(&cd_S7727C2, buf);
    S7727C2 *dp, &lv = *(dp=new (buf) S7727C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,52), "sizeof(S7727C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7727C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S7727C3*), ABISELECT(8,4), "S7727C2");
    check_base_class_offset(lv, (S3216C8_nt*)(S7727C5*), ABISELECT(8,4), "S7727C2");
    check_base_class_offset(lv, (S3216C8_nt*)(S7727C9*)(S7727C8*), ABISELECT(8,4), "S7727C2");
    /*is_ambiguous_... S7727C5::S7727C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7727C9*)(S7727C5*), ABISELECT(8,4), "S7727C2");
    /*is_ambiguous_... S7727C2::S7727C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7727C9*), ABISELECT(8,4), "S7727C2");
    check_base_class_offset(lv, (S7727C3*), 0, "S7727C2");
    check_base_class_offset(lv, (S7727C3*)(S7727C5*), 0, "S7727C2");
    check_base_class_offset(lv, (S7883C3_nt*)(S7727C9*)(S7727C8*), ABISELECT(40,24), "S7727C2");
    /*is_ambiguous_... S7727C5::S7727C9 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7727C9*)(S7727C5*), ABISELECT(40,24), "S7727C2");
    /*is_ambiguous_... S7727C2::S7727C9 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7727C9*), ABISELECT(40,24), "S7727C2");
    check_base_class_offset(lv, (S4677C37*)(S7727C9*)(S7727C8*), ABISELECT(56,32), "S7727C2");
    check_base_class_offset(lv, (S7727C9*)(S7727C8*), ABISELECT(56,32), "S7727C2");
    check_base_class_offset(lv, (S7727C8*)(S7727C7*), ABISELECT(56,32), "S7727C2");
    /*is_ambiguous_... S7727C7::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7727C7*), ABISELECT(40,24), "S7727C2");
    check_base_class_offset(lv, (S7727C7*)(S7727C6*), ABISELECT(40,24), "S7727C2");
    check_base_class_offset(lv, (S7727C6*)(S7727C5*), ABISELECT(40,24), "S7727C2");
    /*is_ambiguous_... S7727C5::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7727C5*), 0, "S7727C2");
    /*is_ambiguous_... S7727C5::S7727C9 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7727C9*)(S7727C5*), ABISELECT(16,8), "S7727C2");
    /*is_ambiguous_... S7727C5::S7727C9 */ AMB_check_base_class_offset(lv, (S7727C9*)(S7727C5*), ABISELECT(16,8), "S7727C2");
    check_base_class_offset(lv, (S7727C5*), ABISELECT(16,8), "S7727C2");
    /*is_ambiguous_... S7727C2::S7727C9 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7727C9*), ABISELECT(72,44), "S7727C2");
    /*is_ambiguous_... S7727C2::S7727C9 */ AMB_check_base_class_offset(lv, (S7727C9*), ABISELECT(72,44), "S7727C2");
    test_class_info(&lv, &cd_S7727C2);
    dp->~S7727C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7727C2(Test_S7727C2, "S7727C2", ABISELECT(88,52));

#else // __cplusplus

extern void _ZN7S7727C2C1Ev();
extern void _ZN7S7727C2D2Ev();
Name_Map name_map_S7727C2[] = {
  NSPAIR(_ZN7S7727C2C1Ev),
  NSPAIR(_ZN7S7727C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7727C3;
extern VTBL_ENTRY _ZTI7S7727C3[];
extern  VTBL_ENTRY _ZTV7S7727C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C3[];
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C9;
extern VTBL_ENTRY _ZTI7S7727C9[];
extern  VTBL_ENTRY _ZTV7S7727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C9[];
extern Class_Descriptor cd_S7727C8;
extern VTBL_ENTRY _ZTI7S7727C8[];
extern  VTBL_ENTRY _ZTV7S7727C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C8[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C7;
extern VTBL_ENTRY _ZTI7S7727C7[];
extern  VTBL_ENTRY _ZTV7S7727C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C7[];
extern Class_Descriptor cd_S7727C6;
extern VTBL_ENTRY _ZTI7S7727C6[];
extern  VTBL_ENTRY _ZTV7S7727C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C9;
extern VTBL_ENTRY _ZTI7S7727C9[];
extern  VTBL_ENTRY _ZTV7S7727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C9[];
extern Class_Descriptor cd_S7727C5;
extern VTBL_ENTRY _ZTI7S7727C5[];
extern  VTBL_ENTRY _ZTV7S7727C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C5[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C9;
extern VTBL_ENTRY _ZTI7S7727C9[];
extern  VTBL_ENTRY _ZTV7S7727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C9[];
static Base_Class bases_S7727C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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, 1},
  {&cd_S7727C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7883C3_nt,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    4, //immediately_derived
  0, 0},
  {&cd_S7727C9,    ABISELECT(56,32), //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7727C8,    ABISELECT(56,32), //bcp->offset
    35, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7727C7,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7727C6,    ABISELECT(40,24), //bcp->offset
    26, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4677C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7727C9,    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
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7727C5,    ABISELECT(16,8), //bcp->offset
    14, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    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, 0},
  {&cd_S7727C9,    ABISELECT(72,44), //bcp->offset
    42, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7727C2[];
extern void _ZN7S7727C2D1Ev();
extern void _ZN7S7727C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S7727C2D1Ev,_ZThn8_N7S7727C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev)();
extern void ABISELECT(_ZThn16_N7S7727C2D0Ev,_ZThn8_N7S7727C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev)();
extern void ABISELECT(_ZThn40_N7S7727C2D1Ev,_ZThn24_N7S7727C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev)();
extern void ABISELECT(_ZThn40_N7S7727C2D0Ev,_ZThn24_N7S7727C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev)();
extern void ABISELECT(_ZThn56_N7S7727C2D1Ev,_ZThn32_N7S7727C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev)();
extern void ABISELECT(_ZThn56_N7S7727C2D0Ev,_ZThn32_N7S7727C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev)();
extern void ABISELECT(_ZThn72_N7S7727C2D1Ev,_ZThn44_N7S7727C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev)();
extern void ABISELECT(_ZThn72_N7S7727C2D0Ev,_ZThn44_N7S7727C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7727C2[] = {
  ABISELECT(72,44),
  0,
  ABISELECT(40,24),
  ABISELECT(56,32),
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(16,8),
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C2[0]),
  (VTBL_ENTRY)&_ZN7S7727C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7727C2D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(24,16),
  ABISELECT(-8,-4),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7727C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev),
  0,
  ABISELECT(-32,-20),
  0,
  ABISELECT(16,8),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7727C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7727C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-32,-20),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7727C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S7727C2[];
extern void _ZN7S7727C3D1Ev();
extern void _ZN7S7727C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7727C3__7S7727C2[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C3[0]),
  (VTBL_ENTRY)&_ZN7S7727C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7727C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7727C5D1Ev,_ZTv0_n12_N7S7727C5D1Ev)();
extern void _ZN7S7727C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C5D0Ev,_ZTv0_n12_N7S7727C5D0Ev)();
extern void _ZN7S7727C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C5__7S7727C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(24,16),
  ABISELECT(-8,-4),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C5D1Ev,_ZTv0_n12_N7S7727C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C5D0Ev,_ZTv0_n12_N7S7727C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void _ZN7S7727C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
extern void _ZN7S7727C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C97S7727C5__A1__7S7727C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void ABISELECT(_ZThn24_N7S7727C9D1Ev,_ZThn16_N7S7727C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
extern void ABISELECT(_ZThn24_N7S7727C9D0Ev,_ZThn16_N7S7727C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C97S7727C5__A1__7S7727C2[] = {
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C5D1Ev,_ZTv0_n12_N7S7727C5D1Ev)();
extern void ABISELECT(_ZThn24_N7S7727C5D1Ev,_ZThn16_N7S7727C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C5D0Ev,_ZTv0_n12_N7S7727C5D0Ev)();
extern void ABISELECT(_ZThn24_N7S7727C5D0Ev,_ZThn16_N7S7727C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C6__7S7727C5__7S7727C2[] = {
  0,
  ABISELECT(-32,-20),
  0,
  ABISELECT(16,8),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7727C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C5D1Ev,_ZTv0_n12_N7S7727C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C5D0Ev,_ZTv0_n12_N7S7727C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C5D1Ev,_ZTv0_n12_N7S7727C5D1Ev)();
extern void ABISELECT(_ZThn40_N7S7727C5D1Ev,_ZThn24_N7S7727C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C5D0Ev,_ZTv0_n12_N7S7727C5D0Ev)();
extern void ABISELECT(_ZThn40_N7S7727C5D0Ev,_ZThn24_N7S7727C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C5__7S7727C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7727C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C5D1Ev,_ZTv0_n12_N7S7727C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C5D0Ev,_ZTv0_n12_N7S7727C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7727C5D1Ev,_ZTv0_n16_N7S7727C5D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7727C5D0Ev,_ZTv0_n16_N7S7727C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C3__7S7727C5__7S7727C2[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7727C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7727C5D1Ev,_ZTv0_n16_N7S7727C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7727C5D0Ev,_ZTv0_n16_N7S7727C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev)();
extern void _ZN7S7727C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev)();
extern void _ZN7S7727C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C6__7S7727C2[] = {
  0,
  ABISELECT(-32,-20),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7727C6D1Ev,_ZThn8_N7S7727C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7727C6D0Ev,_ZThn8_N7S7727C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C6__7S7727C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev)();
extern void _ZN7S7727C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev)();
extern void _ZN7S7727C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C7__7S7727C2[] = {
  ABISELECT(-32,-20),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S7727C7D1Ev,_ZThn8_N7S7727C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev)();
extern void ABISELECT(_ZThn16_N7S7727C7D0Ev,_ZThn8_N7S7727C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C7__7S7727C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7727C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev)();
extern void _ZN7S7727C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev)();
extern void _ZN7S7727C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void _ZN7S7727C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
extern void _ZN7S7727C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C97S7727C8__7S7727C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C97S7727C8__7S7727C2[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C8__7S7727C2[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void _ZN7S7727C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
extern void _ZN7S7727C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C9__A2__7S7727C2[] = {
  ABISELECT(-64,-40),
  ABISELECT(-32,-20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C9__A2__7S7727C2[] = {
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
static  VTT_ENTRY vtt_S7727C2[] = {
  {&(_ZTV7S7727C2[12]),  12,49},
  {&(_ZTV7S7727C2[12]),  12,49},
  {&(_ZTV7S7727C2[24]),  24,49},
  {&(_ZTV7S7727C2[33]),  33,49},
  {&(_ZTV7S7727C2[33]),  33,49},
  {&(_ZTV7S7727C2[40]),  40,49},
  {&(_ZTV7S7727C2[33]),  33,49},
  {&(_ZTV7S7727C2[47]),  47,49},
  {&(_tg__ZTV7S7727C3__7S7727C2[3]),  3,5},
  {&(_tg__ZTV7S7727C5__7S7727C2[10]),  10,12},
  {&(_tg__ZTV7S7727C97S7727C5__A1__7S7727C2[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7727C97S7727C5__A1__7S7727C2[3]),  3,5},
  {&(_tg__ZTV7S7727C6__7S7727C5__7S7727C2[7]),  7,9},
  {&(_tg__ZTV7S7727C6__7S7727C5__7S7727C2[7]),  7,9},
  {&(_tg__ZTV7S7727C8__7S7727C5__7S7727C2[5]),  5,7},
  {&(_tg__ZTV7S7727C6__7S7727C5__7S7727C2[7]),  7,9},
  {&(_tg__ZTV7S7727C3__7S7727C5__7S7727C2[4]),  4,6},
  {&(_tg__ZTV7S7727C6__7S7727C2[7]),  7,9},
  {&(_tg__ZTV7S7727C6__7S7727C2[7]),  7,9},
  {&(_tg__ZTV7S7727C8__7S7727C6__7S7727C2[5]),  5,7},
  {&(_tg__ZTV7S7727C6__7S7727C2[7]),  7,9},
  {&(_tg__ZTV7S7727C7__7S7727C2[6]),  6,8},
  {&(_tg__ZTV7S7727C8__7S7727C7__7S7727C2[5]),  5,7},
  {&(_tg__ZTV7S7727C7__7S7727C2[6]),  6,8},
  {&(_tg__ZTV7S7727C8__7S7727C2[5]),  5,7},
  {&(_tg__ZTV7S7727C97S7727C8__7S7727C2[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7727C97S7727C8__7S7727C2[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7727C8__7S7727C2[3]),  3,5},
  {&(_tg__ZTV7S7727C9__A2__7S7727C2[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7727C9__A2__7S7727C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7727C2[];
extern  VTBL_ENTRY _ZTV7S7727C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C2[];
static VTBL_ENTRY alt_thunk_names82[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev), // 
  (VTBL_ENTRY)_ZN7S7727C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev), // 
  (VTBL_ENTRY)_ZN7S7727C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7727C7D0Ev,_ZThn8_N7S7727C7D0Ev),
  (VTBL_ENTRY)_ZN7S7727C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7727C7D1Ev,_ZThn8_N7S7727C7D1Ev),
  (VTBL_ENTRY)_ZN7S7727C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7727C6D0Ev,_ZThn8_N7S7727C6D0Ev),
  (VTBL_ENTRY)_ZN7S7727C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7727C6D1Ev,_ZThn8_N7S7727C6D1Ev),
  (VTBL_ENTRY)_ZN7S7727C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev), // 
  (VTBL_ENTRY)_ZN7S7727C9D0Ev,
  (VTBL_ENTRY)_ZN7S7727C9D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7727C9D0Ev,_ZThn16_N7S7727C9D0Ev),
  (VTBL_ENTRY)_ZN7S7727C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev), // 
  (VTBL_ENTRY)_ZN7S7727C9D1Ev,
  (VTBL_ENTRY)_ZN7S7727C9D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7727C9D1Ev,_ZThn16_N7S7727C9D1Ev),
  (VTBL_ENTRY)_ZN7S7727C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C5D0Ev,_ZTv0_n12_N7S7727C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7727C5D0Ev,_ZThn24_N7S7727C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7727C5D0Ev,_ZThn16_N7S7727C5D0Ev),
  (VTBL_ENTRY)_ZN7S7727C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C5D1Ev,_ZTv0_n12_N7S7727C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7727C5D1Ev,_ZThn24_N7S7727C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7727C5D1Ev,_ZThn16_N7S7727C5D1Ev),
  (VTBL_ENTRY)_ZN7S7727C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7727C2D0Ev,_ZThn44_N7S7727C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7727C2D0Ev,_ZThn32_N7S7727C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7727C2D0Ev,_ZThn24_N7S7727C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7727C2D0Ev,_ZThn8_N7S7727C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7727C2D1Ev,_ZThn44_N7S7727C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7727C2D1Ev,_ZThn32_N7S7727C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7727C2D1Ev,_ZThn24_N7S7727C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7727C2D1Ev,_ZThn8_N7S7727C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7727C2 = {  "S7727C2", // class name
  bases_S7727C2, 15,
  &(vtc_S7727C2[0]), // expected_vtbl_contents
  &(vtt_S7727C2[0]), // expected_vtt_contents
  ABISELECT(88,52), // object size
  NSPAIRA(_ZTI7S7727C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7727C2),49, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7727C2),30, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names82,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7727C12  : S7727C6 , S7727C9 {
  ::S7727C3 s7727c12f0[10];
  ~S7727C12(); // tgen
  S7727C12(); // tgen
};
//SIG(-1 S7727C12) C1{ BC2{ VBC3{ VBC4{ BC5{ VBC6{ vd m} VBC7{ m Fi} BC8{ m} Fi} Fi} BC8} FC7} BC5 FC9{ VBC7 vd}[10]}


S7727C12 ::~S7727C12(){ note_dtor("S7727C12", this);} // tgen
S7727C12 ::S7727C12(){ note_ctor("S7727C12", this);} // tgen

static void Test_S7727C12()
{
  extern Class_Descriptor cd_S7727C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(28,29)];
    init_test(&cd_S7727C12, buf);
    S7727C12 *dp, &lv = *(dp=new (buf) S7727C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(216,112), "sizeof(S7727C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7727C12)");
    check_base_class_offset(lv, (S7883C3_nt*)(S7727C9*)(S7727C8*), 0, "S7727C12");
    /*is_ambiguous_... S7727C12::S7727C9 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7727C9*), 0, "S7727C12");
    check_base_class_offset(lv, (S3216C8_nt*)(S7727C9*)(S7727C8*), ABISELECT(208,108), "S7727C12");
    /*is_ambiguous_... S7727C12::S7727C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7727C9*), ABISELECT(208,108), "S7727C12");
    check_base_class_offset(lv, (S4677C37*)(S7727C9*)(S7727C8*), ABISELECT(192,96), "S7727C12");
    check_base_class_offset(lv, (S7727C9*)(S7727C8*), ABISELECT(192,96), "S7727C12");
    check_base_class_offset(lv, (S7727C8*)(S7727C7*), ABISELECT(192,96), "S7727C12");
    /*is_ambiguous_... S7727C7::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7727C7*), 0, "S7727C12");
    check_base_class_offset(lv, (S7727C7*)(S7727C6*), 0, "S7727C12");
    check_base_class_offset(lv, (S7727C6*), 0, "S7727C12");
    /*is_ambiguous_... S7727C12::S7727C9 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7727C9*), ABISELECT(16,8), "S7727C12");
    /*is_ambiguous_... S7727C12::S7727C9 */ AMB_check_base_class_offset(lv, (S7727C9*), ABISELECT(16,8), "S7727C12");
    check_field_offset(lv, s7727c12f0, ABISELECT(32,16), "S7727C12.s7727c12f0");
    test_class_info(&lv, &cd_S7727C12);
    dp->~S7727C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7727C12(Test_S7727C12, "S7727C12", ABISELECT(216,112));

#else // __cplusplus

extern void _ZN8S7727C12C1Ev();
extern void _ZN8S7727C12D1Ev();
Name_Map name_map_S7727C12[] = {
  NSPAIR(_ZN8S7727C12C1Ev),
  NSPAIR(_ZN8S7727C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C9;
extern VTBL_ENTRY _ZTI7S7727C9[];
extern  VTBL_ENTRY _ZTV7S7727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C9[];
extern Class_Descriptor cd_S7727C8;
extern VTBL_ENTRY _ZTI7S7727C8[];
extern  VTBL_ENTRY _ZTV7S7727C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C8[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C7;
extern VTBL_ENTRY _ZTI7S7727C7[];
extern  VTBL_ENTRY _ZTV7S7727C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C7[];
extern Class_Descriptor cd_S7727C6;
extern VTBL_ENTRY _ZTI7S7727C6[];
extern  VTBL_ENTRY _ZTV7S7727C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C9;
extern VTBL_ENTRY _ZTI7S7727C9[];
extern  VTBL_ENTRY _ZTV7S7727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C9[];
static Base_Class bases_S7727C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(208,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(192,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7727C9,    ABISELECT(192,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //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
    4, //immediately_derived
  0, 0},
  {&cd_S7727C8,    ABISELECT(192,96), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //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
    6, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7727C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7727C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4677C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7727C9,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7727C12[];
extern void _ZN8S7727C12D1Ev();
extern void _ZN8S7727C12D0Ev();
extern void ABISELECT(_ZThn16_N8S7727C12D1Ev,_ZThn8_N8S7727C12D1Ev)();
extern void ABISELECT(_ZThn16_N8S7727C12D0Ev,_ZThn8_N8S7727C12D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7727C12D1Ev,_ZTv0_n12_N8S7727C12D1Ev)();
extern void ABISELECT(_ZThn192_N8S7727C12D1Ev,_ZThn96_N8S7727C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C12D0Ev,_ZTv0_n12_N8S7727C12D0Ev)();
extern void ABISELECT(_ZThn192_N8S7727C12D0Ev,_ZThn96_N8S7727C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7727C12[] = {
  0,
  ABISELECT(208,108),
  0,
  ABISELECT(192,96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7727C12[0]),
  (VTBL_ENTRY)&_ZN8S7727C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7727C12D0Ev,
  ABISELECT(192,100),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7727C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7727C12D1Ev,_ZThn8_N8S7727C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7727C12D0Ev,_ZThn8_N8S7727C12D0Ev),
  ABISELECT(16,12),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S7727C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C12D1Ev,_ZTv0_n12_N8S7727C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C12D0Ev,_ZTv0_n12_N8S7727C12D0Ev),
};
extern VTBL_ENTRY _ZTV8S7727C12[];
extern void _ZN7S7727C6D1Ev();
extern void _ZN7S7727C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7727C6__8S7727C12[] = {
  0,
  ABISELECT(208,108),
  0,
  ABISELECT(192,96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C6[0]),
  (VTBL_ENTRY)&_ZN7S7727C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7727C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev)();
extern void ABISELECT(_ZThn192_N7S7727C6D1Ev,_ZThn96_N7S7727C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev)();
extern void ABISELECT(_ZThn192_N7S7727C6D0Ev,_ZThn96_N7S7727C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C6__8S7727C12[] = {
  ABISELECT(16,12),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI7S7727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev),
};
extern void _ZN7S7727C9D1Ev();
extern void _ZN7S7727C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7727C9__A1__8S7727C12[] = {
  ABISELECT(192,100),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&_ZN7S7727C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7727C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C9__A1__8S7727C12[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev)();
extern void _ZN7S7727C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev)();
extern void _ZN7S7727C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C7__8S7727C12[] = {
  ABISELECT(208,108),
  0,
  ABISELECT(192,96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev)();
extern void ABISELECT(_ZThn192_N7S7727C7D1Ev,_ZThn96_N7S7727C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev)();
extern void ABISELECT(_ZThn192_N7S7727C7D0Ev,_ZThn96_N7S7727C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C7__8S7727C12[] = {
  ABISELECT(16,12),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI7S7727C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev)();
extern void _ZN7S7727C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev)();
extern void _ZN7S7727C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__8S7727C12[] = {
  ABISELECT(16,12),
  ABISELECT(-192,-96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void _ZN7S7727C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
extern void _ZN7S7727C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C97S7727C8__8S7727C12[] = {
  ABISELECT(16,12),
  ABISELECT(-192,-96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C97S7727C8__8S7727C12[] = {
  ABISELECT(192,96),
  ABISELECT(192,96),
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C8__8S7727C12[] = {
  ABISELECT(192,96),
  ABISELECT(192,96),
  (VTBL_ENTRY)&(_ZTI7S7727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev),
};
static  VTT_ENTRY vtt_S7727C12[] = {
  {&(_ZTV8S7727C12[7]),  7,23},
  {&(_tg__ZTV7S7727C6__8S7727C12[7]),  7,9},
  {&(_tg__ZTV7S7727C6__8S7727C12[7]),  7,9},
  {&(_tg__ZTV7S7727C8__7S7727C6__8S7727C12[5]),  5,7},
  {&(_tg__ZTV7S7727C6__8S7727C12[7]),  7,9},
  {&(_tg__ZTV7S7727C9__A1__8S7727C12[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7727C9__A1__8S7727C12[3]),  3,5},
  {&(_ZTV8S7727C12[7]),  7,23},
  {&(_ZTV8S7727C12[21]),  21,23},
  {&(_ZTV8S7727C12[7]),  7,23},
  {&(_ZTV8S7727C12[14]),  14,23},
  {&(_tg__ZTV7S7727C7__8S7727C12[6]),  6,8},
  {&(_tg__ZTV7S7727C8__7S7727C7__8S7727C12[5]),  5,7},
  {&(_tg__ZTV7S7727C7__8S7727C12[6]),  6,8},
  {&(_tg__ZTV7S7727C8__8S7727C12[5]),  5,7},
  {&(_tg__ZTV7S7727C97S7727C8__8S7727C12[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7727C97S7727C8__8S7727C12[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7727C8__8S7727C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7727C12[];
extern  VTBL_ENTRY _ZTV8S7727C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7727C12[];
static VTBL_ENTRY alt_thunk_names83[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev), // 
  (VTBL_ENTRY)_ZN7S7727C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev), // 
  (VTBL_ENTRY)_ZN7S7727C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev), // 
  (VTBL_ENTRY)_ZN7S7727C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev), // 
  (VTBL_ENTRY)_ZN7S7727C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7727C7D0Ev,_ZThn96_N7S7727C7D0Ev),
  (VTBL_ENTRY)_ZN7S7727C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7727C7D1Ev,_ZThn96_N7S7727C7D1Ev),
  (VTBL_ENTRY)_ZN7S7727C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7727C6D0Ev,_ZThn96_N7S7727C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7727C6D1Ev,_ZThn96_N7S7727C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C12D0Ev,_ZTv0_n12_N8S7727C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7727C12D0Ev,_ZThn96_N8S7727C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C12D1Ev,_ZTv0_n12_N8S7727C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7727C12D1Ev,_ZThn96_N8S7727C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7727C12 = {  "S7727C12", // class name
  bases_S7727C12, 10,
  &(vtc_S7727C12[0]), // expected_vtbl_contents
  &(vtt_S7727C12[0]), // expected_vtt_contents
  ABISELECT(216,112), // object size
  NSPAIRA(_ZTI8S7727C12),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7727C12),23, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7727C12),18, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names83,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7727C14  : virtual S7883C3_nt {
  ~S7727C14(); // tgen
  S7727C14(); // tgen
};
//SIG(-1 S7727C14) C1{ VBC2{ vd m}}


S7727C14 ::~S7727C14(){ note_dtor("S7727C14", this);} // tgen
S7727C14 ::S7727C14(){ note_ctor("S7727C14", this);} // tgen

static void Test_S7727C14()
{
  extern Class_Descriptor cd_S7727C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7727C14, buf);
    S7727C14 *dp, &lv = *(dp=new (buf) S7727C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7727C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7727C14)");
    check_base_class_offset(lv, (S7883C3_nt*), 0, "S7727C14");
    test_class_info(&lv, &cd_S7727C14);
    dp->~S7727C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7727C14(Test_S7727C14, "S7727C14", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S7727C14C1Ev();
extern void _ZN8S7727C14D1Ev();
Name_Map name_map_S7727C14[] = {
  NSPAIR(_ZN8S7727C14C1Ev),
  NSPAIR(_ZN8S7727C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
static Base_Class bases_S7727C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7727C14[];
extern void _ZN8S7727C14D1Ev();
extern void _ZN8S7727C14D0Ev();
static  VTBL_ENTRY vtc_S7727C14[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7727C14[0]),
  (VTBL_ENTRY)&_ZN8S7727C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7727C14D0Ev,
};
extern VTBL_ENTRY _ZTV8S7727C14[];
static  VTT_ENTRY vtt_S7727C14[] = {
  {&(_ZTV8S7727C14[4]),  4,6},
  {&(_ZTV8S7727C14[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S7727C14[];
extern  VTBL_ENTRY _ZTV8S7727C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7727C14[];
Class_Descriptor cd_S7727C14 = {  "S7727C14", // class name
  bases_S7727C14, 1,
  &(vtc_S7727C14[0]), // expected_vtbl_contents
  &(vtt_S7727C14[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S7727C14),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7727C14),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7727C14),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  S7727C13  : virtual S7727C14 {
  int s7727c13f0;
  ~S7727C13(); // tgen
  S7727C13(); // tgen
};
//SIG(-1 S7727C13) C1{ VBC2{ VBC3{ vd m}} Fi}


S7727C13 ::~S7727C13(){ note_dtor("S7727C13", this);} // tgen
S7727C13 ::S7727C13(){ note_ctor("S7727C13", this);} // tgen

static void Test_S7727C13()
{
  extern Class_Descriptor cd_S7727C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7727C13, buf);
    S7727C13 *dp, &lv = *(dp=new (buf) S7727C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7727C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7727C13)");
    check_base_class_offset(lv, (S7883C3_nt*)(S7727C14*), 0, "S7727C13");
    check_base_class_offset(lv, (S7727C14*), 0, "S7727C13");
    check_field_offset(lv, s7727c13f0, ABISELECT(8,4), "S7727C13.s7727c13f0");
    test_class_info(&lv, &cd_S7727C13);
    dp->~S7727C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7727C13(Test_S7727C13, "S7727C13", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S7727C13C1Ev();
extern void _ZN8S7727C13D1Ev();
Name_Map name_map_S7727C13[] = {
  NSPAIR(_ZN8S7727C13C1Ev),
  NSPAIR(_ZN8S7727C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S7727C14;
extern VTBL_ENTRY _ZTI8S7727C14[];
extern  VTBL_ENTRY _ZTV8S7727C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7727C14[];
static Base_Class bases_S7727C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7727C14,    0, //bcp->offset
    -1, //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 _ZTI8S7727C13[];
extern void _ZN8S7727C13D1Ev();
extern void _ZN8S7727C13D0Ev();
static  VTBL_ENTRY vtc_S7727C13[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7727C13[0]),
  (VTBL_ENTRY)&_ZN8S7727C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7727C13D0Ev,
};
extern VTBL_ENTRY _ZTV8S7727C13[];
extern void ABISELECT(_ZTv0_n24_N8S7727C14D1Ev,_ZTv0_n12_N8S7727C14D1Ev)();
extern void _ZN8S7727C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C14D0Ev,_ZTv0_n12_N8S7727C14D0Ev)();
extern void _ZN8S7727C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7727C14__8S7727C13[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7727C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C14D1Ev,_ZTv0_n12_N8S7727C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C14D0Ev,_ZTv0_n12_N8S7727C14D0Ev),
};
static  VTT_ENTRY vtt_S7727C13[] = {
  {&(_ZTV8S7727C13[5]),  5,7},
  {&(_ZTV8S7727C13[5]),  5,7},
  {&(_ZTV8S7727C13[5]),  5,7},
  {&(_tg__ZTV8S7727C14__8S7727C13[4]),  4,6},
  {&(_tg__ZTV8S7727C14__8S7727C13[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S7727C13[];
extern  VTBL_ENTRY _ZTV8S7727C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7727C13[];
static VTBL_ENTRY alt_thunk_names84[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C14D0Ev,_ZTv0_n12_N8S7727C14D0Ev), // 
  (VTBL_ENTRY)_ZN8S7727C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C14D1Ev,_ZTv0_n12_N8S7727C14D1Ev), // 
  (VTBL_ENTRY)_ZN8S7727C14D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7727C13 = {  "S7727C13", // class name
  bases_S7727C13, 2,
  &(vtc_S7727C13[0]), // expected_vtbl_contents
  &(vtt_S7727C13[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S7727C13),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7727C13),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7727C13),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names84,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7727C16  : virtual S7883C3_nt , S3216C8_nt , S7727C7 , virtual S4677C37 , S7727C9 {
  virtual  ~S7727C16(); // _ZN8S7727C16D2Ev
  S7727C16(); // tgen
};
//SIG(-1 S7727C16) C1{ VBC2{ vd m} BC3{ m Fi} BC4{ VBC5{ BC6{ VBC2 VBC3 BC7{ m} Fi} Fi} BC7} VBC7 BC6 vd}


 S7727C16 ::~S7727C16(){ note_dtor("S7727C16", this);}
S7727C16 ::S7727C16(){ note_ctor("S7727C16", this);} // tgen

static void Test_S7727C16()
{
  extern Class_Descriptor cd_S7727C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S7727C16, buf);
    S7727C16 *dp, &lv = *(dp=new (buf) S7727C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S7727C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7727C16)");
    check_base_class_offset(lv, (S7883C3_nt*), 0, "S7727C16");
    check_base_class_offset(lv, (S7883C3_nt*)(S7727C9*)(S7727C8*), 0, "S7727C16");
    /*is_ambiguous_... S7727C16::S7727C9 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7727C9*), 0, "S7727C16");
    /*is_ambiguous_... S7727C16::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(8,4), "S7727C16");
    check_base_class_offset(lv, (S3216C8_nt*)(S7727C9*)(S7727C8*), ABISELECT(48,28), "S7727C16");
    /*is_ambiguous_... S7727C16::S7727C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7727C9*), ABISELECT(48,28), "S7727C16");
    check_base_class_offset(lv, (S4677C37*)(S7727C9*)(S7727C8*), ABISELECT(32,16), "S7727C16");
    check_base_class_offset(lv, (S7727C9*)(S7727C8*), ABISELECT(32,16), "S7727C16");
    check_base_class_offset(lv, (S7727C8*)(S7727C7*), ABISELECT(32,16), "S7727C16");
    /*is_ambiguous_... S7727C7::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7727C7*), 0, "S7727C16");
    check_base_class_offset(lv, (S7727C7*), 0, "S7727C16");
    /*is_ambiguous_... S7727C16::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*), ABISELECT(52,32), "S7727C16");
    /*is_ambiguous_... S7727C16::S7727C9 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7727C9*), ABISELECT(16,8), "S7727C16");
    /*is_ambiguous_... S7727C16::S7727C9 */ AMB_check_base_class_offset(lv, (S7727C9*), ABISELECT(16,8), "S7727C16");
    test_class_info(&lv, &cd_S7727C16);
    dp->~S7727C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7727C16(Test_S7727C16, "S7727C16", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN8S7727C16C1Ev();
extern void _ZN8S7727C16D2Ev();
Name_Map name_map_S7727C16[] = {
  NSPAIR(_ZN8S7727C16C1Ev),
  NSPAIR(_ZN8S7727C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C9;
extern VTBL_ENTRY _ZTI7S7727C9[];
extern  VTBL_ENTRY _ZTV7S7727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C9[];
extern Class_Descriptor cd_S7727C8;
extern VTBL_ENTRY _ZTI7S7727C8[];
extern  VTBL_ENTRY _ZTV7S7727C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C8[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C7;
extern VTBL_ENTRY _ZTI7S7727C7[];
extern  VTBL_ENTRY _ZTV7S7727C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C7[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C9;
extern VTBL_ENTRY _ZTI7S7727C9[];
extern  VTBL_ENTRY _ZTV7S7727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C9[];
static Base_Class bases_S7727C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_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_S3216C8_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
    4, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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_S7727C9,    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
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7727C8,    ABISELECT(32,16), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7727C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4677C37,    ABISELECT(52,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_S4677C37,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7727C9,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7727C16[];
extern void _ZN8S7727C16D1Ev();
extern void _ZN8S7727C16D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S7727C16D1Ev,_ZTv0_n12_N8S7727C16D1Ev)();
extern void ABISELECT(_ZThn16_N8S7727C16D1Ev,_ZThn8_N8S7727C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C16D0Ev,_ZTv0_n12_N8S7727C16D0Ev)();
extern void ABISELECT(_ZThn16_N8S7727C16D0Ev,_ZThn8_N8S7727C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C16D1Ev,_ZTv0_n12_N8S7727C16D1Ev)();
extern void ABISELECT(_ZThn32_N8S7727C16D1Ev,_ZThn16_N8S7727C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C16D0Ev,_ZTv0_n12_N8S7727C16D0Ev)();
extern void ABISELECT(_ZThn32_N8S7727C16D0Ev,_ZThn16_N8S7727C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7727C16[] = {
  ABISELECT(52,32),
  ABISELECT(48,28),
  0,
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7727C16[0]),
  (VTBL_ENTRY)&_ZN8S7727C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7727C16D0Ev,
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7727C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C16D1Ev,_ZTv0_n12_N8S7727C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C16D0Ev,_ZTv0_n12_N8S7727C16D0Ev),
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7727C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C16D1Ev,_ZTv0_n12_N8S7727C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C16D0Ev,_ZTv0_n12_N8S7727C16D0Ev),
};
extern VTBL_ENTRY _ZTV8S7727C16[];
extern void ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev)();
extern void _ZN7S7727C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev)();
extern void _ZN7S7727C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C7__8S7727C16[] = {
  ABISELECT(48,28),
  0,
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev)();
extern void ABISELECT(_ZThn32_N7S7727C7D1Ev,_ZThn16_N7S7727C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev)();
extern void ABISELECT(_ZThn32_N7S7727C7D0Ev,_ZThn16_N7S7727C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C7__8S7727C16[] = {
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7727C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void _ZN7S7727C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
extern void _ZN7S7727C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C9__A1__8S7727C16[] = {
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C9__A1__8S7727C16[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev)();
extern void _ZN7S7727C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev)();
extern void _ZN7S7727C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__8S7727C16[] = {
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void _ZN7S7727C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
extern void _ZN7S7727C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C97S7727C8__8S7727C16[] = {
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C97S7727C8__8S7727C16[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C8__8S7727C16[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev),
};
static  VTT_ENTRY vtt_S7727C16[] = {
  {&(_ZTV8S7727C16[7]),  7,23},
  {&(_tg__ZTV7S7727C7__8S7727C16[6]),  6,8},
  {&(_tg__ZTV7S7727C8__7S7727C7__8S7727C16[5]),  5,7},
  {&(_tg__ZTV7S7727C7__8S7727C16[6]),  6,8},
  {&(_tg__ZTV7S7727C9__A1__8S7727C16[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7727C9__A1__8S7727C16[3]),  3,5},
  {&(_ZTV8S7727C16[7]),  7,23},
  {&(_ZTV8S7727C16[21]),  21,23},
  {&(_ZTV8S7727C16[14]),  14,23},
  {&(_tg__ZTV7S7727C8__8S7727C16[5]),  5,7},
  {&(_tg__ZTV7S7727C97S7727C8__8S7727C16[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7727C97S7727C8__8S7727C16[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7727C8__8S7727C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7727C16[];
extern  VTBL_ENTRY _ZTV8S7727C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7727C16[];
static VTBL_ENTRY alt_thunk_names85[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev), // 
  (VTBL_ENTRY)_ZN7S7727C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev), // 
  (VTBL_ENTRY)_ZN7S7727C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev), // 
  (VTBL_ENTRY)_ZN7S7727C9D0Ev,
  (VTBL_ENTRY)_ZN7S7727C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev), // 
  (VTBL_ENTRY)_ZN7S7727C9D1Ev,
  (VTBL_ENTRY)_ZN7S7727C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7727C7D0Ev,_ZThn16_N7S7727C7D0Ev),
  (VTBL_ENTRY)_ZN7S7727C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7727C7D1Ev,_ZThn16_N7S7727C7D1Ev),
  (VTBL_ENTRY)_ZN7S7727C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C16D0Ev,_ZTv0_n12_N8S7727C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7727C16D0Ev,_ZThn16_N8S7727C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7727C16D0Ev,_ZThn8_N8S7727C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C16D1Ev,_ZTv0_n12_N8S7727C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7727C16D1Ev,_ZThn16_N8S7727C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7727C16D1Ev,_ZThn8_N8S7727C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7727C16 = {  "S7727C16", // class name
  bases_S7727C16, 11,
  &(vtc_S7727C16[0]), // expected_vtbl_contents
  &(vtt_S7727C16[0]), // expected_vtt_contents
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI8S7727C16),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7727C16),23, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7727C16),13, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names85,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7727C15  : virtual S7727C16 {
  virtual  ~S7727C15(); // _ZN8S7727C15D2Ev
  S7727C15(); // tgen
};
//SIG(-1 S7727C15) C1{ VBC2{ VBC3{ vd m} BC4{ m Fi} BC5{ VBC6{ BC7{ VBC3 VBC4 BC8{ m} Fi} Fi} BC8} VBC8 BC7 vd} vd}


 S7727C15 ::~S7727C15(){ note_dtor("S7727C15", this);}
S7727C15 ::S7727C15(){ note_ctor("S7727C15", this);} // tgen

static void Test_S7727C15()
{
  extern Class_Descriptor cd_S7727C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S7727C15, buf);
    S7727C15 *dp, &lv = *(dp=new (buf) S7727C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S7727C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7727C15)");
    check_base_class_offset(lv, (S7883C3_nt*)(S7727C16*), 0, "S7727C15");
    check_base_class_offset(lv, (S7883C3_nt*)(S7727C9*)(S7727C8*), 0, "S7727C15");
    /*is_ambiguous_... S7727C16::S7727C9 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7727C9*)(S7727C16*), 0, "S7727C15");
    /*is_ambiguous_... S7727C16::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7727C16*), ABISELECT(16,8), "S7727C15");
    check_base_class_offset(lv, (S3216C8_nt*)(S7727C9*)(S7727C8*), ABISELECT(56,32), "S7727C15");
    /*is_ambiguous_... S7727C16::S7727C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7727C9*)(S7727C16*), ABISELECT(56,32), "S7727C15");
    check_base_class_offset(lv, (S4677C37*)(S7727C9*)(S7727C8*), ABISELECT(40,20), "S7727C15");
    check_base_class_offset(lv, (S7727C9*)(S7727C8*), ABISELECT(40,20), "S7727C15");
    check_base_class_offset(lv, (S7727C8*)(S7727C7*)(S7727C16*), ABISELECT(40,20), "S7727C15");
    /*is_ambiguous_... S7727C7::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7727C7*)(S7727C16*), ABISELECT(8,4), "S7727C15");
    check_base_class_offset(lv, (S7727C7*)(S7727C16*), ABISELECT(8,4), "S7727C15");
    /*is_ambiguous_... S7727C16::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7727C16*), 0, "S7727C15");
    /*is_ambiguous_... S7727C16::S7727C9 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7727C9*)(S7727C16*), ABISELECT(24,12), "S7727C15");
    /*is_ambiguous_... S7727C16::S7727C9 */ AMB_check_base_class_offset(lv, (S7727C9*)(S7727C16*), ABISELECT(24,12), "S7727C15");
    check_base_class_offset(lv, (S7727C16*), ABISELECT(8,4), "S7727C15");
    test_class_info(&lv, &cd_S7727C15);
    dp->~S7727C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7727C15(Test_S7727C15, "S7727C15", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S7727C15C1Ev();
extern void _ZN8S7727C15D2Ev();
Name_Map name_map_S7727C15[] = {
  NSPAIR(_ZN8S7727C15C1Ev),
  NSPAIR(_ZN8S7727C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C9;
extern VTBL_ENTRY _ZTI7S7727C9[];
extern  VTBL_ENTRY _ZTV7S7727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C9[];
extern Class_Descriptor cd_S7727C8;
extern VTBL_ENTRY _ZTI7S7727C8[];
extern  VTBL_ENTRY _ZTV7S7727C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C8[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C7;
extern VTBL_ENTRY _ZTI7S7727C7[];
extern  VTBL_ENTRY _ZTV7S7727C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C7[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C9;
extern VTBL_ENTRY _ZTI7S7727C9[];
extern  VTBL_ENTRY _ZTV7S7727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C9[];
extern Class_Descriptor cd_S7727C16;
extern VTBL_ENTRY _ZTI8S7727C16[];
extern  VTBL_ENTRY _ZTV8S7727C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7727C16[];
static Base_Class bases_S7727C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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_S7727C9,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //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
    5, //immediately_derived
  0, 0},
  {&cd_S7727C8,    ABISELECT(40,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7727C7,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4677C37,    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_S7727C9,    ABISELECT(24,12), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7727C16,    ABISELECT(8,4), //bcp->offset
    10, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7727C15[];
extern void _ZN8S7727C15D1Ev();
extern void _ZN8S7727C15D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S7727C15D1Ev,_ZTv0_n12_N8S7727C15D1Ev)();
extern void ABISELECT(_ZThn8_N8S7727C15D1Ev,_ZThn4_N8S7727C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C15D0Ev,_ZTv0_n12_N8S7727C15D0Ev)();
extern void ABISELECT(_ZThn8_N8S7727C15D0Ev,_ZThn4_N8S7727C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C15D1Ev,_ZTv0_n12_N8S7727C15D1Ev)();
extern void ABISELECT(_ZThn24_N8S7727C15D1Ev,_ZThn12_N8S7727C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C15D0Ev,_ZTv0_n12_N8S7727C15D0Ev)();
extern void ABISELECT(_ZThn24_N8S7727C15D0Ev,_ZThn12_N8S7727C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C15D1Ev,_ZTv0_n12_N8S7727C15D1Ev)();
extern void ABISELECT(_ZThn40_N8S7727C15D1Ev,_ZThn20_N8S7727C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C15D0Ev,_ZTv0_n12_N8S7727C15D0Ev)();
extern void ABISELECT(_ZThn40_N8S7727C15D0Ev,_ZThn20_N8S7727C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7727C15[] = {
  0,
  ABISELECT(56,32),
  ABISELECT(40,20),
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7727C15[0]),
  (VTBL_ENTRY)&_ZN8S7727C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7727C15D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7727C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C15D1Ev,_ZTv0_n12_N8S7727C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C15D0Ev,_ZTv0_n12_N8S7727C15D0Ev),
  ABISELECT(32,20),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7727C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C15D1Ev,_ZTv0_n12_N8S7727C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C15D0Ev,_ZTv0_n12_N8S7727C15D0Ev),
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7727C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C15D1Ev,_ZTv0_n12_N8S7727C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C15D0Ev,_ZTv0_n12_N8S7727C15D0Ev),
};
extern VTBL_ENTRY _ZTV8S7727C15[];
extern void ABISELECT(_ZTv0_n24_N8S7727C16D1Ev,_ZTv0_n12_N8S7727C16D1Ev)();
extern void _ZN8S7727C16D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C16D0Ev,_ZTv0_n12_N8S7727C16D0Ev)();
extern void _ZN8S7727C16D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7727C16__8S7727C15[] = {
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7727C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C16D1Ev,_ZTv0_n12_N8S7727C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C16D0Ev,_ZTv0_n12_N8S7727C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev)();
extern void _ZN7S7727C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev)();
extern void _ZN7S7727C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C78S7727C16__8S7727C15[] = {
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev)();
extern void ABISELECT(_ZThn32_N7S7727C7D1Ev,_ZThn16_N7S7727C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev)();
extern void ABISELECT(_ZThn32_N7S7727C7D0Ev,_ZThn16_N7S7727C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C78S7727C16__8S7727C15[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7727C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C78S7727C16__8S7727C15[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7727C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void _ZN7S7727C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
extern void _ZN7S7727C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C98S7727C16__A1__8S7727C15[] = {
  ABISELECT(32,20),
  ABISELECT(-24,-12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C98S7727C16__A1__8S7727C15[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C16D1Ev,_ZTv0_n12_N8S7727C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7727C16D0Ev,_ZTv0_n12_N8S7727C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7727C16__8S7727C15[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S7727C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C16D1Ev,_ZTv0_n12_N8S7727C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C16D0Ev,_ZTv0_n12_N8S7727C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C16D1Ev,_ZTv0_n12_N8S7727C16D1Ev)();
extern void ABISELECT(_ZThn32_N8S7727C16D1Ev,_ZThn16_N8S7727C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C16D0Ev,_ZTv0_n12_N8S7727C16D0Ev)();
extern void ABISELECT(_ZThn32_N8S7727C16D0Ev,_ZThn16_N8S7727C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__8S7727C16__8S7727C15[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7727C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C16D1Ev,_ZTv0_n12_N8S7727C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C16D0Ev,_ZTv0_n12_N8S7727C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C16D1Ev,_ZTv0_n12_N8S7727C16D1Ev)();
extern void ABISELECT(_ZThn16_N8S7727C16D1Ev,_ZThn8_N8S7727C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C16D0Ev,_ZTv0_n12_N8S7727C16D0Ev)();
extern void ABISELECT(_ZThn16_N8S7727C16D0Ev,_ZThn8_N8S7727C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C9__A1__8S7727C16__8S7727C15[] = {
  ABISELECT(32,20),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7727C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C16D1Ev,_ZTv0_n12_N8S7727C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C16D0Ev,_ZTv0_n12_N8S7727C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev)();
extern void _ZN7S7727C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev)();
extern void _ZN7S7727C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__8S7727C15[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void _ZN7S7727C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
extern void _ZN7S7727C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C97S7727C8__8S7727C15[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C97S7727C8__8S7727C15[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C8__8S7727C15[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev),
};
static  VTT_ENTRY vtt_S7727C15[] = {
  {&(_ZTV8S7727C15[8]),  8,33},
  {&(_ZTV8S7727C15[17]),  17,33},
  {&(_ZTV8S7727C15[8]),  8,33},
  {&(_ZTV8S7727C15[31]),  31,33},
  {&(_ZTV8S7727C15[24]),  24,33},
  {&(_tg__ZTV8S7727C16__8S7727C15[7]),  7,9},
  {&(_tg__ZTV7S7727C78S7727C16__8S7727C15[6]),  6,8},
  {&(_tg__ZTV7S7727C8__7S7727C78S7727C16__8S7727C15[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7727C78S7727C16__8S7727C15[3]),  3,5},
  {&(_tg__ZTV7S7727C98S7727C16__A1__8S7727C15[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7727C98S7727C16__A1__8S7727C15[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S7727C16__8S7727C15[3]),  3,5},
  {&(_tg__ZTV7S7727C8__8S7727C16__8S7727C15[5]),  5,7},
  {&(_tg__ZTV7S7727C9__A1__8S7727C16__8S7727C15[5]),  5,7},
  {&(_tg__ZTV7S7727C8__8S7727C15[5]),  5,7},
  {&(_tg__ZTV7S7727C97S7727C8__8S7727C15[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7727C97S7727C8__8S7727C15[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7727C8__8S7727C15[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7727C15[];
extern  VTBL_ENTRY _ZTV8S7727C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7727C15[];
static VTBL_ENTRY alt_thunk_names86[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev), // 
  (VTBL_ENTRY)_ZN7S7727C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev), // 
  (VTBL_ENTRY)_ZN7S7727C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev), // 
  (VTBL_ENTRY)_ZN7S7727C9D0Ev,
  (VTBL_ENTRY)_ZN7S7727C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev), // 
  (VTBL_ENTRY)_ZN7S7727C9D1Ev,
  (VTBL_ENTRY)_ZN7S7727C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7727C7D0Ev,_ZThn16_N7S7727C7D0Ev),
  (VTBL_ENTRY)_ZN7S7727C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7727C7D1Ev,_ZThn16_N7S7727C7D1Ev),
  (VTBL_ENTRY)_ZN7S7727C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C16D0Ev,_ZTv0_n12_N8S7727C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7727C16D0Ev,_ZThn8_N8S7727C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7727C16D0Ev,_ZThn16_N8S7727C16D0Ev),
  (VTBL_ENTRY)_ZN8S7727C16D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C16D1Ev,_ZTv0_n12_N8S7727C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7727C16D1Ev,_ZThn8_N8S7727C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7727C16D1Ev,_ZThn16_N8S7727C16D1Ev),
  (VTBL_ENTRY)_ZN8S7727C16D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C15D0Ev,_ZTv0_n12_N8S7727C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7727C15D0Ev,_ZThn20_N8S7727C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7727C15D0Ev,_ZThn12_N8S7727C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7727C15D0Ev,_ZThn4_N8S7727C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C15D1Ev,_ZTv0_n12_N8S7727C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S7727C15D1Ev,_ZThn20_N8S7727C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7727C15D1Ev,_ZThn12_N8S7727C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7727C15D1Ev,_ZThn4_N8S7727C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7727C15 = {  "S7727C15", // class name
  bases_S7727C15, 12,
  &(vtc_S7727C15[0]), // expected_vtbl_contents
  &(vtt_S7727C15[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S7727C15),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7727C15),33, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7727C15),18, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names86,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7727C18  : S7727C6 , S3216C8_nt {
  void *s7727c18f0;
  ~S7727C18(); // tgen
  S7727C18(); // tgen
};
//SIG(-1 S7727C18) C1{ BC2{ VBC3{ VBC4{ BC5{ VBC6{ vd m} VBC7{ m Fi} BC8{ m} Fi} Fi} BC8} FC7} BC7 Fp}


S7727C18 ::~S7727C18(){ note_dtor("S7727C18", this);} // tgen
S7727C18 ::S7727C18(){ note_ctor("S7727C18", this);} // tgen

static void Test_S7727C18()
{
  extern Class_Descriptor cd_S7727C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S7727C18, buf);
    S7727C18 *dp, &lv = *(dp=new (buf) S7727C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S7727C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7727C18)");
    check_base_class_offset(lv, (S7883C3_nt*)(S7727C9*)(S7727C8*), 0, "S7727C18");
    check_base_class_offset(lv, (S3216C8_nt*)(S7727C9*)(S7727C8*), ABISELECT(40,28), "S7727C18");
    check_base_class_offset(lv, (S4677C37*)(S7727C9*)(S7727C8*), ABISELECT(24,16), "S7727C18");
    check_base_class_offset(lv, (S7727C9*)(S7727C8*), ABISELECT(24,16), "S7727C18");
    check_base_class_offset(lv, (S7727C8*)(S7727C7*), ABISELECT(24,16), "S7727C18");
    /*is_ambiguous_... S7727C7::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7727C7*), 0, "S7727C18");
    check_base_class_offset(lv, (S7727C7*)(S7727C6*), 0, "S7727C18");
    check_base_class_offset(lv, (S7727C6*), 0, "S7727C18");
    /*is_ambiguous_... S7727C18::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(12,8), "S7727C18");
    check_field_offset(lv, s7727c18f0, ABISELECT(16,12), "S7727C18.s7727c18f0");
    test_class_info(&lv, &cd_S7727C18);
    dp->~S7727C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7727C18(Test_S7727C18, "S7727C18", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN8S7727C18C1Ev();
extern void _ZN8S7727C18D1Ev();
Name_Map name_map_S7727C18[] = {
  NSPAIR(_ZN8S7727C18C1Ev),
  NSPAIR(_ZN8S7727C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C9;
extern VTBL_ENTRY _ZTI7S7727C9[];
extern  VTBL_ENTRY _ZTV7S7727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C9[];
extern Class_Descriptor cd_S7727C8;
extern VTBL_ENTRY _ZTI7S7727C8[];
extern  VTBL_ENTRY _ZTV7S7727C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C8[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C7;
extern VTBL_ENTRY _ZTI7S7727C7[];
extern  VTBL_ENTRY _ZTV7S7727C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C7[];
extern Class_Descriptor cd_S7727C6;
extern VTBL_ENTRY _ZTI7S7727C6[];
extern  VTBL_ENTRY _ZTV7S7727C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S7727C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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_S7727C9,    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
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7727C8,    ABISELECT(24,16), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7727C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7727C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7727C18[];
extern void _ZN8S7727C18D1Ev();
extern void _ZN8S7727C18D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S7727C18D1Ev,_ZTv0_n12_N8S7727C18D1Ev)();
extern void ABISELECT(_ZThn24_N8S7727C18D1Ev,_ZThn16_N8S7727C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C18D0Ev,_ZTv0_n12_N8S7727C18D0Ev)();
extern void ABISELECT(_ZThn24_N8S7727C18D0Ev,_ZThn16_N8S7727C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7727C18[] = {
  0,
  ABISELECT(40,28),
  0,
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7727C18[0]),
  (VTBL_ENTRY)&_ZN8S7727C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7727C18D0Ev,
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7727C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C18D1Ev,_ZTv0_n12_N8S7727C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C18D0Ev,_ZTv0_n12_N8S7727C18D0Ev),
};
extern VTBL_ENTRY _ZTV8S7727C18[];
extern void _ZN7S7727C6D1Ev();
extern void _ZN7S7727C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7727C6__8S7727C18[] = {
  0,
  ABISELECT(40,28),
  0,
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C6[0]),
  (VTBL_ENTRY)&_ZN7S7727C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7727C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev)();
extern void ABISELECT(_ZThn24_N7S7727C6D1Ev,_ZThn16_N7S7727C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev)();
extern void ABISELECT(_ZThn24_N7S7727C6D0Ev,_ZThn16_N7S7727C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C6__8S7727C18[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev)();
extern void _ZN7S7727C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev)();
extern void _ZN7S7727C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C7__8S7727C18[] = {
  ABISELECT(40,28),
  0,
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev)();
extern void ABISELECT(_ZThn24_N7S7727C7D1Ev,_ZThn16_N7S7727C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev)();
extern void ABISELECT(_ZThn24_N7S7727C7D0Ev,_ZThn16_N7S7727C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C7__8S7727C18[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7727C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev)();
extern void _ZN7S7727C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev)();
extern void _ZN7S7727C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__8S7727C18[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void _ZN7S7727C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
extern void _ZN7S7727C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C97S7727C8__8S7727C18[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C97S7727C8__8S7727C18[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C8__8S7727C18[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev),
};
static  VTT_ENTRY vtt_S7727C18[] = {
  {&(_ZTV8S7727C18[7]),  7,16},
  {&(_tg__ZTV7S7727C6__8S7727C18[7]),  7,9},
  {&(_tg__ZTV7S7727C6__8S7727C18[7]),  7,9},
  {&(_tg__ZTV7S7727C8__7S7727C6__8S7727C18[5]),  5,7},
  {&(_tg__ZTV7S7727C6__8S7727C18[7]),  7,9},
  {&(_ZTV8S7727C18[7]),  7,16},
  {&(_ZTV8S7727C18[14]),  14,16},
  {&(_ZTV8S7727C18[7]),  7,16},
  {&(_tg__ZTV7S7727C7__8S7727C18[6]),  6,8},
  {&(_tg__ZTV7S7727C8__7S7727C7__8S7727C18[5]),  5,7},
  {&(_tg__ZTV7S7727C7__8S7727C18[6]),  6,8},
  {&(_tg__ZTV7S7727C8__8S7727C18[5]),  5,7},
  {&(_tg__ZTV7S7727C97S7727C8__8S7727C18[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7727C97S7727C8__8S7727C18[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7727C8__8S7727C18[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7727C18[];
extern  VTBL_ENTRY _ZTV8S7727C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7727C18[];
static VTBL_ENTRY alt_thunk_names87[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev), // 
  (VTBL_ENTRY)_ZN7S7727C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev), // 
  (VTBL_ENTRY)_ZN7S7727C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev), // 
  (VTBL_ENTRY)_ZN7S7727C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev), // 
  (VTBL_ENTRY)_ZN7S7727C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7727C7D0Ev,_ZThn16_N7S7727C7D0Ev),
  (VTBL_ENTRY)_ZN7S7727C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7727C7D1Ev,_ZThn16_N7S7727C7D1Ev),
  (VTBL_ENTRY)_ZN7S7727C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7727C6D0Ev,_ZThn16_N7S7727C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7727C6D1Ev,_ZThn16_N7S7727C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C18D0Ev,_ZTv0_n12_N8S7727C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7727C18D0Ev,_ZThn16_N8S7727C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C18D1Ev,_ZTv0_n12_N8S7727C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7727C18D1Ev,_ZThn16_N8S7727C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7727C18 = {  "S7727C18", // class name
  bases_S7727C18, 9,
  &(vtc_S7727C18[0]), // expected_vtbl_contents
  &(vtt_S7727C18[0]), // expected_vtt_contents
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI8S7727C18),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7727C18),16, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7727C18),15, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names87,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7727C20  : S7727C8 {
  ~S7727C20(); // tgen
  S7727C20(); // tgen
};
//SIG(-1 S7727C20) C1{ BC2{ BC3{ VBC4{ vd m} VBC5{ m Fi} BC6{ m} Fi} Fi}}


S7727C20 ::~S7727C20(){ note_dtor("S7727C20", this);} // tgen
S7727C20 ::S7727C20(){ note_ctor("S7727C20", this);} // tgen

static void Test_S7727C20()
{
  extern Class_Descriptor cd_S7727C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7727C20, buf);
    S7727C20 *dp, &lv = *(dp=new (buf) S7727C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7727C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7727C20)");
    check_base_class_offset(lv, (S7883C3_nt*)(S7727C9*)(S7727C8*), 0, "S7727C20");
    check_base_class_offset(lv, (S3216C8_nt*)(S7727C9*)(S7727C8*), ABISELECT(16,12), "S7727C20");
    check_base_class_offset(lv, (S4677C37*)(S7727C9*)(S7727C8*), 0, "S7727C20");
    check_base_class_offset(lv, (S7727C9*)(S7727C8*), 0, "S7727C20");
    check_base_class_offset(lv, (S7727C8*), 0, "S7727C20");
    test_class_info(&lv, &cd_S7727C20);
    dp->~S7727C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7727C20(Test_S7727C20, "S7727C20", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S7727C20C1Ev();
extern void _ZN8S7727C20D1Ev();
Name_Map name_map_S7727C20[] = {
  NSPAIR(_ZN8S7727C20C1Ev),
  NSPAIR(_ZN8S7727C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C9;
extern VTBL_ENTRY _ZTI7S7727C9[];
extern  VTBL_ENTRY _ZTV7S7727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C9[];
extern Class_Descriptor cd_S7727C8;
extern VTBL_ENTRY _ZTI7S7727C8[];
extern  VTBL_ENTRY _ZTV7S7727C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C8[];
static Base_Class bases_S7727C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7727C9,    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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7727C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7727C20[];
extern void _ZN8S7727C20D1Ev();
extern void _ZN8S7727C20D0Ev();
static  VTBL_ENTRY vtc_S7727C20[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7727C20[0]),
  (VTBL_ENTRY)&_ZN8S7727C20D1Ev,
  (VTBL_ENTRY)&_ZN8S7727C20D0Ev,
};
extern VTBL_ENTRY _ZTV8S7727C20[];
extern void _ZN7S7727C8D1Ev();
extern void _ZN7S7727C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7727C8__8S7727C20[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C8[0]),
  (VTBL_ENTRY)&_ZN7S7727C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7727C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void _ZN7S7727C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
extern void _ZN7S7727C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C97S7727C8__8S7727C20[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
static  VTT_ENTRY vtt_S7727C20[] = {
  {&(_ZTV8S7727C20[5]),  5,7},
  {&(_tg__ZTV7S7727C8__8S7727C20[5]),  5,7},
  {&(_tg__ZTV7S7727C97S7727C8__8S7727C20[5]),  5,7},
  {&(_tg__ZTV7S7727C97S7727C8__8S7727C20[5]),  5,7},
  {&(_tg__ZTV7S7727C8__8S7727C20[5]),  5,7},
  {&(_ZTV8S7727C20[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S7727C20[];
extern  VTBL_ENTRY _ZTV8S7727C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7727C20[];
static VTBL_ENTRY alt_thunk_names88[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev), // 
  (VTBL_ENTRY)_ZN7S7727C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev), // 
  (VTBL_ENTRY)_ZN7S7727C9D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7727C20 = {  "S7727C20", // class name
  bases_S7727C20, 5,
  &(vtc_S7727C20[0]), // expected_vtbl_contents
  &(vtt_S7727C20[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S7727C20),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S7727C20),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7727C20),6, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names88,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7727C19  : virtual S7727C8 , S7727C18 , virtual S7727C20 {
  virtual  ~S7727C19(); // _ZN8S7727C19D2Ev
  S7727C19(); // tgen
};
//SIG(-1 S7727C19) C1{ VBC2{ BC3{ VBC4{ vd m} VBC5{ m Fi} BC6{ m} Fi} Fi} BC7{ BC8{ VBC9{ VBC2 BC6} FC5} BC5 Fp} VBC10{ BC2} vd}


 S7727C19 ::~S7727C19(){ note_dtor("S7727C19", this);}
S7727C19 ::S7727C19(){ note_ctor("S7727C19", this);} // tgen

static void Test_S7727C19()
{
  extern Class_Descriptor cd_S7727C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S7727C19, buf);
    S7727C19 *dp, &lv = *(dp=new (buf) S7727C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S7727C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7727C19)");
    /*is_ambiguous_... S7727C19::S7727C8 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7727C9*)(S7727C8*), ABISELECT(24,16), "S7727C19");
    check_base_class_offset(lv, (S7883C3_nt*)(S7727C9*)(S7727C8*)(S7727C20*), ABISELECT(24,16), "S7727C19");
    /*is_ambiguous_... S7727C19::S7727C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7727C9*)(S7727C8*), ABISELECT(40,28), "S7727C19");
    check_base_class_offset(lv, (S3216C8_nt*)(S7727C9*)(S7727C8*)(S7727C20*), ABISELECT(40,28), "S7727C19");
    /*is_ambiguous_... S7727C19::S7727C8 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7727C9*)(S7727C8*), ABISELECT(24,16), "S7727C19");
    /*is_ambiguous_... S7727C19::S7727C8 */ AMB_check_base_class_offset(lv, (S7727C9*)(S7727C8*), ABISELECT(24,16), "S7727C19");
    /*is_ambiguous_... S7727C19::S7727C8 */ AMB_check_base_class_offset(lv, (S7727C8*), ABISELECT(24,16), "S7727C19");
    check_base_class_offset(lv, (S7727C8*)(S7727C7*), ABISELECT(24,16), "S7727C19");
    /*is_ambiguous_... S7727C7::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7727C7*), 0, "S7727C19");
    check_base_class_offset(lv, (S7727C7*)(S7727C6*)(S7727C18*), 0, "S7727C19");
    check_base_class_offset(lv, (S7727C6*)(S7727C18*), 0, "S7727C19");
    /*is_ambiguous_... S7727C18::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7727C18*), ABISELECT(12,8), "S7727C19");
    check_base_class_offset(lv, (S7727C18*), 0, "S7727C19");
    check_base_class_offset(lv, (S4677C37*)(S7727C9*)(S7727C8*)(S7727C20*), ABISELECT(48,32), "S7727C19");
    check_base_class_offset(lv, (S7727C9*)(S7727C8*)(S7727C20*), ABISELECT(48,32), "S7727C19");
    check_base_class_offset(lv, (S7727C8*)(S7727C20*), ABISELECT(48,32), "S7727C19");
    check_base_class_offset(lv, (S7727C20*), ABISELECT(48,32), "S7727C19");
    test_class_info(&lv, &cd_S7727C19);
    dp->~S7727C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7727C19(Test_S7727C19, "S7727C19", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN8S7727C19C1Ev();
extern void _ZN8S7727C19D2Ev();
Name_Map name_map_S7727C19[] = {
  NSPAIR(_ZN8S7727C19C1Ev),
  NSPAIR(_ZN8S7727C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C9;
extern VTBL_ENTRY _ZTI7S7727C9[];
extern  VTBL_ENTRY _ZTV7S7727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C9[];
extern Class_Descriptor cd_S7727C8;
extern VTBL_ENTRY _ZTI7S7727C8[];
extern  VTBL_ENTRY _ZTV7S7727C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C8[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C7;
extern VTBL_ENTRY _ZTI7S7727C7[];
extern  VTBL_ENTRY _ZTV7S7727C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C7[];
extern Class_Descriptor cd_S7727C6;
extern VTBL_ENTRY _ZTI7S7727C6[];
extern  VTBL_ENTRY _ZTV7S7727C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7727C18;
extern VTBL_ENTRY _ZTI8S7727C18[];
extern  VTBL_ENTRY _ZTV8S7727C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7727C18[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C9;
extern VTBL_ENTRY _ZTI7S7727C9[];
extern  VTBL_ENTRY _ZTV7S7727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C9[];
extern Class_Descriptor cd_S7727C8;
extern VTBL_ENTRY _ZTI7S7727C8[];
extern  VTBL_ENTRY _ZTV7S7727C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C8[];
extern Class_Descriptor cd_S7727C20;
extern VTBL_ENTRY _ZTI8S7727C20[];
extern  VTBL_ENTRY _ZTV8S7727C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7727C20[];
static Base_Class bases_S7727C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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_S7727C9,    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
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7727C8,    ABISELECT(24,16), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7727C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7727C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7727C18,    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_S4677C37,    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
    11, //immediately_derived
  0, 0},
  {&cd_S7727C9,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7727C8,    ABISELECT(48,32), //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
    13, //immediately_derived
  0, 0},
  {&cd_S7727C20,    ABISELECT(48,32), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7727C19[];
extern void ABISELECT(_ZTv0_n24_N8S7727C19D1Ev,_ZTv0_n12_N8S7727C19D1Ev)();
extern void _ZN8S7727C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C19D0Ev,_ZTv0_n12_N8S7727C19D0Ev)();
extern void _ZN8S7727C19D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C19D1Ev,_ZTv0_n12_N8S7727C19D1Ev)();
extern void ABISELECT(_ZThn24_N8S7727C19D1Ev,_ZThn16_N8S7727C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C19D0Ev,_ZTv0_n12_N8S7727C19D0Ev)();
extern void ABISELECT(_ZThn24_N8S7727C19D0Ev,_ZThn16_N8S7727C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C19D1Ev,_ZTv0_n12_N8S7727C19D1Ev)();
extern void ABISELECT(_ZThn48_N8S7727C19D1Ev,_ZThn32_N8S7727C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C19D0Ev,_ZTv0_n12_N8S7727C19D0Ev)();
extern void ABISELECT(_ZThn48_N8S7727C19D0Ev,_ZThn32_N8S7727C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7727C19[] = {
  ABISELECT(48,32),
  0,
  ABISELECT(40,28),
  ABISELECT(24,16),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7727C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C19D1Ev,_ZTv0_n12_N8S7727C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C19D0Ev,_ZTv0_n12_N8S7727C19D0Ev),
  ABISELECT(16,12),
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7727C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C19D1Ev,_ZTv0_n12_N8S7727C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C19D0Ev,_ZTv0_n12_N8S7727C19D0Ev),
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S7727C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C19D1Ev,_ZTv0_n12_N8S7727C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C19D0Ev,_ZTv0_n12_N8S7727C19D0Ev),
};
extern VTBL_ENTRY _ZTV8S7727C19[];
extern void ABISELECT(_ZTv0_n24_N8S7727C18D1Ev,_ZTv0_n12_N8S7727C18D1Ev)();
extern void _ZN8S7727C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C18D0Ev,_ZTv0_n12_N8S7727C18D0Ev)();
extern void _ZN8S7727C18D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7727C18__8S7727C19[] = {
  0,
  ABISELECT(40,28),
  ABISELECT(24,16),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7727C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C18D1Ev,_ZTv0_n12_N8S7727C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C18D0Ev,_ZTv0_n12_N8S7727C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev)();
extern void _ZN7S7727C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev)();
extern void _ZN7S7727C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C68S7727C18__8S7727C19[] = {
  0,
  ABISELECT(40,28),
  ABISELECT(24,16),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev)();
extern void ABISELECT(_ZThn24_N7S7727C6D1Ev,_ZThn16_N7S7727C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev)();
extern void ABISELECT(_ZThn24_N7S7727C6D0Ev,_ZThn16_N7S7727C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C68S7727C18__8S7727C19[] = {
  ABISELECT(16,12),
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C18D1Ev,_ZTv0_n12_N8S7727C18D1Ev)();
extern void ABISELECT(_ZThn24_N8S7727C18D1Ev,_ZThn16_N8S7727C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C18D0Ev,_ZTv0_n12_N8S7727C18D0Ev)();
extern void ABISELECT(_ZThn24_N8S7727C18D0Ev,_ZThn16_N8S7727C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__8S7727C18__8S7727C19[] = {
  ABISELECT(16,12),
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7727C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C18D1Ev,_ZTv0_n12_N8S7727C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C18D0Ev,_ZTv0_n12_N8S7727C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev)();
extern void _ZN7S7727C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev)();
extern void _ZN7S7727C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__8S7727C19[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void _ZN7S7727C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
extern void _ZN7S7727C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C97S7727C8__8S7727C19[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev)();
extern void _ZN7S7727C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev)();
extern void _ZN7S7727C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C7__8S7727C19[] = {
  ABISELECT(40,28),
  ABISELECT(24,16),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev)();
extern void ABISELECT(_ZThn24_N7S7727C7D1Ev,_ZThn16_N7S7727C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev)();
extern void ABISELECT(_ZThn24_N7S7727C7D0Ev,_ZThn16_N7S7727C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C7__8S7727C19[] = {
  ABISELECT(16,12),
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7727C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C20D1Ev,_ZTv0_n12_N8S7727C20D1Ev)();
extern void _ZN8S7727C20D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C20D0Ev,_ZTv0_n12_N8S7727C20D0Ev)();
extern void _ZN8S7727C20D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7727C20__8S7727C19[] = {
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7727C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C20D1Ev,_ZTv0_n12_N8S7727C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C20D0Ev,_ZTv0_n12_N8S7727C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev)();
extern void _ZN7S7727C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev)();
extern void _ZN7S7727C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C88S7727C20__A1__8S7727C19[] = {
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void _ZN7S7727C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
extern void _ZN7S7727C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C97S7727C88S7727C20__A1__8S7727C19[] = {
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C97S7727C88S7727C20__A1__8S7727C19[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C88S7727C20__A1__8S7727C19[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C20D1Ev,_ZTv0_n12_N8S7727C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7727C20D0Ev,_ZTv0_n12_N8S7727C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7727C20__8S7727C19[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S7727C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C20D1Ev,_ZTv0_n12_N8S7727C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C20D0Ev,_ZTv0_n12_N8S7727C20D0Ev),
};
static  VTT_ENTRY vtt_S7727C19[] = {
  {&(_ZTV8S7727C19[8]),  8,24},
  {&(_tg__ZTV8S7727C18__8S7727C19[7]),  7,9},
  {&(_tg__ZTV7S7727C68S7727C18__8S7727C19[7]),  7,9},
  {&(_tg__ZTV7S7727C68S7727C18__8S7727C19[7]),  7,9},
  {&(_tg__ZTV7S7727C8__7S7727C68S7727C18__8S7727C19[5]),  5,7},
  {&(_tg__ZTV7S7727C8__7S7727C68S7727C18__8S7727C19[5]),  5,7},
  {&(_tg__ZTV8S7727C18__8S7727C19[7]),  7,9},
  {&(_tg__ZTV7S7727C8__8S7727C18__8S7727C19[5]),  5,7},
  {&(_tg__ZTV7S7727C8__8S7727C18__8S7727C19[5]),  5,7},
  {&(_ZTV8S7727C19[15]),  15,24},
  {&(_ZTV8S7727C19[15]),  15,24},
  {&(_ZTV8S7727C19[8]),  8,24},
  {&(_ZTV8S7727C19[22]),  22,24},
  {&(_tg__ZTV7S7727C8__8S7727C19[5]),  5,7},
  {&(_tg__ZTV7S7727C97S7727C8__8S7727C19[5]),  5,7},
  {&(_tg__ZTV7S7727C97S7727C8__8S7727C19[5]),  5,7},
  {&(_tg__ZTV7S7727C8__8S7727C19[5]),  5,7},
  {&(_tg__ZTV7S7727C7__8S7727C19[6]),  6,8},
  {&(_tg__ZTV7S7727C8__7S7727C7__8S7727C19[5]),  5,7},
  {&(_tg__ZTV7S7727C8__7S7727C7__8S7727C19[5]),  5,7},
  {&(_tg__ZTV8S7727C20__8S7727C19[5]),  5,7},
  {&(_tg__ZTV7S7727C88S7727C20__A1__8S7727C19[5]),  5,7},
  {&(_tg__ZTV7S7727C97S7727C88S7727C20__A1__8S7727C19[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7727C97S7727C88S7727C20__A1__8S7727C19[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7727C88S7727C20__A1__8S7727C19[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S7727C20__8S7727C19[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7727C19[];
extern  VTBL_ENTRY _ZTV8S7727C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7727C19[];
static VTBL_ENTRY alt_thunk_names89[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C20D0Ev,_ZTv0_n12_N8S7727C20D0Ev), // 
  (VTBL_ENTRY)_ZN8S7727C20D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C20D1Ev,_ZTv0_n12_N8S7727C20D1Ev), // 
  (VTBL_ENTRY)_ZN8S7727C20D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7727C7D0Ev,_ZThn16_N7S7727C7D0Ev),
  (VTBL_ENTRY)_ZN7S7727C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7727C7D1Ev,_ZThn16_N7S7727C7D1Ev),
  (VTBL_ENTRY)_ZN7S7727C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev), // 
  (VTBL_ENTRY)_ZN7S7727C9D0Ev,
  (VTBL_ENTRY)_ZN7S7727C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev), // 
  (VTBL_ENTRY)_ZN7S7727C9D1Ev,
  (VTBL_ENTRY)_ZN7S7727C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev), // 
  (VTBL_ENTRY)_ZN7S7727C8D0Ev,
  (VTBL_ENTRY)_ZN7S7727C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev), // 
  (VTBL_ENTRY)_ZN7S7727C8D1Ev,
  (VTBL_ENTRY)_ZN7S7727C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7727C6D0Ev,_ZThn16_N7S7727C6D0Ev),
  (VTBL_ENTRY)_ZN7S7727C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7727C6D1Ev,_ZThn16_N7S7727C6D1Ev),
  (VTBL_ENTRY)_ZN7S7727C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C18D0Ev,_ZTv0_n12_N8S7727C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7727C18D0Ev,_ZThn16_N8S7727C18D0Ev),
  (VTBL_ENTRY)_ZN8S7727C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C18D1Ev,_ZTv0_n12_N8S7727C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7727C18D1Ev,_ZThn16_N8S7727C18D1Ev),
  (VTBL_ENTRY)_ZN8S7727C18D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C19D0Ev,_ZTv0_n12_N8S7727C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7727C19D0Ev,_ZThn32_N8S7727C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7727C19D0Ev,_ZThn16_N8S7727C19D0Ev),
  (VTBL_ENTRY)_ZN8S7727C19D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C19D1Ev,_ZTv0_n12_N8S7727C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7727C19D1Ev,_ZThn32_N8S7727C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7727C19D1Ev,_ZThn16_N8S7727C19D1Ev),
  (VTBL_ENTRY)_ZN8S7727C19D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7727C19 = {  "S7727C19", // class name
  bases_S7727C19, 14,
  &(vtc_S7727C19[0]), // expected_vtbl_contents
  &(vtt_S7727C19[0]), // expected_vtt_contents
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI8S7727C19),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7727C19),24, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7727C19),26, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names89,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7727C17  : virtual S7727C18 , S7727C2 , virtual S7727C19 , virtual S4677C27 {
  virtual  ~S7727C17(); // _ZN8S7727C17D2Ev
  S7727C17(); // tgen
};
//SIG(-1 S7727C17) C1{ VBC2{ BC3{ VBC4{ VBC5{ BC6{ VBC7{ vd m} VBC8{ m Fi} BC9{ m} Fi} Fi} BC9} FC8} BC8 Fp} BC10{ VBC11{ VBC8 vd} VBC12{ VBC8 VBC3 VBC11 VBC9 BC6 vd Fi Fp} VBC6 vd} VBC13{ VBC5 BC2 VBC14{ BC5} vd} VBC15{ m} vd}


 S7727C17 ::~S7727C17(){ note_dtor("S7727C17", this);}
S7727C17 ::S7727C17(){ note_ctor("S7727C17", this);} // tgen

static void Test_S7727C17()
{
  extern Class_Descriptor cd_S7727C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,25)];
    init_test(&cd_S7727C17, buf);
    S7727C17 *dp, &lv = *(dp=new (buf) S7727C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,96), "sizeof(S7727C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7727C17)");
    /*is_ambiguous_... S7727C17::S7727C8 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7727C9*)(S7727C8*), ABISELECT(8,4), "S7727C17");
    /*is_ambiguous_... S7727C5::S7727C9 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7727C9*)(S7727C5*), ABISELECT(8,4), "S7727C17");
    /*is_ambiguous_... S7727C17::S7727C9 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7727C9*), ABISELECT(8,4), "S7727C17");
    check_base_class_offset(lv, (S7883C3_nt*)(S7727C9*)(S7727C8*)(S7727C20*), ABISELECT(8,4), "S7727C17");
    /*is_ambiguous_... S7727C17::S7727C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7727C9*)(S7727C8*), ABISELECT(48,32), "S7727C17");
    check_base_class_offset(lv, (S3216C8_nt*)(S7727C3*), ABISELECT(48,32), "S7727C17");
    check_base_class_offset(lv, (S3216C8_nt*)(S7727C5*), ABISELECT(48,32), "S7727C17");
    /*is_ambiguous_... S7727C5::S7727C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7727C9*)(S7727C5*), ABISELECT(48,32), "S7727C17");
    /*is_ambiguous_... S7727C17::S7727C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7727C9*), ABISELECT(48,32), "S7727C17");
    check_base_class_offset(lv, (S3216C8_nt*)(S7727C9*)(S7727C8*)(S7727C20*), ABISELECT(48,32), "S7727C17");
    /*is_ambiguous_... S7727C17::S7727C8 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7727C9*)(S7727C8*), ABISELECT(32,20), "S7727C17");
    /*is_ambiguous_... S7727C17::S7727C8 */ AMB_check_base_class_offset(lv, (S7727C9*)(S7727C8*), ABISELECT(32,20), "S7727C17");
    check_base_class_offset(lv, (S7727C8*)(S7727C7*), ABISELECT(32,20), "S7727C17");
    /*is_ambiguous_... S7727C19::S7727C8 */ AMB_check_base_class_offset(lv, (S7727C8*)(S7727C19*), ABISELECT(32,20), "S7727C17");
    /*is_ambiguous_... S7727C7::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7727C7*), ABISELECT(8,4), "S7727C17");
    /*is_ambiguous_... S7727C17::S7727C18 */ AMB_check_base_class_offset(lv, (S7727C7*)(S7727C6*)(S7727C18*), ABISELECT(8,4), "S7727C17");
    /*is_ambiguous_... S7727C17::S7727C6 */ AMB_check_base_class_offset(lv, (S7727C7*)(S7727C6*), ABISELECT(8,4), "S7727C17");
    check_base_class_offset(lv, (S7727C7*)(S7727C6*)(S7727C18*)(S7727C19*), ABISELECT(8,4), "S7727C17");
    /*is_ambiguous_... S7727C17::S7727C18 */ AMB_check_base_class_offset(lv, (S7727C6*)(S7727C18*), ABISELECT(8,4), "S7727C17");
    /*is_ambiguous_... S7727C17::S7727C18 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7727C18*), ABISELECT(20,12), "S7727C17");
    /*is_ambiguous_... S7727C17::S7727C18 */ AMB_check_base_class_offset(lv, (S7727C18*), ABISELECT(8,4), "S7727C17");
    check_base_class_offset(lv, (S7727C3*)(S7727C2*), 0, "S7727C17");
    check_base_class_offset(lv, (S7727C3*)(S7727C5*), 0, "S7727C17");
    check_base_class_offset(lv, (S7727C6*)(S7727C5*), ABISELECT(80,52), "S7727C17");
    /*is_ambiguous_... S7727C5::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7727C5*), 0, "S7727C17");
    /*is_ambiguous_... S7727C5::S7727C9 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7727C9*)(S7727C5*), ABISELECT(56,36), "S7727C17");
    /*is_ambiguous_... S7727C5::S7727C9 */ AMB_check_base_class_offset(lv, (S7727C9*)(S7727C5*), ABISELECT(56,36), "S7727C17");
    check_base_class_offset(lv, (S7727C5*)(S7727C2*), ABISELECT(56,36), "S7727C17");
    /*is_ambiguous_... S7727C17::S7727C9 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7727C9*), ABISELECT(96,60), "S7727C17");
    /*is_ambiguous_... S7727C2::S7727C9 */ AMB_check_base_class_offset(lv, (S7727C9*)(S7727C2*), ABISELECT(96,60), "S7727C17");
    check_base_class_offset(lv, (S7727C2*), 0, "S7727C17");
    check_base_class_offset(lv, (S7727C6*)(S7727C18*)(S7727C19*), ABISELECT(112,68), "S7727C17");
    /*is_ambiguous_... S7727C18::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7727C18*)(S7727C19*), ABISELECT(124,76), "S7727C17");
    check_base_class_offset(lv, (S7727C18*)(S7727C19*), ABISELECT(112,68), "S7727C17");
    check_base_class_offset(lv, (S4677C37*)(S7727C9*)(S7727C8*)(S7727C20*), ABISELECT(136,84), "S7727C17");
    check_base_class_offset(lv, (S7727C9*)(S7727C8*)(S7727C20*), ABISELECT(136,84), "S7727C17");
    check_base_class_offset(lv, (S7727C8*)(S7727C20*), ABISELECT(136,84), "S7727C17");
    check_base_class_offset(lv, (S7727C20*)(S7727C19*), ABISELECT(136,84), "S7727C17");
    check_base_class_offset(lv, (S7727C19*), ABISELECT(112,68), "S7727C17");
    check_base_class_offset(lv, (S4677C27*), 0, "S7727C17");
    test_class_info(&lv, &cd_S7727C17);
    dp->~S7727C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7727C17(Test_S7727C17, "S7727C17", ABISELECT(152,96));

#else // __cplusplus

extern void _ZN8S7727C17C1Ev();
extern void _ZN8S7727C17D2Ev();
Name_Map name_map_S7727C17[] = {
  NSPAIR(_ZN8S7727C17C1Ev),
  NSPAIR(_ZN8S7727C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C9;
extern VTBL_ENTRY _ZTI7S7727C9[];
extern  VTBL_ENTRY _ZTV7S7727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C9[];
extern Class_Descriptor cd_S7727C8;
extern VTBL_ENTRY _ZTI7S7727C8[];
extern  VTBL_ENTRY _ZTV7S7727C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C8[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C7;
extern VTBL_ENTRY _ZTI7S7727C7[];
extern  VTBL_ENTRY _ZTV7S7727C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C7[];
extern Class_Descriptor cd_S7727C6;
extern VTBL_ENTRY _ZTI7S7727C6[];
extern  VTBL_ENTRY _ZTV7S7727C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7727C18;
extern VTBL_ENTRY _ZTI8S7727C18[];
extern  VTBL_ENTRY _ZTV8S7727C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7727C18[];
extern Class_Descriptor cd_S7727C3;
extern VTBL_ENTRY _ZTI7S7727C3[];
extern  VTBL_ENTRY _ZTV7S7727C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C3[];
extern Class_Descriptor cd_S7727C6;
extern VTBL_ENTRY _ZTI7S7727C6[];
extern  VTBL_ENTRY _ZTV7S7727C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C9;
extern VTBL_ENTRY _ZTI7S7727C9[];
extern  VTBL_ENTRY _ZTV7S7727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C9[];
extern Class_Descriptor cd_S7727C5;
extern VTBL_ENTRY _ZTI7S7727C5[];
extern  VTBL_ENTRY _ZTV7S7727C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C5[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C9;
extern VTBL_ENTRY _ZTI7S7727C9[];
extern  VTBL_ENTRY _ZTV7S7727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C9[];
extern Class_Descriptor cd_S7727C2;
extern VTBL_ENTRY _ZTI7S7727C2[];
extern  VTBL_ENTRY _ZTV7S7727C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C2[];
extern Class_Descriptor cd_S7727C6;
extern VTBL_ENTRY _ZTI7S7727C6[];
extern  VTBL_ENTRY _ZTV7S7727C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7727C18;
extern VTBL_ENTRY _ZTI8S7727C18[];
extern  VTBL_ENTRY _ZTV8S7727C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7727C18[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C9;
extern VTBL_ENTRY _ZTI7S7727C9[];
extern  VTBL_ENTRY _ZTV7S7727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C9[];
extern Class_Descriptor cd_S7727C8;
extern VTBL_ENTRY _ZTI7S7727C8[];
extern  VTBL_ENTRY _ZTV7S7727C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C8[];
extern Class_Descriptor cd_S7727C20;
extern VTBL_ENTRY _ZTI8S7727C20[];
extern  VTBL_ENTRY _ZTV8S7727C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7727C20[];
extern Class_Descriptor cd_S7727C19;
extern VTBL_ENTRY _ZTI8S7727C19[];
extern  VTBL_ENTRY _ZTV8S7727C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7727C19[];
extern Class_Descriptor cd_S4677C27;
extern VTBL_ENTRY _ZTI8S4677C27[];
static Base_Class bases_S7727C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    ABISELECT(8,4), //bcp->offset
    -1, //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
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_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
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7727C9,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7727C8,    ABISELECT(32,20), //bcp->offset
    27, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7727C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7727C6,    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
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3216C8_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
    9, //immediately_derived
  0, 0},
  {&cd_S7727C18,    ABISELECT(8,4), //bcp->offset
    18, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7727C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7727C6,    ABISELECT(80,52), //bcp->offset
    46, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    14, //immediately_derived
  0, 0},
  {&cd_S7727C9,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7727C5,    ABISELECT(56,36), //bcp->offset
    34, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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_S7727C9,    ABISELECT(96,60), //bcp->offset
    55, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7727C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7727C6,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(124,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7727C18,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(136,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7727C9,    ABISELECT(136,84), //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
    24, //immediately_derived
  0, 0},
  {&cd_S7727C8,    ABISELECT(136,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7727C20,    ABISELECT(136,84), //bcp->offset
    72, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7727C19,    ABISELECT(112,68), //bcp->offset
    62, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S7727C17[];
extern void _ZN8S7727C17D1Ev();
extern void _ZN8S7727C17D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S7727C17D1Ev,_ZTv0_n12_N8S7727C17D1Ev)();
extern void ABISELECT(_ZThn8_N8S7727C17D1Ev,_ZThn4_N8S7727C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C17D0Ev,_ZTv0_n12_N8S7727C17D0Ev)();
extern void ABISELECT(_ZThn8_N8S7727C17D0Ev,_ZThn4_N8S7727C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C17D1Ev,_ZTv0_n12_N8S7727C17D1Ev)();
extern void ABISELECT(_ZThn32_N8S7727C17D1Ev,_ZThn20_N8S7727C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C17D0Ev,_ZTv0_n12_N8S7727C17D0Ev)();
extern void ABISELECT(_ZThn32_N8S7727C17D0Ev,_ZThn20_N8S7727C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C17D1Ev,_ZTv0_n12_N8S7727C17D1Ev)();
extern void ABISELECT(_ZThn56_N8S7727C17D1Ev,_ZThn36_N8S7727C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C17D0Ev,_ZTv0_n12_N8S7727C17D0Ev)();
extern void ABISELECT(_ZThn56_N8S7727C17D0Ev,_ZThn36_N8S7727C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C17D1Ev,_ZTv0_n12_N8S7727C17D1Ev)();
extern void ABISELECT(_ZThn80_N8S7727C17D1Ev,_ZThn52_N8S7727C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C17D0Ev,_ZTv0_n12_N8S7727C17D0Ev)();
extern void ABISELECT(_ZThn80_N8S7727C17D0Ev,_ZThn52_N8S7727C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C17D1Ev,_ZTv0_n12_N8S7727C17D1Ev)();
extern void ABISELECT(_ZThn96_N8S7727C17D1Ev,_ZThn60_N8S7727C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C17D0Ev,_ZTv0_n12_N8S7727C17D0Ev)();
extern void ABISELECT(_ZThn96_N8S7727C17D0Ev,_ZThn60_N8S7727C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C17D1Ev,_ZTv0_n12_N8S7727C17D1Ev)();
extern void ABISELECT(_ZThn112_N8S7727C17D1Ev,_ZThn68_N8S7727C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C17D0Ev,_ZTv0_n12_N8S7727C17D0Ev)();
extern void ABISELECT(_ZThn112_N8S7727C17D0Ev,_ZThn68_N8S7727C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C17D1Ev,_ZTv0_n12_N8S7727C17D1Ev)();
extern void ABISELECT(_ZThn136_N8S7727C17D1Ev,_ZThn84_N8S7727C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C17D0Ev,_ZTv0_n12_N8S7727C17D0Ev)();
extern void ABISELECT(_ZThn136_N8S7727C17D0Ev,_ZThn84_N8S7727C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7727C17[] = {
  0,
  ABISELECT(136,84),
  ABISELECT(112,68),
  ABISELECT(8,4),
  ABISELECT(96,60),
  0,
  ABISELECT(8,4),
  ABISELECT(32,20),
  ABISELECT(8,4),
  ABISELECT(80,52),
  ABISELECT(56,36),
  0,
  0,
  ABISELECT(48,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7727C17[0]),
  (VTBL_ENTRY)&_ZN8S7727C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7727C17D0Ev,
  0,
  ABISELECT(40,28),
  0,
  ABISELECT(24,16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7727C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C17D1Ev,_ZTv0_n12_N8S7727C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C17D0Ev,_ZTv0_n12_N8S7727C17D0Ev),
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7727C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C17D1Ev,_ZTv0_n12_N8S7727C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C17D0Ev,_ZTv0_n12_N8S7727C17D0Ev),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(-24,-16),
  ABISELECT(-48,-32),
  ABISELECT(24,16),
  ABISELECT(-8,-4),
  ABISELECT(-48,-32),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S7727C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C17D1Ev,_ZTv0_n12_N8S7727C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C17D0Ev,_ZTv0_n12_N8S7727C17D0Ev),
  ABISELECT(-72,-48),
  ABISELECT(-32,-20),
  ABISELECT(-72,-48),
  ABISELECT(-48,-32),
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S7727C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C17D1Ev,_ZTv0_n12_N8S7727C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C17D0Ev,_ZTv0_n12_N8S7727C17D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(-88,-56),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S7727C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C17D1Ev,_ZTv0_n12_N8S7727C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C17D0Ev,_ZTv0_n12_N8S7727C17D0Ev),
  ABISELECT(24,16),
  ABISELECT(-104,-64),
  ABISELECT(-64,-36),
  ABISELECT(-104,-64),
  ABISELECT(-80,-48),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S7727C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C17D1Ev,_ZTv0_n12_N8S7727C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C17D0Ev,_ZTv0_n12_N8S7727C17D0Ev),
  ABISELECT(-88,-52),
  ABISELECT(-128,-80),
  ABISELECT(-136,-84),
  ABISELECT(-136,-84),
  (VTBL_ENTRY)&(_ZTI8S7727C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C17D1Ev,_ZTv0_n12_N8S7727C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C17D0Ev,_ZTv0_n12_N8S7727C17D0Ev),
};
extern VTBL_ENTRY _ZTV8S7727C17[];
extern void _ZN7S7727C2D1Ev();
extern void _ZN7S7727C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7727C2__8S7727C17[] = {
  ABISELECT(96,60),
  0,
  ABISELECT(8,4),
  ABISELECT(32,20),
  ABISELECT(8,4),
  ABISELECT(80,52),
  ABISELECT(56,36),
  0,
  0,
  ABISELECT(48,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C2[0]),
  (VTBL_ENTRY)&_ZN7S7727C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7727C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev)();
extern void ABISELECT(_ZThn56_N7S7727C2D1Ev,_ZThn36_N7S7727C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev)();
extern void ABISELECT(_ZThn56_N7S7727C2D0Ev,_ZThn36_N7S7727C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C5__7S7727C2__8S7727C17[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(-24,-16),
  ABISELECT(-48,-32),
  ABISELECT(24,16),
  ABISELECT(-8,-4),
  ABISELECT(-48,-32),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S7727C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev)();
extern void ABISELECT(_ZThn80_N7S7727C2D1Ev,_ZThn52_N7S7727C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev)();
extern void ABISELECT(_ZThn80_N7S7727C2D0Ev,_ZThn52_N7S7727C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C6__7S7727C2__8S7727C17[] = {
  ABISELECT(-72,-48),
  ABISELECT(-32,-20),
  ABISELECT(-72,-48),
  ABISELECT(-48,-32),
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI7S7727C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev)();
extern void ABISELECT(_ZThn8_N7S7727C2D1Ev,_ZThn4_N7S7727C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev)();
extern void ABISELECT(_ZThn8_N7S7727C2D0Ev,_ZThn4_N7S7727C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C7__7S7727C2__8S7727C17[] = {
  ABISELECT(40,28),
  0,
  ABISELECT(24,16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7727C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev)();
extern void ABISELECT(_ZThn32_N7S7727C2D1Ev,_ZThn20_N7S7727C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev)();
extern void ABISELECT(_ZThn32_N7S7727C2D0Ev,_ZThn20_N7S7727C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C2__8S7727C17[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7727C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev)();
extern void ABISELECT(_ZThn96_N7S7727C2D1Ev,_ZThn60_N7S7727C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev)();
extern void ABISELECT(_ZThn96_N7S7727C2D0Ev,_ZThn60_N7S7727C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C9__A2__7S7727C2__8S7727C17[] = {
  ABISELECT(-48,-28),
  ABISELECT(-88,-56),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S7727C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C18D1Ev,_ZTv0_n12_N8S7727C18D1Ev)();
extern void _ZN8S7727C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C18D0Ev,_ZTv0_n12_N8S7727C18D0Ev)();
extern void _ZN8S7727C18D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7727C18__8S7727C17[] = {
  0,
  ABISELECT(40,28),
  0,
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7727C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C18D1Ev,_ZTv0_n12_N8S7727C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C18D0Ev,_ZTv0_n12_N8S7727C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev)();
extern void _ZN7S7727C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev)();
extern void _ZN7S7727C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C68S7727C18__8S7727C17[] = {
  0,
  ABISELECT(40,28),
  0,
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev)();
extern void ABISELECT(_ZThn24_N7S7727C6D1Ev,_ZThn16_N7S7727C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev)();
extern void ABISELECT(_ZThn24_N7S7727C6D0Ev,_ZThn16_N7S7727C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C68S7727C18__8S7727C17[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C18D1Ev,_ZTv0_n12_N8S7727C18D1Ev)();
extern void ABISELECT(_ZThn24_N8S7727C18D1Ev,_ZThn16_N8S7727C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C18D0Ev,_ZTv0_n12_N8S7727C18D0Ev)();
extern void ABISELECT(_ZThn24_N8S7727C18D0Ev,_ZThn16_N8S7727C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__8S7727C18__8S7727C17[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7727C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C18D1Ev,_ZTv0_n12_N8S7727C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C18D0Ev,_ZTv0_n12_N8S7727C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev)();
extern void _ZN7S7727C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev)();
extern void _ZN7S7727C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C7__8S7727C17[] = {
  ABISELECT(40,28),
  0,
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev)();
extern void ABISELECT(_ZThn24_N7S7727C7D1Ev,_ZThn16_N7S7727C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev)();
extern void ABISELECT(_ZThn24_N7S7727C7D0Ev,_ZThn16_N7S7727C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C7__8S7727C17[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7727C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev)();
extern void _ZN7S7727C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev)();
extern void _ZN7S7727C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__8S7727C17[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void _ZN7S7727C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
extern void _ZN7S7727C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C97S7727C8__8S7727C17[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C97S7727C8__8S7727C17[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C8__8S7727C17[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev),
};
extern void _ZN7S7727C3D1Ev();
extern void _ZN7S7727C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7727C3__8S7727C17[] = {
  ABISELECT(48,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C3[0]),
  (VTBL_ENTRY)&_ZN7S7727C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7727C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7727C5D1Ev,_ZTv0_n12_N7S7727C5D1Ev)();
extern void _ZN7S7727C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C5D0Ev,_ZTv0_n12_N7S7727C5D0Ev)();
extern void _ZN7S7727C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C5__8S7727C17[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(-24,-16),
  ABISELECT(-48,-32),
  ABISELECT(24,16),
  ABISELECT(-8,-4),
  ABISELECT(-48,-32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C5D1Ev,_ZTv0_n12_N7S7727C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C5D0Ev,_ZTv0_n12_N7S7727C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void _ZN7S7727C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
extern void _ZN7S7727C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C97S7727C5__A1__8S7727C17[] = {
  ABISELECT(-8,-4),
  ABISELECT(-48,-32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C97S7727C5__A1__8S7727C17[] = {
  ABISELECT(48,32),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C5D1Ev,_ZTv0_n12_N7S7727C5D1Ev)();
extern void ABISELECT(_ZThn24_N7S7727C5D1Ev,_ZThn16_N7S7727C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C5D0Ev,_ZTv0_n12_N7S7727C5D0Ev)();
extern void ABISELECT(_ZThn24_N7S7727C5D0Ev,_ZThn16_N7S7727C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C6__7S7727C5__8S7727C17[] = {
  ABISELECT(-72,-48),
  ABISELECT(-32,-20),
  ABISELECT(-72,-48),
  ABISELECT(-48,-32),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7727C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C5D1Ev,_ZTv0_n12_N7S7727C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C5D0Ev,_ZTv0_n12_N7S7727C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C5D1Ev,_ZTv0_n12_N7S7727C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C5D0Ev,_ZTv0_n12_N7S7727C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C7__7S7727C5__8S7727C17[] = {
  ABISELECT(40,28),
  0,
  ABISELECT(24,16),
  ABISELECT(48,32),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI7S7727C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C5D1Ev,_ZTv0_n12_N7S7727C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C5D0Ev,_ZTv0_n12_N7S7727C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C5D1Ev,_ZTv0_n12_N7S7727C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C5D0Ev,_ZTv0_n12_N7S7727C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C5__8S7727C17[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7727C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C5D1Ev,_ZTv0_n12_N7S7727C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C5D0Ev,_ZTv0_n12_N7S7727C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7727C5D1Ev,_ZTv0_n16_N7S7727C5D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7727C5D0Ev,_ZTv0_n16_N7S7727C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C3__7S7727C5__8S7727C17[] = {
  ABISELECT(56,36),
  ABISELECT(48,32),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI7S7727C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7727C5D1Ev,_ZTv0_n16_N7S7727C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7727C5D0Ev,_ZTv0_n16_N7S7727C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev)();
extern void _ZN7S7727C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev)();
extern void _ZN7S7727C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C6__A1__8S7727C17[] = {
  ABISELECT(-72,-48),
  ABISELECT(-32,-20),
  ABISELECT(-72,-48),
  ABISELECT(-48,-32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C7__7S7727C6__A1__8S7727C17[] = {
  ABISELECT(40,28),
  0,
  ABISELECT(24,16),
  ABISELECT(72,48),
  ABISELECT(72,48),
  (VTBL_ENTRY)&(_ZTI7S7727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C6__A1__8S7727C17[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(48,32),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI7S7727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void _ZN7S7727C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
extern void _ZN7S7727C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C9__A2__8S7727C17[] = {
  ABISELECT(-48,-28),
  ABISELECT(-88,-56),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C9__A2__8S7727C17[] = {
  ABISELECT(88,56),
  ABISELECT(88,56),
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C19D1Ev,_ZTv0_n12_N8S7727C19D1Ev)();
extern void _ZN8S7727C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C19D0Ev,_ZTv0_n12_N8S7727C19D0Ev)();
extern void _ZN8S7727C19D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7727C19__8S7727C17[] = {
  ABISELECT(24,16),
  ABISELECT(-104,-64),
  ABISELECT(-64,-36),
  ABISELECT(-104,-64),
  ABISELECT(-80,-48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7727C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C19D1Ev,_ZTv0_n12_N8S7727C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C19D0Ev,_ZTv0_n12_N8S7727C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C18D1Ev,_ZTv0_n12_N8S7727C18D1Ev)();
extern void _ZN8S7727C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C18D0Ev,_ZTv0_n12_N8S7727C18D0Ev)();
extern void _ZN8S7727C18D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7727C188S7727C19__A1__8S7727C17[] = {
  ABISELECT(-104,-64),
  ABISELECT(-64,-36),
  ABISELECT(-104,-64),
  ABISELECT(-80,-48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7727C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C18D1Ev,_ZTv0_n12_N8S7727C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C18D0Ev,_ZTv0_n12_N8S7727C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev)();
extern void _ZN7S7727C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev)();
extern void _ZN7S7727C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C68S7727C188S7727C19__A2__8S7727C17[] = {
  ABISELECT(-104,-64),
  ABISELECT(-64,-36),
  ABISELECT(-104,-64),
  ABISELECT(-80,-48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C7__7S7727C68S7727C188S7727C19__A2__8S7727C17[] = {
  ABISELECT(40,28),
  0,
  ABISELECT(24,16),
  ABISELECT(104,64),
  ABISELECT(104,64),
  (VTBL_ENTRY)&(_ZTI7S7727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C68S7727C188S7727C19__A2__8S7727C17[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(80,48),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI7S7727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C18D1Ev,_ZTv0_n12_N8S7727C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7727C18D0Ev,_ZTv0_n12_N8S7727C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C7__8S7727C188S7727C19__A1__8S7727C17[] = {
  ABISELECT(40,28),
  0,
  ABISELECT(24,16),
  ABISELECT(104,64),
  ABISELECT(104,64),
  (VTBL_ENTRY)&(_ZTI8S7727C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C18D1Ev,_ZTv0_n12_N8S7727C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C18D0Ev,_ZTv0_n12_N8S7727C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C18D1Ev,_ZTv0_n12_N8S7727C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7727C18D0Ev,_ZTv0_n12_N8S7727C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C8__8S7727C188S7727C19__A1__8S7727C17[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(80,48),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S7727C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C18D1Ev,_ZTv0_n12_N8S7727C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C18D0Ev,_ZTv0_n12_N8S7727C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C19D1Ev,_ZTv0_n12_N8S7727C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7727C19D0Ev,_ZTv0_n12_N8S7727C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C8__8S7727C19__8S7727C17[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(80,48),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S7727C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C19D1Ev,_ZTv0_n12_N8S7727C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C19D0Ev,_ZTv0_n12_N8S7727C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C19D1Ev,_ZTv0_n12_N8S7727C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7727C19D0Ev,_ZTv0_n12_N8S7727C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C7__8S7727C19__8S7727C17[] = {
  ABISELECT(40,28),
  0,
  ABISELECT(24,16),
  ABISELECT(104,64),
  ABISELECT(104,64),
  (VTBL_ENTRY)&(_ZTI8S7727C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C19D1Ev,_ZTv0_n12_N8S7727C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C19D0Ev,_ZTv0_n12_N8S7727C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C19D1Ev,_ZTv0_n12_N8S7727C19D1Ev)();
extern void ABISELECT(_ZThn24_N8S7727C19D1Ev,_ZThn16_N8S7727C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C19D0Ev,_ZTv0_n12_N8S7727C19D0Ev)();
extern void ABISELECT(_ZThn24_N8S7727C19D0Ev,_ZThn16_N8S7727C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7727C20__8S7727C19__8S7727C17[] = {
  ABISELECT(-88,-52),
  ABISELECT(-128,-80),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7727C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C19D1Ev,_ZTv0_n12_N8S7727C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C19D0Ev,_ZTv0_n12_N8S7727C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C20D1Ev,_ZTv0_n12_N8S7727C20D1Ev)();
extern void _ZN8S7727C20D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C20D0Ev,_ZTv0_n12_N8S7727C20D0Ev)();
extern void _ZN8S7727C20D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7727C20__8S7727C17[] = {
  ABISELECT(-88,-52),
  ABISELECT(-128,-80),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7727C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C20D1Ev,_ZTv0_n12_N8S7727C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C20D0Ev,_ZTv0_n12_N8S7727C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev)();
extern void _ZN7S7727C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev)();
extern void _ZN7S7727C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C88S7727C20__A1__8S7727C17[] = {
  ABISELECT(-88,-52),
  ABISELECT(-128,-80),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void _ZN7S7727C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
extern void _ZN7S7727C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C97S7727C88S7727C20__A3__8S7727C17[] = {
  ABISELECT(-88,-52),
  ABISELECT(-128,-80),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C97S7727C88S7727C20__A3__8S7727C17[] = {
  ABISELECT(128,80),
  ABISELECT(128,80),
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C88S7727C20__A1__8S7727C17[] = {
  ABISELECT(128,80),
  ABISELECT(128,80),
  (VTBL_ENTRY)&(_ZTI7S7727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C20D1Ev,_ZTv0_n12_N8S7727C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7727C20D0Ev,_ZTv0_n12_N8S7727C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7727C20__8S7727C17[] = {
  ABISELECT(128,80),
  ABISELECT(128,80),
  (VTBL_ENTRY)&(_ZTI8S7727C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C20D1Ev,_ZTv0_n12_N8S7727C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C20D0Ev,_ZTv0_n12_N8S7727C20D0Ev),
};
static  VTT_ENTRY vtt_S7727C17[] = {
  {&(_ZTV8S7727C17[16]),  16,79},
  {&(_tg__ZTV7S7727C2__8S7727C17[12]),  12,14},
  {&(_tg__ZTV7S7727C2__8S7727C17[12]),  12,14},
  {&(_tg__ZTV7S7727C5__7S7727C2__8S7727C17[10]),  10,12},
  {&(_tg__ZTV7S7727C6__7S7727C2__8S7727C17[7]),  7,9},
  {&(_tg__ZTV7S7727C7__7S7727C2__8S7727C17[6]),  6,8},
  {&(_tg__ZTV7S7727C8__7S7727C2__8S7727C17[5]),  5,7},
  {&(_tg__ZTV7S7727C7__7S7727C2__8S7727C17[6]),  6,8},
  {&(_tg__ZTV7S7727C9__A2__7S7727C2__8S7727C17[5]),  5,7},
  {&(_ZTV8S7727C17[25]),  25,79},
  {&(_ZTV8S7727C17[25]),  25,79},
  {&(_ZTV8S7727C17[32]),  32,79},
  {&(_ZTV8S7727C17[25]),  25,79},
  {&(_ZTV8S7727C17[16]),  16,79},
  {&(_ZTV8S7727C17[44]),  44,79},
  {&(_ZTV8S7727C17[53]),  53,79},
  {&(_ZTV8S7727C17[60]),  60,79},
  {&(_ZTV8S7727C17[70]),  70,79},
  {&(_ZTV8S7727C17[77]),  77,79},
  {&(_tg__ZTV8S7727C18__8S7727C17[7]),  7,9},
  {&(_tg__ZTV7S7727C68S7727C18__8S7727C17[7]),  7,9},
  {&(_tg__ZTV7S7727C68S7727C18__8S7727C17[7]),  7,9},
  {&(_tg__ZTV7S7727C8__7S7727C68S7727C18__8S7727C17[5]),  5,7},
  {&(_tg__ZTV7S7727C68S7727C18__8S7727C17[7]),  7,9},
  {&(_tg__ZTV8S7727C18__8S7727C17[7]),  7,9},
  {&(_tg__ZTV7S7727C8__8S7727C18__8S7727C17[5]),  5,7},
  {&(_tg__ZTV8S7727C18__8S7727C17[7]),  7,9},
  {&(_tg__ZTV7S7727C7__8S7727C17[6]),  6,8},
  {&(_tg__ZTV7S7727C8__7S7727C7__8S7727C17[5]),  5,7},
  {&(_tg__ZTV7S7727C7__8S7727C17[6]),  6,8},
  {&(_tg__ZTV7S7727C8__8S7727C17[5]),  5,7},
  {&(_tg__ZTV7S7727C97S7727C8__8S7727C17[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7727C97S7727C8__8S7727C17[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7727C8__8S7727C17[3]),  3,5},
  {&(_tg__ZTV7S7727C3__8S7727C17[3]),  3,5},
  {&(_tg__ZTV7S7727C5__8S7727C17[10]),  10,12},
  {&(_tg__ZTV7S7727C97S7727C5__A1__8S7727C17[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7727C97S7727C5__A1__8S7727C17[3]),  3,5},
  {&(_tg__ZTV7S7727C6__7S7727C5__8S7727C17[7]),  7,9},
  {&(_tg__ZTV7S7727C7__7S7727C5__8S7727C17[6]),  6,8},
  {&(_tg__ZTV7S7727C8__7S7727C5__8S7727C17[5]),  5,7},
  {&(_tg__ZTV7S7727C7__7S7727C5__8S7727C17[6]),  6,8},
  {&(_tg__ZTV7S7727C3__7S7727C5__8S7727C17[4]),  4,6},
  {&(_tg__ZTV7S7727C6__A1__8S7727C17[7]),  7,9},
  {&(_tg__ZTV7S7727C7__7S7727C6__A1__8S7727C17[6]),  6,8},
  {&(_tg__ZTV7S7727C8__7S7727C6__A1__8S7727C17[5]),  5,7},
  {&(_tg__ZTV7S7727C7__7S7727C6__A1__8S7727C17[6]),  6,8},
  {&(_tg__ZTV7S7727C9__A2__8S7727C17[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7727C9__A2__8S7727C17[3]),  3,5},
  {&(_tg__ZTV8S7727C19__8S7727C17[8]),  8,10},
  {&(_tg__ZTV8S7727C188S7727C19__A1__8S7727C17[7]),  7,9},
  {&(_tg__ZTV7S7727C68S7727C188S7727C19__A2__8S7727C17[7]),  7,9},
  {&(_tg__ZTV7S7727C7__7S7727C68S7727C188S7727C19__A2__8S7727C17[6]),  6,8},
  {&(_tg__ZTV7S7727C8__7S7727C68S7727C188S7727C19__A2__8S7727C17[5]),  5,7},
  {&(_tg__ZTV7S7727C7__7S7727C68S7727C188S7727C19__A2__8S7727C17[6]),  6,8},
  {&(_tg__ZTV7S7727C7__8S7727C188S7727C19__A1__8S7727C17[6]),  6,8},
  {&(_tg__ZTV7S7727C8__8S7727C188S7727C19__A1__8S7727C17[5]),  5,7},
  {&(_tg__ZTV7S7727C7__8S7727C188S7727C19__A1__8S7727C17[6]),  6,8},
  {&(_tg__ZTV7S7727C8__8S7727C19__8S7727C17[5]),  5,7},
  {&(_tg__ZTV7S7727C7__8S7727C19__8S7727C17[6]),  6,8},
  {&(_tg__ZTV7S7727C7__8S7727C19__8S7727C17[6]),  6,8},
  {&(_tg__ZTV8S7727C20__8S7727C19__8S7727C17[5]),  5,7},
  {&(_tg__ZTV8S7727C20__8S7727C17[5]),  5,7},
  {&(_tg__ZTV7S7727C88S7727C20__A1__8S7727C17[5]),  5,7},
  {&(_tg__ZTV7S7727C97S7727C88S7727C20__A3__8S7727C17[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7727C97S7727C88S7727C20__A3__8S7727C17[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7727C88S7727C20__A1__8S7727C17[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S7727C20__8S7727C17[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7727C17[];
extern  VTBL_ENTRY _ZTV8S7727C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7727C17[];
static VTBL_ENTRY alt_thunk_names90[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C20D0Ev,_ZTv0_n12_N8S7727C20D0Ev), // 
  (VTBL_ENTRY)_ZN8S7727C20D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C20D1Ev,_ZTv0_n12_N8S7727C20D1Ev), // 
  (VTBL_ENTRY)_ZN8S7727C20D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C19D0Ev,_ZTv0_n12_N8S7727C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7727C19D0Ev,_ZThn16_N8S7727C19D0Ev),
  (VTBL_ENTRY)_ZN8S7727C19D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C19D1Ev,_ZTv0_n12_N8S7727C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7727C19D1Ev,_ZThn16_N8S7727C19D1Ev),
  (VTBL_ENTRY)_ZN8S7727C19D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C5D0Ev,_ZTv0_n12_N7S7727C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7727C5D0Ev,_ZThn16_N7S7727C5D0Ev),
  (VTBL_ENTRY)_ZN7S7727C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C5D1Ev,_ZTv0_n12_N7S7727C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7727C5D1Ev,_ZThn16_N7S7727C5D1Ev),
  (VTBL_ENTRY)_ZN7S7727C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev), // 
  (VTBL_ENTRY)_ZN7S7727C9D0Ev,
  (VTBL_ENTRY)_ZN7S7727C9D0Ev,
  (VTBL_ENTRY)_ZN7S7727C9D0Ev,
  (VTBL_ENTRY)_ZN7S7727C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev), // 
  (VTBL_ENTRY)_ZN7S7727C9D1Ev,
  (VTBL_ENTRY)_ZN7S7727C9D1Ev,
  (VTBL_ENTRY)_ZN7S7727C9D1Ev,
  (VTBL_ENTRY)_ZN7S7727C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev), // 
  (VTBL_ENTRY)_ZN7S7727C8D0Ev,
  (VTBL_ENTRY)_ZN7S7727C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev), // 
  (VTBL_ENTRY)_ZN7S7727C8D1Ev,
  (VTBL_ENTRY)_ZN7S7727C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7727C7D0Ev,_ZThn16_N7S7727C7D0Ev),
  (VTBL_ENTRY)_ZN7S7727C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7727C7D1Ev,_ZThn16_N7S7727C7D1Ev),
  (VTBL_ENTRY)_ZN7S7727C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev), // 
  (VTBL_ENTRY)_ZN7S7727C6D0Ev,
  (VTBL_ENTRY)_ZN7S7727C6D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7727C6D0Ev,_ZThn16_N7S7727C6D0Ev),
  (VTBL_ENTRY)_ZN7S7727C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev), // 
  (VTBL_ENTRY)_ZN7S7727C6D1Ev,
  (VTBL_ENTRY)_ZN7S7727C6D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7727C6D1Ev,_ZThn16_N7S7727C6D1Ev),
  (VTBL_ENTRY)_ZN7S7727C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C18D0Ev,_ZTv0_n12_N8S7727C18D0Ev), // 
  (VTBL_ENTRY)_ZN8S7727C18D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7727C18D0Ev,_ZThn16_N8S7727C18D0Ev),
  (VTBL_ENTRY)_ZN8S7727C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C18D1Ev,_ZTv0_n12_N8S7727C18D1Ev), // 
  (VTBL_ENTRY)_ZN8S7727C18D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7727C18D1Ev,_ZThn16_N8S7727C18D1Ev),
  (VTBL_ENTRY)_ZN8S7727C18D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7727C2D0Ev,_ZThn60_N7S7727C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7727C2D0Ev,_ZThn20_N7S7727C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7727C2D0Ev,_ZThn4_N7S7727C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7727C2D0Ev,_ZThn52_N7S7727C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7727C2D0Ev,_ZThn36_N7S7727C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7727C2D1Ev,_ZThn60_N7S7727C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7727C2D1Ev,_ZThn20_N7S7727C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7727C2D1Ev,_ZThn4_N7S7727C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7727C2D1Ev,_ZThn52_N7S7727C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7727C2D1Ev,_ZThn36_N7S7727C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C17D0Ev,_ZTv0_n12_N8S7727C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7727C17D0Ev,_ZThn84_N8S7727C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7727C17D0Ev,_ZThn68_N8S7727C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7727C17D0Ev,_ZThn60_N8S7727C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7727C17D0Ev,_ZThn52_N8S7727C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7727C17D0Ev,_ZThn36_N8S7727C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7727C17D0Ev,_ZThn20_N8S7727C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7727C17D0Ev,_ZThn4_N8S7727C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C17D1Ev,_ZTv0_n12_N8S7727C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7727C17D1Ev,_ZThn84_N8S7727C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7727C17D1Ev,_ZThn68_N8S7727C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7727C17D1Ev,_ZThn60_N8S7727C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7727C17D1Ev,_ZThn52_N8S7727C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7727C17D1Ev,_ZThn36_N8S7727C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7727C17D1Ev,_ZThn20_N8S7727C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7727C17D1Ev,_ZThn4_N8S7727C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7727C17 = {  "S7727C17", // class name
  bases_S7727C17, 28,
  &(vtc_S7727C17[0]), // expected_vtbl_contents
  &(vtt_S7727C17[0]), // expected_vtt_contents
  ABISELECT(152,96), // object size
  NSPAIRA(_ZTI8S7727C17),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7727C17),79, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7727C17),68, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names90,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7727C1  : S7727C2 , virtual S7727C12 , S7727C13 , virtual S7727C15 , virtual S7727C17 {
  char s7727c1f0:4;
  int s7727c1f1;
  ~S7727C1(); // tgen
  S7727C1(); // tgen
};
//SIG(1 S7727C1) C1{ BC2{ VBC3{ VBC4{ m Fi} vd} VBC5{ VBC4 VBC6{ VBC7{ VBC8{ BC9{ VBC10{ vd m} VBC4 BC11{ m} Fi} Fi} BC11} FC4} VBC3 VBC11 BC9 vd Fi Fp} VBC9 vd} VBC12{ BC6 BC9 FC3[10]} BC13{ VBC14{ VBC10} Fi} VBC15{ VBC16{ VBC10 BC4 BC7 VBC11 BC9 vd} vd} VBC17{ VBC18{ BC6 BC4 Fp} BC2 VBC19{ VBC8 BC18 VBC20{ BC8} vd} VBC21{ m} vd} Fc:4 Fi}


S7727C1 ::~S7727C1(){ note_dtor("S7727C1", this);} // tgen
S7727C1 ::S7727C1(){ note_ctor("S7727C1", this);} // tgen

static void Test_S7727C1()
{
  extern Class_Descriptor cd_S7727C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(52,59)];
    init_test(&cd_S7727C1, buf);
    S7727C1 *dp, &lv = *(dp=new (buf) S7727C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(408,232), "sizeof(S7727C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7727C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S7727C3*), ABISELECT(28,20), "S7727C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S7727C5*), ABISELECT(28,20), "S7727C1");
    /*is_ambiguous_... S7727C1::S7727C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7727C9*)(S7727C8*), ABISELECT(28,20), "S7727C1");
    /*is_ambiguous_... S7727C5::S7727C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7727C9*)(S7727C5*), ABISELECT(28,20), "S7727C1");
    /*is_ambiguous_... S7727C1::S7727C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7727C9*), ABISELECT(28,20), "S7727C1");
    /*is_ambiguous_... S7727C12::S7727C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7727C9*)(S7727C12*), ABISELECT(28,20), "S7727C1");
    /*is_ambiguous_... S7727C16::S7727C9 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7727C9*)(S7727C16*), ABISELECT(28,20), "S7727C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S7727C9*)(S7727C8*)(S7727C20*), ABISELECT(28,20), "S7727C1");
    /*is_ambiguous_... S7727C1::S7727C2 */ AMB_check_base_class_offset(lv, (S7727C3*)(S7727C2*), 0, "S7727C1");
    check_base_class_offset(lv, (S7727C3*)(S7727C5*), 0, "S7727C1");
    check_base_class_offset(lv, (S7727C3*)(S7727C2*)(S7727C17*), 0, "S7727C1");
    /*is_ambiguous_... S7727C1::S7727C8 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7727C9*)(S7727C8*), ABISELECT(56,40), "S7727C1");
    /*is_ambiguous_... S7727C5::S7727C9 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7727C9*)(S7727C5*), ABISELECT(56,40), "S7727C1");
    /*is_ambiguous_... S7727C1::S7727C9 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7727C9*), ABISELECT(56,40), "S7727C1");
    /*is_ambiguous_... S7727C12::S7727C9 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7727C9*)(S7727C12*), ABISELECT(56,40), "S7727C1");
    check_base_class_offset(lv, (S7883C3_nt*)(S7727C14*), ABISELECT(56,40), "S7727C1");
    check_base_class_offset(lv, (S7883C3_nt*)(S7727C16*), ABISELECT(56,40), "S7727C1");
    /*is_ambiguous_... S7727C16::S7727C9 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S7727C9*)(S7727C16*), ABISELECT(56,40), "S7727C1");
    check_base_class_offset(lv, (S7883C3_nt*)(S7727C9*)(S7727C8*)(S7727C20*), ABISELECT(56,40), "S7727C1");
    /*is_ambiguous_... S7727C1::S7727C8 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7727C9*)(S7727C8*), ABISELECT(72,48), "S7727C1");
    /*is_ambiguous_... S7727C1::S7727C8 */ AMB_check_base_class_offset(lv, (S7727C9*)(S7727C8*), ABISELECT(72,48), "S7727C1");
    /*is_ambiguous_... S7727C1::S7727C7 */ AMB_check_base_class_offset(lv, (S7727C8*)(S7727C7*), ABISELECT(72,48), "S7727C1");
    check_base_class_offset(lv, (S7727C8*)(S7727C7*)(S7727C16*), ABISELECT(72,48), "S7727C1");
    /*is_ambiguous_... S7727C19::S7727C8 */ AMB_check_base_class_offset(lv, (S7727C8*)(S7727C19*), ABISELECT(72,48), "S7727C1");
    /*is_ambiguous_... S7727C1::S7727C7 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7727C7*), ABISELECT(56,40), "S7727C1");
    /*is_ambiguous_... S7727C1::S7727C6 */ AMB_check_base_class_offset(lv, (S7727C7*)(S7727C6*), ABISELECT(56,40), "S7727C1");
    check_base_class_offset(lv, (S7727C7*)(S7727C6*)(S7727C12*), ABISELECT(56,40), "S7727C1");
    /*is_ambiguous_... S7727C1::S7727C18 */ AMB_check_base_class_offset(lv, (S7727C7*)(S7727C6*)(S7727C18*), ABISELECT(56,40), "S7727C1");
    check_base_class_offset(lv, (S7727C7*)(S7727C6*)(S7727C18*)(S7727C19*), ABISELECT(56,40), "S7727C1");
    check_base_class_offset(lv, (S7727C6*)(S7727C5*), ABISELECT(56,40), "S7727C1");
    /*is_ambiguous_... S7727C5::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7727C5*), 0, "S7727C1");
    /*is_ambiguous_... S7727C16::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7727C16*), 0, "S7727C1");
    /*is_ambiguous_... S7727C5::S7727C9 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7727C9*)(S7727C5*), ABISELECT(32,24), "S7727C1");
    /*is_ambiguous_... S7727C5::S7727C9 */ AMB_check_base_class_offset(lv, (S7727C9*)(S7727C5*), ABISELECT(32,24), "S7727C1");
    /*is_ambiguous_... S7727C1::S7727C2 */ AMB_check_base_class_offset(lv, (S7727C5*)(S7727C2*), ABISELECT(32,24), "S7727C1");
    check_base_class_offset(lv, (S7727C5*)(S7727C2*)(S7727C17*), ABISELECT(32,24), "S7727C1");
    /*is_ambiguous_... S7727C1::S7727C9 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7727C9*), ABISELECT(88,60), "S7727C1");
    /*is_ambiguous_... S7727C1::S7727C2 */ AMB_check_base_class_offset(lv, (S7727C9*)(S7727C2*), ABISELECT(88,60), "S7727C1");
    /*is_ambiguous_... S7727C2::S7727C9 */ AMB_check_base_class_offset(lv, (S7727C9*)(S7727C2*)(S7727C17*), ABISELECT(88,60), "S7727C1");
    /*is_ambiguous_... S7727C1::S7727C2 */ AMB_check_base_class_offset(lv, (S7727C2*), 0, "S7727C1");
    check_base_class_offset(lv, (S7727C6*)(S7727C12*), ABISELECT(104,68), "S7727C1");
    /*is_ambiguous_... S7727C12::S7727C9 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7727C9*)(S7727C12*), ABISELECT(120,76), "S7727C1");
    /*is_ambiguous_... S7727C12::S7727C9 */ AMB_check_base_class_offset(lv, (S7727C9*)(S7727C12*), ABISELECT(120,76), "S7727C1");
    check_base_class_offset(lv, (S7727C12*), ABISELECT(104,68), "S7727C1");
    check_base_class_offset(lv, (S7727C14*)(S7727C13*), ABISELECT(8,4), "S7727C1");
    check_base_class_offset(lv, (S7727C13*), ABISELECT(8,4), "S7727C1");
    /*is_ambiguous_... S7727C16::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7727C16*), ABISELECT(312,172), "S7727C1");
    /*is_ambiguous_... S7727C7::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7727C7*)(S7727C16*), ABISELECT(304,168), "S7727C1");
    check_base_class_offset(lv, (S7727C7*)(S7727C16*), ABISELECT(304,168), "S7727C1");
    /*is_ambiguous_... S7727C16::S7727C9 */ AMB_check_base_class_offset(lv, (S4677C37*)(S7727C9*)(S7727C16*), ABISELECT(320,176), "S7727C1");
    /*is_ambiguous_... S7727C16::S7727C9 */ AMB_check_base_class_offset(lv, (S7727C9*)(S7727C16*), ABISELECT(320,176), "S7727C1");
    check_base_class_offset(lv, (S7727C16*)(S7727C15*), ABISELECT(304,168), "S7727C1");
    check_base_class_offset(lv, (S7727C15*), ABISELECT(296,164), "S7727C1");
    /*is_ambiguous_... S7727C1::S7727C18 */ AMB_check_base_class_offset(lv, (S7727C6*)(S7727C18*), ABISELECT(344,188), "S7727C1");
    /*is_ambiguous_... S7727C1::S7727C18 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7727C18*), ABISELECT(356,196), "S7727C1");
    /*is_ambiguous_... S7727C17::S7727C18 */ AMB_check_base_class_offset(lv, (S7727C18*)(S7727C17*), ABISELECT(344,188), "S7727C1");
    check_base_class_offset(lv, (S7727C2*)(S7727C17*), ABISELECT(336,184), "S7727C1");
    check_base_class_offset(lv, (S7727C6*)(S7727C18*)(S7727C19*), ABISELECT(368,204), "S7727C1");
    /*is_ambiguous_... S7727C18::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S7727C18*)(S7727C19*), ABISELECT(380,212), "S7727C1");
    check_base_class_offset(lv, (S7727C18*)(S7727C19*), ABISELECT(368,204), "S7727C1");
    check_base_class_offset(lv, (S4677C37*)(S7727C9*)(S7727C8*)(S7727C20*), ABISELECT(392,220), "S7727C1");
    check_base_class_offset(lv, (S7727C9*)(S7727C8*)(S7727C20*), ABISELECT(392,220), "S7727C1");
    check_base_class_offset(lv, (S7727C8*)(S7727C20*), ABISELECT(392,220), "S7727C1");
    check_base_class_offset(lv, (S7727C20*)(S7727C19*), ABISELECT(392,220), "S7727C1");
    check_base_class_offset(lv, (S7727C19*)(S7727C17*), ABISELECT(368,204), "S7727C1");
    check_base_class_offset(lv, (S4677C27*)(S7727C17*), 0, "S7727C1");
    check_base_class_offset(lv, (S7727C17*), ABISELECT(336,184), "S7727C1");
    set_bf_and_test(lv, s7727c1f0, ABISELECT(20,12), 0, 4, 1, "S7727C1");
    set_bf_and_test(lv, s7727c1f0, ABISELECT(20,12), 0, 4, hide_sll(1LL<<3), "S7727C1");
    check_field_offset(lv, s7727c1f1, ABISELECT(24,16), "S7727C1.s7727c1f1");
    test_class_info(&lv, &cd_S7727C1);
    dp->~S7727C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7727C1(Test_S7727C1, "S7727C1", ABISELECT(408,232));

#else // __cplusplus

extern void _ZN7S7727C1C1Ev();
extern void _ZN7S7727C1D1Ev();
Name_Map name_map_S7727C1[] = {
  NSPAIR(_ZN7S7727C1C1Ev),
  NSPAIR(_ZN7S7727C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7727C3;
extern VTBL_ENTRY _ZTI7S7727C3[];
extern  VTBL_ENTRY _ZTV7S7727C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C3[];
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C9;
extern VTBL_ENTRY _ZTI7S7727C9[];
extern  VTBL_ENTRY _ZTV7S7727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C9[];
extern Class_Descriptor cd_S7727C8;
extern VTBL_ENTRY _ZTI7S7727C8[];
extern  VTBL_ENTRY _ZTV7S7727C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C8[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C7;
extern VTBL_ENTRY _ZTI7S7727C7[];
extern  VTBL_ENTRY _ZTV7S7727C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C7[];
extern Class_Descriptor cd_S7727C6;
extern VTBL_ENTRY _ZTI7S7727C6[];
extern  VTBL_ENTRY _ZTV7S7727C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C9;
extern VTBL_ENTRY _ZTI7S7727C9[];
extern  VTBL_ENTRY _ZTV7S7727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C9[];
extern Class_Descriptor cd_S7727C5;
extern VTBL_ENTRY _ZTI7S7727C5[];
extern  VTBL_ENTRY _ZTV7S7727C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C5[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C9;
extern VTBL_ENTRY _ZTI7S7727C9[];
extern  VTBL_ENTRY _ZTV7S7727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C9[];
extern Class_Descriptor cd_S7727C2;
extern VTBL_ENTRY _ZTI7S7727C2[];
extern  VTBL_ENTRY _ZTV7S7727C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C2[];
extern Class_Descriptor cd_S7727C6;
extern VTBL_ENTRY _ZTI7S7727C6[];
extern  VTBL_ENTRY _ZTV7S7727C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C9;
extern VTBL_ENTRY _ZTI7S7727C9[];
extern  VTBL_ENTRY _ZTV7S7727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C9[];
extern Class_Descriptor cd_S7727C12;
extern VTBL_ENTRY _ZTI8S7727C12[];
extern  VTBL_ENTRY _ZTV8S7727C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7727C12[];
extern Class_Descriptor cd_S7727C14;
extern VTBL_ENTRY _ZTI8S7727C14[];
extern  VTBL_ENTRY _ZTV8S7727C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7727C14[];
extern Class_Descriptor cd_S7727C13;
extern VTBL_ENTRY _ZTI8S7727C13[];
extern  VTBL_ENTRY _ZTV8S7727C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7727C13[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C7;
extern VTBL_ENTRY _ZTI7S7727C7[];
extern  VTBL_ENTRY _ZTV7S7727C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C7[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C9;
extern VTBL_ENTRY _ZTI7S7727C9[];
extern  VTBL_ENTRY _ZTV7S7727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C9[];
extern Class_Descriptor cd_S7727C16;
extern VTBL_ENTRY _ZTI8S7727C16[];
extern  VTBL_ENTRY _ZTV8S7727C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7727C16[];
extern Class_Descriptor cd_S7727C15;
extern VTBL_ENTRY _ZTI8S7727C15[];
extern  VTBL_ENTRY _ZTV8S7727C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7727C15[];
extern Class_Descriptor cd_S7727C6;
extern VTBL_ENTRY _ZTI7S7727C6[];
extern  VTBL_ENTRY _ZTV7S7727C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7727C18;
extern VTBL_ENTRY _ZTI8S7727C18[];
extern  VTBL_ENTRY _ZTV8S7727C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7727C18[];
extern Class_Descriptor cd_S7727C2;
extern VTBL_ENTRY _ZTI7S7727C2[];
extern  VTBL_ENTRY _ZTV7S7727C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C2[];
extern Class_Descriptor cd_S7727C6;
extern VTBL_ENTRY _ZTI7S7727C6[];
extern  VTBL_ENTRY _ZTV7S7727C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C6[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7727C18;
extern VTBL_ENTRY _ZTI8S7727C18[];
extern  VTBL_ENTRY _ZTV8S7727C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7727C18[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7727C9;
extern VTBL_ENTRY _ZTI7S7727C9[];
extern  VTBL_ENTRY _ZTV7S7727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C9[];
extern Class_Descriptor cd_S7727C8;
extern VTBL_ENTRY _ZTI7S7727C8[];
extern  VTBL_ENTRY _ZTV7S7727C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C8[];
extern Class_Descriptor cd_S7727C20;
extern VTBL_ENTRY _ZTI8S7727C20[];
extern  VTBL_ENTRY _ZTV8S7727C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7727C20[];
extern Class_Descriptor cd_S7727C19;
extern VTBL_ENTRY _ZTI8S7727C19[];
extern  VTBL_ENTRY _ZTV8S7727C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7727C19[];
extern Class_Descriptor cd_S4677C27;
extern VTBL_ENTRY _ZTI8S4677C27[];
extern Class_Descriptor cd_S7727C17;
extern VTBL_ENTRY _ZTI8S7727C17[];
extern  VTBL_ENTRY _ZTV8S7727C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7727C17[];
static Base_Class bases_S7727C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(28,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7727C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7883C3_nt,    ABISELECT(56,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(72,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7727C9,    ABISELECT(72,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7727C8,    ABISELECT(72,48), //bcp->offset
    51, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(56,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7727C7,    ABISELECT(56,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7727C6,    ABISELECT(56,40), //bcp->offset
    42, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4677C37,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7727C9,    ABISELECT(32,24), //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
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7727C5,    ABISELECT(32,24), //bcp->offset
    30, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    14, //immediately_derived
  0, 0},
  {&cd_S7727C9,    ABISELECT(88,60), //bcp->offset
    58, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7727C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7727C6,    ABISELECT(104,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S4677C37,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7727C9,    ABISELECT(120,76), //bcp->offset
    74, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7727C12,    ABISELECT(104,68), //bcp->offset
    65, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7727C14,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S7727C13,    ABISELECT(8,4), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(312,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
    27, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(304,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
    24, //immediately_derived
  0, 0},
  {&cd_S7727C7,    ABISELECT(304,168), //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
    14, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(320,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7727C9,    ABISELECT(320,176), //bcp->offset
    100, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7727C16,    ABISELECT(304,168), //bcp->offset
    91, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7727C15,    ABISELECT(296,164), //bcp->offset
    81, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7727C6,    ABISELECT(344,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(356,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
    31, //immediately_derived
  0, 0},
  {&cd_S7727C18,    ABISELECT(344,188), //bcp->offset
    125, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7727C2,    ABISELECT(336,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7727C6,    ABISELECT(368,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(380,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
    35, //immediately_derived
  0, 0},
  {&cd_S7727C18,    ABISELECT(368,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    108, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(392,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7727C9,    ABISELECT(392,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    122, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S7727C8,    ABISELECT(392,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    121, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7727C20,    ABISELECT(392,220), //bcp->offset
    144, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S7727C19,    ABISELECT(368,204), //bcp->offset
    134, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    107, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S4677C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7727C17,    ABISELECT(336,184), //bcp->offset
    107, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7727C1[];
extern void _ZN7S7727C1D1Ev();
extern void _ZN7S7727C1D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7727C1D1Ev,_ZTv0_n12_N7S7727C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S7727C1D1Ev,_ZThn4_N7S7727C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C1D0Ev,_ZTv0_n12_N7S7727C1D0Ev)();
extern void ABISELECT(_ZThn8_N7S7727C1D0Ev,_ZThn4_N7S7727C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C1D1Ev,_ZTv0_n12_N7S7727C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S7727C1D1Ev,_ZThn24_N7S7727C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C1D0Ev,_ZTv0_n12_N7S7727C1D0Ev)();
extern void ABISELECT(_ZThn32_N7S7727C1D0Ev,_ZThn24_N7S7727C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C1D1Ev,_ZTv0_n12_N7S7727C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S7727C1D1Ev,_ZThn40_N7S7727C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C1D0Ev,_ZTv0_n12_N7S7727C1D0Ev)();
extern void ABISELECT(_ZThn56_N7S7727C1D0Ev,_ZThn40_N7S7727C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C1D1Ev,_ZTv0_n12_N7S7727C1D1Ev)();
extern void ABISELECT(_ZThn72_N7S7727C1D1Ev,_ZThn48_N7S7727C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C1D0Ev,_ZTv0_n12_N7S7727C1D0Ev)();
extern void ABISELECT(_ZThn72_N7S7727C1D0Ev,_ZThn48_N7S7727C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C1D1Ev,_ZTv0_n12_N7S7727C1D1Ev)();
extern void ABISELECT(_ZThn88_N7S7727C1D1Ev,_ZThn60_N7S7727C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C1D0Ev,_ZTv0_n12_N7S7727C1D0Ev)();
extern void ABISELECT(_ZThn88_N7S7727C1D0Ev,_ZThn60_N7S7727C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C1D1Ev,_ZTv0_n12_N7S7727C1D1Ev)();
extern void ABISELECT(_ZThn104_N7S7727C1D1Ev,_ZThn68_N7S7727C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C1D0Ev,_ZTv0_n12_N7S7727C1D0Ev)();
extern void ABISELECT(_ZThn104_N7S7727C1D0Ev,_ZThn68_N7S7727C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C1D1Ev,_ZTv0_n12_N7S7727C1D1Ev)();
extern void ABISELECT(_ZThn120_N7S7727C1D1Ev,_ZThn76_N7S7727C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C1D0Ev,_ZTv0_n12_N7S7727C1D0Ev)();
extern void ABISELECT(_ZThn120_N7S7727C1D0Ev,_ZThn76_N7S7727C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C1D1Ev,_ZTv0_n12_N7S7727C1D1Ev)();
extern void ABISELECT(_ZThn296_N7S7727C1D1Ev,_ZThn164_N7S7727C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C1D0Ev,_ZTv0_n12_N7S7727C1D0Ev)();
extern void ABISELECT(_ZThn296_N7S7727C1D0Ev,_ZThn164_N7S7727C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C1D1Ev,_ZTv0_n12_N7S7727C1D1Ev)();
extern void ABISELECT(_ZThn304_N7S7727C1D1Ev,_ZThn168_N7S7727C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C1D0Ev,_ZTv0_n12_N7S7727C1D0Ev)();
extern void ABISELECT(_ZThn304_N7S7727C1D0Ev,_ZThn168_N7S7727C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C1D1Ev,_ZTv0_n12_N7S7727C1D1Ev)();
extern void ABISELECT(_ZThn320_N7S7727C1D1Ev,_ZThn176_N7S7727C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C1D0Ev,_ZTv0_n12_N7S7727C1D0Ev)();
extern void ABISELECT(_ZThn320_N7S7727C1D0Ev,_ZThn176_N7S7727C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7727C1D1Ev,_ZTv0_n16_N7S7727C1D1Ev)();
extern void ABISELECT(_ZThn336_N7S7727C1D1Ev,_ZThn184_N7S7727C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7727C1D0Ev,_ZTv0_n16_N7S7727C1D0Ev)();
extern void ABISELECT(_ZThn336_N7S7727C1D0Ev,_ZThn184_N7S7727C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C1D1Ev,_ZTv0_n12_N7S7727C1D1Ev)();
extern void ABISELECT(_ZThn344_N7S7727C1D1Ev,_ZThn188_N7S7727C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C1D0Ev,_ZTv0_n12_N7S7727C1D0Ev)();
extern void ABISELECT(_ZThn344_N7S7727C1D0Ev,_ZThn188_N7S7727C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C1D1Ev,_ZTv0_n12_N7S7727C1D1Ev)();
extern void ABISELECT(_ZThn368_N7S7727C1D1Ev,_ZThn204_N7S7727C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C1D0Ev,_ZTv0_n12_N7S7727C1D0Ev)();
extern void ABISELECT(_ZThn368_N7S7727C1D0Ev,_ZThn204_N7S7727C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C1D1Ev,_ZTv0_n12_N7S7727C1D1Ev)();
extern void ABISELECT(_ZThn392_N7S7727C1D1Ev,_ZThn220_N7S7727C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C1D0Ev,_ZTv0_n12_N7S7727C1D0Ev)();
extern void ABISELECT(_ZThn392_N7S7727C1D0Ev,_ZThn220_N7S7727C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7727C1[] = {
  0,
  ABISELECT(392,220),
  ABISELECT(368,204),
  ABISELECT(344,188),
  ABISELECT(336,184),
  ABISELECT(304,168),
  ABISELECT(296,164),
  ABISELECT(8,4),
  ABISELECT(104,68),
  ABISELECT(88,60),
  0,
  ABISELECT(56,40),
  ABISELECT(72,48),
  ABISELECT(56,40),
  ABISELECT(56,40),
  ABISELECT(32,24),
  0,
  0,
  ABISELECT(28,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C1[0]),
  (VTBL_ENTRY)&_ZN7S7727C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7727C1D0Ev,
  0,
  ABISELECT(48,36),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7727C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C1D1Ev,_ZTv0_n12_N7S7727C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C1D0Ev,_ZTv0_n12_N7S7727C1D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(24,16),
  -4,
  ABISELECT(24,16),
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S7727C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C1D1Ev,_ZTv0_n12_N7S7727C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C1D0Ev,_ZTv0_n12_N7S7727C1D0Ev),
  0,
  ABISELECT(-28,-20),
  0,
  ABISELECT(16,8),
  ABISELECT(-56,-40),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI7S7727C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C1D1Ev,_ZTv0_n12_N7S7727C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C1D0Ev,_ZTv0_n12_N7S7727C1D0Ev),
  ABISELECT(-44,-28),
  ABISELECT(-16,-8),
  ABISELECT(-72,-48),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S7727C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C1D1Ev,_ZTv0_n12_N7S7727C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C1D0Ev,_ZTv0_n12_N7S7727C1D0Ev),
  ABISELECT(-60,-40),
  ABISELECT(-32,-20),
  ABISELECT(-88,-60),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI7S7727C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C1D1Ev,_ZTv0_n12_N7S7727C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C1D0Ev,_ZTv0_n12_N7S7727C1D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(-76,-48),
  ABISELECT(-48,-28),
  ABISELECT(-32,-20),
  ABISELECT(-104,-68),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI7S7727C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C1D1Ev,_ZTv0_n12_N7S7727C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C1D0Ev,_ZTv0_n12_N7S7727C1D0Ev),
  ABISELECT(-92,-56),
  ABISELECT(-64,-36),
  ABISELECT(-120,-76),
  ABISELECT(-120,-76),
  (VTBL_ENTRY)&(_ZTI7S7727C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C1D1Ev,_ZTv0_n12_N7S7727C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C1D0Ev,_ZTv0_n12_N7S7727C1D0Ev),
  ABISELECT(-296,-164),
  ABISELECT(-268,-144),
  ABISELECT(-224,-116),
  ABISELECT(-240,-124),
  ABISELECT(8,4),
  ABISELECT(-296,-164),
  ABISELECT(-296,-164),
  (VTBL_ENTRY)&(_ZTI7S7727C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C1D1Ev,_ZTv0_n12_N7S7727C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C1D0Ev,_ZTv0_n12_N7S7727C1D0Ev),
  ABISELECT(-304,-168),
  ABISELECT(-276,-148),
  ABISELECT(-248,-128),
  ABISELECT(-232,-120),
  ABISELECT(-304,-168),
  ABISELECT(-304,-168),
  (VTBL_ENTRY)&(_ZTI7S7727C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C1D1Ev,_ZTv0_n12_N7S7727C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C1D0Ev,_ZTv0_n12_N7S7727C1D0Ev),
  ABISELECT(-292,-156),
  ABISELECT(-264,-136),
  ABISELECT(-320,-176),
  ABISELECT(-320,-176),
  (VTBL_ENTRY)&(_ZTI7S7727C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C1D1Ev,_ZTv0_n12_N7S7727C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C1D0Ev,_ZTv0_n12_N7S7727C1D0Ev),
  ABISELECT(-336,-184),
  ABISELECT(56,36),
  ABISELECT(32,20),
  ABISELECT(8,4),
  ABISELECT(-248,-124),
  ABISELECT(-336,-184),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-304,-160),
  ABISELECT(-336,-184),
  ABISELECT(-336,-184),
  ABISELECT(-308,-164),
  ABISELECT(-336,-184),
  (VTBL_ENTRY)&(_ZTI7S7727C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7727C1D1Ev,_ZTv0_n16_N7S7727C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7727C1D0Ev,_ZTv0_n16_N7S7727C1D0Ev),
  ABISELECT(-288,-148),
  ABISELECT(-316,-168),
  ABISELECT(-288,-148),
  ABISELECT(-272,-140),
  ABISELECT(-344,-188),
  ABISELECT(-344,-188),
  (VTBL_ENTRY)&(_ZTI7S7727C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C1D1Ev,_ZTv0_n12_N7S7727C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C1D0Ev,_ZTv0_n12_N7S7727C1D0Ev),
  ABISELECT(24,16),
  ABISELECT(-312,-164),
  ABISELECT(-340,-184),
  ABISELECT(-312,-164),
  ABISELECT(-296,-156),
  ABISELECT(-368,-204),
  ABISELECT(-368,-204),
  (VTBL_ENTRY)&(_ZTI7S7727C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C1D1Ev,_ZTv0_n12_N7S7727C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C1D0Ev,_ZTv0_n12_N7S7727C1D0Ev),
  ABISELECT(-364,-200),
  ABISELECT(-336,-180),
  ABISELECT(-392,-220),
  ABISELECT(-392,-220),
  (VTBL_ENTRY)&(_ZTI7S7727C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C1D1Ev,_ZTv0_n12_N7S7727C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C1D0Ev,_ZTv0_n12_N7S7727C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7727C1[];
extern void _ZN7S7727C2D1Ev();
extern void _ZN7S7727C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7727C2__7S7727C1[] = {
  ABISELECT(88,60),
  0,
  ABISELECT(56,40),
  ABISELECT(72,48),
  ABISELECT(56,40),
  ABISELECT(56,40),
  ABISELECT(32,24),
  0,
  0,
  ABISELECT(28,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C2[0]),
  (VTBL_ENTRY)&_ZN7S7727C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7727C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev)();
extern void ABISELECT(_ZThn32_N7S7727C2D1Ev,_ZThn24_N7S7727C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev)();
extern void ABISELECT(_ZThn32_N7S7727C2D0Ev,_ZThn24_N7S7727C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C5__7S7727C2__7S7727C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(24,16),
  -4,
  ABISELECT(24,16),
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S7727C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev)();
extern void ABISELECT(_ZThn56_N7S7727C2D1Ev,_ZThn40_N7S7727C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev)();
extern void ABISELECT(_ZThn56_N7S7727C2D0Ev,_ZThn40_N7S7727C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C6__7S7727C2__7S7727C1[] = {
  0,
  ABISELECT(-28,-20),
  0,
  ABISELECT(16,8),
  ABISELECT(-56,-40),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI7S7727C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev)();
extern void ABISELECT(_ZThn72_N7S7727C2D1Ev,_ZThn48_N7S7727C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev)();
extern void ABISELECT(_ZThn72_N7S7727C2D0Ev,_ZThn48_N7S7727C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C2__7S7727C1[] = {
  ABISELECT(-44,-28),
  ABISELECT(-16,-8),
  ABISELECT(-72,-48),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S7727C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev)();
extern void ABISELECT(_ZThn88_N7S7727C2D1Ev,_ZThn60_N7S7727C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev)();
extern void ABISELECT(_ZThn88_N7S7727C2D0Ev,_ZThn60_N7S7727C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C9__A2__7S7727C2__7S7727C1[] = {
  ABISELECT(-60,-40),
  ABISELECT(-32,-20),
  ABISELECT(-88,-60),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI7S7727C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C13D1Ev,_ZTv0_n12_N8S7727C13D1Ev)();
extern void _ZN8S7727C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C13D0Ev,_ZTv0_n12_N8S7727C13D0Ev)();
extern void _ZN8S7727C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7727C13__7S7727C1[] = {
  0,
  ABISELECT(48,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7727C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C13D1Ev,_ZTv0_n12_N8S7727C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C13D0Ev,_ZTv0_n12_N8S7727C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C13D1Ev,_ZTv0_n12_N8S7727C13D1Ev)();
extern void ABISELECT(_ZThn48_N8S7727C13D1Ev,_ZThn36_N8S7727C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C13D0Ev,_ZTv0_n12_N8S7727C13D0Ev)();
extern void ABISELECT(_ZThn48_N8S7727C13D0Ev,_ZThn36_N8S7727C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7727C13__7S7727C1[] = {
  ABISELECT(-48,-36),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S7727C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C13D1Ev,_ZTv0_n12_N8S7727C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C13D0Ev,_ZTv0_n12_N8S7727C13D0Ev),
};
extern void _ZN7S7727C3D1Ev();
extern void _ZN7S7727C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7727C3__7S7727C1[] = {
  ABISELECT(28,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C3[0]),
  (VTBL_ENTRY)&_ZN7S7727C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7727C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7727C5D1Ev,_ZTv0_n12_N7S7727C5D1Ev)();
extern void _ZN7S7727C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C5D0Ev,_ZTv0_n12_N7S7727C5D0Ev)();
extern void _ZN7S7727C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C5__7S7727C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(24,16),
  -4,
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C5D1Ev,_ZTv0_n12_N7S7727C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C5D0Ev,_ZTv0_n12_N7S7727C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void _ZN7S7727C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
extern void _ZN7S7727C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C97S7727C5__A1__7S7727C1[] = {
  -4,
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void ABISELECT(_ZThn24_N7S7727C9D1Ev,_ZThn16_N7S7727C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
extern void ABISELECT(_ZThn24_N7S7727C9D0Ev,_ZThn16_N7S7727C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C97S7727C5__A1__7S7727C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C5D1Ev,_ZTv0_n12_N7S7727C5D1Ev)();
extern void ABISELECT(_ZThn24_N7S7727C5D1Ev,_ZThn16_N7S7727C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C5D0Ev,_ZTv0_n12_N7S7727C5D0Ev)();
extern void ABISELECT(_ZThn24_N7S7727C5D0Ev,_ZThn16_N7S7727C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C6__7S7727C5__7S7727C1[] = {
  0,
  ABISELECT(-28,-20),
  0,
  ABISELECT(16,8),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7727C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C5D1Ev,_ZTv0_n12_N7S7727C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C5D0Ev,_ZTv0_n12_N7S7727C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C5D1Ev,_ZTv0_n12_N7S7727C5D1Ev)();
extern void ABISELECT(_ZThn40_N7S7727C5D1Ev,_ZThn24_N7S7727C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C5D0Ev,_ZTv0_n12_N7S7727C5D0Ev)();
extern void ABISELECT(_ZThn40_N7S7727C5D0Ev,_ZThn24_N7S7727C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C5__7S7727C1[] = {
  ABISELECT(-44,-28),
  ABISELECT(-16,-8),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7727C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C5D1Ev,_ZTv0_n12_N7S7727C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C5D0Ev,_ZTv0_n12_N7S7727C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7727C5D1Ev,_ZTv0_n16_N7S7727C5D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7727C5D0Ev,_ZTv0_n16_N7S7727C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C3__7S7727C5__7S7727C1[] = {
  ABISELECT(32,24),
  ABISELECT(28,20),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI7S7727C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7727C5D1Ev,_ZTv0_n16_N7S7727C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7727C5D0Ev,_ZTv0_n16_N7S7727C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev)();
extern void _ZN7S7727C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev)();
extern void _ZN7S7727C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C6__7S7727C1[] = {
  0,
  ABISELECT(-28,-20),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7727C6D1Ev,_ZThn8_N7S7727C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7727C6D0Ev,_ZThn8_N7S7727C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C6__7S7727C1[] = {
  ABISELECT(-44,-28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev)();
extern void _ZN7S7727C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev)();
extern void _ZN7S7727C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C7__7S7727C1[] = {
  ABISELECT(-28,-20),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S7727C7D1Ev,_ZThn8_N7S7727C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev)();
extern void ABISELECT(_ZThn16_N7S7727C7D0Ev,_ZThn8_N7S7727C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C7__7S7727C1[] = {
  ABISELECT(-44,-28),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7727C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev)();
extern void _ZN7S7727C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev)();
extern void _ZN7S7727C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C1[] = {
  ABISELECT(-44,-28),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void _ZN7S7727C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
extern void _ZN7S7727C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C97S7727C8__7S7727C1[] = {
  ABISELECT(-44,-28),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C97S7727C8__7S7727C1[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C8__7S7727C1[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void _ZN7S7727C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
extern void _ZN7S7727C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C9__A2__7S7727C1[] = {
  ABISELECT(-60,-40),
  ABISELECT(-32,-20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C9__A2__7S7727C1[] = {
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C12D1Ev,_ZTv0_n12_N8S7727C12D1Ev)();
extern void _ZN8S7727C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C12D0Ev,_ZTv0_n12_N8S7727C12D0Ev)();
extern void _ZN8S7727C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7727C12__7S7727C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-76,-48),
  ABISELECT(-48,-28),
  ABISELECT(-32,-20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7727C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C12D1Ev,_ZTv0_n12_N8S7727C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C12D0Ev,_ZTv0_n12_N8S7727C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev)();
extern void _ZN7S7727C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev)();
extern void _ZN7S7727C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C68S7727C12__A1__7S7727C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-76,-48),
  ABISELECT(-48,-28),
  ABISELECT(-32,-20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C7__7S7727C68S7727C12__A1__7S7727C1[] = {
  ABISELECT(-28,-20),
  0,
  ABISELECT(16,8),
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C68S7727C12__A1__7S7727C1[] = {
  ABISELECT(-44,-28),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI7S7727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void _ZN7S7727C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
extern void _ZN7S7727C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C98S7727C12__A3__7S7727C1[] = {
  ABISELECT(-92,-56),
  ABISELECT(-64,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C98S7727C12__A3__7S7727C1[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C12D1Ev,_ZTv0_n12_N8S7727C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7727C12D0Ev,_ZTv0_n12_N8S7727C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C7__8S7727C12__7S7727C1[] = {
  ABISELECT(-28,-20),
  0,
  ABISELECT(16,8),
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7727C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C12D1Ev,_ZTv0_n12_N8S7727C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C12D0Ev,_ZTv0_n12_N8S7727C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C12D1Ev,_ZTv0_n12_N8S7727C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7727C12D0Ev,_ZTv0_n12_N8S7727C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C8__8S7727C12__7S7727C1[] = {
  ABISELECT(-44,-28),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S7727C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C12D1Ev,_ZTv0_n12_N8S7727C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C12D0Ev,_ZTv0_n12_N8S7727C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C12D1Ev,_ZTv0_n12_N8S7727C12D1Ev)();
extern void ABISELECT(_ZThn16_N8S7727C12D1Ev,_ZThn8_N8S7727C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C12D0Ev,_ZTv0_n12_N8S7727C12D0Ev)();
extern void ABISELECT(_ZThn16_N8S7727C12D0Ev,_ZThn8_N8S7727C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C9__A1__8S7727C12__7S7727C1[] = {
  ABISELECT(-92,-56),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7727C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C12D1Ev,_ZTv0_n12_N8S7727C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C12D0Ev,_ZTv0_n12_N8S7727C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C14D1Ev,_ZTv0_n12_N8S7727C14D1Ev)();
extern void _ZN8S7727C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C14D0Ev,_ZTv0_n12_N8S7727C14D0Ev)();
extern void _ZN8S7727C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7727C14__7S7727C1[] = {
  ABISELECT(48,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7727C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C14D1Ev,_ZTv0_n12_N8S7727C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C14D0Ev,_ZTv0_n12_N8S7727C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C14D1Ev,_ZTv0_n12_N8S7727C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S7727C14D1Ev,_ZThn36_N8S7727C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C14D0Ev,_ZTv0_n12_N8S7727C14D0Ev)();
extern void ABISELECT(_ZThn48_N8S7727C14D0Ev,_ZThn36_N8S7727C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7727C14__7S7727C1[] = {
  ABISELECT(-48,-36),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S7727C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C14D1Ev,_ZTv0_n12_N8S7727C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C14D0Ev,_ZTv0_n12_N8S7727C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C15D1Ev,_ZTv0_n12_N8S7727C15D1Ev)();
extern void _ZN8S7727C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C15D0Ev,_ZTv0_n12_N8S7727C15D0Ev)();
extern void _ZN8S7727C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7727C15__7S7727C1[] = {
  ABISELECT(-296,-164),
  ABISELECT(-268,-144),
  ABISELECT(-224,-116),
  ABISELECT(-240,-124),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7727C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C15D1Ev,_ZTv0_n12_N8S7727C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C15D0Ev,_ZTv0_n12_N8S7727C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C15D1Ev,_ZTv0_n12_N8S7727C15D1Ev)();
extern void ABISELECT(_ZThn8_N8S7727C15D1Ev,_ZThn4_N8S7727C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C15D0Ev,_ZTv0_n12_N8S7727C15D0Ev)();
extern void ABISELECT(_ZThn8_N8S7727C15D0Ev,_ZThn4_N8S7727C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7727C16__8S7727C15__7S7727C1[] = {
  ABISELECT(-304,-168),
  ABISELECT(-276,-148),
  ABISELECT(-248,-128),
  ABISELECT(-232,-120),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7727C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C15D1Ev,_ZTv0_n12_N8S7727C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C15D0Ev,_ZTv0_n12_N8S7727C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C15D1Ev,_ZTv0_n12_N8S7727C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7727C15D0Ev,_ZTv0_n12_N8S7727C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7727C15__7S7727C1[] = {
  ABISELECT(240,124),
  ABISELECT(240,124),
  (VTBL_ENTRY)&(_ZTI8S7727C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C15D1Ev,_ZTv0_n12_N8S7727C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C15D0Ev,_ZTv0_n12_N8S7727C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C15D1Ev,_ZTv0_n12_N8S7727C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7727C15D0Ev,_ZTv0_n12_N8S7727C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C8__8S7727C15__7S7727C1[] = {
  ABISELECT(-44,-28),
  ABISELECT(-16,-8),
  ABISELECT(224,116),
  ABISELECT(224,116),
  (VTBL_ENTRY)&(_ZTI8S7727C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C15D1Ev,_ZTv0_n12_N8S7727C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C15D0Ev,_ZTv0_n12_N8S7727C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C15D1Ev,_ZTv0_n12_N8S7727C15D1Ev)();
extern void ABISELECT(_ZThn24_N8S7727C15D1Ev,_ZThn12_N8S7727C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C15D0Ev,_ZTv0_n12_N8S7727C15D0Ev)();
extern void ABISELECT(_ZThn24_N8S7727C15D0Ev,_ZThn12_N8S7727C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C98S7727C16__A1__8S7727C15__7S7727C1[] = {
  ABISELECT(-292,-156),
  ABISELECT(-264,-136),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7727C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C15D1Ev,_ZTv0_n12_N8S7727C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C15D0Ev,_ZTv0_n12_N8S7727C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C16D1Ev,_ZTv0_n12_N8S7727C16D1Ev)();
extern void _ZN8S7727C16D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C16D0Ev,_ZTv0_n12_N8S7727C16D0Ev)();
extern void _ZN8S7727C16D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7727C16__7S7727C1[] = {
  ABISELECT(-304,-168),
  ABISELECT(-276,-148),
  ABISELECT(-248,-128),
  ABISELECT(-232,-120),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7727C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C16D1Ev,_ZTv0_n12_N8S7727C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C16D0Ev,_ZTv0_n12_N8S7727C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev)();
extern void _ZN7S7727C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev)();
extern void _ZN7S7727C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C78S7727C16__A1__7S7727C1[] = {
  ABISELECT(-276,-148),
  ABISELECT(-248,-128),
  ABISELECT(-232,-120),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C78S7727C16__A1__7S7727C1[] = {
  ABISELECT(-44,-28),
  ABISELECT(-16,-8),
  ABISELECT(232,120),
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI7S7727C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C78S7727C16__A1__7S7727C1[] = {
  ABISELECT(248,128),
  ABISELECT(248,128),
  (VTBL_ENTRY)&(_ZTI7S7727C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void _ZN7S7727C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
extern void _ZN7S7727C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C98S7727C16__A4__7S7727C1[] = {
  ABISELECT(-292,-156),
  ABISELECT(-264,-136),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C98S7727C16__A4__7S7727C1[] = {
  ABISELECT(264,136),
  ABISELECT(264,136),
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C16D1Ev,_ZTv0_n12_N8S7727C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7727C16D0Ev,_ZTv0_n12_N8S7727C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7727C16__7S7727C1[] = {
  ABISELECT(248,128),
  ABISELECT(248,128),
  (VTBL_ENTRY)&(_ZTI8S7727C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C16D1Ev,_ZTv0_n12_N8S7727C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C16D0Ev,_ZTv0_n12_N8S7727C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C16D1Ev,_ZTv0_n12_N8S7727C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7727C16D0Ev,_ZTv0_n12_N8S7727C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C8__8S7727C16__7S7727C1[] = {
  ABISELECT(-44,-28),
  ABISELECT(-16,-8),
  ABISELECT(232,120),
  ABISELECT(232,120),
  (VTBL_ENTRY)&(_ZTI8S7727C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C16D1Ev,_ZTv0_n12_N8S7727C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C16D0Ev,_ZTv0_n12_N8S7727C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C16D1Ev,_ZTv0_n12_N8S7727C16D1Ev)();
extern void ABISELECT(_ZThn16_N8S7727C16D1Ev,_ZThn8_N8S7727C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C16D0Ev,_ZTv0_n12_N8S7727C16D0Ev)();
extern void ABISELECT(_ZThn16_N8S7727C16D0Ev,_ZThn8_N8S7727C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C9__A1__8S7727C16__7S7727C1[] = {
  ABISELECT(-292,-156),
  ABISELECT(-264,-136),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7727C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C16D1Ev,_ZTv0_n12_N8S7727C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C16D0Ev,_ZTv0_n12_N8S7727C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7727C17D1Ev,_ZTv0_n16_N8S7727C17D1Ev)();
extern void _ZN8S7727C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7727C17D0Ev,_ZTv0_n16_N8S7727C17D0Ev)();
extern void _ZN8S7727C17D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7727C17__7S7727C1[] = {
  ABISELECT(-336,-184),
  ABISELECT(56,36),
  ABISELECT(32,20),
  ABISELECT(8,4),
  ABISELECT(-248,-124),
  ABISELECT(-336,-184),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-304,-160),
  ABISELECT(-336,-184),
  0,
  ABISELECT(-308,-164),
  0,
  (VTBL_ENTRY)&(_ZTI8S7727C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7727C17D1Ev,_ZTv0_n16_N8S7727C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7727C17D0Ev,_ZTv0_n16_N8S7727C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7727C2D1Ev,_ZTv0_n16_N7S7727C2D1Ev)();
extern void _ZN7S7727C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7727C2D0Ev,_ZTv0_n16_N7S7727C2D0Ev)();
extern void _ZN7S7727C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C28S7727C17__A1__7S7727C1[] = {
  ABISELECT(-248,-124),
  ABISELECT(-336,-184),
  ABISELECT(-280,-144),
  ABISELECT(-264,-136),
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  ABISELECT(-304,-160),
  ABISELECT(-336,-184),
  0,
  ABISELECT(-308,-164),
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7727C2D1Ev,_ZTv0_n16_N7S7727C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7727C2D0Ev,_ZTv0_n16_N7S7727C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7727C2D1Ev,_ZTv0_n16_N7S7727C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7727C2D0Ev,_ZTv0_n16_N7S7727C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C3__7S7727C28S7727C17__A1__7S7727C1[] = {
  ABISELECT(336,184),
  ABISELECT(28,20),
  ABISELECT(336,184),
  (VTBL_ENTRY)&(_ZTI7S7727C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7727C2D1Ev,_ZTv0_n16_N7S7727C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7727C2D0Ev,_ZTv0_n16_N7S7727C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C5__7S7727C28S7727C17__A1__7S7727C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(24,16),
  -4,
  ABISELECT(24,16),
  ABISELECT(304,160),
  ABISELECT(304,160),
  (VTBL_ENTRY)&(_ZTI7S7727C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C6__7S7727C28S7727C17__A1__7S7727C1[] = {
  0,
  ABISELECT(-28,-20),
  0,
  ABISELECT(16,8),
  ABISELECT(280,144),
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI7S7727C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C28S7727C17__A1__7S7727C1[] = {
  ABISELECT(-44,-28),
  ABISELECT(-16,-8),
  ABISELECT(264,136),
  ABISELECT(264,136),
  (VTBL_ENTRY)&(_ZTI7S7727C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C9__A2__7S7727C28S7727C17__A1__7S7727C1[] = {
  ABISELECT(-60,-40),
  ABISELECT(-32,-20),
  ABISELECT(248,124),
  ABISELECT(248,124),
  (VTBL_ENTRY)&(_ZTI7S7727C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C17D1Ev,_ZTv0_n12_N8S7727C17D1Ev)();
extern void ABISELECT(_ZThn8_N8S7727C17D1Ev,_ZThn4_N8S7727C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C17D0Ev,_ZTv0_n12_N8S7727C17D0Ev)();
extern void ABISELECT(_ZThn8_N8S7727C17D0Ev,_ZThn4_N8S7727C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7727C18__8S7727C17__7S7727C1[] = {
  ABISELECT(-288,-148),
  ABISELECT(-316,-168),
  ABISELECT(-288,-148),
  ABISELECT(-272,-140),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7727C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C17D1Ev,_ZTv0_n12_N8S7727C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C17D0Ev,_ZTv0_n12_N8S7727C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C17D1Ev,_ZTv0_n12_N8S7727C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7727C17D0Ev,_ZTv0_n12_N8S7727C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C6__A1__8S7727C17__7S7727C1[] = {
  0,
  ABISELECT(-28,-20),
  0,
  ABISELECT(16,8),
  ABISELECT(280,144),
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI8S7727C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C17D1Ev,_ZTv0_n12_N8S7727C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C17D0Ev,_ZTv0_n12_N8S7727C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C17D1Ev,_ZTv0_n12_N8S7727C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7727C17D0Ev,_ZTv0_n12_N8S7727C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C8__8S7727C17__7S7727C1[] = {
  ABISELECT(-44,-28),
  ABISELECT(-16,-8),
  ABISELECT(264,136),
  ABISELECT(264,136),
  (VTBL_ENTRY)&(_ZTI8S7727C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C17D1Ev,_ZTv0_n12_N8S7727C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C17D0Ev,_ZTv0_n12_N8S7727C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7727C17D1Ev,_ZTv0_n16_N8S7727C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7727C17D0Ev,_ZTv0_n16_N8S7727C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C3__8S7727C17__7S7727C1[] = {
  ABISELECT(336,184),
  ABISELECT(28,20),
  ABISELECT(336,184),
  (VTBL_ENTRY)&(_ZTI8S7727C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7727C17D1Ev,_ZTv0_n16_N8S7727C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7727C17D0Ev,_ZTv0_n16_N8S7727C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C17D1Ev,_ZTv0_n12_N8S7727C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7727C17D0Ev,_ZTv0_n12_N8S7727C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C5__8S7727C17__7S7727C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(24,16),
  -4,
  ABISELECT(24,16),
  ABISELECT(304,160),
  ABISELECT(304,160),
  (VTBL_ENTRY)&(_ZTI8S7727C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C17D1Ev,_ZTv0_n12_N8S7727C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C17D0Ev,_ZTv0_n12_N8S7727C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C17D1Ev,_ZTv0_n12_N8S7727C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7727C17D0Ev,_ZTv0_n12_N8S7727C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C9__A2__8S7727C17__7S7727C1[] = {
  ABISELECT(-60,-40),
  ABISELECT(-32,-20),
  ABISELECT(248,124),
  ABISELECT(248,124),
  (VTBL_ENTRY)&(_ZTI8S7727C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C17D1Ev,_ZTv0_n12_N8S7727C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C17D0Ev,_ZTv0_n12_N8S7727C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C17D1Ev,_ZTv0_n12_N8S7727C17D1Ev)();
extern void ABISELECT(_ZThn32_N8S7727C17D1Ev,_ZThn20_N8S7727C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C17D0Ev,_ZTv0_n12_N8S7727C17D0Ev)();
extern void ABISELECT(_ZThn32_N8S7727C17D0Ev,_ZThn20_N8S7727C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7727C19__8S7727C17__7S7727C1[] = {
  ABISELECT(24,16),
  ABISELECT(-312,-164),
  ABISELECT(-340,-184),
  ABISELECT(-312,-164),
  ABISELECT(-296,-156),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7727C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C17D1Ev,_ZTv0_n12_N8S7727C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C17D0Ev,_ZTv0_n12_N8S7727C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C17D1Ev,_ZTv0_n12_N8S7727C17D1Ev)();
extern void ABISELECT(_ZThn56_N8S7727C17D1Ev,_ZThn36_N8S7727C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C17D0Ev,_ZTv0_n12_N8S7727C17D0Ev)();
extern void ABISELECT(_ZThn56_N8S7727C17D0Ev,_ZThn36_N8S7727C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7727C20__8S7727C17__7S7727C1[] = {
  ABISELECT(-364,-200),
  ABISELECT(-336,-180),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S7727C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C17D1Ev,_ZTv0_n12_N8S7727C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C17D0Ev,_ZTv0_n12_N8S7727C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C18D1Ev,_ZTv0_n12_N8S7727C18D1Ev)();
extern void _ZN8S7727C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C18D0Ev,_ZTv0_n12_N8S7727C18D0Ev)();
extern void _ZN8S7727C18D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7727C18__7S7727C1[] = {
  ABISELECT(-288,-148),
  ABISELECT(-316,-168),
  ABISELECT(-288,-148),
  ABISELECT(-272,-140),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7727C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C18D1Ev,_ZTv0_n12_N8S7727C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C18D0Ev,_ZTv0_n12_N8S7727C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev)();
extern void _ZN7S7727C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev)();
extern void _ZN7S7727C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C68S7727C18__A2__7S7727C1[] = {
  ABISELECT(-288,-148),
  ABISELECT(-316,-168),
  ABISELECT(-288,-148),
  ABISELECT(-272,-140),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C7__7S7727C68S7727C18__A2__7S7727C1[] = {
  ABISELECT(-28,-20),
  0,
  ABISELECT(16,8),
  ABISELECT(288,148),
  ABISELECT(288,148),
  (VTBL_ENTRY)&(_ZTI7S7727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C68S7727C18__A2__7S7727C1[] = {
  ABISELECT(-44,-28),
  ABISELECT(-16,-8),
  ABISELECT(272,140),
  ABISELECT(272,140),
  (VTBL_ENTRY)&(_ZTI7S7727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C18D1Ev,_ZTv0_n12_N8S7727C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7727C18D0Ev,_ZTv0_n12_N8S7727C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C7__8S7727C18__7S7727C1[] = {
  ABISELECT(-28,-20),
  0,
  ABISELECT(16,8),
  ABISELECT(288,148),
  ABISELECT(288,148),
  (VTBL_ENTRY)&(_ZTI8S7727C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C18D1Ev,_ZTv0_n12_N8S7727C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C18D0Ev,_ZTv0_n12_N8S7727C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C18D1Ev,_ZTv0_n12_N8S7727C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7727C18D0Ev,_ZTv0_n12_N8S7727C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C8__8S7727C18__7S7727C1[] = {
  ABISELECT(-44,-28),
  ABISELECT(-16,-8),
  ABISELECT(272,140),
  ABISELECT(272,140),
  (VTBL_ENTRY)&(_ZTI8S7727C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C18D1Ev,_ZTv0_n12_N8S7727C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C18D0Ev,_ZTv0_n12_N8S7727C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C19D1Ev,_ZTv0_n12_N8S7727C19D1Ev)();
extern void _ZN8S7727C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C19D0Ev,_ZTv0_n12_N8S7727C19D0Ev)();
extern void _ZN8S7727C19D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7727C19__7S7727C1[] = {
  ABISELECT(24,16),
  ABISELECT(-312,-164),
  ABISELECT(-340,-184),
  ABISELECT(-312,-164),
  ABISELECT(-296,-156),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7727C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C19D1Ev,_ZTv0_n12_N8S7727C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C19D0Ev,_ZTv0_n12_N8S7727C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C18D1Ev,_ZTv0_n12_N8S7727C18D1Ev)();
extern void _ZN8S7727C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C18D0Ev,_ZTv0_n12_N8S7727C18D0Ev)();
extern void _ZN8S7727C18D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7727C188S7727C19__A1__7S7727C1[] = {
  ABISELECT(-312,-164),
  ABISELECT(-340,-184),
  ABISELECT(-312,-164),
  ABISELECT(-296,-156),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7727C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C18D1Ev,_ZTv0_n12_N8S7727C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C18D0Ev,_ZTv0_n12_N8S7727C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev)();
extern void _ZN7S7727C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev)();
extern void _ZN7S7727C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C68S7727C188S7727C19__A3__7S7727C1[] = {
  ABISELECT(-312,-164),
  ABISELECT(-340,-184),
  ABISELECT(-312,-164),
  ABISELECT(-296,-156),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C7__7S7727C68S7727C188S7727C19__A3__7S7727C1[] = {
  ABISELECT(-28,-20),
  0,
  ABISELECT(16,8),
  ABISELECT(312,164),
  ABISELECT(312,164),
  (VTBL_ENTRY)&(_ZTI7S7727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C8__7S7727C68S7727C188S7727C19__A3__7S7727C1[] = {
  ABISELECT(-44,-28),
  ABISELECT(-16,-8),
  ABISELECT(296,156),
  ABISELECT(296,156),
  (VTBL_ENTRY)&(_ZTI7S7727C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C18D1Ev,_ZTv0_n12_N8S7727C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7727C18D0Ev,_ZTv0_n12_N8S7727C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C7__8S7727C188S7727C19__A1__7S7727C1[] = {
  ABISELECT(-28,-20),
  0,
  ABISELECT(16,8),
  ABISELECT(312,164),
  ABISELECT(312,164),
  (VTBL_ENTRY)&(_ZTI8S7727C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C18D1Ev,_ZTv0_n12_N8S7727C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C18D0Ev,_ZTv0_n12_N8S7727C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C18D1Ev,_ZTv0_n12_N8S7727C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7727C18D0Ev,_ZTv0_n12_N8S7727C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C8__8S7727C188S7727C19__A1__7S7727C1[] = {
  ABISELECT(-44,-28),
  ABISELECT(-16,-8),
  ABISELECT(296,156),
  ABISELECT(296,156),
  (VTBL_ENTRY)&(_ZTI8S7727C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C18D1Ev,_ZTv0_n12_N8S7727C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C18D0Ev,_ZTv0_n12_N8S7727C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C19D1Ev,_ZTv0_n12_N8S7727C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7727C19D0Ev,_ZTv0_n12_N8S7727C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C8__8S7727C19__7S7727C1[] = {
  ABISELECT(-44,-28),
  ABISELECT(-16,-8),
  ABISELECT(296,156),
  ABISELECT(296,156),
  (VTBL_ENTRY)&(_ZTI8S7727C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C19D1Ev,_ZTv0_n12_N8S7727C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C19D0Ev,_ZTv0_n12_N8S7727C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C19D1Ev,_ZTv0_n12_N8S7727C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7727C19D0Ev,_ZTv0_n12_N8S7727C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7727C7__8S7727C19__7S7727C1[] = {
  ABISELECT(-28,-20),
  0,
  ABISELECT(16,8),
  ABISELECT(312,164),
  ABISELECT(312,164),
  (VTBL_ENTRY)&(_ZTI8S7727C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C19D1Ev,_ZTv0_n12_N8S7727C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C19D0Ev,_ZTv0_n12_N8S7727C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C19D1Ev,_ZTv0_n12_N8S7727C19D1Ev)();
extern void ABISELECT(_ZThn24_N8S7727C19D1Ev,_ZThn16_N8S7727C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C19D0Ev,_ZTv0_n12_N8S7727C19D0Ev)();
extern void ABISELECT(_ZThn24_N8S7727C19D0Ev,_ZThn16_N8S7727C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7727C20__8S7727C19__7S7727C1[] = {
  ABISELECT(-364,-200),
  ABISELECT(-336,-180),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7727C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C19D1Ev,_ZTv0_n12_N8S7727C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C19D0Ev,_ZTv0_n12_N8S7727C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C20D1Ev,_ZTv0_n12_N8S7727C20D1Ev)();
extern void _ZN8S7727C20D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7727C20D0Ev,_ZTv0_n12_N8S7727C20D0Ev)();
extern void _ZN8S7727C20D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7727C20__7S7727C1[] = {
  ABISELECT(-364,-200),
  ABISELECT(-336,-180),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7727C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C20D1Ev,_ZTv0_n12_N8S7727C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C20D0Ev,_ZTv0_n12_N8S7727C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev)();
extern void _ZN7S7727C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev)();
extern void _ZN7S7727C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C88S7727C20__A1__7S7727C1[] = {
  ABISELECT(-364,-200),
  ABISELECT(-336,-180),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void _ZN7S7727C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
extern void _ZN7S7727C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7727C97S7727C88S7727C20__A5__7S7727C1[] = {
  ABISELECT(-364,-200),
  ABISELECT(-336,-180),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C97S7727C88S7727C20__A5__7S7727C1[] = {
  ABISELECT(336,180),
  ABISELECT(336,180),
  (VTBL_ENTRY)&(_ZTI7S7727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S7727C88S7727C20__A1__7S7727C1[] = {
  ABISELECT(336,180),
  ABISELECT(336,180),
  (VTBL_ENTRY)&(_ZTI7S7727C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7727C20D1Ev,_ZTv0_n12_N8S7727C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7727C20D0Ev,_ZTv0_n12_N8S7727C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S7727C20__7S7727C1[] = {
  ABISELECT(336,180),
  ABISELECT(336,180),
  (VTBL_ENTRY)&(_ZTI8S7727C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C20D1Ev,_ZTv0_n12_N8S7727C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7727C20D0Ev,_ZTv0_n12_N8S7727C20D0Ev),
};
static  VTT_ENTRY vtt_S7727C1[] = {
  {&(_ZTV7S7727C1[21]),  21,151},
  {&(_tg__ZTV7S7727C2__7S7727C1[12]),  12,14},
  {&(_tg__ZTV7S7727C2__7S7727C1[12]),  12,14},
  {&(_tg__ZTV7S7727C5__7S7727C2__7S7727C1[10]),  10,12},
  {&(_tg__ZTV7S7727C6__7S7727C2__7S7727C1[7]),  7,9},
  {&(_tg__ZTV7S7727C6__7S7727C2__7S7727C1[7]),  7,9},
  {&(_tg__ZTV7S7727C8__7S7727C2__7S7727C1[5]),  5,7},
  {&(_tg__ZTV7S7727C6__7S7727C2__7S7727C1[7]),  7,9},
  {&(_tg__ZTV7S7727C9__A2__7S7727C2__7S7727C1[5]),  5,7},
  {&(_tg__ZTV8S7727C13__7S7727C1[5]),  5,7},
  {&(_tg__ZTV8S7727C13__7S7727C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S7727C13__7S7727C1[3]),  3,5},
  {&(_ZTV7S7727C1[21]),  21,151},
  {&(_ZTV7S7727C1[40]),  40,151},
  {&(_ZTV7S7727C1[49]),  49,151},
  {&(_ZTV7S7727C1[49]),  49,151},
  {&(_ZTV7S7727C1[56]),  56,151},
  {&(_ZTV7S7727C1[49]),  49,151},
  {&(_ZTV7S7727C1[63]),  63,151},
  {&(_ZTV7S7727C1[72]),  72,151},
  {&(_ZTV7S7727C1[79]),  79,151},
  {&(_ZTV7S7727C1[28]),  28,151},
  {&(_ZTV7S7727C1[28]),  28,151},
  {&(_ZTV7S7727C1[89]),  89,151},
  {&(_ZTV7S7727C1[98]),  98,151},
  {&(_ZTV7S7727C1[105]),  105,151},
  {&(_ZTV7S7727C1[123]),  123,151},
  {&(_ZTV7S7727C1[132]),  132,151},
  {&(_ZTV7S7727C1[142]),  142,151},
  {&(_ZTV7S7727C1[149]),  149,151},
  {&(_tg__ZTV7S7727C3__7S7727C1[3]),  3,5},
  {&(_tg__ZTV7S7727C5__7S7727C1[10]),  10,12},
  {&(_tg__ZTV7S7727C97S7727C5__A1__7S7727C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7727C97S7727C5__A1__7S7727C1[3]),  3,5},
  {&(_tg__ZTV7S7727C6__7S7727C5__7S7727C1[7]),  7,9},
  {&(_tg__ZTV7S7727C6__7S7727C5__7S7727C1[7]),  7,9},
  {&(_tg__ZTV7S7727C8__7S7727C5__7S7727C1[5]),  5,7},
  {&(_tg__ZTV7S7727C6__7S7727C5__7S7727C1[7]),  7,9},
  {&(_tg__ZTV7S7727C3__7S7727C5__7S7727C1[4]),  4,6},
  {&(_tg__ZTV7S7727C6__7S7727C1[7]),  7,9},
  {&(_tg__ZTV7S7727C6__7S7727C1[7]),  7,9},
  {&(_tg__ZTV7S7727C8__7S7727C6__7S7727C1[5]),  5,7},
  {&(_tg__ZTV7S7727C6__7S7727C1[7]),  7,9},
  {&(_tg__ZTV7S7727C7__7S7727C1[6]),  6,8},
  {&(_tg__ZTV7S7727C8__7S7727C7__7S7727C1[5]),  5,7},
  {&(_tg__ZTV7S7727C7__7S7727C1[6]),  6,8},
  {&(_tg__ZTV7S7727C8__7S7727C1[5]),  5,7},
  {&(_tg__ZTV7S7727C97S7727C8__7S7727C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7727C97S7727C8__7S7727C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7727C8__7S7727C1[3]),  3,5},
  {&(_tg__ZTV7S7727C9__A2__7S7727C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7727C9__A2__7S7727C1[3]),  3,5},
  {&(_tg__ZTV8S7727C12__7S7727C1[7]),  7,9},
  {&(_tg__ZTV7S7727C68S7727C12__A1__7S7727C1[7]),  7,9},
  {&(_tg__ZTV7S7727C7__7S7727C68S7727C12__A1__7S7727C1[6]),  6,8},
  {&(_tg__ZTV7S7727C8__7S7727C68S7727C12__A1__7S7727C1[5]),  5,7},
  {&(_tg__ZTV7S7727C7__7S7727C68S7727C12__A1__7S7727C1[6]),  6,8},
  {&(_tg__ZTV7S7727C98S7727C12__A3__7S7727C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7727C98S7727C12__A3__7S7727C1[3]),  3,5},
  {&(_tg__ZTV7S7727C7__8S7727C12__7S7727C1[6]),  6,8},
  {&(_tg__ZTV7S7727C8__8S7727C12__7S7727C1[5]),  5,7},
  {&(_tg__ZTV7S7727C7__8S7727C12__7S7727C1[6]),  6,8},
  {&(_tg__ZTV7S7727C9__A1__8S7727C12__7S7727C1[5]),  5,7},
  {&(_tg__ZTV8S7727C14__7S7727C1[4]),  4,6},
  {&(_tg__ZTV10S7883C3_nt__8S7727C14__7S7727C1[3]),  3,5},
  {&(_tg__ZTV8S7727C15__7S7727C1[8]),  8,10},
  {&(_tg__ZTV8S7727C16__8S7727C15__7S7727C1[7]),  7,9},
  {&(_tg__ZTV10S7883C3_nt__8S7727C15__7S7727C1[3]),  3,5},
  {&(_tg__ZTV7S7727C8__8S7727C15__7S7727C1[5]),  5,7},
  {&(_tg__ZTV7S7727C98S7727C16__A1__8S7727C15__7S7727C1[5]),  5,7},
  {&(_tg__ZTV8S7727C16__7S7727C1[7]),  7,9},
  {&(_tg__ZTV7S7727C78S7727C16__A1__7S7727C1[6]),  6,8},
  {&(_tg__ZTV7S7727C8__7S7727C78S7727C16__A1__7S7727C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7727C78S7727C16__A1__7S7727C1[3]),  3,5},
  {&(_tg__ZTV7S7727C98S7727C16__A4__7S7727C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7727C98S7727C16__A4__7S7727C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S7727C16__7S7727C1[3]),  3,5},
  {&(_tg__ZTV7S7727C8__8S7727C16__7S7727C1[5]),  5,7},
  {&(_tg__ZTV7S7727C9__A1__8S7727C16__7S7727C1[5]),  5,7},
  {&(_tg__ZTV8S7727C17__7S7727C1[16]),  16,18},
  {&(_tg__ZTV7S7727C28S7727C17__A1__7S7727C1[12]),  12,14},
  {&(_tg__ZTV7S7727C3__7S7727C28S7727C17__A1__7S7727C1[4]),  4,6},
  {&(_tg__ZTV7S7727C5__7S7727C28S7727C17__A1__7S7727C1[10]),  10,12},
  {&(_tg__ZTV7S7727C6__7S7727C28S7727C17__A1__7S7727C1[7]),  7,9},
  {&(_tg__ZTV7S7727C6__7S7727C28S7727C17__A1__7S7727C1[7]),  7,9},
  {&(_tg__ZTV7S7727C8__7S7727C28S7727C17__A1__7S7727C1[5]),  5,7},
  {&(_tg__ZTV7S7727C6__7S7727C28S7727C17__A1__7S7727C1[7]),  7,9},
  {&(_tg__ZTV7S7727C9__A2__7S7727C28S7727C17__A1__7S7727C1[5]),  5,7},
  {&(_tg__ZTV8S7727C18__8S7727C17__7S7727C1[7]),  7,9},
  {&(_tg__ZTV7S7727C6__A1__8S7727C17__7S7727C1[7]),  7,9},
  {&(_tg__ZTV7S7727C8__8S7727C17__7S7727C1[5]),  5,7},
  {&(_tg__ZTV7S7727C6__A1__8S7727C17__7S7727C1[7]),  7,9},
  {&(_tg__ZTV7S7727C3__8S7727C17__7S7727C1[4]),  4,6},
  {&(_tg__ZTV7S7727C5__8S7727C17__7S7727C1[10]),  10,12},
  {&(_tg__ZTV7S7727C6__A1__8S7727C17__7S7727C1[7]),  7,9},
  {&(_tg__ZTV7S7727C9__A2__8S7727C17__7S7727C1[5]),  5,7},
  {&(_tg__ZTV8S7727C19__8S7727C17__7S7727C1[8]),  8,10},
  {&(_tg__ZTV8S7727C20__8S7727C17__7S7727C1[5]),  5,7},
  {&(_tg__ZTV8S7727C18__7S7727C1[7]),  7,9},
  {&(_tg__ZTV7S7727C68S7727C18__A2__7S7727C1[7]),  7,9},
  {&(_tg__ZTV7S7727C7__7S7727C68S7727C18__A2__7S7727C1[6]),  6,8},
  {&(_tg__ZTV7S7727C8__7S7727C68S7727C18__A2__7S7727C1[5]),  5,7},
  {&(_tg__ZTV7S7727C7__7S7727C68S7727C18__A2__7S7727C1[6]),  6,8},
  {&(_tg__ZTV7S7727C7__8S7727C18__7S7727C1[6]),  6,8},
  {&(_tg__ZTV7S7727C8__8S7727C18__7S7727C1[5]),  5,7},
  {&(_tg__ZTV7S7727C7__8S7727C18__7S7727C1[6]),  6,8},
  {&(_tg__ZTV8S7727C19__7S7727C1[8]),  8,10},
  {&(_tg__ZTV8S7727C188S7727C19__A1__7S7727C1[7]),  7,9},
  {&(_tg__ZTV7S7727C68S7727C188S7727C19__A3__7S7727C1[7]),  7,9},
  {&(_tg__ZTV7S7727C7__7S7727C68S7727C188S7727C19__A3__7S7727C1[6]),  6,8},
  {&(_tg__ZTV7S7727C8__7S7727C68S7727C188S7727C19__A3__7S7727C1[5]),  5,7},
  {&(_tg__ZTV7S7727C7__7S7727C68S7727C188S7727C19__A3__7S7727C1[6]),  6,8},
  {&(_tg__ZTV7S7727C7__8S7727C188S7727C19__A1__7S7727C1[6]),  6,8},
  {&(_tg__ZTV7S7727C8__8S7727C188S7727C19__A1__7S7727C1[5]),  5,7},
  {&(_tg__ZTV7S7727C7__8S7727C188S7727C19__A1__7S7727C1[6]),  6,8},
  {&(_tg__ZTV7S7727C8__8S7727C19__7S7727C1[5]),  5,7},
  {&(_tg__ZTV7S7727C7__8S7727C19__7S7727C1[6]),  6,8},
  {&(_tg__ZTV7S7727C7__8S7727C19__7S7727C1[6]),  6,8},
  {&(_tg__ZTV8S7727C20__8S7727C19__7S7727C1[5]),  5,7},
  {&(_tg__ZTV8S7727C20__7S7727C1[5]),  5,7},
  {&(_tg__ZTV7S7727C88S7727C20__A1__7S7727C1[5]),  5,7},
  {&(_tg__ZTV7S7727C97S7727C88S7727C20__A5__7S7727C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S7727C97S7727C88S7727C20__A5__7S7727C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S7727C88S7727C20__A1__7S7727C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S7727C20__7S7727C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7727C1[];
extern  VTBL_ENTRY _ZTV7S7727C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7727C1[];
static VTBL_ENTRY alt_thunk_names91[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C20D0Ev,_ZTv0_n12_N8S7727C20D0Ev), // 
  (VTBL_ENTRY)_ZN8S7727C20D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C20D1Ev,_ZTv0_n12_N8S7727C20D1Ev), // 
  (VTBL_ENTRY)_ZN8S7727C20D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C19D0Ev,_ZTv0_n12_N8S7727C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7727C19D0Ev,_ZThn16_N8S7727C19D0Ev),
  (VTBL_ENTRY)_ZN8S7727C19D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C19D1Ev,_ZTv0_n12_N8S7727C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7727C19D1Ev,_ZThn16_N8S7727C19D1Ev),
  (VTBL_ENTRY)_ZN8S7727C19D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C18D0Ev,_ZTv0_n12_N8S7727C18D0Ev), // 
  (VTBL_ENTRY)_ZN8S7727C18D0Ev,
  (VTBL_ENTRY)_ZN8S7727C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C18D1Ev,_ZTv0_n12_N8S7727C18D1Ev), // 
  (VTBL_ENTRY)_ZN8S7727C18D1Ev,
  (VTBL_ENTRY)_ZN8S7727C18D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C17D0Ev,_ZTv0_n12_N8S7727C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7727C17D0Ev,_ZThn36_N8S7727C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7727C17D0Ev,_ZThn20_N8S7727C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7727C17D0Ev,_ZThn4_N8S7727C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C17D1Ev,_ZTv0_n12_N8S7727C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7727C17D1Ev,_ZThn36_N8S7727C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7727C17D1Ev,_ZThn20_N8S7727C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7727C17D1Ev,_ZThn4_N8S7727C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7727C2D0Ev,_ZTv0_n16_N7S7727C2D0Ev), // 
  (VTBL_ENTRY)_ZN7S7727C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7727C2D1Ev,_ZTv0_n16_N7S7727C2D1Ev), // 
  (VTBL_ENTRY)_ZN7S7727C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7727C17D0Ev,_ZTv0_n16_N8S7727C17D0Ev), // 
  (VTBL_ENTRY)_ZN8S7727C17D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7727C17D1Ev,_ZTv0_n16_N8S7727C17D1Ev), // 
  (VTBL_ENTRY)_ZN8S7727C17D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C16D0Ev,_ZTv0_n12_N8S7727C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7727C16D0Ev,_ZThn8_N8S7727C16D0Ev),
  (VTBL_ENTRY)_ZN8S7727C16D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C16D1Ev,_ZTv0_n12_N8S7727C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7727C16D1Ev,_ZThn8_N8S7727C16D1Ev),
  (VTBL_ENTRY)_ZN8S7727C16D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C15D0Ev,_ZTv0_n12_N8S7727C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7727C15D0Ev,_ZThn12_N8S7727C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7727C15D0Ev,_ZThn4_N8S7727C15D0Ev),
  (VTBL_ENTRY)_ZN8S7727C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C15D1Ev,_ZTv0_n12_N8S7727C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7727C15D1Ev,_ZThn12_N8S7727C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7727C15D1Ev,_ZThn4_N8S7727C15D1Ev),
  (VTBL_ENTRY)_ZN8S7727C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C14D0Ev,_ZTv0_n12_N8S7727C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7727C14D0Ev,_ZThn36_N8S7727C14D0Ev),
  (VTBL_ENTRY)_ZN8S7727C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C14D1Ev,_ZTv0_n12_N8S7727C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7727C14D1Ev,_ZThn36_N8S7727C14D1Ev),
  (VTBL_ENTRY)_ZN8S7727C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C12D0Ev,_ZTv0_n12_N8S7727C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7727C12D0Ev,_ZThn8_N8S7727C12D0Ev),
  (VTBL_ENTRY)_ZN8S7727C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C12D1Ev,_ZTv0_n12_N8S7727C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7727C12D1Ev,_ZThn8_N8S7727C12D1Ev),
  (VTBL_ENTRY)_ZN8S7727C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C8D0Ev,_ZTv0_n12_N7S7727C8D0Ev), // 
  (VTBL_ENTRY)_ZN7S7727C8D0Ev,
  (VTBL_ENTRY)_ZN7S7727C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C8D1Ev,_ZTv0_n12_N7S7727C8D1Ev), // 
  (VTBL_ENTRY)_ZN7S7727C8D1Ev,
  (VTBL_ENTRY)_ZN7S7727C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C7D0Ev,_ZTv0_n12_N7S7727C7D0Ev), // 
  (VTBL_ENTRY)_ZN7S7727C7D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7727C7D0Ev,_ZThn8_N7S7727C7D0Ev),
  (VTBL_ENTRY)_ZN7S7727C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C7D1Ev,_ZTv0_n12_N7S7727C7D1Ev), // 
  (VTBL_ENTRY)_ZN7S7727C7D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7727C7D1Ev,_ZThn8_N7S7727C7D1Ev),
  (VTBL_ENTRY)_ZN7S7727C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C6D0Ev,_ZTv0_n12_N7S7727C6D0Ev), // 
  (VTBL_ENTRY)_ZN7S7727C6D0Ev,
  (VTBL_ENTRY)_ZN7S7727C6D0Ev,
  (VTBL_ENTRY)_ZN7S7727C6D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7727C6D0Ev,_ZThn8_N7S7727C6D0Ev),
  (VTBL_ENTRY)_ZN7S7727C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C6D1Ev,_ZTv0_n12_N7S7727C6D1Ev), // 
  (VTBL_ENTRY)_ZN7S7727C6D1Ev,
  (VTBL_ENTRY)_ZN7S7727C6D1Ev,
  (VTBL_ENTRY)_ZN7S7727C6D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7727C6D1Ev,_ZThn8_N7S7727C6D1Ev),
  (VTBL_ENTRY)_ZN7S7727C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C9D0Ev,_ZTv0_n12_N7S7727C9D0Ev), // 
  (VTBL_ENTRY)_ZN7S7727C9D0Ev,
  (VTBL_ENTRY)_ZN7S7727C9D0Ev,
  (VTBL_ENTRY)_ZN7S7727C9D0Ev,
  (VTBL_ENTRY)_ZN7S7727C9D0Ev,
  (VTBL_ENTRY)_ZN7S7727C9D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7727C9D0Ev,_ZThn16_N7S7727C9D0Ev),
  (VTBL_ENTRY)_ZN7S7727C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C9D1Ev,_ZTv0_n12_N7S7727C9D1Ev), // 
  (VTBL_ENTRY)_ZN7S7727C9D1Ev,
  (VTBL_ENTRY)_ZN7S7727C9D1Ev,
  (VTBL_ENTRY)_ZN7S7727C9D1Ev,
  (VTBL_ENTRY)_ZN7S7727C9D1Ev,
  (VTBL_ENTRY)_ZN7S7727C9D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7727C9D1Ev,_ZThn16_N7S7727C9D1Ev),
  (VTBL_ENTRY)_ZN7S7727C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C5D0Ev,_ZTv0_n12_N7S7727C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7727C5D0Ev,_ZThn24_N7S7727C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7727C5D0Ev,_ZThn16_N7S7727C5D0Ev),
  (VTBL_ENTRY)_ZN7S7727C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C5D1Ev,_ZTv0_n12_N7S7727C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7727C5D1Ev,_ZThn24_N7S7727C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7727C5D1Ev,_ZThn16_N7S7727C5D1Ev),
  (VTBL_ENTRY)_ZN7S7727C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C13D0Ev,_ZTv0_n12_N8S7727C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7727C13D0Ev,_ZThn36_N8S7727C13D0Ev),
  (VTBL_ENTRY)_ZN8S7727C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7727C13D1Ev,_ZTv0_n12_N8S7727C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7727C13D1Ev,_ZThn36_N8S7727C13D1Ev),
  (VTBL_ENTRY)_ZN8S7727C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C2D0Ev,_ZTv0_n12_N7S7727C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7727C2D0Ev,_ZThn60_N7S7727C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7727C2D0Ev,_ZThn48_N7S7727C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7727C2D0Ev,_ZThn40_N7S7727C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7727C2D0Ev,_ZThn24_N7S7727C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C2D1Ev,_ZTv0_n12_N7S7727C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7727C2D1Ev,_ZThn60_N7S7727C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7727C2D1Ev,_ZThn48_N7S7727C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7727C2D1Ev,_ZThn40_N7S7727C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7727C2D1Ev,_ZThn24_N7S7727C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7727C1D0Ev,_ZTv0_n16_N7S7727C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S7727C1D0Ev,_ZThn184_N7S7727C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7727C1D1Ev,_ZTv0_n16_N7S7727C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S7727C1D1Ev,_ZThn184_N7S7727C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C1D0Ev,_ZTv0_n12_N7S7727C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N7S7727C1D0Ev,_ZThn220_N7S7727C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7727C1D0Ev,_ZThn204_N7S7727C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7727C1D0Ev,_ZThn188_N7S7727C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7727C1D0Ev,_ZThn176_N7S7727C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S7727C1D0Ev,_ZThn168_N7S7727C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn296_N7S7727C1D0Ev,_ZThn164_N7S7727C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7727C1D0Ev,_ZThn76_N7S7727C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7727C1D0Ev,_ZThn68_N7S7727C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7727C1D0Ev,_ZThn60_N7S7727C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7727C1D0Ev,_ZThn48_N7S7727C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7727C1D0Ev,_ZThn40_N7S7727C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7727C1D0Ev,_ZThn24_N7S7727C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7727C1D0Ev,_ZThn4_N7S7727C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7727C1D1Ev,_ZTv0_n12_N7S7727C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N7S7727C1D1Ev,_ZThn220_N7S7727C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7727C1D1Ev,_ZThn204_N7S7727C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7727C1D1Ev,_ZThn188_N7S7727C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7727C1D1Ev,_ZThn176_N7S7727C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S7727C1D1Ev,_ZThn168_N7S7727C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn296_N7S7727C1D1Ev,_ZThn164_N7S7727C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7727C1D1Ev,_ZThn76_N7S7727C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7727C1D1Ev,_ZThn68_N7S7727C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7727C1D1Ev,_ZThn60_N7S7727C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7727C1D1Ev,_ZThn48_N7S7727C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7727C1D1Ev,_ZThn40_N7S7727C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7727C1D1Ev,_ZThn24_N7S7727C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7727C1D1Ev,_ZThn4_N7S7727C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7727C1 = {  "S7727C1", // class name
  bases_S7727C1, 43,
  &(vtc_S7727C1[0]), // expected_vtbl_contents
  &(vtt_S7727C1[0]), // expected_vtt_contents
  ABISELECT(408,232), // object size
  NSPAIRA(_ZTI7S7727C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7727C1),151, //virtual function table var
  21, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7727C1),125, //virtual table table var
  29, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names91,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3489C5  : S3216C8_nt {
  ::S3216C8_nt s3489c5f0[3];
  ::S3216C8_nt s3489c5f1[2];
  void *s3489c5f2;
  short s3489c5f3;
  ::S3216C8_nt s3489c5f4;
  virtual void  v1(); // _ZN7S3489C52v1Ev
  virtual void  v2(); // _ZN7S3489C52v2Ev
  virtual void  v3(); // _ZN7S3489C52v3Ev
  ~S3489C5(); // tgen
  S3489C5(); // tgen
};
//SIG(-1 S3489C5) C1{ BC2{ m Fi} v1 v2 v3 FC2[3] FC2[2] Fp Fs FC2}


void  S3489C5 ::v1(){vfunc_called(this, "_ZN7S3489C52v1Ev");}
void  S3489C5 ::v2(){vfunc_called(this, "_ZN7S3489C52v2Ev");}
void  S3489C5 ::v3(){vfunc_called(this, "_ZN7S3489C52v3Ev");}
S3489C5 ::~S3489C5(){ note_dtor("S3489C5", this);} // tgen
S3489C5 ::S3489C5(){ note_ctor("S3489C5", this);} // tgen

static void Test_S3489C5()
{
  extern Class_Descriptor cd_S3489C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,11)];
    init_test(&cd_S3489C5, buf);
    S3489C5 *dp, &lv = *(dp=new (buf) S3489C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S3489C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3489C5)");
    check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(8,4), "S3489C5");
    check_field_offset(lv, s3489c5f0, ABISELECT(12,8), "S3489C5.s3489c5f0");
    check_field_offset(lv, s3489c5f1, ABISELECT(24,20), "S3489C5.s3489c5f1");
    check_field_offset(lv, s3489c5f2, ABISELECT(32,28), "S3489C5.s3489c5f2");
    check_field_offset(lv, s3489c5f3, ABISELECT(40,32), "S3489C5.s3489c5f3");
    check_field_offset(lv, s3489c5f4, ABISELECT(44,36), "S3489C5.s3489c5f4");
    test_class_info(&lv, &cd_S3489C5);
    dp->~S3489C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3489C5(Test_S3489C5, "S3489C5", ABISELECT(48,40));

#else // __cplusplus

extern void _ZN7S3489C5C1Ev();
extern void _ZN7S3489C5D1Ev();
Name_Map name_map_S3489C5[] = {
  NSPAIR(_ZN7S3489C5C1Ev),
  NSPAIR(_ZN7S3489C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S3489C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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 _ZTI7S3489C5[];
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
static  VTBL_ENTRY vtc_S3489C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3489C5[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
};
extern VTBL_ENTRY _ZTI7S3489C5[];
extern  VTBL_ENTRY _ZTV7S3489C5[];
Class_Descriptor cd_S3489C5 = {  "S3489C5", // class name
  bases_S3489C5, 1,
  &(vtc_S3489C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,40), // object size
  NSPAIRA(_ZTI7S3489C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S3489C5),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  S3489C6  : S3489C5 , virtual S3216C8_nt {
  long double s3489c6f0;
  __tsi64 s3489c6f1;
  ::S3489C5 s3489c6f2;
  void *s3489c6f3;
  short s3489c6f4[3];
  ~S3489C6(); // tgen
  S3489C6(); // tgen
};
//SIG(-1 S3489C6) C1{ BC2{ BC3{ m Fi} v1 v2 v3 FC3[3] FC3[2] Fp Fs FC3} VBC3 FD FL FC2 Fp Fs[3]}


S3489C6 ::~S3489C6(){ note_dtor("S3489C6", this);} // tgen
S3489C6 ::S3489C6(){ note_ctor("S3489C6", this);} // tgen

static void Test_S3489C6()
{
  extern Class_Descriptor cd_S3489C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,30)];
    init_test(&cd_S3489C6, buf);
    S3489C6 *dp, &lv = *(dp=new (buf) S3489C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,116), "sizeof(S3489C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3489C6)");
    check_base_class_offset(lv, (S3216C8_nt*)(S3489C5*), ABISELECT(8,4), "S3489C6");
    check_base_class_offset(lv, (S3489C5*), 0, "S3489C6");
    /*is_ambiguous_... S3489C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(136,112), "S3489C6");
    check_field_offset(lv, s3489c6f0, ABISELECT(48,40), "S3489C6.s3489c6f0");
    check_field_offset(lv, s3489c6f1, ABISELECT(64,52), "S3489C6.s3489c6f1");
    check_field_offset(lv, s3489c6f2, ABISELECT(72,60), "S3489C6.s3489c6f2");
    check_field_offset(lv, s3489c6f3, ABISELECT(120,100), "S3489C6.s3489c6f3");
    check_field_offset(lv, s3489c6f4, ABISELECT(128,104), "S3489C6.s3489c6f4");
    test_class_info(&lv, &cd_S3489C6);
    dp->~S3489C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3489C6(Test_S3489C6, "S3489C6", ABISELECT(144,116));

#else // __cplusplus

extern void _ZN7S3489C6C1Ev();
extern void _ZN7S3489C6D1Ev();
Name_Map name_map_S3489C6[] = {
  NSPAIR(_ZN7S3489C6C1Ev),
  NSPAIR(_ZN7S3489C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3489C5;
extern VTBL_ENTRY _ZTI7S3489C5[];
extern  VTBL_ENTRY _ZTV7S3489C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S3489C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S3489C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3489C6[];
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
static  VTBL_ENTRY vtc_S3489C6[] = {
  ABISELECT(136,112),
  0,
  (VTBL_ENTRY)&(_ZTI7S3489C6[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
};
extern VTBL_ENTRY _ZTV7S3489C6[];
static  VTT_ENTRY vtt_S3489C6[] = {
  {&(_ZTV7S3489C6[3]),  3,6},
};
extern VTBL_ENTRY _ZTI7S3489C6[];
extern  VTBL_ENTRY _ZTV7S3489C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3489C6[];
Class_Descriptor cd_S3489C6 = {  "S3489C6", // class name
  bases_S3489C6, 3,
  &(vtc_S3489C6[0]), // expected_vtbl_contents
  &(vtt_S3489C6[0]), // expected_vtt_contents
  ABISELECT(144,116), // object size
  NSPAIRA(_ZTI7S3489C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3489C6),6, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3489C6),1, //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  S3489C3  : virtual S3216C8_nt , virtual S3489C5 , virtual S3489C6 {
  void *s3489c3f0[2];
  int s3489c3f1;
  ::S3489C6 s3489c3f2[8];
  long double s3489c3f3[9];
  ~S3489C3(); // tgen
  S3489C3(); // tgen
};
//SIG(-1 S3489C3) C1{ VBC2{ m Fi} VBC3{ BC2 v1 v2 v3 FC2[3] FC2[2] Fp Fs FC2} VBC4{ BC3 VBC2 FD FL FC3 Fp Fs[3]} Fp[2] Fi FC4[8] FD[9]}


S3489C3 ::~S3489C3(){ note_dtor("S3489C3", this);} // tgen
S3489C3 ::S3489C3(){ note_ctor("S3489C3", this);} // tgen

static void Test_S3489C3()
{
  extern Class_Descriptor cd_S3489C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(97,303)];
    init_test(&cd_S3489C3, buf);
    S3489C3 *dp, &lv = *(dp=new (buf) S3489C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1536,1208), "sizeof(S3489C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3489C3)");
    /*is_ambiguous_... S3489C3::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(1328,1052), "S3489C3");
    /*is_ambiguous_... S3489C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S3489C6*), ABISELECT(1328,1052), "S3489C3");
    /*is_ambiguous_... S3489C3::S3489C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S3489C5*), ABISELECT(1344,1060), "S3489C3");
    /*is_ambiguous_... S3489C3::S3489C5 */ AMB_check_base_class_offset(lv, (S3489C5*), ABISELECT(1336,1056), "S3489C3");
    check_base_class_offset(lv, (S3216C8_nt*)(S3489C5*)(S3489C6*), ABISELECT(1400,1100), "S3489C3");
    check_base_class_offset(lv, (S3489C5*)(S3489C6*), ABISELECT(1392,1096), "S3489C3");
    check_base_class_offset(lv, (S3489C6*), ABISELECT(1392,1096), "S3489C3");
    check_field_offset(lv, s3489c3f0, ABISELECT(8,4), "S3489C3.s3489c3f0");
    check_field_offset(lv, s3489c3f1, ABISELECT(24,12), "S3489C3.s3489c3f1");
    check_field_offset(lv, s3489c3f2, ABISELECT(32,16), "S3489C3.s3489c3f2");
    check_field_offset(lv, s3489c3f3, ABISELECT(1184,944), "S3489C3.s3489c3f3");
    test_class_info(&lv, &cd_S3489C3);
    dp->~S3489C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3489C3(Test_S3489C3, "S3489C3", ABISELECT(1536,1208));

#else // __cplusplus

extern void _ZN7S3489C3C1Ev();
extern void _ZN7S3489C3D1Ev();
Name_Map name_map_S3489C3[] = {
  NSPAIR(_ZN7S3489C3C1Ev),
  NSPAIR(_ZN7S3489C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3489C5;
extern VTBL_ENTRY _ZTI7S3489C5[];
extern  VTBL_ENTRY _ZTV7S3489C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3489C5;
extern VTBL_ENTRY _ZTI7S3489C5[];
extern  VTBL_ENTRY _ZTV7S3489C5[];
extern Class_Descriptor cd_S3489C6;
extern VTBL_ENTRY _ZTI7S3489C6[];
extern  VTBL_ENTRY _ZTV7S3489C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3489C6[];
static Base_Class bases_S3489C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(1328,1052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1344,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3489C5,    ABISELECT(1336,1056), //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1400,1100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3489C5,    ABISELECT(1392,1096), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3489C6,    ABISELECT(1392,1096), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //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 _ZTI7S3489C3[];
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
static  VTBL_ENTRY vtc_S3489C3[] = {
  ABISELECT(1392,1096),
  ABISELECT(1336,1056),
  ABISELECT(1328,1052),
  0,
  (VTBL_ENTRY)&(_ZTI7S3489C3[0]),
  0,
  0,
  0,
  ABISELECT(-1336,-1056),
  (VTBL_ENTRY)&(_ZTI7S3489C3[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
  0,
  0,
  0,
  ABISELECT(-64,-44),
  ABISELECT(-1392,-1096),
  (VTBL_ENTRY)&(_ZTI7S3489C3[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
};
extern VTBL_ENTRY _ZTV7S3489C3[];
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3489C6__7S3489C3[] = {
  ABISELECT(-64,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3489C6[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
};
static  VTT_ENTRY vtt_S3489C3[] = {
  {&(_ZTV7S3489C3[5]),  5,22},
  {&(_ZTV7S3489C3[10]),  10,22},
  {&(_ZTV7S3489C3[19]),  19,22},
  {&(_tg__ZTV7S3489C6__7S3489C3[3]),  3,6},
};
extern VTBL_ENTRY _ZTI7S3489C3[];
extern  VTBL_ENTRY _ZTV7S3489C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3489C3[];
Class_Descriptor cd_S3489C3 = {  "S3489C3", // class name
  bases_S3489C3, 6,
  &(vtc_S3489C3[0]), // expected_vtbl_contents
  &(vtt_S3489C3[0]), // expected_vtt_contents
  ABISELECT(1536,1208), // object size
  NSPAIRA(_ZTI7S3489C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3489C3),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3489C3),4, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3489C8  : virtual S3489C5 , virtual S3216C8_nt {
  ::S3489C5 s3489c8f0;
  long double s3489c8f1;
  void *s3489c8f2[2];
  ::S3489C5 s3489c8f3;
  virtual void  v4(); // _ZN7S3489C82v4Ev
  ~S3489C8(); // tgen
  S3489C8(); // tgen
};
//SIG(-1 S3489C8) C1{ VBC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC3 v1 FC2 FD Fp[2] FC2}


void  S3489C8 ::v4(){vfunc_called(this, "_ZN7S3489C82v4Ev");}
S3489C8 ::~S3489C8(){ note_dtor("S3489C8", this);} // tgen
S3489C8 ::S3489C8(){ note_ctor("S3489C8", this);} // tgen

static void Test_S3489C8()
{
  extern Class_Descriptor cd_S3489C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,38)];
    init_test(&cd_S3489C8, buf);
    S3489C8 *dp, &lv = *(dp=new (buf) S3489C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,148), "sizeof(S3489C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3489C8)");
    check_base_class_offset(lv, (S3216C8_nt*)(S3489C5*), ABISELECT(152,108), "S3489C8");
    check_base_class_offset(lv, (S3489C5*), ABISELECT(144,104), "S3489C8");
    /*is_ambiguous_... S3489C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(192,144), "S3489C8");
    check_field_offset(lv, s3489c8f0, ABISELECT(8,4), "S3489C8.s3489c8f0");
    check_field_offset(lv, s3489c8f1, ABISELECT(64,44), "S3489C8.s3489c8f1");
    check_field_offset(lv, s3489c8f2, ABISELECT(80,56), "S3489C8.s3489c8f2");
    check_field_offset(lv, s3489c8f3, ABISELECT(96,64), "S3489C8.s3489c8f3");
    test_class_info(&lv, &cd_S3489C8);
    dp->~S3489C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3489C8(Test_S3489C8, "S3489C8", ABISELECT(208,148));

#else // __cplusplus

extern void _ZN7S3489C8C1Ev();
extern void _ZN7S3489C8D1Ev();
Name_Map name_map_S3489C8[] = {
  NSPAIR(_ZN7S3489C8C1Ev),
  NSPAIR(_ZN7S3489C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3489C5;
extern VTBL_ENTRY _ZTI7S3489C5[];
extern  VTBL_ENTRY _ZTV7S3489C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S3489C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(152,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
    1, //immediately_derived
  0, 0},
  {&cd_S3489C5,    ABISELECT(144,104), //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(192,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3489C8[];
extern void _ZN7S3489C82v4Ev();
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
static  VTBL_ENTRY vtc_S3489C8[] = {
  ABISELECT(192,144),
  ABISELECT(144,104),
  0,
  (VTBL_ENTRY)&(_ZTI7S3489C8[0]),
  (VTBL_ENTRY)&_ZN7S3489C82v4Ev,
  0,
  0,
  0,
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S3489C8[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
};
extern VTBL_ENTRY _ZTV7S3489C8[];
static  VTT_ENTRY vtt_S3489C8[] = {
  {&(_ZTV7S3489C8[4]),  4,13},
  {&(_ZTV7S3489C8[10]),  10,13},
};
extern VTBL_ENTRY _ZTI7S3489C8[];
extern  VTBL_ENTRY _ZTV7S3489C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3489C8[];
Class_Descriptor cd_S3489C8 = {  "S3489C8", // class name
  bases_S3489C8, 3,
  &(vtc_S3489C8[0]), // expected_vtbl_contents
  &(vtt_S3489C8[0]), // expected_vtt_contents
  ABISELECT(208,148), // object size
  NSPAIRA(_ZTI7S3489C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3489C8),13, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3489C8),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  S3489C7  : virtual S3489C5 , virtual S3216C8_nt , S3489C8 , S3489C6 {
  void *s3489c7f0[2];
  long s3489c7f1;
  int s3489c7f2;
  ::S3489C5 s3489c7f3[5];
  virtual void  v5(); // _ZN7S3489C72v5Ev
  ~S3489C7(); // tgen
  S3489C7(); // tgen
};
//SIG(-1 S3489C7) C1{ VBC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC3 BC4{ VBC2 VBC3 v5 FC2 FD Fp[2] FC2} BC5{ BC2 VBC3 FD FL FC2 Fp Fs[3]} v1 Fp[2] Fl Fi FC2[5]}


void  S3489C7 ::v5(){vfunc_called(this, "_ZN7S3489C72v5Ev");}
S3489C7 ::~S3489C7(){ note_dtor("S3489C7", this);} // tgen
S3489C7 ::S3489C7(){ note_ctor("S3489C7", this);} // tgen

static void Test_S3489C7()
{
  extern Class_Descriptor cd_S3489C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(39,120)];
    init_test(&cd_S3489C7, buf);
    S3489C7 *dp, &lv = *(dp=new (buf) S3489C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(608,476), "sizeof(S3489C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3489C7)");
    /*is_ambiguous_... S3489C7::S3489C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S3489C5*), ABISELECT(560,436), "S3489C7");
    /*is_ambiguous_... S3489C7::S3489C5 */ AMB_check_base_class_offset(lv, (S3489C5*), ABISELECT(552,432), "S3489C7");
    check_base_class_offset(lv, (S3489C5*)(S3489C8*), ABISELECT(552,432), "S3489C7");
    /*is_ambiguous_... S3489C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(600,472), "S3489C7");
    /*is_ambiguous_... S3489C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S3489C8*), ABISELECT(600,472), "S3489C7");
    /*is_ambiguous_... S3489C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S3489C6*), ABISELECT(600,472), "S3489C7");
    check_base_class_offset(lv, (S3489C8*), 0, "S3489C7");
    check_base_class_offset(lv, (S3216C8_nt*)(S3489C5*)(S3489C6*), ABISELECT(152,108), "S3489C7");
    check_base_class_offset(lv, (S3489C5*)(S3489C6*), ABISELECT(144,104), "S3489C7");
    check_base_class_offset(lv, (S3489C6*), ABISELECT(144,104), "S3489C7");
    check_field_offset(lv, s3489c7f0, ABISELECT(280,216), "S3489C7.s3489c7f0");
    check_field_offset(lv, s3489c7f1, ABISELECT(296,224), "S3489C7.s3489c7f1");
    check_field_offset(lv, s3489c7f2, ABISELECT(304,228), "S3489C7.s3489c7f2");
    check_field_offset(lv, s3489c7f3, ABISELECT(312,232), "S3489C7.s3489c7f3");
    test_class_info(&lv, &cd_S3489C7);
    dp->~S3489C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3489C7(Test_S3489C7, "S3489C7", ABISELECT(608,476));

#else // __cplusplus

extern void _ZN7S3489C7C1Ev();
extern void _ZN7S3489C7D1Ev();
Name_Map name_map_S3489C7[] = {
  NSPAIR(_ZN7S3489C7C1Ev),
  NSPAIR(_ZN7S3489C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3489C5;
extern VTBL_ENTRY _ZTI7S3489C5[];
extern  VTBL_ENTRY _ZTV7S3489C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3489C8;
extern VTBL_ENTRY _ZTI7S3489C8[];
extern  VTBL_ENTRY _ZTV7S3489C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3489C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3489C5;
extern VTBL_ENTRY _ZTI7S3489C5[];
extern  VTBL_ENTRY _ZTV7S3489C5[];
extern Class_Descriptor cd_S3489C6;
extern VTBL_ENTRY _ZTI7S3489C6[];
extern  VTBL_ENTRY _ZTV7S3489C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3489C6[];
static Base_Class bases_S3489C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(560,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
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3489C5,    ABISELECT(552,432), //bcp->offset
    12, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(600,472), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3489C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(152,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3489C5,    ABISELECT(144,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3489C6,    ABISELECT(144,104), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3489C7[];
extern void _ZN7S3489C82v4Ev();
extern void _ZN7S3489C72v5Ev();
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
static  VTBL_ENTRY vtc_S3489C7[] = {
  ABISELECT(600,472),
  ABISELECT(552,432),
  0,
  (VTBL_ENTRY)&(_ZTI7S3489C7[0]),
  (VTBL_ENTRY)&_ZN7S3489C82v4Ev,
  (VTBL_ENTRY)&_ZN7S3489C72v5Ev,
  ABISELECT(456,368),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S3489C7[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
  0,
  0,
  0,
  ABISELECT(-552,-432),
  (VTBL_ENTRY)&(_ZTI7S3489C7[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
};
extern VTBL_ENTRY _ZTV7S3489C7[];
extern void _ZN7S3489C82v4Ev();
static  VTBL_ENTRY _tg__ZTV7S3489C8__7S3489C7[] = {
  ABISELECT(600,472),
  ABISELECT(552,432),
  0,
  (VTBL_ENTRY)&(_ZTI7S3489C8[0]),
  (VTBL_ENTRY)&_ZN7S3489C82v4Ev,
};
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3489C5__7S3489C8__7S3489C7[] = {
  0,
  0,
  0,
  ABISELECT(-552,-432),
  (VTBL_ENTRY)&(_ZTI7S3489C8[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
};
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3489C6__7S3489C7[] = {
  ABISELECT(456,368),
  0,
  (VTBL_ENTRY)&(_ZTI7S3489C6[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
};
static  VTT_ENTRY vtt_S3489C7[] = {
  {&(_ZTV7S3489C7[4]),  4,20},
  {&(_tg__ZTV7S3489C8__7S3489C7[4]),  4,5},
  {&(_tg__ZTV7S3489C5__7S3489C8__7S3489C7[5]),  5,8},
  {&(_tg__ZTV7S3489C6__7S3489C7[3]),  3,6},
  {&(_ZTV7S3489C7[17]),  17,20},
  {&(_ZTV7S3489C7[9]),  9,20},
};
extern VTBL_ENTRY _ZTI7S3489C7[];
extern  VTBL_ENTRY _ZTV7S3489C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3489C7[];
Class_Descriptor cd_S3489C7 = {  "S3489C7", // class name
  bases_S3489C7, 7,
  &(vtc_S3489C7[0]), // expected_vtbl_contents
  &(vtt_S3489C7[0]), // expected_vtt_contents
  ABISELECT(608,476), // object size
  NSPAIRA(_ZTI7S3489C7),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S3489C7),20, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3489C7),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  S3489C9  : S3489C5 {
  void *s3489c9f0[7];
  int s3489c9f1[2];
  __tsi64 s3489c9f2;
  int s3489c9f3;
  virtual  ~S3489C9(); // _ZN7S3489C9D1Ev
  virtual void  v6(); // _ZN7S3489C92v6Ev
  S3489C9(); // tgen
};
//SIG(-1 S3489C9) C1{ BC2{ BC3{ m Fi} v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} vd v1 Fp[7] Fi[2] FL Fi}


 S3489C9 ::~S3489C9(){ note_dtor("S3489C9", this);}
void  S3489C9 ::v6(){vfunc_called(this, "_ZN7S3489C92v6Ev");}
S3489C9 ::S3489C9(){ note_ctor("S3489C9", this);} // tgen

static void Test_S3489C9()
{
  extern Class_Descriptor cd_S3489C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,23)];
    init_test(&cd_S3489C9, buf);
    S3489C9 *dp, &lv = *(dp=new (buf) S3489C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,88), "sizeof(S3489C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3489C9)");
    check_base_class_offset(lv, (S3216C8_nt*)(S3489C5*), ABISELECT(8,4), "S3489C9");
    check_base_class_offset(lv, (S3489C5*), 0, "S3489C9");
    check_field_offset(lv, s3489c9f0, ABISELECT(48,40), "S3489C9.s3489c9f0");
    check_field_offset(lv, s3489c9f1, ABISELECT(104,68), "S3489C9.s3489c9f1");
    check_field_offset(lv, s3489c9f2, ABISELECT(112,76), "S3489C9.s3489c9f2");
    check_field_offset(lv, s3489c9f3, ABISELECT(120,84), "S3489C9.s3489c9f3");
    test_class_info(&lv, &cd_S3489C9);
    dp->~S3489C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3489C9(Test_S3489C9, "S3489C9", ABISELECT(128,88));

#else // __cplusplus

extern void _ZN7S3489C9C1Ev();
extern void _ZN7S3489C9D1Ev();
Name_Map name_map_S3489C9[] = {
  NSPAIR(_ZN7S3489C9C1Ev),
  NSPAIR(_ZN7S3489C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3489C5;
extern VTBL_ENTRY _ZTI7S3489C5[];
extern  VTBL_ENTRY _ZTV7S3489C5[];
static Base_Class bases_S3489C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S3489C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3489C9[];
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
extern void _ZN7S3489C9D1Ev();
extern void _ZN7S3489C9D0Ev();
extern void _ZN7S3489C92v6Ev();
static  VTBL_ENTRY vtc_S3489C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3489C9[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3489C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3489C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3489C92v6Ev,
};
extern VTBL_ENTRY _ZTI7S3489C9[];
extern  VTBL_ENTRY _ZTV7S3489C9[];
Class_Descriptor cd_S3489C9 = {  "S3489C9", // class name
  bases_S3489C9, 2,
  &(vtc_S3489C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,88), // object size
  NSPAIRA(_ZTI7S3489C9),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3489C9),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  S3489C2  : S3489C3 , S3216C8_nt , virtual S3489C7 , S3489C9 {
  int s3489c2f0;
  void *s3489c2f1;
  int s3489c2f2;
  virtual  ~S3489C2(); // _ZN7S3489C2D2Ev
  virtual void  v7(); // _ZN7S3489C22v7Ev
  S3489C2(); // tgen
};
//SIG(-1 S3489C2) C1{ BC2{ VBC3{ m Fi} VBC4{ BC3 v2 v3 v4 FC3[3] FC3[2] Fp Fs FC3} VBC5{ BC4 VBC3 FD FL FC4 Fp Fs[3]} Fp[2] Fi FC5[8] FD[9]} BC3 VBC6{ VBC4 VBC3 BC7{ VBC4 VBC3 v5 FC4 FD Fp[2] FC4} BC5 v6 Fp[2] Fl Fi FC4[5]} BC8{ BC4 vd v7 Fp[7] Fi[2] FL Fi} vd v1 Fi Fp Fi}


 S3489C2 ::~S3489C2(){ note_dtor("S3489C2", this);}
void  S3489C2 ::v7(){vfunc_called(this, "_ZN7S3489C22v7Ev");}
S3489C2 ::S3489C2(){ note_ctor("S3489C2", this);} // tgen

static void Test_S3489C2()
{
  extern Class_Descriptor cd_S3489C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(141,437)];
    init_test(&cd_S3489C2, buf);
    S3489C2 *dp, &lv = *(dp=new (buf) S3489C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2240,1744), "sizeof(S3489C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3489C2)");
    /*is_ambiguous_... S3489C3::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S3489C3*), ABISELECT(1476,1156), "S3489C2");
    /*is_ambiguous_... S3489C2::S3489C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S3489C6*), ABISELECT(1476,1156), "S3489C2");
    /*is_ambiguous_... S3489C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S3489C7*), ABISELECT(1476,1156), "S3489C2");
    /*is_ambiguous_... S3489C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S3489C8*)(S3489C7*), ABISELECT(1476,1156), "S3489C2");
    /*is_ambiguous_... S3489C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S3489C6*)(S3489C7*), ABISELECT(1476,1156), "S3489C2");
    /*is_ambiguous_... S3489C2::S3489C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S3489C5*), ABISELECT(1488,1164), "S3489C2");
    /*is_ambiguous_... S3489C3::S3489C5 */ AMB_check_base_class_offset(lv, (S3489C5*)(S3489C3*), ABISELECT(1480,1160), "S3489C2");
    /*is_ambiguous_... S3489C7::S3489C5 */ AMB_check_base_class_offset(lv, (S3489C5*)(S3489C7*), ABISELECT(1480,1160), "S3489C2");
    check_base_class_offset(lv, (S3489C5*)(S3489C8*)(S3489C7*), ABISELECT(1480,1160), "S3489C2");
    /*is_ambiguous_... S3489C2::S3489C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S3489C5*)(S3489C6*), ABISELECT(1544,1204), "S3489C2");
    /*is_ambiguous_... S3489C2::S3489C6 */ AMB_check_base_class_offset(lv, (S3489C5*)(S3489C6*), ABISELECT(1536,1200), "S3489C2");
    check_base_class_offset(lv, (S3489C6*)(S3489C3*), ABISELECT(1536,1200), "S3489C2");
    check_base_class_offset(lv, (S3489C3*), 0, "S3489C2");
    /*is_ambiguous_... S3489C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(1328,1052), "S3489C2");
    check_base_class_offset(lv, (S3489C8*)(S3489C7*), ABISELECT(1680,1312), "S3489C2");
    check_base_class_offset(lv, (S3216C8_nt*)(S3489C5*)(S3489C6*)(S3489C7*), ABISELECT(1832,1420), "S3489C2");
    check_base_class_offset(lv, (S3489C5*)(S3489C6*)(S3489C7*), ABISELECT(1824,1416), "S3489C2");
    check_base_class_offset(lv, (S3489C6*)(S3489C7*), ABISELECT(1824,1416), "S3489C2");
    check_base_class_offset(lv, (S3489C7*), ABISELECT(1680,1312), "S3489C2");
    check_base_class_offset(lv, (S3216C8_nt*)(S3489C5*)(S3489C9*), ABISELECT(1344,1060), "S3489C2");
    check_base_class_offset(lv, (S3489C5*)(S3489C9*), ABISELECT(1336,1056), "S3489C2");
    check_base_class_offset(lv, (S3489C9*), ABISELECT(1336,1056), "S3489C2");
    check_field_offset(lv, s3489c2f0, ABISELECT(1460,1144), "S3489C2.s3489c2f0");
    check_field_offset(lv, s3489c2f1, ABISELECT(1464,1148), "S3489C2.s3489c2f1");
    check_field_offset(lv, s3489c2f2, ABISELECT(1472,1152), "S3489C2.s3489c2f2");
    test_class_info(&lv, &cd_S3489C2);
    dp->~S3489C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3489C2(Test_S3489C2, "S3489C2", ABISELECT(2240,1744));

#else // __cplusplus

extern void _ZN7S3489C2C1Ev();
extern void _ZN7S3489C2D2Ev();
Name_Map name_map_S3489C2[] = {
  NSPAIR(_ZN7S3489C2C1Ev),
  NSPAIR(_ZN7S3489C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3489C5;
extern VTBL_ENTRY _ZTI7S3489C5[];
extern  VTBL_ENTRY _ZTV7S3489C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3489C5;
extern VTBL_ENTRY _ZTI7S3489C5[];
extern  VTBL_ENTRY _ZTV7S3489C5[];
extern Class_Descriptor cd_S3489C6;
extern VTBL_ENTRY _ZTI7S3489C6[];
extern  VTBL_ENTRY _ZTV7S3489C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3489C6[];
extern Class_Descriptor cd_S3489C3;
extern VTBL_ENTRY _ZTI7S3489C3[];
extern  VTBL_ENTRY _ZTV7S3489C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3489C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3489C8;
extern VTBL_ENTRY _ZTI7S3489C8[];
extern  VTBL_ENTRY _ZTV7S3489C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3489C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3489C5;
extern VTBL_ENTRY _ZTI7S3489C5[];
extern  VTBL_ENTRY _ZTV7S3489C5[];
extern Class_Descriptor cd_S3489C6;
extern VTBL_ENTRY _ZTI7S3489C6[];
extern  VTBL_ENTRY _ZTV7S3489C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3489C6[];
extern Class_Descriptor cd_S3489C7;
extern VTBL_ENTRY _ZTI7S3489C7[];
extern  VTBL_ENTRY _ZTV7S3489C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3489C7[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3489C5;
extern VTBL_ENTRY _ZTI7S3489C5[];
extern  VTBL_ENTRY _ZTV7S3489C5[];
extern Class_Descriptor cd_S3489C9;
extern VTBL_ENTRY _ZTI7S3489C9[];
extern  VTBL_ENTRY _ZTV7S3489C9[];
static Base_Class bases_S3489C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(1476,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
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1488,1164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3489C5,    ABISELECT(1480,1160), //bcp->offset
    17, //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
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1544,1204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3489C5,    ABISELECT(1536,1200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3489C6,    ABISELECT(1536,1200), //bcp->offset
    25, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3489C3,    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_S3216C8_nt,    ABISELECT(1328,1052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3489C8,    ABISELECT(1680,1312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1832,1420), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3489C5,    ABISELECT(1824,1416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3489C6,    ABISELECT(1824,1416), //bcp->offset
    45, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3489C7,    ABISELECT(1680,1312), //bcp->offset
    34, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(1344,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S3489C5,    ABISELECT(1336,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
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3489C9,    ABISELECT(1336,1056), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3489C2[];
extern void _ZN7S3489C2D1Ev();
extern void _ZN7S3489C2D0Ev();
extern void _ZN7S3489C22v7Ev();
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
extern void ABISELECT(_ZThn1336_N7S3489C2D1Ev,_ZThn1056_N7S3489C2D1Ev)();
extern void ABISELECT(_ZThn1336_N7S3489C2D0Ev,_ZThn1056_N7S3489C2D0Ev)();
extern void _ZN7S3489C92v6Ev();
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
extern void _ZN7S3489C82v4Ev();
extern void _ZN7S3489C72v5Ev();
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
static  VTBL_ENTRY vtc_S3489C2[] = {
  ABISELECT(1680,1312),
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  0,
  (VTBL_ENTRY)&(_ZTI7S3489C2[0]),
  (VTBL_ENTRY)&_ZN7S3489C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3489C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3489C22v7Ev,
  ABISELECT(-1336,-1056),
  (VTBL_ENTRY)&(_ZTI7S3489C2[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1336_N7S3489C2D1Ev,_ZThn1056_N7S3489C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1336_N7S3489C2D0Ev,_ZThn1056_N7S3489C2D0Ev),
  (VTBL_ENTRY)&_ZN7S3489C92v6Ev,
  0,
  0,
  0,
  ABISELECT(-1480,-1160),
  (VTBL_ENTRY)&(_ZTI7S3489C2[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(-1536,-1200),
  (VTBL_ENTRY)&(_ZTI7S3489C2[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  ABISELECT(-1680,-1312),
  (VTBL_ENTRY)&(_ZTI7S3489C2[0]),
  (VTBL_ENTRY)&_ZN7S3489C82v4Ev,
  (VTBL_ENTRY)&_ZN7S3489C72v5Ev,
  ABISELECT(-348,-260),
  ABISELECT(-1824,-1416),
  (VTBL_ENTRY)&(_ZTI7S3489C2[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
};
extern VTBL_ENTRY _ZTV7S3489C2[];
static  VTBL_ENTRY _tg__ZTV7S3489C3__7S3489C2[] = {
  ABISELECT(1536,1200),
  ABISELECT(1480,1160),
  ABISELECT(1476,1156),
  0,
  (VTBL_ENTRY)&(_ZTI7S3489C3[0]),
};
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3489C5__7S3489C3__7S3489C2[] = {
  0,
  0,
  0,
  ABISELECT(-1480,-1160),
  (VTBL_ENTRY)&(_ZTI7S3489C3[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
};
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3489C6__7S3489C3__7S3489C2[] = {
  0,
  0,
  0,
  ABISELECT(-60,-44),
  ABISELECT(-1536,-1200),
  (VTBL_ENTRY)&(_ZTI7S3489C3[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
};
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3489C6__7S3489C2[] = {
  ABISELECT(-60,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3489C6[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
};
extern void _ZN7S3489C82v4Ev();
extern void _ZN7S3489C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S3489C7__7S3489C2[] = {
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI7S3489C7[0]),
  (VTBL_ENTRY)&_ZN7S3489C82v4Ev,
  (VTBL_ENTRY)&_ZN7S3489C72v5Ev,
};
extern void _ZN7S3489C82v4Ev();
static  VTBL_ENTRY _tg__ZTV7S3489C87S3489C7__7S3489C2[] = {
  ABISELECT(-204,-156),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI7S3489C8[0]),
  (VTBL_ENTRY)&_ZN7S3489C82v4Ev,
};
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3489C5__7S3489C87S3489C7__7S3489C2[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI7S3489C8[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
};
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3489C67S3489C7__A1__7S3489C2[] = {
  ABISELECT(-348,-260),
  0,
  (VTBL_ENTRY)&(_ZTI7S3489C6[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
};
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3489C5__7S3489C7__7S3489C2[] = {
  0,
  0,
  0,
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI7S3489C7[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
};
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3489C6__7S3489C7__7S3489C2[] = {
  ABISELECT(-348,-260),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S3489C7[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
};
static  VTT_ENTRY vtt_S3489C2[] = {
  {&(_ZTV7S3489C2[6]),  6,51},
  {&(_tg__ZTV7S3489C3__7S3489C2[5]),  5,5},
  {&(_tg__ZTV7S3489C5__7S3489C3__7S3489C2[5]),  5,8},
  {&(_tg__ZTV7S3489C6__7S3489C3__7S3489C2[6]),  6,9},
  {&(_ZTV7S3489C2[22]),  22,51},
  {&(_ZTV7S3489C2[31]),  31,51},
  {&(_ZTV7S3489C2[43]),  43,51},
  {&(_ZTV7S3489C2[48]),  48,51},
  {&(_tg__ZTV7S3489C6__7S3489C2[3]),  3,6},
  {&(_tg__ZTV7S3489C7__7S3489C2[4]),  4,6},
  {&(_tg__ZTV7S3489C87S3489C7__7S3489C2[4]),  4,5},
  {&(_tg__ZTV7S3489C5__7S3489C87S3489C7__7S3489C2[5]),  5,8},
  {&(_tg__ZTV7S3489C67S3489C7__A1__7S3489C2[3]),  3,6},
  {&(_tg__ZTV7S3489C5__7S3489C7__7S3489C2[5]),  5,8},
  {&(_tg__ZTV7S3489C6__7S3489C7__7S3489C2[3]),  3,6},
};
extern VTBL_ENTRY _ZTI7S3489C2[];
extern  VTBL_ENTRY _ZTV7S3489C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3489C2[];
Class_Descriptor cd_S3489C2 = {  "S3489C2", // class name
  bases_S3489C2, 16,
  &(vtc_S3489C2[0]), // expected_vtbl_contents
  &(vtt_S3489C2[0]), // expected_vtt_contents
  ABISELECT(2240,1744), // object size
  NSPAIRA(_ZTI7S3489C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S3489C2),51, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3489C2),15, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3489C1  : S3489C2 {
  int s3489c1f0;
  __tsi64 s3489c1f1;
  long double s3489c1f2;
  int s3489c1f3;
  long double s3489c1f4;
  int s3489c1f5;
  long double s3489c1f6;
  char s3489c1f7:3;
  int s3489c1f8;
  virtual  ~S3489C1(); // _ZN7S3489C1D2Ev
  S3489C1(); // tgen
};
//SIG(1 S3489C1) C1{ BC2{ BC3{ VBC4{ m Fi} VBC5{ BC4 v1 v2 v3 FC4[3] FC4[2] Fp Fs FC4} VBC6{ BC5 VBC4 FD FL FC5 Fp Fs[3]} Fp[2] Fi FC6[8] FD[9]} BC4 VBC7{ VBC5 VBC4 BC8{ VBC5 VBC4 v4 FC5 FD Fp[2] FC5} BC6 v5 Fp[2] Fl Fi FC5[5]} BC9{ BC5 vd v6 Fp[7] Fi[2] FL Fi} vd v7 Fi Fp Fi} vd Fi FL FD Fi FD Fi FD Fc:3 Fi}


 S3489C1 ::~S3489C1(){ note_dtor("S3489C1", this);}
S3489C1 ::S3489C1(){ note_ctor("S3489C1", this);} // tgen

static void Test_S3489C1()
{
  extern Class_Descriptor cd_S3489C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(147,453)];
    init_test(&cd_S3489C1, buf);
    S3489C1 *dp, &lv = *(dp=new (buf) S3489C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2336,1808), "sizeof(S3489C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3489C1)");
    /*is_ambiguous_... S3489C3::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S3489C3*)(S3489C2*), ABISELECT(1576,1220), "S3489C1");
    /*is_ambiguous_... S3489C1::S3489C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S3489C6*), ABISELECT(1576,1220), "S3489C1");
    /*is_ambiguous_... S3489C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S3489C7*), ABISELECT(1576,1220), "S3489C1");
    /*is_ambiguous_... S3489C8::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S3489C8*)(S3489C7*), ABISELECT(1576,1220), "S3489C1");
    /*is_ambiguous_... S3489C6::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S3489C6*)(S3489C7*), ABISELECT(1576,1220), "S3489C1");
    /*is_ambiguous_... S3489C1::S3489C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S3489C5*), ABISELECT(1592,1228), "S3489C1");
    /*is_ambiguous_... S3489C3::S3489C5 */ AMB_check_base_class_offset(lv, (S3489C5*)(S3489C3*)(S3489C2*), ABISELECT(1584,1224), "S3489C1");
    /*is_ambiguous_... S3489C7::S3489C5 */ AMB_check_base_class_offset(lv, (S3489C5*)(S3489C7*), ABISELECT(1584,1224), "S3489C1");
    check_base_class_offset(lv, (S3489C5*)(S3489C8*)(S3489C7*), ABISELECT(1584,1224), "S3489C1");
    /*is_ambiguous_... S3489C1::S3489C6 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S3489C5*)(S3489C6*), ABISELECT(1640,1268), "S3489C1");
    /*is_ambiguous_... S3489C1::S3489C6 */ AMB_check_base_class_offset(lv, (S3489C5*)(S3489C6*), ABISELECT(1632,1264), "S3489C1");
    check_base_class_offset(lv, (S3489C6*)(S3489C3*)(S3489C2*), ABISELECT(1632,1264), "S3489C1");
    check_base_class_offset(lv, (S3489C3*)(S3489C2*), 0, "S3489C1");
    /*is_ambiguous_... S3489C2::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S3489C2*), ABISELECT(1328,1052), "S3489C1");
    check_base_class_offset(lv, (S3489C8*)(S3489C7*), ABISELECT(1776,1376), "S3489C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S3489C5*)(S3489C6*)(S3489C7*), ABISELECT(1928,1484), "S3489C1");
    check_base_class_offset(lv, (S3489C5*)(S3489C6*)(S3489C7*), ABISELECT(1920,1480), "S3489C1");
    check_base_class_offset(lv, (S3489C6*)(S3489C7*), ABISELECT(1920,1480), "S3489C1");
    check_base_class_offset(lv, (S3489C7*)(S3489C2*), ABISELECT(1776,1376), "S3489C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S3489C5*)(S3489C9*)(S3489C2*), ABISELECT(1344,1060), "S3489C1");
    check_base_class_offset(lv, (S3489C5*)(S3489C9*)(S3489C2*), ABISELECT(1336,1056), "S3489C1");
    check_base_class_offset(lv, (S3489C9*)(S3489C2*), ABISELECT(1336,1056), "S3489C1");
    check_base_class_offset(lv, (S3489C2*), 0, "S3489C1");
    check_field_offset(lv, s3489c1f0, ABISELECT(1476,1156), "S3489C1.s3489c1f0");
    check_field_offset(lv, s3489c1f1, ABISELECT(1480,1160), "S3489C1.s3489c1f1");
    check_field_offset(lv, s3489c1f2, ABISELECT(1488,1168), "S3489C1.s3489c1f2");
    check_field_offset(lv, s3489c1f3, ABISELECT(1504,1180), "S3489C1.s3489c1f3");
    check_field_offset(lv, s3489c1f4, ABISELECT(1520,1184), "S3489C1.s3489c1f4");
    check_field_offset(lv, s3489c1f5, ABISELECT(1536,1196), "S3489C1.s3489c1f5");
    check_field_offset(lv, s3489c1f6, ABISELECT(1552,1200), "S3489C1.s3489c1f6");
    set_bf_and_test(lv, s3489c1f7, ABISELECT(1568,1212), 0, 3, 1, "S3489C1");
    set_bf_and_test(lv, s3489c1f7, ABISELECT(1568,1212), 0, 3, hide_sll(1LL<<2), "S3489C1");
    check_field_offset(lv, s3489c1f8, ABISELECT(1572,1216), "S3489C1.s3489c1f8");
    test_class_info(&lv, &cd_S3489C1);
    dp->~S3489C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3489C1(Test_S3489C1, "S3489C1", ABISELECT(2336,1808));

#else // __cplusplus

extern void _ZN7S3489C1C1Ev();
extern void _ZN7S3489C1D2Ev();
Name_Map name_map_S3489C1[] = {
  NSPAIR(_ZN7S3489C1C1Ev),
  NSPAIR(_ZN7S3489C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3489C5;
extern VTBL_ENTRY _ZTI7S3489C5[];
extern  VTBL_ENTRY _ZTV7S3489C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3489C5;
extern VTBL_ENTRY _ZTI7S3489C5[];
extern  VTBL_ENTRY _ZTV7S3489C5[];
extern Class_Descriptor cd_S3489C6;
extern VTBL_ENTRY _ZTI7S3489C6[];
extern  VTBL_ENTRY _ZTV7S3489C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3489C6[];
extern Class_Descriptor cd_S3489C3;
extern VTBL_ENTRY _ZTI7S3489C3[];
extern  VTBL_ENTRY _ZTV7S3489C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3489C3[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3489C8;
extern VTBL_ENTRY _ZTI7S3489C8[];
extern  VTBL_ENTRY _ZTV7S3489C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3489C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3489C5;
extern VTBL_ENTRY _ZTI7S3489C5[];
extern  VTBL_ENTRY _ZTV7S3489C5[];
extern Class_Descriptor cd_S3489C6;
extern VTBL_ENTRY _ZTI7S3489C6[];
extern  VTBL_ENTRY _ZTV7S3489C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3489C6[];
extern Class_Descriptor cd_S3489C7;
extern VTBL_ENTRY _ZTI7S3489C7[];
extern  VTBL_ENTRY _ZTV7S3489C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3489C7[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3489C5;
extern VTBL_ENTRY _ZTI7S3489C5[];
extern  VTBL_ENTRY _ZTV7S3489C5[];
extern Class_Descriptor cd_S3489C9;
extern VTBL_ENTRY _ZTI7S3489C9[];
extern  VTBL_ENTRY _ZTV7S3489C9[];
extern Class_Descriptor cd_S3489C2;
extern VTBL_ENTRY _ZTI7S3489C2[];
extern  VTBL_ENTRY _ZTV7S3489C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3489C2[];
static Base_Class bases_S3489C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(1576,1220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3216C8_nt,    ABISELECT(1592,1228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3489C5,    ABISELECT(1584,1224), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1640,1268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3489C5,    ABISELECT(1632,1264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3489C6,    ABISELECT(1632,1264), //bcp->offset
    25, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3489C3,    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
    16, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1328,1052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3489C8,    ABISELECT(1776,1376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(1928,1484), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3489C5,    ABISELECT(1920,1480), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3489C6,    ABISELECT(1920,1480), //bcp->offset
    45, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3489C7,    ABISELECT(1776,1376), //bcp->offset
    34, //bcp->virtual_function_table_offset
    9, //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
    16, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(1344,1060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S3489C5,    ABISELECT(1336,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
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3489C9,    ABISELECT(1336,1056), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3489C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3489C1[];
extern void _ZN7S3489C1D1Ev();
extern void _ZN7S3489C1D0Ev();
extern void _ZN7S3489C22v7Ev();
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
extern void ABISELECT(_ZThn1336_N7S3489C1D1Ev,_ZThn1056_N7S3489C1D1Ev)();
extern void ABISELECT(_ZThn1336_N7S3489C1D0Ev,_ZThn1056_N7S3489C1D0Ev)();
extern void _ZN7S3489C92v6Ev();
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
extern void _ZN7S3489C82v4Ev();
extern void _ZN7S3489C72v5Ev();
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
static  VTBL_ENTRY vtc_S3489C1[] = {
  ABISELECT(1776,1376),
  ABISELECT(1632,1264),
  ABISELECT(1584,1224),
  ABISELECT(1576,1220),
  0,
  (VTBL_ENTRY)&(_ZTI7S3489C1[0]),
  (VTBL_ENTRY)&_ZN7S3489C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3489C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3489C22v7Ev,
  ABISELECT(-1336,-1056),
  (VTBL_ENTRY)&(_ZTI7S3489C1[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1336_N7S3489C1D1Ev,_ZThn1056_N7S3489C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1336_N7S3489C1D0Ev,_ZThn1056_N7S3489C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3489C92v6Ev,
  0,
  0,
  0,
  ABISELECT(-1584,-1224),
  (VTBL_ENTRY)&(_ZTI7S3489C1[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
  0,
  0,
  0,
  ABISELECT(-56,-44),
  ABISELECT(-1632,-1264),
  (VTBL_ENTRY)&(_ZTI7S3489C1[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-200,-156),
  ABISELECT(-192,-152),
  ABISELECT(-1776,-1376),
  (VTBL_ENTRY)&(_ZTI7S3489C1[0]),
  (VTBL_ENTRY)&_ZN7S3489C82v4Ev,
  (VTBL_ENTRY)&_ZN7S3489C72v5Ev,
  ABISELECT(-344,-260),
  ABISELECT(-1920,-1480),
  (VTBL_ENTRY)&(_ZTI7S3489C1[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
};
extern VTBL_ENTRY _ZTV7S3489C1[];
extern void _ZN7S3489C2D1Ev();
extern void _ZN7S3489C2D0Ev();
extern void _ZN7S3489C22v7Ev();
static  VTBL_ENTRY _tg__ZTV7S3489C2__7S3489C1[] = {
  ABISELECT(1776,1376),
  ABISELECT(1632,1264),
  ABISELECT(1584,1224),
  ABISELECT(1576,1220),
  0,
  (VTBL_ENTRY)&(_ZTI7S3489C2[0]),
  (VTBL_ENTRY)&_ZN7S3489C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3489C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3489C22v7Ev,
};
static  VTBL_ENTRY _tg__ZTV7S3489C37S3489C2__7S3489C1[] = {
  ABISELECT(1632,1264),
  ABISELECT(1584,1224),
  ABISELECT(1576,1220),
  0,
  (VTBL_ENTRY)&(_ZTI7S3489C3[0]),
};
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3489C5__7S3489C37S3489C2__7S3489C1[] = {
  0,
  0,
  0,
  ABISELECT(-1584,-1224),
  (VTBL_ENTRY)&(_ZTI7S3489C3[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
};
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3489C6__7S3489C37S3489C2__7S3489C1[] = {
  0,
  0,
  0,
  ABISELECT(-56,-44),
  ABISELECT(-1632,-1264),
  (VTBL_ENTRY)&(_ZTI7S3489C3[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
};
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3489C5__7S3489C2__7S3489C1[] = {
  0,
  0,
  0,
  ABISELECT(-1584,-1224),
  (VTBL_ENTRY)&(_ZTI7S3489C2[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
};
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3489C6__7S3489C2__7S3489C1[] = {
  0,
  0,
  0,
  ABISELECT(-56,-44),
  ABISELECT(-1632,-1264),
  (VTBL_ENTRY)&(_ZTI7S3489C2[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
};
extern void _ZN7S3489C82v4Ev();
extern void _ZN7S3489C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S3489C7__7S3489C2__7S3489C1[] = {
  ABISELECT(144,104),
  ABISELECT(144,104),
  ABISELECT(144,104),
  0,
  0,
  ABISELECT(-200,-156),
  ABISELECT(-192,-152),
  ABISELECT(-1776,-1376),
  (VTBL_ENTRY)&(_ZTI7S3489C2[0]),
  (VTBL_ENTRY)&_ZN7S3489C82v4Ev,
  (VTBL_ENTRY)&_ZN7S3489C72v5Ev,
};
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3489C67S3489C7__A1__7S3489C2__7S3489C1[] = {
  ABISELECT(-344,-260),
  ABISELECT(-1920,-1480),
  (VTBL_ENTRY)&(_ZTI7S3489C2[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
};
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3489C6__7S3489C1[] = {
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3489C6[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
};
extern void _ZN7S3489C82v4Ev();
extern void _ZN7S3489C72v5Ev();
static  VTBL_ENTRY _tg__ZTV7S3489C7__7S3489C1[] = {
  ABISELECT(-200,-156),
  ABISELECT(-192,-152),
  0,
  (VTBL_ENTRY)&(_ZTI7S3489C7[0]),
  (VTBL_ENTRY)&_ZN7S3489C82v4Ev,
  (VTBL_ENTRY)&_ZN7S3489C72v5Ev,
};
extern void _ZN7S3489C82v4Ev();
static  VTBL_ENTRY _tg__ZTV7S3489C87S3489C7__7S3489C1[] = {
  ABISELECT(-200,-156),
  ABISELECT(-192,-152),
  0,
  (VTBL_ENTRY)&(_ZTI7S3489C8[0]),
  (VTBL_ENTRY)&_ZN7S3489C82v4Ev,
};
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3489C5__7S3489C87S3489C7__7S3489C1[] = {
  0,
  0,
  0,
  ABISELECT(192,152),
  (VTBL_ENTRY)&(_ZTI7S3489C8[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
};
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3489C67S3489C7__A1__7S3489C1[] = {
  ABISELECT(-344,-260),
  0,
  (VTBL_ENTRY)&(_ZTI7S3489C6[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
};
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3489C5__7S3489C7__7S3489C1[] = {
  0,
  0,
  0,
  ABISELECT(192,152),
  (VTBL_ENTRY)&(_ZTI7S3489C7[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
};
extern void _ZN7S3489C52v1Ev();
extern void _ZN7S3489C52v2Ev();
extern void _ZN7S3489C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3489C6__7S3489C7__7S3489C1[] = {
  ABISELECT(-344,-260),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S3489C7[0]),
  (VTBL_ENTRY)&_ZN7S3489C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3489C52v3Ev,
};
static  VTT_ENTRY vtt_S3489C1[] = {
  {&(_ZTV7S3489C1[6]),  6,51},
  {&(_tg__ZTV7S3489C2__7S3489C1[6]),  6,9},
  {&(_tg__ZTV7S3489C37S3489C2__7S3489C1[5]),  5,5},
  {&(_tg__ZTV7S3489C5__7S3489C37S3489C2__7S3489C1[5]),  5,8},
  {&(_tg__ZTV7S3489C6__7S3489C37S3489C2__7S3489C1[6]),  6,9},
  {&(_tg__ZTV7S3489C5__7S3489C2__7S3489C1[5]),  5,8},
  {&(_tg__ZTV7S3489C6__7S3489C2__7S3489C1[6]),  6,9},
  {&(_tg__ZTV7S3489C7__7S3489C2__7S3489C1[9]),  9,11},
  {&(_tg__ZTV7S3489C67S3489C7__A1__7S3489C2__7S3489C1[3]),  3,6},
  {&(_ZTV7S3489C1[22]),  22,51},
  {&(_ZTV7S3489C1[31]),  31,51},
  {&(_ZTV7S3489C1[43]),  43,51},
  {&(_ZTV7S3489C1[48]),  48,51},
  {&(_tg__ZTV7S3489C6__7S3489C1[3]),  3,6},
  {&(_tg__ZTV7S3489C7__7S3489C1[4]),  4,6},
  {&(_tg__ZTV7S3489C87S3489C7__7S3489C1[4]),  4,5},
  {&(_tg__ZTV7S3489C5__7S3489C87S3489C7__7S3489C1[5]),  5,8},
  {&(_tg__ZTV7S3489C67S3489C7__A1__7S3489C1[3]),  3,6},
  {&(_tg__ZTV7S3489C5__7S3489C7__7S3489C1[5]),  5,8},
  {&(_tg__ZTV7S3489C6__7S3489C7__7S3489C1[3]),  3,6},
};
extern VTBL_ENTRY _ZTI7S3489C1[];
extern  VTBL_ENTRY _ZTV7S3489C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3489C1[];
Class_Descriptor cd_S3489C1 = {  "S3489C1", // class name
  bases_S3489C1, 17,
  &(vtc_S3489C1[0]), // expected_vtbl_contents
  &(vtt_S3489C1[0]), // expected_vtt_contents
  ABISELECT(2336,1808), // object size
  NSPAIRA(_ZTI7S3489C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3489C1),51, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3489C1),20, //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  S6643C2  {
  virtual  ~S6643C2(); // _ZN7S6643C2D1Ev
  virtual void  v28(); // _ZN7S6643C23v28Ev
  virtual void  v29(); // _ZN7S6643C23v29Ev
  virtual void  v30(); // _ZN7S6643C23v30Ev
  virtual void  v31(); // _ZN7S6643C23v31Ev
  virtual void  v32(); // _ZN7S6643C23v32Ev
  virtual void  v33(); // _ZN7S6643C23v33Ev
  virtual void  v34(); // _ZN7S6643C23v34Ev
  virtual void  v35(); // _ZN7S6643C23v35Ev
  virtual void  v36(); // _ZN7S6643C23v36Ev
  virtual void  v37(); // _ZN7S6643C23v37Ev
  virtual void  v38(); // _ZN7S6643C23v38Ev
  virtual void  v39(); // _ZN7S6643C23v39Ev
  virtual void  v40(); // _ZN7S6643C23v40Ev
  virtual void  v41(); // _ZN7S6643C23v41Ev
  virtual void  v42(); // _ZN7S6643C23v42Ev
  virtual void  v43(); // _ZN7S6643C23v43Ev
  virtual void  v44(); // _ZN7S6643C23v44Ev
  virtual void  v45(); // _ZN7S6643C23v45Ev
  virtual void  v46(); // _ZN7S6643C23v46Ev
  virtual void  v47(); // _ZN7S6643C23v47Ev
  virtual void  v48(); // _ZN7S6643C23v48Ev
  virtual void  v49(); // _ZN7S6643C23v49Ev
  virtual void  v50(); // _ZN7S6643C23v50Ev
  virtual void  v51(); // _ZN7S6643C23v51Ev
  virtual void  v52(); // _ZN7S6643C23v52Ev
  virtual void  v53(); // _ZN7S6643C23v53Ev
  virtual void  v54(); // _ZN7S6643C23v54Ev
  S6643C2(); // tgen
};
//SIG(-1 S6643C2) 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}


 S6643C2 ::~S6643C2(){ note_dtor("S6643C2", this);}
void  S6643C2 ::v28(){vfunc_called(this, "_ZN7S6643C23v28Ev");}
void  S6643C2 ::v29(){vfunc_called(this, "_ZN7S6643C23v29Ev");}
void  S6643C2 ::v30(){vfunc_called(this, "_ZN7S6643C23v30Ev");}
void  S6643C2 ::v31(){vfunc_called(this, "_ZN7S6643C23v31Ev");}
void  S6643C2 ::v32(){vfunc_called(this, "_ZN7S6643C23v32Ev");}
void  S6643C2 ::v33(){vfunc_called(this, "_ZN7S6643C23v33Ev");}
void  S6643C2 ::v34(){vfunc_called(this, "_ZN7S6643C23v34Ev");}
void  S6643C2 ::v35(){vfunc_called(this, "_ZN7S6643C23v35Ev");}
void  S6643C2 ::v36(){vfunc_called(this, "_ZN7S6643C23v36Ev");}
void  S6643C2 ::v37(){vfunc_called(this, "_ZN7S6643C23v37Ev");}
void  S6643C2 ::v38(){vfunc_called(this, "_ZN7S6643C23v38Ev");}
void  S6643C2 ::v39(){vfunc_called(this, "_ZN7S6643C23v39Ev");}
void  S6643C2 ::v40(){vfunc_called(this, "_ZN7S6643C23v40Ev");}
void  S6643C2 ::v41(){vfunc_called(this, "_ZN7S6643C23v41Ev");}
void  S6643C2 ::v42(){vfunc_called(this, "_ZN7S6643C23v42Ev");}
void  S6643C2 ::v43(){vfunc_called(this, "_ZN7S6643C23v43Ev");}
void  S6643C2 ::v44(){vfunc_called(this, "_ZN7S6643C23v44Ev");}
void  S6643C2 ::v45(){vfunc_called(this, "_ZN7S6643C23v45Ev");}
void  S6643C2 ::v46(){vfunc_called(this, "_ZN7S6643C23v46Ev");}
void  S6643C2 ::v47(){vfunc_called(this, "_ZN7S6643C23v47Ev");}
void  S6643C2 ::v48(){vfunc_called(this, "_ZN7S6643C23v48Ev");}
void  S6643C2 ::v49(){vfunc_called(this, "_ZN7S6643C23v49Ev");}
void  S6643C2 ::v50(){vfunc_called(this, "_ZN7S6643C23v50Ev");}
void  S6643C2 ::v51(){vfunc_called(this, "_ZN7S6643C23v51Ev");}
void  S6643C2 ::v52(){vfunc_called(this, "_ZN7S6643C23v52Ev");}
void  S6643C2 ::v53(){vfunc_called(this, "_ZN7S6643C23v53Ev");}
void  S6643C2 ::v54(){vfunc_called(this, "_ZN7S6643C23v54Ev");}
S6643C2 ::S6643C2(){ note_ctor("S6643C2", this);} // tgen

static void Test_S6643C2()
{
  extern Class_Descriptor cd_S6643C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6643C2, buf);
    S6643C2 *dp, &lv = *(dp=new (buf) S6643C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6643C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6643C2)");
    test_class_info(&lv, &cd_S6643C2);
    dp->~S6643C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6643C2(Test_S6643C2, "S6643C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6643C2C1Ev();
extern void _ZN7S6643C2D1Ev();
Name_Map name_map_S6643C2[] = {
  NSPAIR(_ZN7S6643C2C1Ev),
  NSPAIR(_ZN7S6643C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6643C2[];
extern void _ZN7S6643C2D1Ev();
extern void _ZN7S6643C2D0Ev();
extern void _ZN7S6643C23v28Ev();
extern void _ZN7S6643C23v29Ev();
extern void _ZN7S6643C23v30Ev();
extern void _ZN7S6643C23v31Ev();
extern void _ZN7S6643C23v32Ev();
extern void _ZN7S6643C23v33Ev();
extern void _ZN7S6643C23v34Ev();
extern void _ZN7S6643C23v35Ev();
extern void _ZN7S6643C23v36Ev();
extern void _ZN7S6643C23v37Ev();
extern void _ZN7S6643C23v38Ev();
extern void _ZN7S6643C23v39Ev();
extern void _ZN7S6643C23v40Ev();
extern void _ZN7S6643C23v41Ev();
extern void _ZN7S6643C23v42Ev();
extern void _ZN7S6643C23v43Ev();
extern void _ZN7S6643C23v44Ev();
extern void _ZN7S6643C23v45Ev();
extern void _ZN7S6643C23v46Ev();
extern void _ZN7S6643C23v47Ev();
extern void _ZN7S6643C23v48Ev();
extern void _ZN7S6643C23v49Ev();
extern void _ZN7S6643C23v50Ev();
extern void _ZN7S6643C23v51Ev();
extern void _ZN7S6643C23v52Ev();
extern void _ZN7S6643C23v53Ev();
extern void _ZN7S6643C23v54Ev();
static  VTBL_ENTRY vtc_S6643C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6643C2[0]),
  (VTBL_ENTRY)&_ZN7S6643C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6643C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v29Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v30Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v31Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v32Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v33Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v51Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v52Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v53Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v54Ev,
};
extern VTBL_ENTRY _ZTI7S6643C2[];
extern  VTBL_ENTRY _ZTV7S6643C2[];
Class_Descriptor cd_S6643C2 = {  "S6643C2", // class name
  0,0,//no base classes
  &(vtc_S6643C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6643C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6643C2),31, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6643C1  : S6643C2 {
  void *s6643c1f0;
  ::S6644C48 s6643c1f1;
  ::S6644C43 s6643c1f2;
  ::S3216C13_nt s6643c1f3;
  int s6643c1f4;
  virtual void  v1(); // _ZN7S6643C12v1Ev
  virtual void  v2(); // _ZN7S6643C12v2Ev
  virtual void  v3(); // _ZN7S6643C12v3Ev
  virtual void  v4(); // _ZN7S6643C12v4Ev
  virtual void  v5(); // _ZN7S6643C12v5Ev
  virtual void  v6(); // _ZN7S6643C12v6Ev
  virtual void  v7(); // _ZN7S6643C12v7Ev
  virtual void  v8(); // _ZN7S6643C12v8Ev
  virtual void  v9(); // _ZN7S6643C12v9Ev
  virtual void  v10(); // _ZN7S6643C13v10Ev
  virtual void  v11(); // _ZN7S6643C13v11Ev
  virtual void  v12(); // _ZN7S6643C13v12Ev
  virtual void  v13(); // _ZN7S6643C13v13Ev
  virtual void  v14(); // _ZN7S6643C13v14Ev
  virtual void  v15(); // _ZN7S6643C13v15Ev
  virtual void  v16(); // _ZN7S6643C13v16Ev
  virtual void  v17(); // _ZN7S6643C13v17Ev
  virtual void  v18(); // _ZN7S6643C13v18Ev
  virtual void  v19(); // _ZN7S6643C13v19Ev
  virtual void  v20(); // _ZN7S6643C13v20Ev
  virtual void  v21(); // _ZN7S6643C13v21Ev
  virtual void  v22(); // _ZN7S6643C13v22Ev
  virtual void  v23(); // _ZN7S6643C13v23Ev
  virtual void  v24(); // _ZN7S6643C13v24Ev
  virtual void  v25(); // _ZN7S6643C13v25Ev
  virtual void  v26(); // _ZN7S6643C13v26Ev
  virtual void  v27(); // _ZN7S6643C13v27Ev
  ~S6643C1(); // tgen
  S6643C1(); // tgen
};
//SIG(1 S6643C1) C1{ BC2{ vd v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 Fp FC3{ BC4{ m Fp Fi[2]}} FC5{ BC4} FC6{ m Fi[3]} Fi}


void  S6643C1 ::v1(){vfunc_called(this, "_ZN7S6643C12v1Ev");}
void  S6643C1 ::v2(){vfunc_called(this, "_ZN7S6643C12v2Ev");}
void  S6643C1 ::v3(){vfunc_called(this, "_ZN7S6643C12v3Ev");}
void  S6643C1 ::v4(){vfunc_called(this, "_ZN7S6643C12v4Ev");}
void  S6643C1 ::v5(){vfunc_called(this, "_ZN7S6643C12v5Ev");}
void  S6643C1 ::v6(){vfunc_called(this, "_ZN7S6643C12v6Ev");}
void  S6643C1 ::v7(){vfunc_called(this, "_ZN7S6643C12v7Ev");}
void  S6643C1 ::v8(){vfunc_called(this, "_ZN7S6643C12v8Ev");}
void  S6643C1 ::v9(){vfunc_called(this, "_ZN7S6643C12v9Ev");}
void  S6643C1 ::v10(){vfunc_called(this, "_ZN7S6643C13v10Ev");}
void  S6643C1 ::v11(){vfunc_called(this, "_ZN7S6643C13v11Ev");}
void  S6643C1 ::v12(){vfunc_called(this, "_ZN7S6643C13v12Ev");}
void  S6643C1 ::v13(){vfunc_called(this, "_ZN7S6643C13v13Ev");}
void  S6643C1 ::v14(){vfunc_called(this, "_ZN7S6643C13v14Ev");}
void  S6643C1 ::v15(){vfunc_called(this, "_ZN7S6643C13v15Ev");}
void  S6643C1 ::v16(){vfunc_called(this, "_ZN7S6643C13v16Ev");}
void  S6643C1 ::v17(){vfunc_called(this, "_ZN7S6643C13v17Ev");}
void  S6643C1 ::v18(){vfunc_called(this, "_ZN7S6643C13v18Ev");}
void  S6643C1 ::v19(){vfunc_called(this, "_ZN7S6643C13v19Ev");}
void  S6643C1 ::v20(){vfunc_called(this, "_ZN7S6643C13v20Ev");}
void  S6643C1 ::v21(){vfunc_called(this, "_ZN7S6643C13v21Ev");}
void  S6643C1 ::v22(){vfunc_called(this, "_ZN7S6643C13v22Ev");}
void  S6643C1 ::v23(){vfunc_called(this, "_ZN7S6643C13v23Ev");}
void  S6643C1 ::v24(){vfunc_called(this, "_ZN7S6643C13v24Ev");}
void  S6643C1 ::v25(){vfunc_called(this, "_ZN7S6643C13v25Ev");}
void  S6643C1 ::v26(){vfunc_called(this, "_ZN7S6643C13v26Ev");}
void  S6643C1 ::v27(){vfunc_called(this, "_ZN7S6643C13v27Ev");}
S6643C1 ::~S6643C1(){ note_dtor("S6643C1", this);} // tgen
S6643C1 ::S6643C1(){ note_ctor("S6643C1", this);} // tgen

static void Test_S6643C1()
{
  extern Class_Descriptor cd_S6643C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,13)];
    init_test(&cd_S6643C1, buf);
    S6643C1 *dp, &lv = *(dp=new (buf) S6643C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,48), "sizeof(S6643C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6643C1)");
    check_base_class_offset(lv, (S6643C2*), 0, "S6643C1");
    check_field_offset(lv, s6643c1f0, ABISELECT(8,4), "S6643C1.s6643c1f0");
    check_field_offset(lv, s6643c1f1, ABISELECT(16,8), "S6643C1.s6643c1f1");
    check_field_offset(lv, s6643c1f2, ABISELECT(32,20), "S6643C1.s6643c1f2");
    check_field_offset(lv, s6643c1f3, ABISELECT(48,32), "S6643C1.s6643c1f3");
    check_field_offset(lv, s6643c1f4, ABISELECT(60,44), "S6643C1.s6643c1f4");
    test_class_info(&lv, &cd_S6643C1);
    dp->~S6643C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6643C1(Test_S6643C1, "S6643C1", ABISELECT(64,48));

#else // __cplusplus

extern void _ZN7S6643C1C1Ev();
extern void _ZN7S6643C1D1Ev();
Name_Map name_map_S6643C1[] = {
  NSPAIR(_ZN7S6643C1C1Ev),
  NSPAIR(_ZN7S6643C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6643C2;
extern VTBL_ENTRY _ZTI7S6643C2[];
extern  VTBL_ENTRY _ZTV7S6643C2[];
static Base_Class bases_S6643C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6643C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6643C1[];
extern void _ZN7S6643C1D1Ev();
extern void _ZN7S6643C1D0Ev();
extern void _ZN7S6643C23v28Ev();
extern void _ZN7S6643C23v29Ev();
extern void _ZN7S6643C23v30Ev();
extern void _ZN7S6643C23v31Ev();
extern void _ZN7S6643C23v32Ev();
extern void _ZN7S6643C23v33Ev();
extern void _ZN7S6643C23v34Ev();
extern void _ZN7S6643C23v35Ev();
extern void _ZN7S6643C23v36Ev();
extern void _ZN7S6643C23v37Ev();
extern void _ZN7S6643C23v38Ev();
extern void _ZN7S6643C23v39Ev();
extern void _ZN7S6643C23v40Ev();
extern void _ZN7S6643C23v41Ev();
extern void _ZN7S6643C23v42Ev();
extern void _ZN7S6643C23v43Ev();
extern void _ZN7S6643C23v44Ev();
extern void _ZN7S6643C23v45Ev();
extern void _ZN7S6643C23v46Ev();
extern void _ZN7S6643C23v47Ev();
extern void _ZN7S6643C23v48Ev();
extern void _ZN7S6643C23v49Ev();
extern void _ZN7S6643C23v50Ev();
extern void _ZN7S6643C23v51Ev();
extern void _ZN7S6643C23v52Ev();
extern void _ZN7S6643C23v53Ev();
extern void _ZN7S6643C23v54Ev();
extern void _ZN7S6643C12v1Ev();
extern void _ZN7S6643C12v2Ev();
extern void _ZN7S6643C12v3Ev();
extern void _ZN7S6643C12v4Ev();
extern void _ZN7S6643C12v5Ev();
extern void _ZN7S6643C12v6Ev();
extern void _ZN7S6643C12v7Ev();
extern void _ZN7S6643C12v8Ev();
extern void _ZN7S6643C12v9Ev();
extern void _ZN7S6643C13v10Ev();
extern void _ZN7S6643C13v11Ev();
extern void _ZN7S6643C13v12Ev();
extern void _ZN7S6643C13v13Ev();
extern void _ZN7S6643C13v14Ev();
extern void _ZN7S6643C13v15Ev();
extern void _ZN7S6643C13v16Ev();
extern void _ZN7S6643C13v17Ev();
extern void _ZN7S6643C13v18Ev();
extern void _ZN7S6643C13v19Ev();
extern void _ZN7S6643C13v20Ev();
extern void _ZN7S6643C13v21Ev();
extern void _ZN7S6643C13v22Ev();
extern void _ZN7S6643C13v23Ev();
extern void _ZN7S6643C13v24Ev();
extern void _ZN7S6643C13v25Ev();
extern void _ZN7S6643C13v26Ev();
extern void _ZN7S6643C13v27Ev();
static  VTBL_ENTRY vtc_S6643C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6643C1[0]),
  (VTBL_ENTRY)&_ZN7S6643C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6643C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v29Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v30Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v31Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v32Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v33Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v51Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v52Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v53Ev,
  (VTBL_ENTRY)&_ZN7S6643C23v54Ev,
  (VTBL_ENTRY)&_ZN7S6643C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6643C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6643C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6643C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6643C12v5Ev,
  (VTBL_ENTRY)&_ZN7S6643C12v6Ev,
  (VTBL_ENTRY)&_ZN7S6643C12v7Ev,
  (VTBL_ENTRY)&_ZN7S6643C12v8Ev,
  (VTBL_ENTRY)&_ZN7S6643C12v9Ev,
  (VTBL_ENTRY)&_ZN7S6643C13v10Ev,
  (VTBL_ENTRY)&_ZN7S6643C13v11Ev,
  (VTBL_ENTRY)&_ZN7S6643C13v12Ev,
  (VTBL_ENTRY)&_ZN7S6643C13v13Ev,
  (VTBL_ENTRY)&_ZN7S6643C13v14Ev,
  (VTBL_ENTRY)&_ZN7S6643C13v15Ev,
  (VTBL_ENTRY)&_ZN7S6643C13v16Ev,
  (VTBL_ENTRY)&_ZN7S6643C13v17Ev,
  (VTBL_ENTRY)&_ZN7S6643C13v18Ev,
  (VTBL_ENTRY)&_ZN7S6643C13v19Ev,
  (VTBL_ENTRY)&_ZN7S6643C13v20Ev,
  (VTBL_ENTRY)&_ZN7S6643C13v21Ev,
  (VTBL_ENTRY)&_ZN7S6643C13v22Ev,
  (VTBL_ENTRY)&_ZN7S6643C13v23Ev,
  (VTBL_ENTRY)&_ZN7S6643C13v24Ev,
  (VTBL_ENTRY)&_ZN7S6643C13v25Ev,
  (VTBL_ENTRY)&_ZN7S6643C13v26Ev,
  (VTBL_ENTRY)&_ZN7S6643C13v27Ev,
};
extern VTBL_ENTRY _ZTI7S6643C1[];
extern  VTBL_ENTRY _ZTV7S6643C1[];
Class_Descriptor cd_S6643C1 = {  "S6643C1", // class name
  bases_S6643C1, 1,
  &(vtc_S6643C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,48), // object size
  NSPAIRA(_ZTI7S6643C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6643C1),58, //virtual function table var
  2, // 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  S7246C4  {
  int s7246c4f0[10];
  void  mf7246c4(); // _ZN7S7246C48mf7246c4Ev
};
//SIG(-1 S7246C4) C1{ m Fi[10]}


void  S7246C4 ::mf7246c4(){}

static void Test_S7246C4()
{
  {
    init_simple_test("S7246C4");
    S7246C4 lv;
    check2(sizeof(lv), 40, "sizeof(S7246C4)");
    check2(__alignof__(lv), 4, "__alignof__(S7246C4)");
    check_field_offset(lv, s7246c4f0, 0, "S7246C4.s7246c4f0");
  }
}
static Arrange_To_Call_Me vS7246C4(Test_S7246C4, "S7246C4", 40);

#else // __cplusplus

extern VTBL_ENTRY _ZTI7S7246C4[];
VTBL_ENTRY *P__ZTI7S7246C4 = _ZTI7S7246C4; 
Class_Descriptor cd_S7246C4 = {  "S7246C4", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  40, // object size
  NSPAIRA(_ZTI7S7246C4),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  S7246C5  : S7246C4 {
};
//SIG(-1 S7246C5) C1{ BC2{ m Fi[10]}}



static void Test_S7246C5()
{
  extern Class_Descriptor cd_S7246C5;
  void *lvp;
  {
    int buf[11];
    init_test(&cd_S7246C5, buf);
    S7246C5 &lv = *(new (buf) S7246C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), 40, "sizeof(S7246C5)");
    check2(__alignof__(lv), 4, "__alignof__(S7246C5)");
    check_base_class_offset(lv, (S7246C4*), 0, "S7246C5");
    test_class_info(&lv, &cd_S7246C5);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7246C5(Test_S7246C5, "S7246C5", 40);

#else // __cplusplus

extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
static Base_Class bases_S7246C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7246C5[];
Class_Descriptor cd_S7246C5 = {  "S7246C5", // class name
  bases_S7246C5, 1,
  0, // no vftv
  0, //no vtt
  40, // object size
  NSPAIRA(_ZTI7S7246C5),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  S7246C7  : virtual S7246C4 {
  virtual  ~S7246C7(); // _ZN7S7246C7D2Ev
  S7246C7(); // tgen
};
//SIG(-1 S7246C7) C1{ VBC2{ m Fi[10]} vd}


 S7246C7 ::~S7246C7(){ note_dtor("S7246C7", this);}
S7246C7 ::S7246C7(){ note_ctor("S7246C7", this);} // tgen

static void Test_S7246C7()
{
  extern Class_Descriptor cd_S7246C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S7246C7, buf);
    S7246C7 *dp, &lv = *(dp=new (buf) S7246C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S7246C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7246C7)");
    check_base_class_offset(lv, (S7246C4*), ABISELECT(8,4), "S7246C7");
    test_class_info(&lv, &cd_S7246C7);
    dp->~S7246C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7246C7(Test_S7246C7, "S7246C7", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN7S7246C7C1Ev();
extern void _ZN7S7246C7D2Ev();
Name_Map name_map_S7246C7[] = {
  NSPAIR(_ZN7S7246C7C1Ev),
  NSPAIR(_ZN7S7246C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
static Base_Class bases_S7246C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S7246C7[];
extern void _ZN7S7246C7D1Ev();
extern void _ZN7S7246C7D0Ev();
static  VTBL_ENTRY vtc_S7246C7[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7246C7[0]),
  (VTBL_ENTRY)&_ZN7S7246C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7246C7D0Ev,
};
extern VTBL_ENTRY _ZTV7S7246C7[];
static  VTT_ENTRY vtt_S7246C7[] = {
  {&(_ZTV7S7246C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7246C7[];
extern  VTBL_ENTRY _ZTV7S7246C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7246C7[];
Class_Descriptor cd_S7246C7 = {  "S7246C7", // class name
  bases_S7246C7, 1,
  &(vtc_S7246C7[0]), // expected_vtbl_contents
  &(vtt_S7246C7[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI7S7246C7),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7246C7),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7246C7),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  S7246C6  : virtual S7246C4 , virtual S7246C7 {
  virtual  ~S7246C6(); // _ZN7S7246C6D2Ev
  S7246C6(); // tgen
};
//SIG(-1 S7246C6) C1{ VBC2{ m Fi[10]} VBC3{ VBC2 vd} vd}


 S7246C6 ::~S7246C6(){ note_dtor("S7246C6", this);}
S7246C6 ::S7246C6(){ note_ctor("S7246C6", this);} // tgen

static void Test_S7246C6()
{
  extern Class_Descriptor cd_S7246C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S7246C6, buf);
    S7246C6 *dp, &lv = *(dp=new (buf) S7246C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S7246C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7246C6)");
    check_base_class_offset(lv, (S7246C4*), ABISELECT(8,4), "S7246C6");
    check_base_class_offset(lv, (S7246C4*)(S7246C7*), ABISELECT(8,4), "S7246C6");
    check_base_class_offset(lv, (S7246C7*), 0, "S7246C6");
    test_class_info(&lv, &cd_S7246C6);
    dp->~S7246C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7246C6(Test_S7246C6, "S7246C6", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN7S7246C6C1Ev();
extern void _ZN7S7246C6D2Ev();
Name_Map name_map_S7246C6[] = {
  NSPAIR(_ZN7S7246C6C1Ev),
  NSPAIR(_ZN7S7246C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C7;
extern VTBL_ENTRY _ZTI7S7246C7[];
extern  VTBL_ENTRY _ZTV7S7246C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7246C7[];
static Base_Class bases_S7246C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7246C6[];
extern void _ZN7S7246C6D1Ev();
extern void _ZN7S7246C6D0Ev();
static  VTBL_ENTRY vtc_S7246C6[] = {
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7246C6[0]),
  (VTBL_ENTRY)&_ZN7S7246C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7246C6D0Ev,
};
extern VTBL_ENTRY _ZTV7S7246C6[];
extern void _ZN7S7246C7D1Ev();
extern void _ZN7S7246C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7246C7__7S7246C6[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7246C7[0]),
  (VTBL_ENTRY)&_ZN7S7246C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7246C7D0Ev,
};
static  VTT_ENTRY vtt_S7246C6[] = {
  {&(_ZTV7S7246C6[5]),  5,7},
  {&(_ZTV7S7246C6[5]),  5,7},
  {&(_tg__ZTV7S7246C7__7S7246C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7246C6[];
extern  VTBL_ENTRY _ZTV7S7246C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7246C6[];
Class_Descriptor cd_S7246C6 = {  "S7246C6", // class name
  bases_S7246C6, 2,
  &(vtc_S7246C6[0]), // expected_vtbl_contents
  &(vtt_S7246C6[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI7S7246C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7246C6),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7246C6),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  S7246C8  : S7246C4 {
  int s7246c8f0;
};
//SIG(-1 S7246C8) C1{ BC2{ m Fi[10]} Fi}



static void Test_S7246C8()
{
  extern Class_Descriptor cd_S7246C8;
  void *lvp;
  {
    int buf[12];
    init_test(&cd_S7246C8, buf);
    S7246C8 &lv = *(new (buf) S7246C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), 44, "sizeof(S7246C8)");
    check2(__alignof__(lv), 4, "__alignof__(S7246C8)");
    check_base_class_offset(lv, (S7246C4*), 0, "S7246C8");
    check_field_offset(lv, s7246c8f0, 40, "S7246C8.s7246c8f0");
    test_class_info(&lv, &cd_S7246C8);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7246C8(Test_S7246C8, "S7246C8", 44);

#else // __cplusplus

extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
static Base_Class bases_S7246C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7246C8[];
Class_Descriptor cd_S7246C8 = {  "S7246C8", // class name
  bases_S7246C8, 1,
  0, // no vftv
  0, //no vtt
  44, // object size
  NSPAIRA(_ZTI7S7246C8),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  S7246C3  : S7246C4 , S7246C5 , virtual S7246C6 , S7246C8 {
  ~S7246C3(); // tgen
  S7246C3(); // tgen
};
//SIG(-1 S7246C3) C1{ BC2{ m Fi[10]} BC3{ BC2} VBC4{ VBC2 VBC5{ VBC2 vd} vd} BC6{ BC2 Fi}}


S7246C3 ::~S7246C3(){ note_dtor("S7246C3", this);} // tgen
S7246C3 ::S7246C3(){ note_ctor("S7246C3", this);} // tgen

static void Test_S7246C3()
{
  extern Class_Descriptor cd_S7246C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,43)];
    init_test(&cd_S7246C3, buf);
    S7246C3 *dp, &lv = *(dp=new (buf) S7246C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,168), "sizeof(S7246C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7246C3)");
    /*is_ambiguous_... S7246C3::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*), ABISELECT(8,4), "S7246C3");
    check_base_class_offset(lv, (S7246C4*)(S7246C5*), ABISELECT(48,44), "S7246C3");
    check_base_class_offset(lv, (S7246C5*), ABISELECT(48,44), "S7246C3");
    check_base_class_offset(lv, (S7246C4*)(S7246C6*), ABISELECT(132,128), "S7246C3");
    check_base_class_offset(lv, (S7246C4*)(S7246C7*), ABISELECT(132,128), "S7246C3");
    check_base_class_offset(lv, (S7246C7*)(S7246C6*), 0, "S7246C3");
    check_base_class_offset(lv, (S7246C6*), 0, "S7246C3");
    check_base_class_offset(lv, (S7246C4*)(S7246C8*), ABISELECT(88,84), "S7246C3");
    check_base_class_offset(lv, (S7246C8*), ABISELECT(88,84), "S7246C3");
    test_class_info(&lv, &cd_S7246C3);
    dp->~S7246C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7246C3(Test_S7246C3, "S7246C3", ABISELECT(176,168));

#else // __cplusplus

extern void _ZN7S7246C3C1Ev();
extern void _ZN7S7246C3D1Ev();
Name_Map name_map_S7246C3[] = {
  NSPAIR(_ZN7S7246C3C1Ev),
  NSPAIR(_ZN7S7246C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C5;
extern VTBL_ENTRY _ZTI7S7246C5[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C7;
extern VTBL_ENTRY _ZTI7S7246C7[];
extern  VTBL_ENTRY _ZTV7S7246C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7246C7[];
extern Class_Descriptor cd_S7246C6;
extern VTBL_ENTRY _ZTI7S7246C6[];
extern  VTBL_ENTRY _ZTV7S7246C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7246C6[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C8;
extern VTBL_ENTRY _ZTI7S7246C8[];
static Base_Class bases_S7246C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7246C4,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7246C5,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7246C4,    ABISELECT(132,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
    4, //immediately_derived
  0, 1},
  {&cd_S7246C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //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_S7246C6,    0, //bcp->offset
    -1, //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},
  {&cd_S7246C4,    ABISELECT(88,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
    7, //immediately_derived
  0, 0},
  {&cd_S7246C8,    ABISELECT(88,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7246C3[];
extern void _ZN7S7246C3D1Ev();
extern void _ZN7S7246C3D0Ev();
static  VTBL_ENTRY vtc_S7246C3[] = {
  0,
  0,
  0,
  ABISELECT(132,128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7246C3[0]),
  (VTBL_ENTRY)&_ZN7S7246C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7246C3D0Ev,
};
extern VTBL_ENTRY _ZTV7S7246C3[];
extern void ABISELECT(_ZTv0_n32_N7S7246C6D1Ev,_ZTv0_n16_N7S7246C6D1Ev)();
extern void _ZN7S7246C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7246C6D0Ev,_ZTv0_n16_N7S7246C6D0Ev)();
extern void _ZN7S7246C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7246C6__7S7246C3[] = {
  0,
  0,
  ABISELECT(132,128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7246C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C6D1Ev,_ZTv0_n16_N7S7246C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C6D0Ev,_ZTv0_n16_N7S7246C6D0Ev),
};
extern void _ZN7S7246C7D1Ev();
extern void _ZN7S7246C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7246C7__7S7246C3[] = {
  ABISELECT(132,128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7246C7[0]),
  (VTBL_ENTRY)&_ZN7S7246C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7246C7D0Ev,
};
static  VTT_ENTRY vtt_S7246C3[] = {
  {&(_ZTV7S7246C3[6]),  6,8},
  {&(_ZTV7S7246C3[6]),  6,8},
  {&(_ZTV7S7246C3[6]),  6,8},
  {&(_tg__ZTV7S7246C6__7S7246C3[5]),  5,7},
  {&(_tg__ZTV7S7246C6__7S7246C3[5]),  5,7},
  {&(_tg__ZTV7S7246C7__7S7246C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7246C3[];
extern  VTBL_ENTRY _ZTV7S7246C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7246C3[];
static VTBL_ENTRY alt_thunk_names92[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C6D0Ev,_ZTv0_n16_N7S7246C6D0Ev), // 
  (VTBL_ENTRY)_ZN7S7246C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C6D1Ev,_ZTv0_n16_N7S7246C6D1Ev), // 
  (VTBL_ENTRY)_ZN7S7246C6D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7246C3 = {  "S7246C3", // class name
  bases_S7246C3, 8,
  &(vtc_S7246C3[0]), // expected_vtbl_contents
  &(vtt_S7246C3[0]), // expected_vtt_contents
  ABISELECT(176,168), // object size
  NSPAIRA(_ZTI7S7246C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7246C3),8, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7246C3),6, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names92,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7246C10  : S7246C8 {
  ::S7246C8 s7246c10f0;
};
//SIG(-1 S7246C10) C1{ BC2{ BC3{ m Fi[10]} Fi} FC2}



static void Test_S7246C10()
{
  extern Class_Descriptor cd_S7246C10;
  void *lvp;
  {
    int buf[23];
    init_test(&cd_S7246C10, buf);
    S7246C10 &lv = *(new (buf) S7246C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), 88, "sizeof(S7246C10)");
    check2(__alignof__(lv), 4, "__alignof__(S7246C10)");
    check_base_class_offset(lv, (S7246C4*)(S7246C8*), 0, "S7246C10");
    check_base_class_offset(lv, (S7246C8*), 0, "S7246C10");
    check_field_offset(lv, s7246c10f0, 44, "S7246C10.s7246c10f0");
    test_class_info(&lv, &cd_S7246C10);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7246C10(Test_S7246C10, "S7246C10", 88);

#else // __cplusplus

extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C8;
extern VTBL_ENTRY _ZTI7S7246C8[];
static Base_Class bases_S7246C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7246C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7246C10[];
Class_Descriptor cd_S7246C10 = {  "S7246C10", // class name
  bases_S7246C10, 2,
  0, // no vftv
  0, //no vtt
  88, // object size
  NSPAIRA(_ZTI8S7246C10),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7246C9  : virtual S7246C3 , virtual S7246C10 {
  long double s7246c9f0;
  ~S7246C9(); // tgen
  S7246C9(); // tgen
};
//SIG(-1 S7246C9) C1{ VBC2{ BC3{ m Fi[10]} BC4{ BC3} VBC5{ VBC3 VBC6{ VBC3 vd} vd} BC7{ BC3 Fi}} VBC8{ BC7 FC7} FD}


S7246C9 ::~S7246C9(){ note_dtor("S7246C9", this);} // tgen
S7246C9 ::S7246C9(){ note_ctor("S7246C9", this);} // tgen

static void Test_S7246C9()
{
  extern Class_Descriptor cd_S7246C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(20,69)];
    init_test(&cd_S7246C9, buf);
    S7246C9 *dp, &lv = *(dp=new (buf) S7246C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,272), "sizeof(S7246C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7246C9)");
    /*is_ambiguous_... S7246C3::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*)(S7246C3*), ABISELECT(40,20), "S7246C9");
    check_base_class_offset(lv, (S7246C4*)(S7246C5*)(S7246C3*), ABISELECT(80,60), "S7246C9");
    check_base_class_offset(lv, (S7246C5*)(S7246C3*), ABISELECT(80,60), "S7246C9");
    check_base_class_offset(lv, (S7246C4*)(S7246C6*), ABISELECT(164,144), "S7246C9");
    check_base_class_offset(lv, (S7246C4*)(S7246C7*), ABISELECT(164,144), "S7246C9");
    check_base_class_offset(lv, (S7246C7*)(S7246C6*), 0, "S7246C9");
    check_base_class_offset(lv, (S7246C6*)(S7246C3*), 0, "S7246C9");
    check_base_class_offset(lv, (S7246C4*)(S7246C8*)(S7246C3*), ABISELECT(120,100), "S7246C9");
    check_base_class_offset(lv, (S7246C8*)(S7246C3*), ABISELECT(120,100), "S7246C9");
    check_base_class_offset(lv, (S7246C3*), ABISELECT(32,16), "S7246C9");
    check_base_class_offset(lv, (S7246C4*)(S7246C8*)(S7246C10*), ABISELECT(204,184), "S7246C9");
    check_base_class_offset(lv, (S7246C8*)(S7246C10*), ABISELECT(204,184), "S7246C9");
    check_base_class_offset(lv, (S7246C10*), ABISELECT(204,184), "S7246C9");
    check_field_offset(lv, s7246c9f0, ABISELECT(16,4), "S7246C9.s7246c9f0");
    test_class_info(&lv, &cd_S7246C9);
    dp->~S7246C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7246C9(Test_S7246C9, "S7246C9", ABISELECT(304,272));

#else // __cplusplus

extern void _ZN7S7246C9C1Ev();
extern void _ZN7S7246C9D1Ev();
Name_Map name_map_S7246C9[] = {
  NSPAIR(_ZN7S7246C9C1Ev),
  NSPAIR(_ZN7S7246C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C5;
extern VTBL_ENTRY _ZTI7S7246C5[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C7;
extern VTBL_ENTRY _ZTI7S7246C7[];
extern  VTBL_ENTRY _ZTV7S7246C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7246C7[];
extern Class_Descriptor cd_S7246C6;
extern VTBL_ENTRY _ZTI7S7246C6[];
extern  VTBL_ENTRY _ZTV7S7246C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7246C6[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C8;
extern VTBL_ENTRY _ZTI7S7246C8[];
extern Class_Descriptor cd_S7246C3;
extern VTBL_ENTRY _ZTI7S7246C3[];
extern  VTBL_ENTRY _ZTV7S7246C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7246C3[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C8;
extern VTBL_ENTRY _ZTI7S7246C8[];
extern Class_Descriptor cd_S7246C10;
extern VTBL_ENTRY _ZTI8S7246C10[];
static Base_Class bases_S7246C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7246C4,    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
    2, //immediately_derived
  0, 0},
  {&cd_S7246C5,    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
    8, //immediately_derived
  0, 0},
  {&cd_S7246C4,    ABISELECT(164,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
    4, //immediately_derived
  0, 1},
  {&cd_S7246C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7246C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(120,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
    7, //immediately_derived
  0, 0},
  {&cd_S7246C8,    ABISELECT(120,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7246C3,    ABISELECT(32,16), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(204,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7246C8,    ABISELECT(204,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7246C10,    ABISELECT(204,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
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7246C9[];
extern void _ZN7S7246C9D1Ev();
extern void _ZN7S7246C9D0Ev();
extern void ABISELECT(_ZTv0_n32_N7S7246C9D1Ev,_ZTv0_n16_N7S7246C9D1Ev)();
extern void ABISELECT(_ZThn32_N7S7246C9D1Ev,_ZThn16_N7S7246C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7246C9D0Ev,_ZTv0_n16_N7S7246C9D0Ev)();
extern void ABISELECT(_ZThn32_N7S7246C9D0Ev,_ZThn16_N7S7246C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7246C9[] = {
  ABISELECT(204,184),
  0,
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(164,144),
  0,
  (VTBL_ENTRY)&(_ZTI7S7246C9[0]),
  (VTBL_ENTRY)&_ZN7S7246C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7246C9D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(132,128),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7246C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C9D1Ev,_ZTv0_n16_N7S7246C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C9D0Ev,_ZTv0_n16_N7S7246C9D0Ev),
};
extern VTBL_ENTRY _ZTV7S7246C9[];
extern void ABISELECT(_ZTv0_n32_N7S7246C3D1Ev,_ZTv0_n16_N7S7246C3D1Ev)();
extern void _ZN7S7246C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7246C3D0Ev,_ZTv0_n16_N7S7246C3D0Ev)();
extern void _ZN7S7246C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7246C3__7S7246C9[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  ABISELECT(132,128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7246C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C3D1Ev,_ZTv0_n16_N7S7246C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C3D0Ev,_ZTv0_n16_N7S7246C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7246C3D1Ev,_ZTv0_n16_N7S7246C3D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7246C3D0Ev,_ZTv0_n16_N7S7246C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7246C6__7S7246C3__7S7246C9[] = {
  0,
  ABISELECT(32,16),
  ABISELECT(164,144),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7246C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C3D1Ev,_ZTv0_n16_N7S7246C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C3D0Ev,_ZTv0_n16_N7S7246C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7246C6D1Ev,_ZTv0_n16_N7S7246C6D1Ev)();
extern void _ZN7S7246C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7246C6D0Ev,_ZTv0_n16_N7S7246C6D0Ev)();
extern void _ZN7S7246C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7246C6__7S7246C9[] = {
  0,
  0,
  ABISELECT(164,144),
  0,
  (VTBL_ENTRY)&(_ZTI7S7246C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C6D1Ev,_ZTv0_n16_N7S7246C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C6D0Ev,_ZTv0_n16_N7S7246C6D0Ev),
};
extern void _ZN7S7246C7D1Ev();
extern void _ZN7S7246C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7246C7__7S7246C9[] = {
  ABISELECT(164,144),
  0,
  (VTBL_ENTRY)&(_ZTI7S7246C7[0]),
  (VTBL_ENTRY)&_ZN7S7246C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7246C7D0Ev,
};
static  VTT_ENTRY vtt_S7246C9[] = {
  {&(_ZTV7S7246C9[8]),  8,18},
  {&(_ZTV7S7246C9[16]),  16,18},
  {&(_ZTV7S7246C9[8]),  8,18},
  {&(_ZTV7S7246C9[8]),  8,18},
  {&(_tg__ZTV7S7246C3__7S7246C9[6]),  6,8},
  {&(_tg__ZTV7S7246C6__7S7246C3__7S7246C9[5]),  5,7},
  {&(_tg__ZTV7S7246C6__7S7246C3__7S7246C9[5]),  5,7},
  {&(_tg__ZTV7S7246C6__7S7246C9[5]),  5,7},
  {&(_tg__ZTV7S7246C6__7S7246C9[5]),  5,7},
  {&(_tg__ZTV7S7246C7__7S7246C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7246C9[];
extern  VTBL_ENTRY _ZTV7S7246C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7246C9[];
static VTBL_ENTRY alt_thunk_names93[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C6D0Ev,_ZTv0_n16_N7S7246C6D0Ev), // 
  (VTBL_ENTRY)_ZN7S7246C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C6D1Ev,_ZTv0_n16_N7S7246C6D1Ev), // 
  (VTBL_ENTRY)_ZN7S7246C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C3D0Ev,_ZTv0_n16_N7S7246C3D0Ev), // 
  (VTBL_ENTRY)_ZN7S7246C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C3D1Ev,_ZTv0_n16_N7S7246C3D1Ev), // 
  (VTBL_ENTRY)_ZN7S7246C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C9D0Ev,_ZTv0_n16_N7S7246C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7246C9D0Ev,_ZThn16_N7S7246C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C9D1Ev,_ZTv0_n16_N7S7246C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7246C9D1Ev,_ZThn16_N7S7246C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7246C9 = {  "S7246C9", // class name
  bases_S7246C9, 12,
  &(vtc_S7246C9[0]), // expected_vtbl_contents
  &(vtt_S7246C9[0]), // expected_vtt_contents
  ABISELECT(304,272), // object size
  NSPAIRA(_ZTI7S7246C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7246C9),18, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7246C9),10, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names93,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7246C11  : virtual S7246C7 , S7246C6 {
  long double s7246c11f0;
  ~S7246C11(); // tgen
  S7246C11(); // tgen
};
//SIG(-1 S7246C11) C1{ VBC2{ VBC3{ m Fi[10]} vd} BC4{ VBC3 VBC2 vd} FD}


S7246C11 ::~S7246C11(){ note_dtor("S7246C11", this);} // tgen
S7246C11 ::S7246C11(){ note_ctor("S7246C11", this);} // tgen

static void Test_S7246C11()
{
  extern Class_Descriptor cd_S7246C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,15)];
    init_test(&cd_S7246C11, buf);
    S7246C11 *dp, &lv = *(dp=new (buf) S7246C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,56), "sizeof(S7246C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7246C11)");
    check_base_class_offset(lv, (S7246C4*)(S7246C7*), ABISELECT(32,16), "S7246C11");
    check_base_class_offset(lv, (S7246C4*)(S7246C6*), ABISELECT(32,16), "S7246C11");
    check_base_class_offset(lv, (S7246C7*), 0, "S7246C11");
    check_base_class_offset(lv, (S7246C7*)(S7246C6*), 0, "S7246C11");
    check_base_class_offset(lv, (S7246C6*), 0, "S7246C11");
    check_field_offset(lv, s7246c11f0, ABISELECT(16,4), "S7246C11.s7246c11f0");
    test_class_info(&lv, &cd_S7246C11);
    dp->~S7246C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7246C11(Test_S7246C11, "S7246C11", ABISELECT(80,56));

#else // __cplusplus

extern void _ZN8S7246C11C1Ev();
extern void _ZN8S7246C11D1Ev();
Name_Map name_map_S7246C11[] = {
  NSPAIR(_ZN8S7246C11C1Ev),
  NSPAIR(_ZN8S7246C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C7;
extern VTBL_ENTRY _ZTI7S7246C7[];
extern  VTBL_ENTRY _ZTV7S7246C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7246C7[];
extern Class_Descriptor cd_S7246C6;
extern VTBL_ENTRY _ZTI7S7246C6[];
extern  VTBL_ENTRY _ZTV7S7246C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7246C6[];
static Base_Class bases_S7246C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7246C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C6,    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 _ZTI8S7246C11[];
extern void _ZN8S7246C11D1Ev();
extern void _ZN8S7246C11D0Ev();
static  VTBL_ENTRY vtc_S7246C11[] = {
  0,
  0,
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7246C11[0]),
  (VTBL_ENTRY)&_ZN8S7246C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7246C11D0Ev,
};
extern VTBL_ENTRY _ZTV8S7246C11[];
extern void ABISELECT(_ZTv0_n32_N7S7246C6D1Ev,_ZTv0_n16_N7S7246C6D1Ev)();
extern void _ZN7S7246C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7246C6D0Ev,_ZTv0_n16_N7S7246C6D0Ev)();
extern void _ZN7S7246C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7246C6__8S7246C11[] = {
  0,
  0,
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7246C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C6D1Ev,_ZTv0_n16_N7S7246C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C6D0Ev,_ZTv0_n16_N7S7246C6D0Ev),
};
extern void _ZN7S7246C7D1Ev();
extern void _ZN7S7246C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7246C7__8S7246C11[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7246C7[0]),
  (VTBL_ENTRY)&_ZN7S7246C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7246C7D0Ev,
};
static  VTT_ENTRY vtt_S7246C11[] = {
  {&(_ZTV8S7246C11[5]),  5,7},
  {&(_tg__ZTV7S7246C6__8S7246C11[5]),  5,7},
  {&(_tg__ZTV7S7246C6__8S7246C11[5]),  5,7},
  {&(_ZTV8S7246C11[5]),  5,7},
  {&(_tg__ZTV7S7246C7__8S7246C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7246C11[];
extern  VTBL_ENTRY _ZTV8S7246C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7246C11[];
static VTBL_ENTRY alt_thunk_names94[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C6D0Ev,_ZTv0_n16_N7S7246C6D0Ev), // 
  (VTBL_ENTRY)_ZN7S7246C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C6D1Ev,_ZTv0_n16_N7S7246C6D1Ev), // 
  (VTBL_ENTRY)_ZN7S7246C6D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7246C11 = {  "S7246C11", // class name
  bases_S7246C11, 3,
  &(vtc_S7246C11[0]), // expected_vtbl_contents
  &(vtt_S7246C11[0]), // expected_vtt_contents
  ABISELECT(80,56), // object size
  NSPAIRA(_ZTI8S7246C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7246C11),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7246C11),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names94,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7246C12  : virtual S7246C8 , virtual S7246C5 , virtual S7246C10 , S7246C4 {
  void *s7246c12f0;
  virtual  ~S7246C12(); // _ZN8S7246C12D2Ev
  S7246C12(); // tgen
};
//SIG(-1 S7246C12) C1{ VBC2{ BC3{ m Fi[10]} Fi} VBC4{ BC3} VBC5{ BC2 FC2} BC3 vd Fp}


 S7246C12 ::~S7246C12(){ note_dtor("S7246C12", this);}
S7246C12 ::S7246C12(){ note_ctor("S7246C12", this);} // tgen

static void Test_S7246C12()
{
  extern Class_Descriptor cd_S7246C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,56)];
    init_test(&cd_S7246C12, buf);
    S7246C12 *dp, &lv = *(dp=new (buf) S7246C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,220), "sizeof(S7246C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7246C12)");
    /*is_ambiguous_... S7246C12::S7246C8 */ AMB_check_base_class_offset(lv, (S7246C4*)(S7246C8*), ABISELECT(56,48), "S7246C12");
    /*is_ambiguous_... S7246C12::S7246C8 */ AMB_check_base_class_offset(lv, (S7246C8*), ABISELECT(56,48), "S7246C12");
    check_base_class_offset(lv, (S7246C4*)(S7246C5*), ABISELECT(100,92), "S7246C12");
    check_base_class_offset(lv, (S7246C5*), ABISELECT(100,92), "S7246C12");
    check_base_class_offset(lv, (S7246C4*)(S7246C8*)(S7246C10*), ABISELECT(140,132), "S7246C12");
    check_base_class_offset(lv, (S7246C8*)(S7246C10*), ABISELECT(140,132), "S7246C12");
    check_base_class_offset(lv, (S7246C10*), ABISELECT(140,132), "S7246C12");
    /*is_ambiguous_... S7246C12::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*), ABISELECT(8,4), "S7246C12");
    check_field_offset(lv, s7246c12f0, ABISELECT(48,44), "S7246C12.s7246c12f0");
    test_class_info(&lv, &cd_S7246C12);
    dp->~S7246C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7246C12(Test_S7246C12, "S7246C12", ABISELECT(232,220));

#else // __cplusplus

extern void _ZN8S7246C12C1Ev();
extern void _ZN8S7246C12D2Ev();
Name_Map name_map_S7246C12[] = {
  NSPAIR(_ZN8S7246C12C1Ev),
  NSPAIR(_ZN8S7246C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C8;
extern VTBL_ENTRY _ZTI7S7246C8[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C5;
extern VTBL_ENTRY _ZTI7S7246C5[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C8;
extern VTBL_ENTRY _ZTI7S7246C8[];
extern Class_Descriptor cd_S7246C10;
extern VTBL_ENTRY _ZTI8S7246C10[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
static Base_Class bases_S7246C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7246C8,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(100,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
    3, //immediately_derived
  0, 0},
  {&cd_S7246C5,    ABISELECT(100,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(140,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
    5, //immediately_derived
  0, 0},
  {&cd_S7246C8,    ABISELECT(140,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
    6, //immediately_derived
  0, 0},
  {&cd_S7246C10,    ABISELECT(140,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},
  {&cd_S7246C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7246C12[];
extern void _ZN8S7246C12D1Ev();
extern void _ZN8S7246C12D0Ev();
static  VTBL_ENTRY vtc_S7246C12[] = {
  ABISELECT(140,132),
  ABISELECT(100,92),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7246C12[0]),
  (VTBL_ENTRY)&_ZN8S7246C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7246C12D0Ev,
};
extern VTBL_ENTRY _ZTV8S7246C12[];
static  VTT_ENTRY vtt_S7246C12[] = {
  {&(_ZTV8S7246C12[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S7246C12[];
extern  VTBL_ENTRY _ZTV8S7246C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7246C12[];
Class_Descriptor cd_S7246C12 = {  "S7246C12", // class name
  bases_S7246C12, 8,
  &(vtc_S7246C12[0]), // expected_vtbl_contents
  &(vtt_S7246C12[0]), // expected_vtt_contents
  ABISELECT(232,220), // object size
  NSPAIRA(_ZTI8S7246C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7246C12),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7246C12),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  S7246C13  : virtual S7246C12 , S7246C7 , S4677C37 {
  ~S7246C13(); // tgen
  S7246C13(); // tgen
};
//SIG(-1 S7246C13) C1{ VBC2{ VBC3{ BC4{ m Fi[10]} Fi} VBC5{ BC4} VBC6{ BC3 FC3} BC4 vd Fp} BC7{ VBC4 vd} BC8{ m}}


S7246C13 ::~S7246C13(){ note_dtor("S7246C13", this);} // tgen
S7246C13 ::S7246C13(){ note_ctor("S7246C13", this);} // tgen

static void Test_S7246C13()
{
  extern Class_Descriptor cd_S7246C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,67)];
    init_test(&cd_S7246C13, buf);
    S7246C13 *dp, &lv = *(dp=new (buf) S7246C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,264), "sizeof(S7246C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7246C13)");
    /*is_ambiguous_... S7246C13::S7246C8 */ AMB_check_base_class_offset(lv, (S7246C4*)(S7246C8*), ABISELECT(64,52), "S7246C13");
    /*is_ambiguous_... S7246C12::S7246C8 */ AMB_check_base_class_offset(lv, (S7246C8*)(S7246C12*), ABISELECT(64,52), "S7246C13");
    check_base_class_offset(lv, (S7246C4*)(S7246C5*), ABISELECT(108,96), "S7246C13");
    check_base_class_offset(lv, (S7246C5*)(S7246C12*), ABISELECT(108,96), "S7246C13");
    check_base_class_offset(lv, (S7246C4*)(S7246C8*)(S7246C10*), ABISELECT(148,136), "S7246C13");
    check_base_class_offset(lv, (S7246C8*)(S7246C10*), ABISELECT(148,136), "S7246C13");
    check_base_class_offset(lv, (S7246C10*)(S7246C12*), ABISELECT(148,136), "S7246C13");
    /*is_ambiguous_... S7246C12::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*)(S7246C12*), ABISELECT(16,8), "S7246C13");
    check_base_class_offset(lv, (S7246C12*), ABISELECT(8,4), "S7246C13");
    check_base_class_offset(lv, (S7246C4*)(S7246C7*), ABISELECT(236,224), "S7246C13");
    check_base_class_offset(lv, (S7246C7*), 0, "S7246C13");
    check_base_class_offset(lv, (S4677C37*), 0, "S7246C13");
    test_class_info(&lv, &cd_S7246C13);
    dp->~S7246C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7246C13(Test_S7246C13, "S7246C13", ABISELECT(280,264));

#else // __cplusplus

extern void _ZN8S7246C13C1Ev();
extern void _ZN8S7246C13D1Ev();
Name_Map name_map_S7246C13[] = {
  NSPAIR(_ZN8S7246C13C1Ev),
  NSPAIR(_ZN8S7246C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C8;
extern VTBL_ENTRY _ZTI7S7246C8[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C5;
extern VTBL_ENTRY _ZTI7S7246C5[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C8;
extern VTBL_ENTRY _ZTI7S7246C8[];
extern Class_Descriptor cd_S7246C10;
extern VTBL_ENTRY _ZTI8S7246C10[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C12;
extern VTBL_ENTRY _ZTI8S7246C12[];
extern  VTBL_ENTRY _ZTV8S7246C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7246C12[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C7;
extern VTBL_ENTRY _ZTI7S7246C7[];
extern  VTBL_ENTRY _ZTV7S7246C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7246C7[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
static Base_Class bases_S7246C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(64,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7246C8,    ABISELECT(64,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(108,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
    3, //immediately_derived
  0, 0},
  {&cd_S7246C5,    ABISELECT(108,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
    8, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(148,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7246C8,    ABISELECT(148,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7246C10,    ABISELECT(148,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7246C4,    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_S7246C12,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //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_S7246C4,    ABISELECT(236,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7246C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7246C13[];
extern void _ZN8S7246C13D1Ev();
extern void _ZN8S7246C13D0Ev();
extern void ABISELECT(_ZTv0_n48_N8S7246C13D1Ev,_ZTv0_n24_N8S7246C13D1Ev)();
extern void ABISELECT(_ZThn8_N8S7246C13D1Ev,_ZThn4_N8S7246C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7246C13D0Ev,_ZTv0_n24_N8S7246C13D0Ev)();
extern void ABISELECT(_ZThn8_N8S7246C13D0Ev,_ZThn4_N8S7246C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7246C13[] = {
  ABISELECT(148,136),
  ABISELECT(108,96),
  ABISELECT(64,52),
  ABISELECT(8,4),
  ABISELECT(236,224),
  0,
  (VTBL_ENTRY)&(_ZTI8S7246C13[0]),
  (VTBL_ENTRY)&_ZN8S7246C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7246C13D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(140,132),
  ABISELECT(100,92),
  ABISELECT(56,48),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7246C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7246C13D1Ev,_ZTv0_n24_N8S7246C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7246C13D0Ev,_ZTv0_n24_N8S7246C13D0Ev),
};
extern VTBL_ENTRY _ZTV8S7246C13[];
extern void _ZN7S7246C7D1Ev();
extern void _ZN7S7246C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7246C7__8S7246C13[] = {
  ABISELECT(236,224),
  0,
  (VTBL_ENTRY)&(_ZTI7S7246C7[0]),
  (VTBL_ENTRY)&_ZN7S7246C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7246C7D0Ev,
};
extern void _ZN8S7246C12D1Ev();
extern void _ZN8S7246C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7246C12__8S7246C13[] = {
  ABISELECT(140,132),
  ABISELECT(100,92),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7246C12[0]),
  (VTBL_ENTRY)&_ZN8S7246C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7246C12D0Ev,
};
static  VTT_ENTRY vtt_S7246C13[] = {
  {&(_ZTV8S7246C13[7]),  7,17},
  {&(_tg__ZTV7S7246C7__8S7246C13[3]),  3,5},
  {&(_ZTV8S7246C13[15]),  15,17},
  {&(_tg__ZTV8S7246C12__8S7246C13[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S7246C13[];
extern  VTBL_ENTRY _ZTV8S7246C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7246C13[];
static VTBL_ENTRY alt_thunk_names95[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7246C13D0Ev,_ZTv0_n24_N8S7246C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7246C13D0Ev,_ZThn4_N8S7246C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7246C13D1Ev,_ZTv0_n24_N8S7246C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7246C13D1Ev,_ZThn4_N8S7246C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7246C13 = {  "S7246C13", // class name
  bases_S7246C13, 12,
  &(vtc_S7246C13[0]), // expected_vtbl_contents
  &(vtt_S7246C13[0]), // expected_vtt_contents
  ABISELECT(280,264), // object size
  NSPAIRA(_ZTI8S7246C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7246C13),17, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7246C13),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names95,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7246C2  : virtual S7246C3 , virtual S7246C9 , virtual S7246C11 , S7246C12 , S7246C13 {
  int s7246c2f0;
  ~S7246C2(); // tgen
  S7246C2(); // tgen
};
//SIG(-1 S7246C2) C1{ VBC2{ BC3{ m Fi[10]} BC4{ BC3} VBC5{ VBC3 VBC6{ VBC3 vd} vd} BC7{ BC3 Fi}} VBC8{ VBC2 VBC9{ BC7 FC7} FD} VBC10{ VBC6 BC5 FD} BC11{ VBC7 VBC4 VBC9 BC3 vd Fp} BC12{ VBC11 BC6 BC13{ m}} Fi}


S7246C2 ::~S7246C2(){ note_dtor("S7246C2", this);} // tgen
S7246C2 ::S7246C2(){ note_ctor("S7246C2", this);} // tgen

static void Test_S7246C2()
{
  extern Class_Descriptor cd_S7246C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(36,120)];
    init_test(&cd_S7246C2, buf);
    S7246C2 *dp, &lv = *(dp=new (buf) S7246C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(560,476), "sizeof(S7246C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7246C2)");
    /*is_ambiguous_... S7246C3::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*)(S7246C3*), ABISELECT(80,60), "S7246C2");
    check_base_class_offset(lv, (S7246C4*)(S7246C5*)(S7246C3*), ABISELECT(120,100), "S7246C2");
    check_base_class_offset(lv, (S7246C5*)(S7246C3*), ABISELECT(120,100), "S7246C2");
    /*is_ambiguous_... S7246C2::S7246C6 */ AMB_check_base_class_offset(lv, (S7246C4*)(S7246C6*), ABISELECT(204,184), "S7246C2");
    /*is_ambiguous_... S7246C2::S7246C7 */ AMB_check_base_class_offset(lv, (S7246C4*)(S7246C7*), ABISELECT(204,184), "S7246C2");
    check_base_class_offset(lv, (S7246C4*)(S7246C6*)(S7246C11*), ABISELECT(204,184), "S7246C2");
    check_base_class_offset(lv, (S7246C4*)(S7246C7*)(S7246C13*), ABISELECT(204,184), "S7246C2");
    /*is_ambiguous_... S7246C2::S7246C6 */ AMB_check_base_class_offset(lv, (S7246C7*)(S7246C6*), ABISELECT(72,56), "S7246C2");
    check_base_class_offset(lv, (S7246C7*)(S7246C11*), ABISELECT(72,56), "S7246C2");
    check_base_class_offset(lv, (S7246C7*)(S7246C6*)(S7246C11*), ABISELECT(72,56), "S7246C2");
    check_base_class_offset(lv, (S7246C6*)(S7246C3*), ABISELECT(72,56), "S7246C2");
    check_base_class_offset(lv, (S7246C4*)(S7246C8*)(S7246C3*), ABISELECT(160,140), "S7246C2");
    check_base_class_offset(lv, (S7246C8*)(S7246C3*), ABISELECT(160,140), "S7246C2");
    check_base_class_offset(lv, (S7246C3*), ABISELECT(72,56), "S7246C2");
    check_base_class_offset(lv, (S7246C3*)(S7246C9*), ABISELECT(72,56), "S7246C2");
    check_base_class_offset(lv, (S7246C4*)(S7246C8*)(S7246C10*), ABISELECT(288,240), "S7246C2");
    check_base_class_offset(lv, (S7246C8*)(S7246C10*), ABISELECT(288,240), "S7246C2");
    check_base_class_offset(lv, (S7246C10*)(S7246C9*), ABISELECT(288,240), "S7246C2");
    /*is_ambiguous_... S7246C2::S7246C12 */ AMB_check_base_class_offset(lv, (S7246C10*)(S7246C12*), ABISELECT(288,240), "S7246C2");
    /*is_ambiguous_... S7246C2::S7246C12 */ AMB_check_base_class_offset(lv, (S7246C10*)(S7246C12*), ABISELECT(288,240), "S7246C2");
    check_base_class_offset(lv, (S7246C9*), ABISELECT(256,224), "S7246C2");
    check_base_class_offset(lv, (S7246C6*)(S7246C11*), ABISELECT(384,328), "S7246C2");
    check_base_class_offset(lv, (S7246C11*), ABISELECT(384,328), "S7246C2");
    /*is_ambiguous_... S7246C2::S7246C8 */ AMB_check_base_class_offset(lv, (S7246C4*)(S7246C8*), ABISELECT(416,344), "S7246C2");
    /*is_ambiguous_... S7246C2::S7246C12 */ AMB_check_base_class_offset(lv, (S7246C8*)(S7246C12*), ABISELECT(416,344), "S7246C2");
    /*is_ambiguous_... S7246C2::S7246C12 */ AMB_check_base_class_offset(lv, (S7246C8*)(S7246C12*), ABISELECT(416,344), "S7246C2");
    /*is_ambiguous_... S7246C2::S7246C5 */ AMB_check_base_class_offset(lv, (S7246C4*)(S7246C5*), ABISELECT(460,388), "S7246C2");
    /*is_ambiguous_... S7246C2::S7246C12 */ AMB_check_base_class_offset(lv, (S7246C5*)(S7246C12*), ABISELECT(460,388), "S7246C2");
    /*is_ambiguous_... S7246C2::S7246C12 */ AMB_check_base_class_offset(lv, (S7246C5*)(S7246C12*), ABISELECT(460,388), "S7246C2");
    /*is_ambiguous_... S7246C2::S7246C12 */ AMB_check_base_class_offset(lv, (S7246C4*)(S7246C12*), ABISELECT(8,4), "S7246C2");
    /*is_ambiguous_... S7246C2::S7246C12 */ AMB_check_base_class_offset(lv, (S7246C12*), 0, "S7246C2");
    /*is_ambiguous_... S7246C2::S7246C12 */ AMB_check_base_class_offset(lv, (S7246C4*)(S7246C12*), ABISELECT(512,432), "S7246C2");
    check_base_class_offset(lv, (S7246C12*)(S7246C13*), ABISELECT(504,428), "S7246C2");
    check_base_class_offset(lv, (S7246C7*)(S7246C13*), ABISELECT(56,48), "S7246C2");
    check_base_class_offset(lv, (S4677C37*)(S7246C13*), ABISELECT(56,48), "S7246C2");
    check_base_class_offset(lv, (S7246C13*), ABISELECT(56,48), "S7246C2");
    check_field_offset(lv, s7246c2f0, ABISELECT(64,52), "S7246C2.s7246c2f0");
    test_class_info(&lv, &cd_S7246C2);
    dp->~S7246C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7246C2(Test_S7246C2, "S7246C2", ABISELECT(560,476));

#else // __cplusplus

extern void _ZN7S7246C2C1Ev();
extern void _ZN7S7246C2D1Ev();
Name_Map name_map_S7246C2[] = {
  NSPAIR(_ZN7S7246C2C1Ev),
  NSPAIR(_ZN7S7246C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C5;
extern VTBL_ENTRY _ZTI7S7246C5[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C7;
extern VTBL_ENTRY _ZTI7S7246C7[];
extern  VTBL_ENTRY _ZTV7S7246C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7246C7[];
extern Class_Descriptor cd_S7246C6;
extern VTBL_ENTRY _ZTI7S7246C6[];
extern  VTBL_ENTRY _ZTV7S7246C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7246C6[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C8;
extern VTBL_ENTRY _ZTI7S7246C8[];
extern Class_Descriptor cd_S7246C3;
extern VTBL_ENTRY _ZTI7S7246C3[];
extern  VTBL_ENTRY _ZTV7S7246C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7246C3[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C8;
extern VTBL_ENTRY _ZTI7S7246C8[];
extern Class_Descriptor cd_S7246C10;
extern VTBL_ENTRY _ZTI8S7246C10[];
extern Class_Descriptor cd_S7246C9;
extern VTBL_ENTRY _ZTI7S7246C9[];
extern  VTBL_ENTRY _ZTV7S7246C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7246C9[];
extern Class_Descriptor cd_S7246C6;
extern VTBL_ENTRY _ZTI7S7246C6[];
extern  VTBL_ENTRY _ZTV7S7246C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7246C6[];
extern Class_Descriptor cd_S7246C11;
extern VTBL_ENTRY _ZTI8S7246C11[];
extern  VTBL_ENTRY _ZTV8S7246C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7246C11[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C8;
extern VTBL_ENTRY _ZTI7S7246C8[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C5;
extern VTBL_ENTRY _ZTI7S7246C5[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C12;
extern VTBL_ENTRY _ZTI8S7246C12[];
extern  VTBL_ENTRY _ZTV8S7246C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7246C12[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C12;
extern VTBL_ENTRY _ZTI8S7246C12[];
extern  VTBL_ENTRY _ZTV8S7246C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7246C12[];
extern Class_Descriptor cd_S7246C7;
extern VTBL_ENTRY _ZTI7S7246C7[];
extern  VTBL_ENTRY _ZTV7S7246C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7246C7[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7246C13;
extern VTBL_ENTRY _ZTI8S7246C13[];
extern  VTBL_ENTRY _ZTV8S7246C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7246C13[];
static Base_Class bases_S7246C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    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
    8, //immediately_derived
  0, 0},
  {&cd_S7246C4,    ABISELECT(120,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
    2, //immediately_derived
  0, 0},
  {&cd_S7246C5,    ABISELECT(120,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7246C4,    ABISELECT(204,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
    4, //immediately_derived
  0, 1},
  {&cd_S7246C7,    ABISELECT(72,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7246C6,    ABISELECT(72,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(160,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
    7, //immediately_derived
  0, 0},
  {&cd_S7246C8,    ABISELECT(160,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7246C3,    ABISELECT(72,56), //bcp->offset
    23, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(288,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7246C8,    ABISELECT(288,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7246C10,    ABISELECT(288,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7246C9,    ABISELECT(256,224), //bcp->offset
    31, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C6,    ABISELECT(384,328), //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
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7246C11,    ABISELECT(384,328), //bcp->offset
    41, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(416,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7246C8,    ABISELECT(416,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(460,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7246C5,    ABISELECT(460,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7246C12,    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_S7246C4,    ABISELECT(512,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
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7246C12,    ABISELECT(504,428), //bcp->offset
    48, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S7246C7,    ABISELECT(56,48), //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
    9, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7246C13,    ABISELECT(56,48), //bcp->offset
    14, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7246C2[];
extern void _ZN7S7246C2D1Ev();
extern void _ZN7S7246C2D0Ev();
extern void ABISELECT(_ZThn56_N7S7246C2D1Ev,_ZThn48_N7S7246C2D1Ev)();
extern void ABISELECT(_ZThn56_N7S7246C2D0Ev,_ZThn48_N7S7246C2D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7246C2D1Ev,_ZTv0_n16_N7S7246C2D1Ev)();
extern void ABISELECT(_ZThn72_N7S7246C2D1Ev,_ZThn56_N7S7246C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7246C2D0Ev,_ZTv0_n16_N7S7246C2D0Ev)();
extern void ABISELECT(_ZThn72_N7S7246C2D0Ev,_ZThn56_N7S7246C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7246C2D1Ev,_ZTv0_n16_N7S7246C2D1Ev)();
extern void ABISELECT(_ZThn256_N7S7246C2D1Ev,_ZThn224_N7S7246C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7246C2D0Ev,_ZTv0_n16_N7S7246C2D0Ev)();
extern void ABISELECT(_ZThn256_N7S7246C2D0Ev,_ZThn224_N7S7246C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7246C2D1Ev,_ZTv0_n16_N7S7246C2D1Ev)();
extern void ABISELECT(_ZThn384_N7S7246C2D1Ev,_ZThn328_N7S7246C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7246C2D0Ev,_ZTv0_n16_N7S7246C2D0Ev)();
extern void ABISELECT(_ZThn384_N7S7246C2D0Ev,_ZThn328_N7S7246C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7246C2D1Ev,_ZTv0_n24_N7S7246C2D1Ev)();
extern void ABISELECT(_ZThn504_N7S7246C2D1Ev,_ZThn428_N7S7246C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7246C2D0Ev,_ZTv0_n24_N7S7246C2D0Ev)();
extern void ABISELECT(_ZThn504_N7S7246C2D0Ev,_ZThn428_N7S7246C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7246C2[] = {
  ABISELECT(504,428),
  ABISELECT(384,328),
  ABISELECT(256,224),
  ABISELECT(72,56),
  ABISELECT(204,184),
  ABISELECT(72,56),
  ABISELECT(72,56),
  ABISELECT(288,240),
  ABISELECT(460,388),
  ABISELECT(416,344),
  0,
  (VTBL_ENTRY)&(_ZTI7S7246C2[0]),
  (VTBL_ENTRY)&_ZN7S7246C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7246C2D0Ev,
  ABISELECT(232,192),
  ABISELECT(404,340),
  ABISELECT(360,296),
  ABISELECT(448,380),
  ABISELECT(148,136),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI7S7246C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S7246C2D1Ev,_ZThn48_N7S7246C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S7246C2D0Ev,_ZThn48_N7S7246C2D0Ev),
  0,
  0,
  ABISELECT(-72,-56),
  ABISELECT(132,128),
  ABISELECT(-72,-56),
  (VTBL_ENTRY)&(_ZTI7S7246C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C2D1Ev,_ZTv0_n16_N7S7246C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C2D0Ev,_ZTv0_n16_N7S7246C2D0Ev),
  ABISELECT(32,16),
  ABISELECT(-184,-168),
  ABISELECT(-184,-168),
  ABISELECT(-184,-168),
  ABISELECT(-256,-224),
  ABISELECT(-52,-40),
  ABISELECT(-256,-224),
  (VTBL_ENTRY)&(_ZTI7S7246C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C2D1Ev,_ZTv0_n16_N7S7246C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C2D0Ev,_ZTv0_n16_N7S7246C2D0Ev),
  ABISELECT(-312,-272),
  ABISELECT(-384,-328),
  ABISELECT(-180,-144),
  ABISELECT(-384,-328),
  (VTBL_ENTRY)&(_ZTI7S7246C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C2D1Ev,_ZTv0_n16_N7S7246C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C2D0Ev,_ZTv0_n16_N7S7246C2D0Ev),
  ABISELECT(-504,-428),
  ABISELECT(-216,-188),
  ABISELECT(-44,-40),
  ABISELECT(-88,-84),
  ABISELECT(-504,-428),
  (VTBL_ENTRY)&(_ZTI7S7246C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7246C2D1Ev,_ZTv0_n24_N7S7246C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7246C2D0Ev,_ZTv0_n24_N7S7246C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S7246C2[];
extern void _ZN8S7246C12D1Ev();
extern void _ZN8S7246C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7246C12__A__7S7246C2[] = {
  ABISELECT(288,240),
  ABISELECT(460,388),
  ABISELECT(416,344),
  0,
  (VTBL_ENTRY)&(_ZTI8S7246C12[0]),
  (VTBL_ENTRY)&_ZN8S7246C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7246C12D0Ev,
};
extern void _ZN8S7246C13D1Ev();
extern void _ZN8S7246C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7246C13__7S7246C2[] = {
  ABISELECT(232,192),
  ABISELECT(404,340),
  ABISELECT(360,296),
  ABISELECT(448,380),
  ABISELECT(148,136),
  0,
  (VTBL_ENTRY)&(_ZTI8S7246C13[0]),
  (VTBL_ENTRY)&_ZN8S7246C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7246C13D0Ev,
};
extern void _ZN7S7246C7D1Ev();
extern void _ZN7S7246C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7246C78S7246C13__A1__7S7246C2[] = {
  ABISELECT(148,136),
  0,
  (VTBL_ENTRY)&(_ZTI7S7246C7[0]),
  (VTBL_ENTRY)&_ZN7S7246C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7246C7D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S7246C13D1Ev,_ZTv0_n24_N8S7246C13D1Ev)();
extern void ABISELECT(_ZThn448_N8S7246C13D1Ev,_ZThn380_N8S7246C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7246C13D0Ev,_ZTv0_n24_N8S7246C13D0Ev)();
extern void ABISELECT(_ZThn448_N8S7246C13D0Ev,_ZThn380_N8S7246C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7246C12__8S7246C13__7S7246C2[] = {
  ABISELECT(-448,-380),
  ABISELECT(-216,-188),
  ABISELECT(-44,-40),
  ABISELECT(-88,-84),
  ABISELECT(-448,-380),
  (VTBL_ENTRY)&(_ZTI8S7246C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7246C13D1Ev,_ZTv0_n24_N8S7246C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7246C13D0Ev,_ZTv0_n24_N8S7246C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7246C3D1Ev,_ZTv0_n16_N7S7246C3D1Ev)();
extern void _ZN7S7246C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7246C3D0Ev,_ZTv0_n16_N7S7246C3D0Ev)();
extern void _ZN7S7246C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7246C3__7S7246C2[] = {
  0,
  0,
  0,
  ABISELECT(132,128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7246C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C3D1Ev,_ZTv0_n16_N7S7246C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C3D0Ev,_ZTv0_n16_N7S7246C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7246C6D1Ev,_ZTv0_n16_N7S7246C6D1Ev)();
extern void _ZN7S7246C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7246C6D0Ev,_ZTv0_n16_N7S7246C6D0Ev)();
extern void _ZN7S7246C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7246C6__7S7246C2[] = {
  0,
  0,
  ABISELECT(132,128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7246C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C6D1Ev,_ZTv0_n16_N7S7246C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C6D0Ev,_ZTv0_n16_N7S7246C6D0Ev),
};
extern void _ZN7S7246C7D1Ev();
extern void _ZN7S7246C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7246C7__7S7246C2[] = {
  ABISELECT(132,128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7246C7[0]),
  (VTBL_ENTRY)&_ZN7S7246C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7246C7D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7246C9D1Ev,_ZTv0_n16_N7S7246C9D1Ev)();
extern void _ZN7S7246C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7246C9D0Ev,_ZTv0_n16_N7S7246C9D0Ev)();
extern void _ZN7S7246C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7246C9__7S7246C2[] = {
  ABISELECT(32,16),
  ABISELECT(-184,-168),
  ABISELECT(-184,-168),
  ABISELECT(-184,-168),
  0,
  ABISELECT(-52,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7246C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C9D1Ev,_ZTv0_n16_N7S7246C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C9D0Ev,_ZTv0_n16_N7S7246C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7246C9D1Ev,_ZTv0_n16_N7S7246C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7246C9D0Ev,_ZTv0_n16_N7S7246C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7246C3__7S7246C9__7S7246C2[] = {
  0,
  0,
  ABISELECT(184,168),
  ABISELECT(132,128),
  ABISELECT(184,168),
  (VTBL_ENTRY)&(_ZTI7S7246C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C9D1Ev,_ZTv0_n16_N7S7246C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C9D0Ev,_ZTv0_n16_N7S7246C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7246C11D1Ev,_ZTv0_n16_N8S7246C11D1Ev)();
extern void _ZN8S7246C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7246C11D0Ev,_ZTv0_n16_N8S7246C11D0Ev)();
extern void _ZN8S7246C11D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7246C11__7S7246C2[] = {
  ABISELECT(-312,-272),
  0,
  ABISELECT(-180,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S7246C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7246C11D1Ev,_ZTv0_n16_N8S7246C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7246C11D0Ev,_ZTv0_n16_N8S7246C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7246C6D1Ev,_ZTv0_n16_N7S7246C6D1Ev)();
extern void _ZN7S7246C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7246C6D0Ev,_ZTv0_n16_N7S7246C6D0Ev)();
extern void _ZN7S7246C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7246C68S7246C11__A1__7S7246C2[] = {
  ABISELECT(-312,-272),
  0,
  ABISELECT(-180,-144),
  0,
  (VTBL_ENTRY)&(_ZTI7S7246C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C6D1Ev,_ZTv0_n16_N7S7246C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C6D0Ev,_ZTv0_n16_N7S7246C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7246C6D1Ev,_ZTv0_n16_N7S7246C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7246C6D0Ev,_ZTv0_n16_N7S7246C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7246C7__7S7246C68S7246C11__A1__7S7246C2[] = {
  ABISELECT(312,272),
  ABISELECT(132,128),
  ABISELECT(312,272),
  (VTBL_ENTRY)&(_ZTI7S7246C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C6D1Ev,_ZTv0_n16_N7S7246C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C6D0Ev,_ZTv0_n16_N7S7246C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7246C11D1Ev,_ZTv0_n16_N8S7246C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7246C11D0Ev,_ZTv0_n16_N8S7246C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7246C7__8S7246C11__7S7246C2[] = {
  ABISELECT(312,272),
  ABISELECT(132,128),
  ABISELECT(312,272),
  (VTBL_ENTRY)&(_ZTI8S7246C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7246C11D1Ev,_ZTv0_n16_N8S7246C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7246C11D0Ev,_ZTv0_n16_N8S7246C11D0Ev),
};
extern void _ZN8S7246C12D1Ev();
extern void _ZN8S7246C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7246C12__A1__7S7246C2[] = {
  ABISELECT(-216,-188),
  ABISELECT(-44,-40),
  ABISELECT(-88,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S7246C12[0]),
  (VTBL_ENTRY)&_ZN8S7246C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7246C12D0Ev,
};
static  VTT_ENTRY vtt_S7246C2[] = {
  {&(_ZTV7S7246C2[12]),  12,56},
  {&(_tg__ZTV8S7246C12__A__7S7246C2[5]),  5,7},
  {&(_tg__ZTV8S7246C13__7S7246C2[7]),  7,9},
  {&(_tg__ZTV7S7246C78S7246C13__A1__7S7246C2[3]),  3,5},
  {&(_tg__ZTV8S7246C12__8S7246C13__7S7246C2[6]),  6,8},
  {&(_ZTV7S7246C2[29]),  29,56},
  {&(_ZTV7S7246C2[29]),  29,56},
  {&(_ZTV7S7246C2[29]),  29,56},
  {&(_ZTV7S7246C2[39]),  39,56},
  {&(_ZTV7S7246C2[46]),  46,56},
  {&(_ZTV7S7246C2[21]),  21,56},
  {&(_ZTV7S7246C2[54]),  54,56},
  {&(_tg__ZTV7S7246C3__7S7246C2[6]),  6,8},
  {&(_tg__ZTV7S7246C3__7S7246C2[6]),  6,8},
  {&(_tg__ZTV7S7246C3__7S7246C2[6]),  6,8},
  {&(_tg__ZTV7S7246C6__7S7246C2[5]),  5,7},
  {&(_tg__ZTV7S7246C6__7S7246C2[5]),  5,7},
  {&(_tg__ZTV7S7246C7__7S7246C2[3]),  3,5},
  {&(_tg__ZTV7S7246C9__7S7246C2[8]),  8,10},
  {&(_tg__ZTV7S7246C3__7S7246C9__7S7246C2[6]),  6,8},
  {&(_tg__ZTV7S7246C3__7S7246C9__7S7246C2[6]),  6,8},
  {&(_tg__ZTV7S7246C3__7S7246C9__7S7246C2[6]),  6,8},
  {&(_tg__ZTV8S7246C11__7S7246C2[5]),  5,7},
  {&(_tg__ZTV7S7246C68S7246C11__A1__7S7246C2[5]),  5,7},
  {&(_tg__ZTV7S7246C7__7S7246C68S7246C11__A1__7S7246C2[4]),  4,6},
  {&(_tg__ZTV7S7246C7__8S7246C11__7S7246C2[4]),  4,6},
  {&(_tg__ZTV8S7246C12__A1__7S7246C2[5]),  5,7},
};
extern VTBL_ENTRY _ZTI7S7246C2[];
extern  VTBL_ENTRY _ZTV7S7246C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7246C2[];
static VTBL_ENTRY alt_thunk_names96[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7246C11D0Ev,_ZTv0_n16_N8S7246C11D0Ev), // 
  (VTBL_ENTRY)_ZN8S7246C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7246C11D1Ev,_ZTv0_n16_N8S7246C11D1Ev), // 
  (VTBL_ENTRY)_ZN8S7246C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C9D0Ev,_ZTv0_n16_N7S7246C9D0Ev), // 
  (VTBL_ENTRY)_ZN7S7246C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C9D1Ev,_ZTv0_n16_N7S7246C9D1Ev), // 
  (VTBL_ENTRY)_ZN7S7246C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C6D0Ev,_ZTv0_n16_N7S7246C6D0Ev), // 
  (VTBL_ENTRY)_ZN7S7246C6D0Ev,
  (VTBL_ENTRY)_ZN7S7246C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C6D1Ev,_ZTv0_n16_N7S7246C6D1Ev), // 
  (VTBL_ENTRY)_ZN7S7246C6D1Ev,
  (VTBL_ENTRY)_ZN7S7246C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C3D0Ev,_ZTv0_n16_N7S7246C3D0Ev), // 
  (VTBL_ENTRY)_ZN7S7246C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C3D1Ev,_ZTv0_n16_N7S7246C3D1Ev), // 
  (VTBL_ENTRY)_ZN7S7246C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7246C13D0Ev,_ZTv0_n24_N8S7246C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S7246C13D0Ev,_ZThn380_N8S7246C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7246C13D1Ev,_ZTv0_n24_N8S7246C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S7246C13D1Ev,_ZThn380_N8S7246C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7246C2D0Ev,_ZTv0_n24_N7S7246C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S7246C2D0Ev,_ZThn428_N7S7246C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7246C2D1Ev,_ZTv0_n24_N7S7246C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S7246C2D1Ev,_ZThn428_N7S7246C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C2D0Ev,_ZTv0_n16_N7S7246C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S7246C2D0Ev,_ZThn328_N7S7246C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7246C2D0Ev,_ZThn224_N7S7246C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7246C2D0Ev,_ZThn56_N7S7246C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C2D1Ev,_ZTv0_n16_N7S7246C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S7246C2D1Ev,_ZThn328_N7S7246C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7246C2D1Ev,_ZThn224_N7S7246C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7246C2D1Ev,_ZThn56_N7S7246C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7246C2 = {  "S7246C2", // class name
  bases_S7246C2, 26,
  &(vtc_S7246C2[0]), // expected_vtbl_contents
  &(vtt_S7246C2[0]), // expected_vtt_contents
  ABISELECT(560,476), // object size
  NSPAIRA(_ZTI7S7246C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7246C2),56, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7246C2),27, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names96,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7246C16  : virtual S4677C37 , virtual S7246C5 , virtual S7246C10 , virtual S7246C12 {
  int s7246c16f0;
  ~S7246C16(); // tgen
  S7246C16(); // tgen
};
//SIG(-1 S7246C16) C1{ VBC2{ m} VBC3{ BC4{ m Fi[10]}} VBC5{ BC6{ BC4 Fi} FC6} VBC7{ VBC6 VBC3 VBC5 BC4 vd Fp} Fi}


S7246C16 ::~S7246C16(){ note_dtor("S7246C16", this);} // tgen
S7246C16 ::S7246C16(){ note_ctor("S7246C16", this);} // tgen

static void Test_S7246C16()
{
  extern Class_Descriptor cd_S7246C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(32,58)];
    init_test(&cd_S7246C16, buf);
    S7246C16 *dp, &lv = *(dp=new (buf) S7246C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(248,228), "sizeof(S7246C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7246C16)");
    check_base_class_offset(lv, (S4677C37*), 0, "S7246C16");
    check_base_class_offset(lv, (S7246C4*)(S7246C5*), ABISELECT(12,8), "S7246C16");
    check_base_class_offset(lv, (S7246C5*), ABISELECT(12,8), "S7246C16");
    check_base_class_offset(lv, (S7246C5*)(S7246C12*), ABISELECT(12,8), "S7246C16");
    check_base_class_offset(lv, (S7246C4*)(S7246C8*)(S7246C10*), ABISELECT(52,48), "S7246C16");
    check_base_class_offset(lv, (S7246C8*)(S7246C10*), ABISELECT(52,48), "S7246C16");
    check_base_class_offset(lv, (S7246C10*), ABISELECT(52,48), "S7246C16");
    check_base_class_offset(lv, (S7246C10*)(S7246C12*), ABISELECT(52,48), "S7246C16");
    /*is_ambiguous_... S7246C16::S7246C8 */ AMB_check_base_class_offset(lv, (S7246C4*)(S7246C8*), ABISELECT(200,184), "S7246C16");
    /*is_ambiguous_... S7246C12::S7246C8 */ AMB_check_base_class_offset(lv, (S7246C8*)(S7246C12*), ABISELECT(200,184), "S7246C16");
    /*is_ambiguous_... S7246C12::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*)(S7246C12*), ABISELECT(152,140), "S7246C16");
    check_base_class_offset(lv, (S7246C12*), ABISELECT(144,136), "S7246C16");
    check_field_offset(lv, s7246c16f0, ABISELECT(8,4), "S7246C16.s7246c16f0");
    test_class_info(&lv, &cd_S7246C16);
    dp->~S7246C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7246C16(Test_S7246C16, "S7246C16", ABISELECT(248,228));

#else // __cplusplus

extern void _ZN8S7246C16C1Ev();
extern void _ZN8S7246C16D1Ev();
Name_Map name_map_S7246C16[] = {
  NSPAIR(_ZN8S7246C16C1Ev),
  NSPAIR(_ZN8S7246C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C5;
extern VTBL_ENTRY _ZTI7S7246C5[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C8;
extern VTBL_ENTRY _ZTI7S7246C8[];
extern Class_Descriptor cd_S7246C10;
extern VTBL_ENTRY _ZTI8S7246C10[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C8;
extern VTBL_ENTRY _ZTI7S7246C8[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C12;
extern VTBL_ENTRY _ZTI8S7246C12[];
extern  VTBL_ENTRY _ZTV8S7246C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7246C12[];
static Base_Class bases_S7246C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    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
    2, //immediately_derived
  0, 0},
  {&cd_S7246C5,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(52,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_S7246C8,    ABISELECT(52,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
    5, //immediately_derived
  0, 0},
  {&cd_S7246C10,    ABISELECT(52,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(200,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
    7, //immediately_derived
  0, 0},
  {&cd_S7246C8,    ABISELECT(200,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
    9, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(152,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
    9, //immediately_derived
  0, 0},
  {&cd_S7246C12,    ABISELECT(144,136), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //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 _ZTI8S7246C16[];
extern void _ZN8S7246C16D1Ev();
extern void _ZN8S7246C16D0Ev();
extern void ABISELECT(_ZTv0_n48_N8S7246C16D1Ev,_ZTv0_n24_N8S7246C16D1Ev)();
extern void ABISELECT(_ZThn144_N8S7246C16D1Ev,_ZThn136_N8S7246C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7246C16D0Ev,_ZTv0_n24_N8S7246C16D0Ev)();
extern void ABISELECT(_ZThn144_N8S7246C16D0Ev,_ZThn136_N8S7246C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7246C16[] = {
  ABISELECT(200,184),
  ABISELECT(144,136),
  ABISELECT(52,48),
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7246C16[0]),
  (VTBL_ENTRY)&_ZN8S7246C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7246C16D0Ev,
  ABISELECT(-144,-136),
  ABISELECT(-92,-88),
  ABISELECT(-132,-128),
  ABISELECT(56,48),
  ABISELECT(-144,-136),
  (VTBL_ENTRY)&(_ZTI8S7246C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7246C16D1Ev,_ZTv0_n24_N8S7246C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7246C16D0Ev,_ZTv0_n24_N8S7246C16D0Ev),
};
extern VTBL_ENTRY _ZTV8S7246C16[];
extern void _ZN8S7246C12D1Ev();
extern void _ZN8S7246C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7246C12__8S7246C16[] = {
  ABISELECT(-92,-88),
  ABISELECT(-132,-128),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7246C12[0]),
  (VTBL_ENTRY)&_ZN8S7246C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7246C12D0Ev,
};
static  VTT_ENTRY vtt_S7246C16[] = {
  {&(_ZTV8S7246C16[7]),  7,17},
  {&(_ZTV8S7246C16[15]),  15,17},
  {&(_tg__ZTV8S7246C12__8S7246C16[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S7246C16[];
extern  VTBL_ENTRY _ZTV8S7246C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7246C16[];
static VTBL_ENTRY alt_thunk_names97[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7246C16D0Ev,_ZTv0_n24_N8S7246C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7246C16D0Ev,_ZThn136_N8S7246C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7246C16D1Ev,_ZTv0_n24_N8S7246C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7246C16D1Ev,_ZThn136_N8S7246C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7246C16 = {  "S7246C16", // class name
  bases_S7246C16, 10,
  &(vtc_S7246C16[0]), // expected_vtbl_contents
  &(vtt_S7246C16[0]), // expected_vtt_contents
  ABISELECT(248,228), // object size
  NSPAIRA(_ZTI8S7246C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7246C16),17, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7246C16),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names97,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7246C15  : virtual S7246C16 , virtual S4677C27 , S7246C8 , virtual S7246C9 {
  int s7246c15f0;
  virtual  ~S7246C15(); // _ZN8S7246C15D2Ev
  S7246C15(); // tgen
};
//SIG(-1 S7246C15) C1{ VBC2{ VBC3{ m} VBC4{ BC5{ m Fi[10]}} VBC6{ BC7{ BC5 Fi} FC7} VBC8{ VBC7 VBC4 VBC6 BC5 vd Fp} Fi} VBC9{ m} BC7 VBC10{ VBC11{ BC5 BC4 VBC12{ VBC5 VBC13{ VBC5 vd} vd} BC7} VBC6 FD} vd Fi}


 S7246C15 ::~S7246C15(){ note_dtor("S7246C15", this);}
S7246C15 ::S7246C15(){ note_ctor("S7246C15", this);} // tgen

static void Test_S7246C15()
{
  extern Class_Descriptor cd_S7246C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(33,117)];
    init_test(&cd_S7246C15, buf);
    S7246C15 *dp, &lv = *(dp=new (buf) S7246C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(512,464), "sizeof(S7246C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7246C15)");
    check_base_class_offset(lv, (S4677C37*)(S7246C16*), 0, "S7246C15");
    /*is_ambiguous_... S7246C15::S7246C5 */ AMB_check_base_class_offset(lv, (S7246C4*)(S7246C5*), ABISELECT(68,60), "S7246C15");
    check_base_class_offset(lv, (S7246C5*)(S7246C16*), ABISELECT(68,60), "S7246C15");
    check_base_class_offset(lv, (S7246C5*)(S7246C12*), ABISELECT(68,60), "S7246C15");
    check_base_class_offset(lv, (S7246C4*)(S7246C8*)(S7246C10*), ABISELECT(108,100), "S7246C15");
    check_base_class_offset(lv, (S7246C8*)(S7246C10*), ABISELECT(108,100), "S7246C15");
    check_base_class_offset(lv, (S7246C10*)(S7246C16*), ABISELECT(108,100), "S7246C15");
    check_base_class_offset(lv, (S7246C10*)(S7246C12*), ABISELECT(108,100), "S7246C15");
    check_base_class_offset(lv, (S7246C10*)(S7246C9*), ABISELECT(108,100), "S7246C15");
    /*is_ambiguous_... S7246C15::S7246C8 */ AMB_check_base_class_offset(lv, (S7246C4*)(S7246C8*), ABISELECT(256,236), "S7246C15");
    /*is_ambiguous_... S7246C12::S7246C8 */ AMB_check_base_class_offset(lv, (S7246C8*)(S7246C12*), ABISELECT(256,236), "S7246C15");
    /*is_ambiguous_... S7246C12::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*)(S7246C12*), ABISELECT(208,192), "S7246C15");
    check_base_class_offset(lv, (S7246C12*)(S7246C16*), ABISELECT(200,188), "S7246C15");
    check_base_class_offset(lv, (S7246C16*), ABISELECT(56,52), "S7246C15");
    check_base_class_offset(lv, (S4677C27*), 0, "S7246C15");
    /*is_ambiguous_... S7246C15::S7246C8 */ AMB_check_base_class_offset(lv, (S7246C4*)(S7246C8*), ABISELECT(8,4), "S7246C15");
    /*is_ambiguous_... S7246C15::S7246C8 */ AMB_check_base_class_offset(lv, (S7246C8*), ABISELECT(8,4), "S7246C15");
    /*is_ambiguous_... S7246C3::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*)(S7246C3*), ABISELECT(344,300), "S7246C15");
    check_base_class_offset(lv, (S7246C4*)(S7246C5*)(S7246C3*), ABISELECT(384,340), "S7246C15");
    check_base_class_offset(lv, (S7246C5*)(S7246C3*), ABISELECT(384,340), "S7246C15");
    check_base_class_offset(lv, (S7246C4*)(S7246C6*), ABISELECT(468,424), "S7246C15");
    check_base_class_offset(lv, (S7246C4*)(S7246C7*), ABISELECT(468,424), "S7246C15");
    check_base_class_offset(lv, (S7246C7*)(S7246C6*), 0, "S7246C15");
    check_base_class_offset(lv, (S7246C6*)(S7246C3*), 0, "S7246C15");
    check_base_class_offset(lv, (S7246C4*)(S7246C8*)(S7246C3*), ABISELECT(424,380), "S7246C15");
    check_base_class_offset(lv, (S7246C8*)(S7246C3*), ABISELECT(424,380), "S7246C15");
    check_base_class_offset(lv, (S7246C3*)(S7246C9*), ABISELECT(336,296), "S7246C15");
    check_base_class_offset(lv, (S7246C9*), ABISELECT(304,280), "S7246C15");
    check_field_offset(lv, s7246c15f0, ABISELECT(52,48), "S7246C15.s7246c15f0");
    test_class_info(&lv, &cd_S7246C15);
    dp->~S7246C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7246C15(Test_S7246C15, "S7246C15", ABISELECT(512,464));

#else // __cplusplus

extern void _ZN8S7246C15C1Ev();
extern void _ZN8S7246C15D2Ev();
Name_Map name_map_S7246C15[] = {
  NSPAIR(_ZN8S7246C15C1Ev),
  NSPAIR(_ZN8S7246C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C5;
extern VTBL_ENTRY _ZTI7S7246C5[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C8;
extern VTBL_ENTRY _ZTI7S7246C8[];
extern Class_Descriptor cd_S7246C10;
extern VTBL_ENTRY _ZTI8S7246C10[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C8;
extern VTBL_ENTRY _ZTI7S7246C8[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C12;
extern VTBL_ENTRY _ZTI8S7246C12[];
extern  VTBL_ENTRY _ZTV8S7246C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7246C12[];
extern Class_Descriptor cd_S7246C16;
extern VTBL_ENTRY _ZTI8S7246C16[];
extern  VTBL_ENTRY _ZTV8S7246C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7246C16[];
extern Class_Descriptor cd_S4677C27;
extern VTBL_ENTRY _ZTI8S4677C27[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C8;
extern VTBL_ENTRY _ZTI7S7246C8[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C5;
extern VTBL_ENTRY _ZTI7S7246C5[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C7;
extern VTBL_ENTRY _ZTI7S7246C7[];
extern  VTBL_ENTRY _ZTV7S7246C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7246C7[];
extern Class_Descriptor cd_S7246C6;
extern VTBL_ENTRY _ZTI7S7246C6[];
extern  VTBL_ENTRY _ZTV7S7246C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7246C6[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C8;
extern VTBL_ENTRY _ZTI7S7246C8[];
extern Class_Descriptor cd_S7246C3;
extern VTBL_ENTRY _ZTI7S7246C3[];
extern  VTBL_ENTRY _ZTV7S7246C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7246C3[];
extern Class_Descriptor cd_S7246C9;
extern VTBL_ENTRY _ZTI7S7246C9[];
extern  VTBL_ENTRY _ZTV7S7246C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7246C9[];
static Base_Class bases_S7246C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7246C4,    ABISELECT(68,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
    2, //immediately_derived
  0, 0},
  {&cd_S7246C5,    ABISELECT(68,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(108,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_S7246C8,    ABISELECT(108,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
    5, //immediately_derived
  0, 0},
  {&cd_S7246C10,    ABISELECT(108,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(256,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7246C8,    ABISELECT(256,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(208,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7246C12,    ABISELECT(200,188), //bcp->offset
    27, //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
    1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7246C16,    ABISELECT(56,52), //bcp->offset
    17, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7246C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7246C4,    ABISELECT(344,300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7246C4,    ABISELECT(384,340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7246C5,    ABISELECT(384,340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7246C4,    ABISELECT(468,424), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7246C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S7246C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(424,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7246C8,    ABISELECT(424,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7246C3,    ABISELECT(336,296), //bcp->offset
    45, //bcp->virtual_function_table_offset
    6, //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
    23, //immediately_derived
  0, 1},
  {&cd_S7246C9,    ABISELECT(304,280), //bcp->offset
    35, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7246C15[];
extern void _ZN8S7246C15D1Ev();
extern void _ZN8S7246C15D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S7246C15D1Ev,_ZTv0_n32_N8S7246C15D1Ev)();
extern void ABISELECT(_ZThn56_N8S7246C15D1Ev,_ZThn52_N8S7246C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7246C15D0Ev,_ZTv0_n32_N8S7246C15D0Ev)();
extern void ABISELECT(_ZThn56_N8S7246C15D0Ev,_ZThn52_N8S7246C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7246C15D1Ev,_ZTv0_n24_N8S7246C15D1Ev)();
extern void ABISELECT(_ZThn200_N8S7246C15D1Ev,_ZThn188_N8S7246C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7246C15D0Ev,_ZTv0_n24_N8S7246C15D0Ev)();
extern void ABISELECT(_ZThn200_N8S7246C15D0Ev,_ZThn188_N8S7246C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7246C15D1Ev,_ZTv0_n16_N8S7246C15D1Ev)();
extern void ABISELECT(_ZThn304_N8S7246C15D1Ev,_ZThn280_N8S7246C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7246C15D0Ev,_ZTv0_n16_N8S7246C15D0Ev)();
extern void ABISELECT(_ZThn304_N8S7246C15D0Ev,_ZThn280_N8S7246C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7246C15D1Ev,_ZTv0_n16_N8S7246C15D1Ev)();
extern void ABISELECT(_ZThn336_N8S7246C15D1Ev,_ZThn296_N8S7246C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7246C15D0Ev,_ZTv0_n16_N8S7246C15D0Ev)();
extern void ABISELECT(_ZThn336_N8S7246C15D0Ev,_ZThn296_N8S7246C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7246C15[] = {
  0,
  ABISELECT(336,296),
  ABISELECT(304,280),
  0,
  ABISELECT(256,236),
  ABISELECT(200,188),
  ABISELECT(108,100),
  ABISELECT(68,60),
  0,
  ABISELECT(56,52),
  0,
  0,
  ABISELECT(468,424),
  0,
  (VTBL_ENTRY)&(_ZTI8S7246C15[0]),
  (VTBL_ENTRY)&_ZN8S7246C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7246C15D0Ev,
  ABISELECT(-56,-52),
  ABISELECT(200,184),
  ABISELECT(144,136),
  ABISELECT(52,48),
  ABISELECT(12,8),
  ABISELECT(-56,-52),
  ABISELECT(-56,-52),
  (VTBL_ENTRY)&(_ZTI8S7246C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7246C15D1Ev,_ZTv0_n32_N8S7246C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7246C15D0Ev,_ZTv0_n32_N8S7246C15D0Ev),
  ABISELECT(-200,-188),
  ABISELECT(-92,-88),
  ABISELECT(-132,-128),
  ABISELECT(56,48),
  ABISELECT(-200,-188),
  (VTBL_ENTRY)&(_ZTI8S7246C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7246C15D1Ev,_ZTv0_n24_N8S7246C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7246C15D0Ev,_ZTv0_n24_N8S7246C15D0Ev),
  ABISELECT(-196,-180),
  ABISELECT(-304,-280),
  ABISELECT(32,16),
  ABISELECT(-304,-280),
  ABISELECT(-304,-280),
  ABISELECT(164,144),
  ABISELECT(-304,-280),
  (VTBL_ENTRY)&(_ZTI8S7246C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7246C15D1Ev,_ZTv0_n16_N8S7246C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7246C15D0Ev,_ZTv0_n16_N8S7246C15D0Ev),
  ABISELECT(-336,-296),
  ABISELECT(-336,-296),
  ABISELECT(-336,-296),
  ABISELECT(132,128),
  ABISELECT(-336,-296),
  (VTBL_ENTRY)&(_ZTI8S7246C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7246C15D1Ev,_ZTv0_n16_N8S7246C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7246C15D0Ev,_ZTv0_n16_N8S7246C15D0Ev),
};
extern VTBL_ENTRY _ZTV8S7246C15[];
extern void _ZN8S7246C16D1Ev();
extern void _ZN8S7246C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7246C16__8S7246C15[] = {
  ABISELECT(200,184),
  ABISELECT(144,136),
  ABISELECT(52,48),
  ABISELECT(12,8),
  ABISELECT(-56,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S7246C16[0]),
  (VTBL_ENTRY)&_ZN8S7246C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7246C16D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S7246C16D1Ev,_ZTv0_n24_N8S7246C16D1Ev)();
extern void ABISELECT(_ZThn144_N8S7246C16D1Ev,_ZThn136_N8S7246C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7246C16D0Ev,_ZTv0_n24_N8S7246C16D0Ev)();
extern void ABISELECT(_ZThn144_N8S7246C16D0Ev,_ZThn136_N8S7246C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7246C12__8S7246C16__8S7246C15[] = {
  ABISELECT(-144,-136),
  ABISELECT(-92,-88),
  ABISELECT(-132,-128),
  ABISELECT(56,48),
  ABISELECT(-144,-136),
  (VTBL_ENTRY)&(_ZTI8S7246C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7246C16D1Ev,_ZTv0_n24_N8S7246C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7246C16D0Ev,_ZTv0_n24_N8S7246C16D0Ev),
};
extern void _ZN8S7246C12D1Ev();
extern void _ZN8S7246C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7246C12__8S7246C15[] = {
  ABISELECT(-92,-88),
  ABISELECT(-132,-128),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7246C12[0]),
  (VTBL_ENTRY)&_ZN8S7246C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7246C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7246C9D1Ev,_ZTv0_n16_N7S7246C9D1Ev)();
extern void _ZN7S7246C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7246C9D0Ev,_ZTv0_n16_N7S7246C9D0Ev)();
extern void _ZN7S7246C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7246C9__8S7246C15[] = {
  ABISELECT(-196,-180),
  ABISELECT(-304,-280),
  ABISELECT(32,16),
  ABISELECT(-304,-280),
  0,
  ABISELECT(164,144),
  0,
  (VTBL_ENTRY)&(_ZTI7S7246C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C9D1Ev,_ZTv0_n16_N7S7246C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C9D0Ev,_ZTv0_n16_N7S7246C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7246C9D1Ev,_ZTv0_n16_N7S7246C9D1Ev)();
extern void ABISELECT(_ZThn32_N7S7246C9D1Ev,_ZThn16_N7S7246C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7246C9D0Ev,_ZTv0_n16_N7S7246C9D0Ev)();
extern void ABISELECT(_ZThn32_N7S7246C9D0Ev,_ZThn16_N7S7246C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7246C3__7S7246C9__8S7246C15[] = {
  ABISELECT(-336,-296),
  ABISELECT(-336,-296),
  ABISELECT(-32,-16),
  ABISELECT(132,128),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7246C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C9D1Ev,_ZTv0_n16_N7S7246C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C9D0Ev,_ZTv0_n16_N7S7246C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7246C9D1Ev,_ZTv0_n16_N7S7246C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7246C9D0Ev,_ZTv0_n16_N7S7246C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7246C6__7S7246C9__8S7246C15[] = {
  0,
  ABISELECT(304,280),
  ABISELECT(468,424),
  ABISELECT(304,280),
  (VTBL_ENTRY)&(_ZTI7S7246C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C9D1Ev,_ZTv0_n16_N7S7246C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C9D0Ev,_ZTv0_n16_N7S7246C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7246C3D1Ev,_ZTv0_n16_N7S7246C3D1Ev)();
extern void _ZN7S7246C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7246C3D0Ev,_ZTv0_n16_N7S7246C3D0Ev)();
extern void _ZN7S7246C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7246C3__8S7246C15[] = {
  ABISELECT(-336,-296),
  ABISELECT(-336,-296),
  0,
  ABISELECT(132,128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7246C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C3D1Ev,_ZTv0_n16_N7S7246C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C3D0Ev,_ZTv0_n16_N7S7246C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7246C3D1Ev,_ZTv0_n16_N7S7246C3D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7246C3D0Ev,_ZTv0_n16_N7S7246C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7246C6__7S7246C3__8S7246C15[] = {
  0,
  ABISELECT(336,296),
  ABISELECT(468,424),
  ABISELECT(336,296),
  (VTBL_ENTRY)&(_ZTI7S7246C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C3D1Ev,_ZTv0_n16_N7S7246C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C3D0Ev,_ZTv0_n16_N7S7246C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7246C6D1Ev,_ZTv0_n16_N7S7246C6D1Ev)();
extern void _ZN7S7246C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7246C6D0Ev,_ZTv0_n16_N7S7246C6D0Ev)();
extern void _ZN7S7246C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7246C6__8S7246C15[] = {
  0,
  0,
  ABISELECT(468,424),
  0,
  (VTBL_ENTRY)&(_ZTI7S7246C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C6D1Ev,_ZTv0_n16_N7S7246C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C6D0Ev,_ZTv0_n16_N7S7246C6D0Ev),
};
extern void _ZN7S7246C7D1Ev();
extern void _ZN7S7246C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7246C7__8S7246C15[] = {
  ABISELECT(468,424),
  0,
  (VTBL_ENTRY)&(_ZTI7S7246C7[0]),
  (VTBL_ENTRY)&_ZN7S7246C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7246C7D0Ev,
};
static  VTT_ENTRY vtt_S7246C15[] = {
  {&(_ZTV8S7246C15[15]),  15,53},
  {&(_ZTV8S7246C15[25]),  25,53},
  {&(_ZTV8S7246C15[33]),  33,53},
  {&(_ZTV8S7246C15[43]),  43,53},
  {&(_ZTV8S7246C15[51]),  51,53},
  {&(_ZTV8S7246C15[15]),  15,53},
  {&(_ZTV8S7246C15[15]),  15,53},
  {&(_tg__ZTV8S7246C16__8S7246C15[7]),  7,9},
  {&(_tg__ZTV8S7246C12__8S7246C16__8S7246C15[6]),  6,8},
  {&(_tg__ZTV8S7246C12__8S7246C15[5]),  5,7},
  {&(_tg__ZTV7S7246C9__8S7246C15[8]),  8,10},
  {&(_tg__ZTV7S7246C3__7S7246C9__8S7246C15[6]),  6,8},
  {&(_tg__ZTV7S7246C6__7S7246C9__8S7246C15[5]),  5,7},
  {&(_tg__ZTV7S7246C6__7S7246C9__8S7246C15[5]),  5,7},
  {&(_tg__ZTV7S7246C3__8S7246C15[6]),  6,8},
  {&(_tg__ZTV7S7246C6__7S7246C3__8S7246C15[5]),  5,7},
  {&(_tg__ZTV7S7246C6__7S7246C3__8S7246C15[5]),  5,7},
  {&(_tg__ZTV7S7246C6__8S7246C15[5]),  5,7},
  {&(_tg__ZTV7S7246C6__8S7246C15[5]),  5,7},
  {&(_tg__ZTV7S7246C7__8S7246C15[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7246C15[];
extern  VTBL_ENTRY _ZTV8S7246C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7246C15[];
static VTBL_ENTRY alt_thunk_names98[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C6D0Ev,_ZTv0_n16_N7S7246C6D0Ev), // 
  (VTBL_ENTRY)_ZN7S7246C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C6D1Ev,_ZTv0_n16_N7S7246C6D1Ev), // 
  (VTBL_ENTRY)_ZN7S7246C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C3D0Ev,_ZTv0_n16_N7S7246C3D0Ev), // 
  (VTBL_ENTRY)_ZN7S7246C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C3D1Ev,_ZTv0_n16_N7S7246C3D1Ev), // 
  (VTBL_ENTRY)_ZN7S7246C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C9D0Ev,_ZTv0_n16_N7S7246C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7246C9D0Ev,_ZThn16_N7S7246C9D0Ev),
  (VTBL_ENTRY)_ZN7S7246C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C9D1Ev,_ZTv0_n16_N7S7246C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7246C9D1Ev,_ZThn16_N7S7246C9D1Ev),
  (VTBL_ENTRY)_ZN7S7246C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7246C16D0Ev,_ZTv0_n24_N8S7246C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7246C16D0Ev,_ZThn136_N8S7246C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7246C16D1Ev,_ZTv0_n24_N8S7246C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7246C16D1Ev,_ZThn136_N8S7246C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7246C15D0Ev,_ZTv0_n16_N8S7246C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S7246C15D0Ev,_ZThn296_N8S7246C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S7246C15D0Ev,_ZThn280_N8S7246C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7246C15D1Ev,_ZTv0_n16_N8S7246C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S7246C15D1Ev,_ZThn296_N8S7246C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S7246C15D1Ev,_ZThn280_N8S7246C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7246C15D0Ev,_ZTv0_n24_N8S7246C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7246C15D0Ev,_ZThn188_N8S7246C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7246C15D1Ev,_ZTv0_n24_N8S7246C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7246C15D1Ev,_ZThn188_N8S7246C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7246C15D0Ev,_ZTv0_n32_N8S7246C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7246C15D0Ev,_ZThn52_N8S7246C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7246C15D1Ev,_ZTv0_n32_N8S7246C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7246C15D1Ev,_ZThn52_N8S7246C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7246C15 = {  "S7246C15", // class name
  bases_S7246C15, 24,
  &(vtc_S7246C15[0]), // expected_vtbl_contents
  &(vtt_S7246C15[0]), // expected_vtt_contents
  ABISELECT(512,464), // object size
  NSPAIRA(_ZTI8S7246C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7246C15),53, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7246C15),20, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names98,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7246C1  : S7246C2 , virtual S7246C15 , S4677C23 {
  void *s7246c1f0[5];
  virtual  ~S7246C1(); // _ZN7S7246C1D2Ev
  S7246C1(); // tgen
};
//SIG(1 S7246C1) C1{ BC2{ VBC3{ BC4{ m Fi[10]} BC5{ BC4} VBC6{ VBC4 VBC7{ VBC4 vd} vd} BC8{ BC4 Fi}} VBC9{ VBC3 VBC10{ BC8 FC8} FD} VBC11{ VBC7 BC6 FD} BC12{ VBC8 VBC5 VBC10 BC4 vd Fp} BC13{ VBC12 BC7 BC14{ m}} Fi} VBC15{ VBC16{ VBC14 VBC5 VBC10 VBC12 Fi} VBC17{ m} BC8 VBC9 vd Fi} BC18{ m} vd Fp[5]}


 S7246C1 ::~S7246C1(){ note_dtor("S7246C1", this);}
S7246C1 ::S7246C1(){ note_ctor("S7246C1", this);} // tgen

static void Test_S7246C1()
{
  extern Class_Descriptor cd_S7246C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(43,140)];
    init_test(&cd_S7246C1, buf);
    S7246C1 *dp, &lv = *(dp=new (buf) S7246C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(672,556), "sizeof(S7246C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7246C1)");
    /*is_ambiguous_... S7246C3::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*)(S7246C3*), ABISELECT(120,80), "S7246C1");
    check_base_class_offset(lv, (S7246C4*)(S7246C5*)(S7246C3*), ABISELECT(160,120), "S7246C1");
    check_base_class_offset(lv, (S7246C5*)(S7246C3*), ABISELECT(160,120), "S7246C1");
    /*is_ambiguous_... S7246C1::S7246C6 */ AMB_check_base_class_offset(lv, (S7246C4*)(S7246C6*), ABISELECT(244,204), "S7246C1");
    /*is_ambiguous_... S7246C1::S7246C7 */ AMB_check_base_class_offset(lv, (S7246C4*)(S7246C7*), ABISELECT(244,204), "S7246C1");
    check_base_class_offset(lv, (S7246C4*)(S7246C6*)(S7246C11*), ABISELECT(244,204), "S7246C1");
    check_base_class_offset(lv, (S7246C4*)(S7246C7*)(S7246C13*)(S7246C2*), ABISELECT(244,204), "S7246C1");
    /*is_ambiguous_... S7246C1::S7246C6 */ AMB_check_base_class_offset(lv, (S7246C7*)(S7246C6*), ABISELECT(112,76), "S7246C1");
    check_base_class_offset(lv, (S7246C7*)(S7246C11*), ABISELECT(112,76), "S7246C1");
    check_base_class_offset(lv, (S7246C7*)(S7246C6*)(S7246C11*), ABISELECT(112,76), "S7246C1");
    check_base_class_offset(lv, (S7246C6*)(S7246C3*), ABISELECT(112,76), "S7246C1");
    check_base_class_offset(lv, (S7246C4*)(S7246C8*)(S7246C3*), ABISELECT(200,160), "S7246C1");
    check_base_class_offset(lv, (S7246C8*)(S7246C3*), ABISELECT(200,160), "S7246C1");
    check_base_class_offset(lv, (S7246C3*)(S7246C2*), ABISELECT(112,76), "S7246C1");
    check_base_class_offset(lv, (S7246C3*)(S7246C9*), ABISELECT(112,76), "S7246C1");
    check_base_class_offset(lv, (S7246C4*)(S7246C8*)(S7246C10*), ABISELECT(320,260), "S7246C1");
    check_base_class_offset(lv, (S7246C8*)(S7246C10*), ABISELECT(320,260), "S7246C1");
    check_base_class_offset(lv, (S7246C10*)(S7246C9*), ABISELECT(320,260), "S7246C1");
    /*is_ambiguous_... S7246C2::S7246C12 */ AMB_check_base_class_offset(lv, (S7246C10*)(S7246C12*)(S7246C2*), ABISELECT(320,260), "S7246C1");
    /*is_ambiguous_... S7246C1::S7246C12 */ AMB_check_base_class_offset(lv, (S7246C10*)(S7246C12*), ABISELECT(320,260), "S7246C1");
    check_base_class_offset(lv, (S7246C10*)(S7246C16*), ABISELECT(320,260), "S7246C1");
    check_base_class_offset(lv, (S7246C9*)(S7246C2*), ABISELECT(288,244), "S7246C1");
    check_base_class_offset(lv, (S7246C9*)(S7246C15*), ABISELECT(288,244), "S7246C1");
    check_base_class_offset(lv, (S7246C6*)(S7246C11*), ABISELECT(416,348), "S7246C1");
    check_base_class_offset(lv, (S7246C11*)(S7246C2*), ABISELECT(416,348), "S7246C1");
    /*is_ambiguous_... S7246C1::S7246C8 */ AMB_check_base_class_offset(lv, (S7246C4*)(S7246C8*), ABISELECT(448,364), "S7246C1");
    /*is_ambiguous_... S7246C2::S7246C12 */ AMB_check_base_class_offset(lv, (S7246C8*)(S7246C12*)(S7246C2*), ABISELECT(448,364), "S7246C1");
    /*is_ambiguous_... S7246C1::S7246C12 */ AMB_check_base_class_offset(lv, (S7246C8*)(S7246C12*), ABISELECT(448,364), "S7246C1");
    /*is_ambiguous_... S7246C1::S7246C5 */ AMB_check_base_class_offset(lv, (S7246C4*)(S7246C5*), ABISELECT(492,408), "S7246C1");
    /*is_ambiguous_... S7246C2::S7246C12 */ AMB_check_base_class_offset(lv, (S7246C5*)(S7246C12*)(S7246C2*), ABISELECT(492,408), "S7246C1");
    /*is_ambiguous_... S7246C1::S7246C12 */ AMB_check_base_class_offset(lv, (S7246C5*)(S7246C12*), ABISELECT(492,408), "S7246C1");
    check_base_class_offset(lv, (S7246C5*)(S7246C16*), ABISELECT(492,408), "S7246C1");
    /*is_ambiguous_... S7246C2::S7246C12 */ AMB_check_base_class_offset(lv, (S7246C4*)(S7246C12*)(S7246C2*), ABISELECT(8,4), "S7246C1");
    /*is_ambiguous_... S7246C2::S7246C12 */ AMB_check_base_class_offset(lv, (S7246C12*)(S7246C2*), 0, "S7246C1");
    /*is_ambiguous_... S7246C1::S7246C12 */ AMB_check_base_class_offset(lv, (S7246C4*)(S7246C12*), ABISELECT(544,452), "S7246C1");
    check_base_class_offset(lv, (S7246C12*)(S7246C13*)(S7246C2*), ABISELECT(536,448), "S7246C1");
    check_base_class_offset(lv, (S7246C12*)(S7246C16*), ABISELECT(536,448), "S7246C1");
    check_base_class_offset(lv, (S7246C7*)(S7246C13*)(S7246C2*), ABISELECT(56,48), "S7246C1");
    check_base_class_offset(lv, (S4677C37*)(S7246C13*)(S7246C2*), ABISELECT(56,48), "S7246C1");
    check_base_class_offset(lv, (S7246C13*)(S7246C2*), ABISELECT(56,48), "S7246C1");
    check_base_class_offset(lv, (S7246C2*), 0, "S7246C1");
    check_base_class_offset(lv, (S4677C37*)(S7246C16*), 0, "S7246C1");
    check_base_class_offset(lv, (S7246C16*)(S7246C15*), ABISELECT(648,548), "S7246C1");
    check_base_class_offset(lv, (S4677C27*)(S7246C15*), 0, "S7246C1");
    /*is_ambiguous_... S7246C15::S7246C8 */ AMB_check_base_class_offset(lv, (S7246C4*)(S7246C8*)(S7246C15*), ABISELECT(600,500), "S7246C1");
    /*is_ambiguous_... S7246C15::S7246C8 */ AMB_check_base_class_offset(lv, (S7246C8*)(S7246C15*), ABISELECT(600,500), "S7246C1");
    check_base_class_offset(lv, (S7246C15*), ABISELECT(592,496), "S7246C1");
    check_base_class_offset(lv, (S4677C23*), 0, "S7246C1");
    check_field_offset(lv, s7246c1f0, ABISELECT(72,56), "S7246C1.s7246c1f0");
    test_class_info(&lv, &cd_S7246C1);
    dp->~S7246C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7246C1(Test_S7246C1, "S7246C1", ABISELECT(672,556));

#else // __cplusplus

extern void _ZN7S7246C1C1Ev();
extern void _ZN7S7246C1D2Ev();
Name_Map name_map_S7246C1[] = {
  NSPAIR(_ZN7S7246C1C1Ev),
  NSPAIR(_ZN7S7246C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C5;
extern VTBL_ENTRY _ZTI7S7246C5[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C7;
extern VTBL_ENTRY _ZTI7S7246C7[];
extern  VTBL_ENTRY _ZTV7S7246C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7246C7[];
extern Class_Descriptor cd_S7246C6;
extern VTBL_ENTRY _ZTI7S7246C6[];
extern  VTBL_ENTRY _ZTV7S7246C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7246C6[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C8;
extern VTBL_ENTRY _ZTI7S7246C8[];
extern Class_Descriptor cd_S7246C3;
extern VTBL_ENTRY _ZTI7S7246C3[];
extern  VTBL_ENTRY _ZTV7S7246C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7246C3[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C8;
extern VTBL_ENTRY _ZTI7S7246C8[];
extern Class_Descriptor cd_S7246C10;
extern VTBL_ENTRY _ZTI8S7246C10[];
extern Class_Descriptor cd_S7246C9;
extern VTBL_ENTRY _ZTI7S7246C9[];
extern  VTBL_ENTRY _ZTV7S7246C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7246C9[];
extern Class_Descriptor cd_S7246C6;
extern VTBL_ENTRY _ZTI7S7246C6[];
extern  VTBL_ENTRY _ZTV7S7246C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7246C6[];
extern Class_Descriptor cd_S7246C11;
extern VTBL_ENTRY _ZTI8S7246C11[];
extern  VTBL_ENTRY _ZTV8S7246C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7246C11[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C8;
extern VTBL_ENTRY _ZTI7S7246C8[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C5;
extern VTBL_ENTRY _ZTI7S7246C5[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C12;
extern VTBL_ENTRY _ZTI8S7246C12[];
extern  VTBL_ENTRY _ZTV8S7246C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7246C12[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C12;
extern VTBL_ENTRY _ZTI8S7246C12[];
extern  VTBL_ENTRY _ZTV8S7246C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7246C12[];
extern Class_Descriptor cd_S7246C7;
extern VTBL_ENTRY _ZTI7S7246C7[];
extern  VTBL_ENTRY _ZTV7S7246C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7246C7[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7246C13;
extern VTBL_ENTRY _ZTI8S7246C13[];
extern  VTBL_ENTRY _ZTV8S7246C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7246C13[];
extern Class_Descriptor cd_S7246C2;
extern VTBL_ENTRY _ZTI7S7246C2[];
extern  VTBL_ENTRY _ZTV7S7246C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7246C2[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7246C16;
extern VTBL_ENTRY _ZTI8S7246C16[];
extern  VTBL_ENTRY _ZTV8S7246C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7246C16[];
extern Class_Descriptor cd_S4677C27;
extern VTBL_ENTRY _ZTI8S4677C27[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C8;
extern VTBL_ENTRY _ZTI7S7246C8[];
extern Class_Descriptor cd_S7246C15;
extern VTBL_ENTRY _ZTI8S7246C15[];
extern  VTBL_ENTRY _ZTV8S7246C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7246C15[];
extern Class_Descriptor cd_S4677C23;
extern VTBL_ENTRY _ZTI8S4677C23[];
static Base_Class bases_S7246C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    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
    8, //immediately_derived
  0, 0},
  {&cd_S7246C4,    ABISELECT(160,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7246C5,    ABISELECT(160,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
    8, //immediately_derived
  0, 0},
  {&cd_S7246C4,    ABISELECT(244,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
    4, //immediately_derived
  0, 1},
  {&cd_S7246C7,    ABISELECT(112,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7246C6,    ABISELECT(112,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(200,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
    7, //immediately_derived
  0, 0},
  {&cd_S7246C8,    ABISELECT(200,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
    8, //immediately_derived
  0, 0},
  {&cd_S7246C3,    ABISELECT(112,76), //bcp->offset
    27, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(320,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
    10, //immediately_derived
  0, 0},
  {&cd_S7246C8,    ABISELECT(320,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
    11, //immediately_derived
  0, 0},
  {&cd_S7246C10,    ABISELECT(320,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
    12, //immediately_derived
  0, 1},
  {&cd_S7246C9,    ABISELECT(288,244), //bcp->offset
    35, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7246C6,    ABISELECT(416,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7246C11,    ABISELECT(416,348), //bcp->offset
    45, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(448,364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7246C8,    ABISELECT(448,364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(492,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
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7246C5,    ABISELECT(492,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
    -1, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7246C12,    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
    10, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7246C4,    ABISELECT(544,452), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7246C12,    ABISELECT(536,448), //bcp->offset
    52, //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
    7, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S7246C7,    ABISELECT(56,48), //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
    11, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7246C13,    ABISELECT(56,48), //bcp->offset
    18, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7246C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7246C16,    ABISELECT(648,548), //bcp->offset
    77, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S4677C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7246C4,    ABISELECT(600,500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7246C8,    ABISELECT(600,500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7246C15,    ABISELECT(592,496), //bcp->offset
    60, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7246C1[];
extern void _ZN7S7246C1D1Ev();
extern void _ZN7S7246C1D0Ev();
extern void ABISELECT(_ZThn56_N7S7246C1D1Ev,_ZThn48_N7S7246C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S7246C1D0Ev,_ZThn48_N7S7246C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7246C1D1Ev,_ZTv0_n16_N7S7246C1D1Ev)();
extern void ABISELECT(_ZThn112_N7S7246C1D1Ev,_ZThn76_N7S7246C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7246C1D0Ev,_ZTv0_n16_N7S7246C1D0Ev)();
extern void ABISELECT(_ZThn112_N7S7246C1D0Ev,_ZThn76_N7S7246C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7246C1D1Ev,_ZTv0_n16_N7S7246C1D1Ev)();
extern void ABISELECT(_ZThn288_N7S7246C1D1Ev,_ZThn244_N7S7246C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7246C1D0Ev,_ZTv0_n16_N7S7246C1D0Ev)();
extern void ABISELECT(_ZThn288_N7S7246C1D0Ev,_ZThn244_N7S7246C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7246C1D1Ev,_ZTv0_n16_N7S7246C1D1Ev)();
extern void ABISELECT(_ZThn416_N7S7246C1D1Ev,_ZThn348_N7S7246C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7246C1D0Ev,_ZTv0_n16_N7S7246C1D0Ev)();
extern void ABISELECT(_ZThn416_N7S7246C1D0Ev,_ZThn348_N7S7246C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7246C1D1Ev,_ZTv0_n24_N7S7246C1D1Ev)();
extern void ABISELECT(_ZThn536_N7S7246C1D1Ev,_ZThn448_N7S7246C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7246C1D0Ev,_ZTv0_n24_N7S7246C1D0Ev)();
extern void ABISELECT(_ZThn536_N7S7246C1D0Ev,_ZThn448_N7S7246C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7246C1D1Ev,_ZTv0_n16_N7S7246C1D1Ev)();
extern void ABISELECT(_ZThn592_N7S7246C1D1Ev,_ZThn496_N7S7246C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7246C1D0Ev,_ZTv0_n16_N7S7246C1D0Ev)();
extern void ABISELECT(_ZThn592_N7S7246C1D0Ev,_ZThn496_N7S7246C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7246C1D1Ev,_ZTv0_n32_N7S7246C1D1Ev)();
extern void ABISELECT(_ZThn648_N7S7246C1D1Ev,_ZThn548_N7S7246C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7246C1D0Ev,_ZTv0_n32_N7S7246C1D0Ev)();
extern void ABISELECT(_ZThn648_N7S7246C1D0Ev,_ZThn548_N7S7246C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7246C1[] = {
  0,
  0,
  ABISELECT(648,548),
  ABISELECT(592,496),
  ABISELECT(536,448),
  ABISELECT(416,348),
  ABISELECT(288,244),
  ABISELECT(112,76),
  ABISELECT(244,204),
  ABISELECT(112,76),
  ABISELECT(112,76),
  ABISELECT(320,260),
  ABISELECT(492,408),
  ABISELECT(448,364),
  0,
  (VTBL_ENTRY)&(_ZTI7S7246C1[0]),
  (VTBL_ENTRY)&_ZN7S7246C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7246C1D0Ev,
  ABISELECT(264,212),
  ABISELECT(436,360),
  ABISELECT(392,316),
  ABISELECT(480,400),
  ABISELECT(188,156),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI7S7246C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S7246C1D1Ev,_ZThn48_N7S7246C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S7246C1D0Ev,_ZThn48_N7S7246C1D0Ev),
  0,
  0,
  ABISELECT(-112,-76),
  ABISELECT(132,128),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI7S7246C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C1D1Ev,_ZTv0_n16_N7S7246C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C1D0Ev,_ZTv0_n16_N7S7246C1D0Ev),
  ABISELECT(32,16),
  ABISELECT(-176,-168),
  ABISELECT(-176,-168),
  ABISELECT(-176,-168),
  ABISELECT(-288,-244),
  ABISELECT(-44,-40),
  ABISELECT(-288,-244),
  (VTBL_ENTRY)&(_ZTI7S7246C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C1D1Ev,_ZTv0_n16_N7S7246C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C1D0Ev,_ZTv0_n16_N7S7246C1D0Ev),
  ABISELECT(-304,-272),
  ABISELECT(-416,-348),
  ABISELECT(-172,-144),
  ABISELECT(-416,-348),
  (VTBL_ENTRY)&(_ZTI7S7246C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C1D1Ev,_ZTv0_n16_N7S7246C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C1D0Ev,_ZTv0_n16_N7S7246C1D0Ev),
  ABISELECT(-536,-448),
  ABISELECT(-216,-188),
  ABISELECT(-44,-40),
  ABISELECT(-88,-84),
  ABISELECT(-536,-448),
  (VTBL_ENTRY)&(_ZTI7S7246C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7246C1D1Ev,_ZTv0_n24_N7S7246C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7246C1D0Ev,_ZTv0_n24_N7S7246C1D0Ev),
  ABISELECT(-480,-420),
  ABISELECT(-480,-420),
  ABISELECT(-304,-252),
  ABISELECT(-592,-496),
  ABISELECT(-144,-132),
  ABISELECT(-56,-48),
  ABISELECT(-272,-236),
  ABISELECT(-100,-88),
  ABISELECT(-592,-496),
  ABISELECT(56,52),
  ABISELECT(-480,-420),
  ABISELECT(-592,-496),
  ABISELECT(-348,-292),
  ABISELECT(-592,-496),
  (VTBL_ENTRY)&(_ZTI7S7246C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C1D1Ev,_ZTv0_n16_N7S7246C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C1D0Ev,_ZTv0_n16_N7S7246C1D0Ev),
  ABISELECT(-648,-548),
  ABISELECT(-200,-184),
  ABISELECT(-112,-100),
  ABISELECT(-328,-288),
  ABISELECT(-156,-140),
  ABISELECT(-648,-548),
  ABISELECT(-648,-548),
  (VTBL_ENTRY)&(_ZTI7S7246C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7246C1D1Ev,_ZTv0_n32_N7S7246C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7246C1D0Ev,_ZTv0_n32_N7S7246C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7246C1[];
extern void _ZN7S7246C2D1Ev();
extern void _ZN7S7246C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7246C2__7S7246C1[] = {
  ABISELECT(536,448),
  ABISELECT(416,348),
  ABISELECT(288,244),
  ABISELECT(112,76),
  ABISELECT(244,204),
  ABISELECT(112,76),
  ABISELECT(112,76),
  ABISELECT(320,260),
  ABISELECT(492,408),
  ABISELECT(448,364),
  0,
  (VTBL_ENTRY)&(_ZTI7S7246C2[0]),
  (VTBL_ENTRY)&_ZN7S7246C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7246C2D0Ev,
};
extern void _ZN8S7246C12D1Ev();
extern void _ZN8S7246C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7246C127S7246C2__7S7246C1[] = {
  ABISELECT(320,260),
  ABISELECT(492,408),
  ABISELECT(448,364),
  0,
  (VTBL_ENTRY)&(_ZTI8S7246C12[0]),
  (VTBL_ENTRY)&_ZN8S7246C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7246C12D0Ev,
};
extern void _ZN8S7246C13D1Ev();
extern void _ZN8S7246C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7246C137S7246C2__7S7246C1[] = {
  ABISELECT(264,212),
  ABISELECT(436,360),
  ABISELECT(392,316),
  ABISELECT(480,400),
  ABISELECT(188,156),
  0,
  (VTBL_ENTRY)&(_ZTI8S7246C13[0]),
  (VTBL_ENTRY)&_ZN8S7246C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7246C13D0Ev,
};
extern void _ZN7S7246C7D1Ev();
extern void _ZN7S7246C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7246C78S7246C137S7246C2__A1__7S7246C1[] = {
  ABISELECT(188,156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7246C7[0]),
  (VTBL_ENTRY)&_ZN7S7246C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7246C7D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S7246C13D1Ev,_ZTv0_n24_N8S7246C13D1Ev)();
extern void ABISELECT(_ZThn480_N8S7246C13D1Ev,_ZThn400_N8S7246C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7246C13D0Ev,_ZTv0_n24_N8S7246C13D0Ev)();
extern void ABISELECT(_ZThn480_N8S7246C13D0Ev,_ZThn400_N8S7246C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7246C12__8S7246C137S7246C2__7S7246C1[] = {
  ABISELECT(-480,-400),
  ABISELECT(-216,-188),
  ABISELECT(-44,-40),
  ABISELECT(-88,-84),
  ABISELECT(-480,-400),
  (VTBL_ENTRY)&(_ZTI8S7246C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7246C13D1Ev,_ZTv0_n24_N8S7246C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7246C13D0Ev,_ZTv0_n24_N8S7246C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7246C2D1Ev,_ZTv0_n16_N7S7246C2D1Ev)();
extern void ABISELECT(_ZThn112_N7S7246C2D1Ev,_ZThn76_N7S7246C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7246C2D0Ev,_ZTv0_n16_N7S7246C2D0Ev)();
extern void ABISELECT(_ZThn112_N7S7246C2D0Ev,_ZThn76_N7S7246C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7246C3__7S7246C2__7S7246C1[] = {
  0,
  0,
  ABISELECT(-112,-76),
  ABISELECT(132,128),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI7S7246C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C2D1Ev,_ZTv0_n16_N7S7246C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C2D0Ev,_ZTv0_n16_N7S7246C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7246C2D1Ev,_ZTv0_n16_N7S7246C2D1Ev)();
extern void ABISELECT(_ZThn288_N7S7246C2D1Ev,_ZThn244_N7S7246C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7246C2D0Ev,_ZTv0_n16_N7S7246C2D0Ev)();
extern void ABISELECT(_ZThn288_N7S7246C2D0Ev,_ZThn244_N7S7246C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7246C9__7S7246C2__7S7246C1[] = {
  ABISELECT(32,16),
  ABISELECT(-176,-168),
  ABISELECT(-176,-168),
  ABISELECT(-176,-168),
  ABISELECT(-288,-244),
  ABISELECT(-44,-40),
  ABISELECT(-288,-244),
  (VTBL_ENTRY)&(_ZTI7S7246C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C2D1Ev,_ZTv0_n16_N7S7246C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C2D0Ev,_ZTv0_n16_N7S7246C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7246C2D1Ev,_ZTv0_n16_N7S7246C2D1Ev)();
extern void ABISELECT(_ZThn416_N7S7246C2D1Ev,_ZThn348_N7S7246C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7246C2D0Ev,_ZTv0_n16_N7S7246C2D0Ev)();
extern void ABISELECT(_ZThn416_N7S7246C2D0Ev,_ZThn348_N7S7246C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7246C11__7S7246C2__7S7246C1[] = {
  ABISELECT(-304,-272),
  ABISELECT(-416,-348),
  ABISELECT(-172,-144),
  ABISELECT(-416,-348),
  (VTBL_ENTRY)&(_ZTI7S7246C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C2D1Ev,_ZTv0_n16_N7S7246C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C2D0Ev,_ZTv0_n16_N7S7246C2D0Ev),
};
extern void ABISELECT(_ZThn56_N7S7246C2D1Ev,_ZThn48_N7S7246C2D1Ev)();
extern void ABISELECT(_ZThn56_N7S7246C2D0Ev,_ZThn48_N7S7246C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7246C13__7S7246C2__7S7246C1[] = {
  ABISELECT(264,212),
  ABISELECT(436,360),
  ABISELECT(392,316),
  ABISELECT(480,400),
  ABISELECT(188,156),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI7S7246C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S7246C2D1Ev,_ZThn48_N7S7246C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S7246C2D0Ev,_ZThn48_N7S7246C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7246C2D1Ev,_ZTv0_n24_N7S7246C2D1Ev)();
extern void ABISELECT(_ZThn536_N7S7246C2D1Ev,_ZThn448_N7S7246C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7246C2D0Ev,_ZTv0_n24_N7S7246C2D0Ev)();
extern void ABISELECT(_ZThn536_N7S7246C2D0Ev,_ZThn448_N7S7246C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7246C12__A1__7S7246C2__7S7246C1[] = {
  ABISELECT(-536,-448),
  ABISELECT(-216,-188),
  ABISELECT(-44,-40),
  ABISELECT(-88,-84),
  ABISELECT(-536,-448),
  (VTBL_ENTRY)&(_ZTI7S7246C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7246C2D1Ev,_ZTv0_n24_N7S7246C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7246C2D0Ev,_ZTv0_n24_N7S7246C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7246C3D1Ev,_ZTv0_n16_N7S7246C3D1Ev)();
extern void _ZN7S7246C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7246C3D0Ev,_ZTv0_n16_N7S7246C3D0Ev)();
extern void _ZN7S7246C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7246C3__7S7246C1[] = {
  0,
  0,
  0,
  ABISELECT(132,128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7246C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C3D1Ev,_ZTv0_n16_N7S7246C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C3D0Ev,_ZTv0_n16_N7S7246C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7246C6D1Ev,_ZTv0_n16_N7S7246C6D1Ev)();
extern void _ZN7S7246C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7246C6D0Ev,_ZTv0_n16_N7S7246C6D0Ev)();
extern void _ZN7S7246C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7246C6__7S7246C1[] = {
  0,
  0,
  ABISELECT(132,128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7246C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C6D1Ev,_ZTv0_n16_N7S7246C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C6D0Ev,_ZTv0_n16_N7S7246C6D0Ev),
};
extern void _ZN7S7246C7D1Ev();
extern void _ZN7S7246C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7246C7__7S7246C1[] = {
  ABISELECT(132,128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7246C7[0]),
  (VTBL_ENTRY)&_ZN7S7246C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7246C7D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7246C9D1Ev,_ZTv0_n16_N7S7246C9D1Ev)();
extern void _ZN7S7246C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7246C9D0Ev,_ZTv0_n16_N7S7246C9D0Ev)();
extern void _ZN7S7246C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7246C9__7S7246C1[] = {
  ABISELECT(32,16),
  ABISELECT(-176,-168),
  ABISELECT(-176,-168),
  ABISELECT(-176,-168),
  0,
  ABISELECT(-44,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7246C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C9D1Ev,_ZTv0_n16_N7S7246C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C9D0Ev,_ZTv0_n16_N7S7246C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7246C9D1Ev,_ZTv0_n16_N7S7246C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7246C9D0Ev,_ZTv0_n16_N7S7246C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7246C3__7S7246C9__7S7246C1[] = {
  0,
  0,
  ABISELECT(176,168),
  ABISELECT(132,128),
  ABISELECT(176,168),
  (VTBL_ENTRY)&(_ZTI7S7246C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C9D1Ev,_ZTv0_n16_N7S7246C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C9D0Ev,_ZTv0_n16_N7S7246C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7246C11D1Ev,_ZTv0_n16_N8S7246C11D1Ev)();
extern void _ZN8S7246C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7246C11D0Ev,_ZTv0_n16_N8S7246C11D0Ev)();
extern void _ZN8S7246C11D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7246C11__7S7246C1[] = {
  ABISELECT(-304,-272),
  0,
  ABISELECT(-172,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S7246C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7246C11D1Ev,_ZTv0_n16_N8S7246C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7246C11D0Ev,_ZTv0_n16_N8S7246C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7246C6D1Ev,_ZTv0_n16_N7S7246C6D1Ev)();
extern void _ZN7S7246C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7246C6D0Ev,_ZTv0_n16_N7S7246C6D0Ev)();
extern void _ZN7S7246C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7246C68S7246C11__A1__7S7246C1[] = {
  ABISELECT(-304,-272),
  0,
  ABISELECT(-172,-144),
  0,
  (VTBL_ENTRY)&(_ZTI7S7246C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C6D1Ev,_ZTv0_n16_N7S7246C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C6D0Ev,_ZTv0_n16_N7S7246C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7246C6D1Ev,_ZTv0_n16_N7S7246C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7246C6D0Ev,_ZTv0_n16_N7S7246C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7246C7__7S7246C68S7246C11__A1__7S7246C1[] = {
  ABISELECT(304,272),
  ABISELECT(132,128),
  ABISELECT(304,272),
  (VTBL_ENTRY)&(_ZTI7S7246C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C6D1Ev,_ZTv0_n16_N7S7246C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7246C6D0Ev,_ZTv0_n16_N7S7246C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7246C11D1Ev,_ZTv0_n16_N8S7246C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7246C11D0Ev,_ZTv0_n16_N8S7246C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7246C7__8S7246C11__7S7246C1[] = {
  ABISELECT(304,272),
  ABISELECT(132,128),
  ABISELECT(304,272),
  (VTBL_ENTRY)&(_ZTI8S7246C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7246C11D1Ev,_ZTv0_n16_N8S7246C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7246C11D0Ev,_ZTv0_n16_N8S7246C11D0Ev),
};
extern void _ZN8S7246C12D1Ev();
extern void _ZN8S7246C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7246C12__A1__7S7246C1[] = {
  ABISELECT(-216,-188),
  ABISELECT(-44,-40),
  ABISELECT(-88,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S7246C12[0]),
  (VTBL_ENTRY)&_ZN8S7246C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7246C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S7246C15D1Ev,_ZTv0_n16_N8S7246C15D1Ev)();
extern void _ZN8S7246C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7246C15D0Ev,_ZTv0_n16_N8S7246C15D0Ev)();
extern void _ZN8S7246C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7246C15__7S7246C1[] = {
  ABISELECT(-480,-420),
  ABISELECT(-480,-420),
  ABISELECT(-304,-252),
  ABISELECT(-592,-496),
  ABISELECT(-144,-132),
  ABISELECT(-56,-48),
  ABISELECT(-272,-236),
  ABISELECT(-100,-88),
  ABISELECT(-592,-496),
  ABISELECT(56,52),
  ABISELECT(-480,-420),
  0,
  ABISELECT(-348,-292),
  0,
  (VTBL_ENTRY)&(_ZTI8S7246C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7246C15D1Ev,_ZTv0_n16_N8S7246C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7246C15D0Ev,_ZTv0_n16_N8S7246C15D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S7246C15D1Ev,_ZTv0_n32_N8S7246C15D1Ev)();
extern void ABISELECT(_ZThn56_N8S7246C15D1Ev,_ZThn52_N8S7246C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7246C15D0Ev,_ZTv0_n32_N8S7246C15D0Ev)();
extern void ABISELECT(_ZThn56_N8S7246C15D0Ev,_ZThn52_N8S7246C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7246C16__8S7246C15__7S7246C1[] = {
  ABISELECT(-56,-52),
  ABISELECT(-200,-184),
  ABISELECT(-112,-100),
  ABISELECT(-328,-288),
  ABISELECT(-156,-140),
  ABISELECT(-648,-548),
  ABISELECT(-56,-52),
  (VTBL_ENTRY)&(_ZTI8S7246C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7246C15D1Ev,_ZTv0_n32_N8S7246C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7246C15D0Ev,_ZTv0_n32_N8S7246C15D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7246C15D1Ev,_ZTv0_n24_N8S7246C15D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7246C15D0Ev,_ZTv0_n24_N8S7246C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7246C12__8S7246C15__7S7246C1[] = {
  ABISELECT(56,48),
  ABISELECT(-216,-188),
  ABISELECT(-44,-40),
  ABISELECT(-88,-84),
  ABISELECT(56,48),
  (VTBL_ENTRY)&(_ZTI8S7246C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7246C15D1Ev,_ZTv0_n24_N8S7246C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7246C15D0Ev,_ZTv0_n24_N8S7246C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7246C15D1Ev,_ZTv0_n16_N8S7246C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7246C15D0Ev,_ZTv0_n16_N8S7246C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7246C9__8S7246C15__7S7246C1[] = {
  ABISELECT(32,16),
  ABISELECT(-176,-168),
  ABISELECT(-176,-168),
  ABISELECT(-176,-168),
  ABISELECT(304,252),
  ABISELECT(-44,-40),
  ABISELECT(304,252),
  (VTBL_ENTRY)&(_ZTI8S7246C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7246C15D1Ev,_ZTv0_n16_N8S7246C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7246C15D0Ev,_ZTv0_n16_N8S7246C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7246C15D1Ev,_ZTv0_n16_N8S7246C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7246C15D0Ev,_ZTv0_n16_N8S7246C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7246C3__8S7246C15__7S7246C1[] = {
  0,
  0,
  ABISELECT(480,420),
  ABISELECT(132,128),
  ABISELECT(480,420),
  (VTBL_ENTRY)&(_ZTI8S7246C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7246C15D1Ev,_ZTv0_n16_N8S7246C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7246C15D0Ev,_ZTv0_n16_N8S7246C15D0Ev),
};
extern void _ZN8S7246C16D1Ev();
extern void _ZN8S7246C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7246C16__7S7246C1[] = {
  ABISELECT(-200,-184),
  ABISELECT(-112,-100),
  ABISELECT(-328,-288),
  ABISELECT(-156,-140),
  ABISELECT(-648,-548),
  0,
  (VTBL_ENTRY)&(_ZTI8S7246C16[0]),
  (VTBL_ENTRY)&_ZN8S7246C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7246C16D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S7246C16D1Ev,_ZTv0_n24_N8S7246C16D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7246C16D0Ev,_ZTv0_n24_N8S7246C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7246C12__8S7246C16__7S7246C1[] = {
  ABISELECT(112,100),
  ABISELECT(-216,-188),
  ABISELECT(-44,-40),
  ABISELECT(-88,-84),
  ABISELECT(112,100),
  (VTBL_ENTRY)&(_ZTI8S7246C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7246C16D1Ev,_ZTv0_n24_N8S7246C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7246C16D0Ev,_ZTv0_n24_N8S7246C16D0Ev),
};
static  VTT_ENTRY vtt_S7246C1[] = {
  {&(_ZTV7S7246C1[16]),  16,87},
  {&(_tg__ZTV7S7246C2__7S7246C1[12]),  12,14},
  {&(_tg__ZTV8S7246C127S7246C2__7S7246C1[5]),  5,7},
  {&(_tg__ZTV8S7246C137S7246C2__7S7246C1[7]),  7,9},
  {&(_tg__ZTV7S7246C78S7246C137S7246C2__A1__7S7246C1[3]),  3,5},
  {&(_tg__ZTV8S7246C12__8S7246C137S7246C2__7S7246C1[6]),  6,8},
  {&(_tg__ZTV7S7246C3__7S7246C2__7S7246C1[6]),  6,8},
  {&(_tg__ZTV7S7246C3__7S7246C2__7S7246C1[6]),  6,8},
  {&(_tg__ZTV7S7246C3__7S7246C2__7S7246C1[6]),  6,8},
  {&(_tg__ZTV7S7246C9__7S7246C2__7S7246C1[8]),  8,10},
  {&(_tg__ZTV8S7246C11__7S7246C2__7S7246C1[5]),  5,7},
  {&(_tg__ZTV8S7246C13__7S7246C2__7S7246C1[7]),  7,9},
  {&(_tg__ZTV8S7246C12__A1__7S7246C2__7S7246C1[6]),  6,8},
  {&(_ZTV7S7246C1[33]),  33,87},
  {&(_ZTV7S7246C1[33]),  33,87},
  {&(_ZTV7S7246C1[33]),  33,87},
  {&(_ZTV7S7246C1[43]),  43,87},
  {&(_ZTV7S7246C1[50]),  50,87},
  {&(_ZTV7S7246C1[25]),  25,87},
  {&(_ZTV7S7246C1[58]),  58,87},
  {&(_ZTV7S7246C1[75]),  75,87},
  {&(_ZTV7S7246C1[85]),  85,87},
  {&(_tg__ZTV7S7246C3__7S7246C1[6]),  6,8},
  {&(_tg__ZTV7S7246C3__7S7246C1[6]),  6,8},
  {&(_tg__ZTV7S7246C3__7S7246C1[6]),  6,8},
  {&(_tg__ZTV7S7246C6__7S7246C1[5]),  5,7},
  {&(_tg__ZTV7S7246C6__7S7246C1[5]),  5,7},
  {&(_tg__ZTV7S7246C7__7S7246C1[3]),  3,5},
  {&(_tg__ZTV7S7246C9__7S7246C1[8]),  8,10},
  {&(_tg__ZTV7S7246C3__7S7246C9__7S7246C1[6]),  6,8},
  {&(_tg__ZTV7S7246C3__7S7246C9__7S7246C1[6]),  6,8},
  {&(_tg__ZTV7S7246C3__7S7246C9__7S7246C1[6]),  6,8},
  {&(_tg__ZTV8S7246C11__7S7246C1[5]),  5,7},
  {&(_tg__ZTV7S7246C68S7246C11__A1__7S7246C1[5]),  5,7},
  {&(_tg__ZTV7S7246C7__7S7246C68S7246C11__A1__7S7246C1[4]),  4,6},
  {&(_tg__ZTV7S7246C7__8S7246C11__7S7246C1[4]),  4,6},
  {&(_tg__ZTV8S7246C12__A1__7S7246C1[5]),  5,7},
  {&(_tg__ZTV8S7246C15__7S7246C1[15]),  15,17},
  {&(_tg__ZTV8S7246C16__8S7246C15__7S7246C1[8]),  8,10},
  {&(_tg__ZTV8S7246C12__8S7246C15__7S7246C1[6]),  6,8},
  {&(_tg__ZTV7S7246C9__8S7246C15__7S7246C1[8]),  8,10},
  {&(_tg__ZTV7S7246C3__8S7246C15__7S7246C1[6]),  6,8},
  {&(_tg__ZTV7S7246C3__8S7246C15__7S7246C1[6]),  6,8},
  {&(_tg__ZTV7S7246C3__8S7246C15__7S7246C1[6]),  6,8},
  {&(_tg__ZTV8S7246C16__7S7246C1[7]),  7,9},
  {&(_tg__ZTV8S7246C12__8S7246C16__7S7246C1[6]),  6,8},
};
extern VTBL_ENTRY _ZTI7S7246C1[];
extern  VTBL_ENTRY _ZTV7S7246C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7246C1[];
static VTBL_ENTRY alt_thunk_names99[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7246C15D0Ev,_ZTv0_n32_N8S7246C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7246C15D0Ev,_ZThn52_N8S7246C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7246C15D1Ev,_ZTv0_n32_N8S7246C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7246C15D1Ev,_ZThn52_N8S7246C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7246C15D0Ev,_ZTv0_n16_N8S7246C15D0Ev), // 
  (VTBL_ENTRY)_ZN8S7246C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7246C15D1Ev,_ZTv0_n16_N8S7246C15D1Ev), // 
  (VTBL_ENTRY)_ZN8S7246C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7246C11D0Ev,_ZTv0_n16_N8S7246C11D0Ev), // 
  (VTBL_ENTRY)_ZN8S7246C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7246C11D1Ev,_ZTv0_n16_N8S7246C11D1Ev), // 
  (VTBL_ENTRY)_ZN8S7246C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C9D0Ev,_ZTv0_n16_N7S7246C9D0Ev), // 
  (VTBL_ENTRY)_ZN7S7246C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C9D1Ev,_ZTv0_n16_N7S7246C9D1Ev), // 
  (VTBL_ENTRY)_ZN7S7246C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C6D0Ev,_ZTv0_n16_N7S7246C6D0Ev), // 
  (VTBL_ENTRY)_ZN7S7246C6D0Ev,
  (VTBL_ENTRY)_ZN7S7246C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C6D1Ev,_ZTv0_n16_N7S7246C6D1Ev), // 
  (VTBL_ENTRY)_ZN7S7246C6D1Ev,
  (VTBL_ENTRY)_ZN7S7246C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C3D0Ev,_ZTv0_n16_N7S7246C3D0Ev), // 
  (VTBL_ENTRY)_ZN7S7246C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C3D1Ev,_ZTv0_n16_N7S7246C3D1Ev), // 
  (VTBL_ENTRY)_ZN7S7246C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7246C2D0Ev,_ZTv0_n24_N7S7246C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn536_N7S7246C2D0Ev,_ZThn448_N7S7246C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7246C2D1Ev,_ZTv0_n24_N7S7246C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn536_N7S7246C2D1Ev,_ZThn448_N7S7246C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C2D0Ev,_ZTv0_n16_N7S7246C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N7S7246C2D0Ev,_ZThn348_N7S7246C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S7246C2D0Ev,_ZThn244_N7S7246C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7246C2D0Ev,_ZThn76_N7S7246C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C2D1Ev,_ZTv0_n16_N7S7246C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N7S7246C2D1Ev,_ZThn348_N7S7246C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S7246C2D1Ev,_ZThn244_N7S7246C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7246C2D1Ev,_ZThn76_N7S7246C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7246C13D0Ev,_ZTv0_n24_N8S7246C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S7246C13D0Ev,_ZThn400_N8S7246C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7246C13D1Ev,_ZTv0_n24_N8S7246C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S7246C13D1Ev,_ZThn400_N8S7246C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7246C1D0Ev,_ZTv0_n32_N7S7246C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N7S7246C1D0Ev,_ZThn548_N7S7246C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7246C1D1Ev,_ZTv0_n32_N7S7246C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N7S7246C1D1Ev,_ZThn548_N7S7246C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7246C1D0Ev,_ZTv0_n24_N7S7246C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn536_N7S7246C1D0Ev,_ZThn448_N7S7246C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7246C1D1Ev,_ZTv0_n24_N7S7246C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn536_N7S7246C1D1Ev,_ZThn448_N7S7246C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C1D0Ev,_ZTv0_n16_N7S7246C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn592_N7S7246C1D0Ev,_ZThn496_N7S7246C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N7S7246C1D0Ev,_ZThn348_N7S7246C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S7246C1D0Ev,_ZThn244_N7S7246C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7246C1D0Ev,_ZThn76_N7S7246C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7246C1D1Ev,_ZTv0_n16_N7S7246C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn592_N7S7246C1D1Ev,_ZThn496_N7S7246C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N7S7246C1D1Ev,_ZThn348_N7S7246C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S7246C1D1Ev,_ZThn244_N7S7246C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7246C1D1Ev,_ZThn76_N7S7246C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7246C1 = {  "S7246C1", // class name
  bases_S7246C1, 34,
  &(vtc_S7246C1[0]), // expected_vtbl_contents
  &(vtt_S7246C1[0]), // expected_vtt_contents
  ABISELECT(672,556), // object size
  NSPAIRA(_ZTI7S7246C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7246C1),87, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7246C1),46, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names99,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7944C9_nt  {
  ::S4677C19_nt s7944c9f0;
  int s7944c9f1[2];
  char s7944c9f2;
  virtual  ~S7944C9_nt(); // _ZN10S7944C9_ntD1Ev
  virtual void  v3(); // _ZN10S7944C9_nt2v3Ev
  virtual void  v4(); // _ZN10S7944C9_nt2v4Ev
  virtual void  v5(); // _ZN10S7944C9_nt2v5Ev
  S7944C9_nt(); // tgen
};
//SIG(-1 S7944C9_nt) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S7944C9_nt ::~S7944C9_nt(){ note_dtor("S7944C9_nt", this);}
void  S7944C9_nt ::v3(){vfunc_called(this, "_ZN10S7944C9_nt2v3Ev");}
void  S7944C9_nt ::v4(){vfunc_called(this, "_ZN10S7944C9_nt2v4Ev");}
void  S7944C9_nt ::v5(){vfunc_called(this, "_ZN10S7944C9_nt2v5Ev");}
S7944C9_nt ::S7944C9_nt(){ note_ctor("S7944C9_nt", this);} // tgen

//skip512 S7944C9_nt

#else // __cplusplus

extern void _ZN10S7944C9_ntC1Ev();
extern void _ZN10S7944C9_ntD1Ev();
Name_Map name_map_S7944C9_nt[] = {
  NSPAIR(_ZN10S7944C9_ntC1Ev),
  NSPAIR(_ZN10S7944C9_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7944C9_nt[];
extern void _ZN10S7944C9_ntD1Ev();
extern void _ZN10S7944C9_ntD0Ev();
extern void _ZN10S7944C9_nt2v3Ev();
extern void _ZN10S7944C9_nt2v4Ev();
extern void _ZN10S7944C9_nt2v5Ev();
static  VTBL_ENTRY vtc_S7944C9_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7944C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S7944C9_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S7944C9_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S7944C9_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S7944C9_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S7944C9_nt2v5Ev,
};
extern VTBL_ENTRY _ZTI10S7944C9_nt[];
VTBL_ENTRY *P__ZTI10S7944C9_nt = _ZTI10S7944C9_nt; 
extern  VTBL_ENTRY _ZTV10S7944C9_nt[];
Class_Descriptor cd_S7944C9_nt = {  "S7944C9_nt", // class name
  0,0,//no base classes
  &(vtc_S7944C9_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI10S7944C9_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7944C9_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  S7944C13_nt  {
  long s7944c13f0[4];
};
//SIG(-1 S7944C13_nt) C1{ Fl[4]}



//skip512 S7944C13_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7944C12_nt  {
  ::S7944C13_nt s7944c12f0;
  void  mf7944c12(); // _ZN11S7944C12_nt9mf7944c12Ev
};
//SIG(-1 S7944C12_nt) C1{ m FC2{ Fl[4]}}


void  S7944C12_nt ::mf7944c12(){}

//skip512 S7944C12_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7944C15_nt  {
  int s7944c15f0[4];
};
//SIG(-1 S7944C15_nt) C1{ Fi[4]}



//skip512 S7944C15_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7944C14_nt  {
  void *s7944c14f0;
  ::S7944C15_nt s7944c14f1;
  void  mf7944c14(); // _ZN11S7944C14_nt9mf7944c14Ev
};
//SIG(-1 S7944C14_nt) C1{ m Fp FC2{ Fi[4]}}


void  S7944C14_nt ::mf7944c14(){}

//skip512 S7944C14_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7944C17_nt  {
  void *s7944c17f0[3];
  int s7944c17f1;
  void  mf7944c17(); // _ZN11S7944C17_nt9mf7944c17Ev
};
//SIG(-1 S7944C17_nt) C1{ m Fp[3] Fi}


void  S7944C17_nt ::mf7944c17(){}

//skip512 S7944C17_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7944C1  : S7935C2_nt , S7944C9_nt {
  ::S7944C12_nt s7944c1f0;
  ::S7944C12_nt s7944c1f1;
  ::S7944C14_nt s7944c1f2;
  char s7944c1f3[2];
  void *s7944c1f4;
  int s7944c1f5;
  void *s7944c1f6;
  ::S3216C4_nt s7944c1f7;
  ::S7944C17_nt s7944c1f8;
  ::S7935C22 s7944c1f9;
  ::S7935C22 s7944c1f10;
  int s7944c1f11;
  virtual  ~S7944C1(); // _ZN7S7944C1D1Ev
  virtual void  v1(); // _ZN7S7944C12v1Ev
  virtual void  v2(); // _ZN7S7944C12v2Ev
  S7944C1(); // tgen
};
//SIG(1 S7944C1) C1{ BC2{ vd m FC3{ m Fp Fi FC4{ m} FC5{ m}} FC6{ m Fp Fi FC7{ m} FC4} Fc} BC8{ vd v3 v4 v5 FC9{ m Fp Fi FC7} Fi[2] Fc} vd v1 v2 FC10{ m FC11{ Fl[4]}} FC10 FC12{ m Fp FC13{ Fi[4]}} Fc[2] Fp Fi Fp FC14{ m Fi[2]} FC15{ m Fp[3] Fi} FC16{ m Fp Fi FC4 FC7} FC16 Fi}


 S7944C1 ::~S7944C1(){ note_dtor("S7944C1", this);}
void  S7944C1 ::v1(){vfunc_called(this, "_ZN7S7944C12v1Ev");}
void  S7944C1 ::v2(){vfunc_called(this, "_ZN7S7944C12v2Ev");}
S7944C1 ::S7944C1(){ note_ctor("S7944C1", this);} // tgen

static void Test_S7944C1()
{
  extern Class_Descriptor cd_S7944C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(37,46)];
    init_test(&cd_S7944C1, buf);
    S7944C1 *dp, &lv = *(dp=new (buf) S7944C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,180), "sizeof(S7944C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7944C1)");
    check_base_class_offset(lv, (S7935C2_nt*), 0, "S7944C1");
    check_base_class_offset(lv, (S7944C9_nt*), ABISELECT(48,32), "S7944C1");
    check_field_offset(lv, s7944c1f0, ABISELECT(88,60), "S7944C1.s7944c1f0");
    check_field_offset(lv, s7944c1f1, ABISELECT(120,76), "S7944C1.s7944c1f1");
    check_field_offset(lv, s7944c1f2, ABISELECT(152,92), "S7944C1.s7944c1f2");
    check_field_offset(lv, s7944c1f3, ABISELECT(176,112), "S7944C1.s7944c1f3");
    check_field_offset(lv, s7944c1f4, ABISELECT(184,116), "S7944C1.s7944c1f4");
    check_field_offset(lv, s7944c1f5, ABISELECT(192,120), "S7944C1.s7944c1f5");
    check_field_offset(lv, s7944c1f6, ABISELECT(200,124), "S7944C1.s7944c1f6");
    check_field_offset(lv, s7944c1f7, ABISELECT(208,128), "S7944C1.s7944c1f7");
    check_field_offset(lv, s7944c1f8, ABISELECT(216,136), "S7944C1.s7944c1f8");
    check_field_offset(lv, s7944c1f9, ABISELECT(248,152), "S7944C1.s7944c1f9");
    check_field_offset(lv, s7944c1f10, ABISELECT(264,164), "S7944C1.s7944c1f10");
    check_field_offset(lv, s7944c1f11, ABISELECT(280,176), "S7944C1.s7944c1f11");
    test_class_info(&lv, &cd_S7944C1);
    dp->~S7944C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7944C1(Test_S7944C1, "S7944C1", ABISELECT(288,180));

#else // __cplusplus

extern void _ZN7S7944C1C1Ev();
extern void _ZN7S7944C1D1Ev();
Name_Map name_map_S7944C1[] = {
  NSPAIR(_ZN7S7944C1C1Ev),
  NSPAIR(_ZN7S7944C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7935C2_nt;
extern VTBL_ENTRY _ZTI10S7935C2_nt[];
extern  VTBL_ENTRY _ZTV10S7935C2_nt[];
extern Class_Descriptor cd_S7944C9_nt;
extern VTBL_ENTRY _ZTI10S7944C9_nt[];
extern  VTBL_ENTRY _ZTV10S7944C9_nt[];
static Base_Class bases_S7944C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7935C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7944C9_nt,    ABISELECT(48,32), //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},
  {0}};
extern VTBL_ENTRY _ZTI7S7944C1[];
extern void _ZN7S7944C1D1Ev();
extern void _ZN7S7944C1D0Ev();
extern void _ZN7S7944C12v1Ev();
extern void _ZN7S7944C12v2Ev();
extern void ABISELECT(_ZThn48_N7S7944C1D1Ev,_ZThn32_N7S7944C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S7944C1D0Ev,_ZThn32_N7S7944C1D0Ev)();
extern void _ZN10S7944C9_nt2v3Ev();
extern void _ZN10S7944C9_nt2v4Ev();
extern void _ZN10S7944C9_nt2v5Ev();
static  VTBL_ENTRY vtc_S7944C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7944C1[0]),
  (VTBL_ENTRY)&_ZN7S7944C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7944C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7944C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7944C12v2Ev,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S7944C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7944C1D1Ev,_ZThn32_N7S7944C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7944C1D0Ev,_ZThn32_N7S7944C1D0Ev),
  (VTBL_ENTRY)&_ZN10S7944C9_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S7944C9_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S7944C9_nt2v5Ev,
};
extern VTBL_ENTRY _ZTI7S7944C1[];
extern  VTBL_ENTRY _ZTV7S7944C1[];
Class_Descriptor cd_S7944C1 = {  "S7944C1", // class name
  bases_S7944C1, 2,
  &(vtc_S7944C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(288,180), // object size
  NSPAIRA(_ZTI7S7944C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7944C1),13, //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  S9072C2  {
  virtual  ~S9072C2(); // _ZN7S9072C2D1Ev
  virtual void  v2(); // _ZN7S9072C22v2Ev
  S9072C2(); // tgen
};
//SIG(-1 S9072C2) C1{ vd v1}


 S9072C2 ::~S9072C2(){ note_dtor("S9072C2", this);}
void  S9072C2 ::v2(){vfunc_called(this, "_ZN7S9072C22v2Ev");}
S9072C2 ::S9072C2(){ note_ctor("S9072C2", this);} // tgen

static void Test_S9072C2()
{
  extern Class_Descriptor cd_S9072C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S9072C2, buf);
    S9072C2 *dp, &lv = *(dp=new (buf) S9072C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S9072C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9072C2)");
    test_class_info(&lv, &cd_S9072C2);
    dp->~S9072C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9072C2(Test_S9072C2, "S9072C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S9072C2C1Ev();
extern void _ZN7S9072C2D1Ev();
Name_Map name_map_S9072C2[] = {
  NSPAIR(_ZN7S9072C2C1Ev),
  NSPAIR(_ZN7S9072C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9072C2[];
extern void _ZN7S9072C2D1Ev();
extern void _ZN7S9072C2D0Ev();
extern void _ZN7S9072C22v2Ev();
static  VTBL_ENTRY vtc_S9072C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9072C2[0]),
  (VTBL_ENTRY)&_ZN7S9072C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9072C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9072C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S9072C2[];
extern  VTBL_ENTRY _ZTV7S9072C2[];
Class_Descriptor cd_S9072C2 = {  "S9072C2", // class name
  0,0,//no base classes
  &(vtc_S9072C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9072C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9072C2),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  S9072C9  {
  int s9072c9f0[3];
  virtual  ~S9072C9(); // _ZN7S9072C9D1Ev
  virtual void  v11(); // _ZN7S9072C93v11Ev
  virtual void  v12(); // _ZN7S9072C93v12Ev
  virtual void  v13(); // _ZN7S9072C93v13Ev
  virtual void  v14(); // _ZN7S9072C93v14Ev
  virtual void  v15(); // _ZN7S9072C93v15Ev
  virtual void  v16(); // _ZN7S9072C93v16Ev
  S9072C9(); // tgen
};
//SIG(-1 S9072C9) C1{ vd v1 v2 v3 v4 v5 v6 Fi[3]}


 S9072C9 ::~S9072C9(){ note_dtor("S9072C9", this);}
void  S9072C9 ::v11(){vfunc_called(this, "_ZN7S9072C93v11Ev");}
void  S9072C9 ::v12(){vfunc_called(this, "_ZN7S9072C93v12Ev");}
void  S9072C9 ::v13(){vfunc_called(this, "_ZN7S9072C93v13Ev");}
void  S9072C9 ::v14(){vfunc_called(this, "_ZN7S9072C93v14Ev");}
void  S9072C9 ::v15(){vfunc_called(this, "_ZN7S9072C93v15Ev");}
void  S9072C9 ::v16(){vfunc_called(this, "_ZN7S9072C93v16Ev");}
S9072C9 ::S9072C9(){ note_ctor("S9072C9", this);} // tgen

static void Test_S9072C9()
{
  extern Class_Descriptor cd_S9072C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S9072C9, buf);
    S9072C9 *dp, &lv = *(dp=new (buf) S9072C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S9072C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9072C9)");
    check_field_offset(lv, s9072c9f0, ABISELECT(8,4), "S9072C9.s9072c9f0");
    test_class_info(&lv, &cd_S9072C9);
    dp->~S9072C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9072C9(Test_S9072C9, "S9072C9", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S9072C9C1Ev();
extern void _ZN7S9072C9D1Ev();
Name_Map name_map_S9072C9[] = {
  NSPAIR(_ZN7S9072C9C1Ev),
  NSPAIR(_ZN7S9072C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9072C9[];
extern void _ZN7S9072C9D1Ev();
extern void _ZN7S9072C9D0Ev();
extern void _ZN7S9072C93v11Ev();
extern void _ZN7S9072C93v12Ev();
extern void _ZN7S9072C93v13Ev();
extern void _ZN7S9072C93v14Ev();
extern void _ZN7S9072C93v15Ev();
extern void _ZN7S9072C93v16Ev();
static  VTBL_ENTRY vtc_S9072C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9072C9[0]),
  (VTBL_ENTRY)&_ZN7S9072C9D1Ev,
  (VTBL_ENTRY)&_ZN7S9072C9D0Ev,
  (VTBL_ENTRY)&_ZN7S9072C93v11Ev,
  (VTBL_ENTRY)&_ZN7S9072C93v12Ev,
  (VTBL_ENTRY)&_ZN7S9072C93v13Ev,
  (VTBL_ENTRY)&_ZN7S9072C93v14Ev,
  (VTBL_ENTRY)&_ZN7S9072C93v15Ev,
  (VTBL_ENTRY)&_ZN7S9072C93v16Ev,
};
extern VTBL_ENTRY _ZTI7S9072C9[];
extern  VTBL_ENTRY _ZTV7S9072C9[];
Class_Descriptor cd_S9072C9 = {  "S9072C9", // class name
  0,0,//no base classes
  &(vtc_S9072C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S9072C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9072C9),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  S9072C8  : S9072C9 {
  virtual  ~S9072C8(); // _ZN7S9072C8D1Ev
  virtual void  v9(); // _ZN7S9072C82v9Ev
  virtual void  v10(); // _ZN7S9072C83v10Ev
  S9072C8(); // tgen
};
//SIG(-1 S9072C8) C1{ BC2{ vd v3 v4 v5 v6 v7 v8 Fi[3]} vd v1 v2}


 S9072C8 ::~S9072C8(){ note_dtor("S9072C8", this);}
void  S9072C8 ::v9(){vfunc_called(this, "_ZN7S9072C82v9Ev");}
void  S9072C8 ::v10(){vfunc_called(this, "_ZN7S9072C83v10Ev");}
S9072C8 ::S9072C8(){ note_ctor("S9072C8", this);} // tgen

static void Test_S9072C8()
{
  extern Class_Descriptor cd_S9072C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S9072C8, buf);
    S9072C8 *dp, &lv = *(dp=new (buf) S9072C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S9072C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9072C8)");
    check_base_class_offset(lv, (S9072C9*), 0, "S9072C8");
    test_class_info(&lv, &cd_S9072C8);
    dp->~S9072C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9072C8(Test_S9072C8, "S9072C8", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S9072C8C1Ev();
extern void _ZN7S9072C8D1Ev();
Name_Map name_map_S9072C8[] = {
  NSPAIR(_ZN7S9072C8C1Ev),
  NSPAIR(_ZN7S9072C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9072C9;
extern VTBL_ENTRY _ZTI7S9072C9[];
extern  VTBL_ENTRY _ZTV7S9072C9[];
static Base_Class bases_S9072C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9072C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9072C8[];
extern void _ZN7S9072C8D1Ev();
extern void _ZN7S9072C8D0Ev();
extern void _ZN7S9072C93v11Ev();
extern void _ZN7S9072C93v12Ev();
extern void _ZN7S9072C93v13Ev();
extern void _ZN7S9072C93v14Ev();
extern void _ZN7S9072C93v15Ev();
extern void _ZN7S9072C93v16Ev();
extern void _ZN7S9072C82v9Ev();
extern void _ZN7S9072C83v10Ev();
static  VTBL_ENTRY vtc_S9072C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9072C8[0]),
  (VTBL_ENTRY)&_ZN7S9072C8D1Ev,
  (VTBL_ENTRY)&_ZN7S9072C8D0Ev,
  (VTBL_ENTRY)&_ZN7S9072C93v11Ev,
  (VTBL_ENTRY)&_ZN7S9072C93v12Ev,
  (VTBL_ENTRY)&_ZN7S9072C93v13Ev,
  (VTBL_ENTRY)&_ZN7S9072C93v14Ev,
  (VTBL_ENTRY)&_ZN7S9072C93v15Ev,
  (VTBL_ENTRY)&_ZN7S9072C93v16Ev,
  (VTBL_ENTRY)&_ZN7S9072C82v9Ev,
  (VTBL_ENTRY)&_ZN7S9072C83v10Ev,
};
extern VTBL_ENTRY _ZTI7S9072C8[];
extern  VTBL_ENTRY _ZTV7S9072C8[];
Class_Descriptor cd_S9072C8 = {  "S9072C8", // class name
  bases_S9072C8, 1,
  &(vtc_S9072C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S9072C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9072C8),12, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9072C10  : S9072C9 {
  virtual  ~S9072C10(); // _ZN8S9072C10D1Ev
  virtual void  v17(); // _ZN8S9072C103v17Ev
  S9072C10(); // tgen
};
//SIG(-1 S9072C10) C1{ BC2{ vd v2 v3 v4 v5 v6 v7 Fi[3]} vd v1}


 S9072C10 ::~S9072C10(){ note_dtor("S9072C10", this);}
void  S9072C10 ::v17(){vfunc_called(this, "_ZN8S9072C103v17Ev");}
S9072C10 ::S9072C10(){ note_ctor("S9072C10", this);} // tgen

static void Test_S9072C10()
{
  extern Class_Descriptor cd_S9072C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S9072C10, buf);
    S9072C10 *dp, &lv = *(dp=new (buf) S9072C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S9072C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9072C10)");
    check_base_class_offset(lv, (S9072C9*), 0, "S9072C10");
    test_class_info(&lv, &cd_S9072C10);
    dp->~S9072C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9072C10(Test_S9072C10, "S9072C10", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S9072C10C1Ev();
extern void _ZN8S9072C10D1Ev();
Name_Map name_map_S9072C10[] = {
  NSPAIR(_ZN8S9072C10C1Ev),
  NSPAIR(_ZN8S9072C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9072C9;
extern VTBL_ENTRY _ZTI7S9072C9[];
extern  VTBL_ENTRY _ZTV7S9072C9[];
static Base_Class bases_S9072C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9072C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S9072C10[];
extern void _ZN8S9072C10D1Ev();
extern void _ZN8S9072C10D0Ev();
extern void _ZN7S9072C93v11Ev();
extern void _ZN7S9072C93v12Ev();
extern void _ZN7S9072C93v13Ev();
extern void _ZN7S9072C93v14Ev();
extern void _ZN7S9072C93v15Ev();
extern void _ZN7S9072C93v16Ev();
extern void _ZN8S9072C103v17Ev();
static  VTBL_ENTRY vtc_S9072C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S9072C10[0]),
  (VTBL_ENTRY)&_ZN8S9072C10D1Ev,
  (VTBL_ENTRY)&_ZN8S9072C10D0Ev,
  (VTBL_ENTRY)&_ZN7S9072C93v11Ev,
  (VTBL_ENTRY)&_ZN7S9072C93v12Ev,
  (VTBL_ENTRY)&_ZN7S9072C93v13Ev,
  (VTBL_ENTRY)&_ZN7S9072C93v14Ev,
  (VTBL_ENTRY)&_ZN7S9072C93v15Ev,
  (VTBL_ENTRY)&_ZN7S9072C93v16Ev,
  (VTBL_ENTRY)&_ZN8S9072C103v17Ev,
};
extern VTBL_ENTRY _ZTI8S9072C10[];
extern  VTBL_ENTRY _ZTV8S9072C10[];
Class_Descriptor cd_S9072C10 = {  "S9072C10", // class name
  bases_S9072C10, 1,
  &(vtc_S9072C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S9072C10),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S9072C10),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  S9072C7  {
  ::S9072C8 s9072c7f0;
  ::S9072C10 s9072c7f1;
  void  mf9072c7(); // _ZN7S9072C78mf9072c7Ev
  virtual  ~S9072C7(); // _ZN7S9072C7D1Ev
  S9072C7(); // tgen
};
//SIG(-1 S9072C7) C1{ vd m FC2{ BC3{ vd v3 v4 v5 v6 v7 v8 Fi[3]} vd v1 v2} FC4{ BC3 vd v9}}


void  S9072C7 ::mf9072c7(){}
 S9072C7 ::~S9072C7(){ note_dtor("S9072C7", this);}
S9072C7 ::S9072C7(){ note_ctor("S9072C7", this);} // tgen

static void Test_S9072C7()
{
  extern Class_Descriptor cd_S9072C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S9072C7, buf);
    S9072C7 *dp, &lv = *(dp=new (buf) S9072C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S9072C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9072C7)");
    check_field_offset(lv, s9072c7f0, ABISELECT(8,4), "S9072C7.s9072c7f0");
    check_field_offset(lv, s9072c7f1, ABISELECT(32,20), "S9072C7.s9072c7f1");
    test_class_info(&lv, &cd_S9072C7);
    dp->~S9072C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9072C7(Test_S9072C7, "S9072C7", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN7S9072C7C1Ev();
extern void _ZN7S9072C7D1Ev();
Name_Map name_map_S9072C7[] = {
  NSPAIR(_ZN7S9072C7C1Ev),
  NSPAIR(_ZN7S9072C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9072C7[];
extern void _ZN7S9072C7D1Ev();
extern void _ZN7S9072C7D0Ev();
static  VTBL_ENTRY vtc_S9072C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9072C7[0]),
  (VTBL_ENTRY)&_ZN7S9072C7D1Ev,
  (VTBL_ENTRY)&_ZN7S9072C7D0Ev,
};
extern VTBL_ENTRY _ZTI7S9072C7[];
extern  VTBL_ENTRY _ZTV7S9072C7[];
Class_Descriptor cd_S9072C7 = {  "S9072C7", // class name
  0,0,//no base classes
  &(vtc_S9072C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI7S9072C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9072C7),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  S9072C3  {
  ::S9073C13_nt s9072c3f0;
  ::S9073C8 s9072c3f1;
  ::S9073C8 s9072c3f2;
  ::S9072C7 s9072c3f3;
  ::S9072C7 s9072c3f4;
  ::S9073C8 s9072c3f5;
  ::S9073C8 s9072c3f6;
  int s9072c3f7[2];
  void  mf9072c3(); // _ZN7S9072C38mf9072c3Ev
  virtual  ~S9072C3(); // _ZN7S9072C3D1Ev
  S9072C3(); // tgen
};
//SIG(-1 S9072C3) C1{ vd m FC2{ BC3{ vd v3 v4 v5 Fi} vd v1 v2} FC4{ vd v6 Fp Fi[3]} FC4 FC5{ vd m FC6{ BC7{ vd v9 v10 v11 v12 v13 v14 Fi[3]} vd v7 v8} FC8{ BC7 vd v15}} FC5 FC4 FC4 Fi[2]}


void  S9072C3 ::mf9072c3(){}
 S9072C3 ::~S9072C3(){ note_dtor("S9072C3", this);}
S9072C3 ::S9072C3(){ note_ctor("S9072C3", this);} // tgen

static void Test_S9072C3()
{
  extern Class_Descriptor cd_S9072C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(35,44)];
    init_test(&cd_S9072C3, buf);
    S9072C3 *dp, &lv = *(dp=new (buf) S9072C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,172), "sizeof(S9072C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9072C3)");
    check_field_offset(lv, s9072c3f0, ABISELECT(8,4), "S9072C3.s9072c3f0");
    check_field_offset(lv, s9072c3f1, ABISELECT(24,12), "S9072C3.s9072c3f1");
    check_field_offset(lv, s9072c3f2, ABISELECT(56,32), "S9072C3.s9072c3f2");
    check_field_offset(lv, s9072c3f3, ABISELECT(88,52), "S9072C3.s9072c3f3");
    check_field_offset(lv, s9072c3f4, ABISELECT(144,88), "S9072C3.s9072c3f4");
    check_field_offset(lv, s9072c3f5, ABISELECT(200,124), "S9072C3.s9072c3f5");
    check_field_offset(lv, s9072c3f6, ABISELECT(232,144), "S9072C3.s9072c3f6");
    check_field_offset(lv, s9072c3f7, ABISELECT(264,164), "S9072C3.s9072c3f7");
    test_class_info(&lv, &cd_S9072C3);
    dp->~S9072C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9072C3(Test_S9072C3, "S9072C3", ABISELECT(272,172));

#else // __cplusplus

extern void _ZN7S9072C3C1Ev();
extern void _ZN7S9072C3D1Ev();
Name_Map name_map_S9072C3[] = {
  NSPAIR(_ZN7S9072C3C1Ev),
  NSPAIR(_ZN7S9072C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9072C3[];
extern void _ZN7S9072C3D1Ev();
extern void _ZN7S9072C3D0Ev();
static  VTBL_ENTRY vtc_S9072C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9072C3[0]),
  (VTBL_ENTRY)&_ZN7S9072C3D1Ev,
  (VTBL_ENTRY)&_ZN7S9072C3D0Ev,
};
extern VTBL_ENTRY _ZTI7S9072C3[];
extern  VTBL_ENTRY _ZTV7S9072C3[];
Class_Descriptor cd_S9072C3 = {  "S9072C3", // class name
  0,0,//no base classes
  &(vtc_S9072C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(272,172), // object size
  NSPAIRA(_ZTI7S9072C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9072C3),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  S9072C1  : S9072C2 {
  ::S9072C3 s9072c1f0;
  ::S9073C17 s9072c1f1;
  ::S9073C22_nt s9072c1f2;
  char s9072c1f3;
  virtual  ~S9072C1(); // _ZN7S9072C1D1Ev
  virtual void  v1(); // _ZN7S9072C12v1Ev
  S9072C1(); // tgen
};
//SIG(1 S9072C1) C1{ BC2{ vd v2} vd v1 FC3{ vd m FC4{ BC5{ vd v5 v6 v7 Fi} vd v3 v4} FC6{ vd v8 Fp Fi[3]} FC6 FC7{ vd m FC8{ BC9{ vd v11 v12 v13 v14 v15 v16 Fi[3]} vd v9 v10} FC10{ BC9 vd v17}} FC7 FC6 FC6 Fi[2]} FC11{ vd m Fp[7] FC12{ m Fp Fi[2] FC13{ m}} Fi[2]} FC14{ vd m Fc} Fc}


 S9072C1 ::~S9072C1(){ note_dtor("S9072C1", this);}
void  S9072C1 ::v1(){vfunc_called(this, "_ZN7S9072C12v1Ev");}
S9072C1 ::S9072C1(){ note_ctor("S9072C1", this);} // tgen

static void Test_S9072C1()
{
  extern Class_Descriptor cd_S9072C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(51,62)];
    init_test(&cd_S9072C1, buf);
    S9072C1 *dp, &lv = *(dp=new (buf) S9072C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(400,244), "sizeof(S9072C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9072C1)");
    check_base_class_offset(lv, (S9072C2*), 0, "S9072C1");
    check_field_offset(lv, s9072c1f0, ABISELECT(8,4), "S9072C1.s9072c1f0");
    check_field_offset(lv, s9072c1f1, ABISELECT(280,176), "S9072C1.s9072c1f1");
    check_field_offset(lv, s9072c1f2, ABISELECT(376,232), "S9072C1.s9072c1f2");
    check_field_offset(lv, s9072c1f3, ABISELECT(392,240), "S9072C1.s9072c1f3");
    test_class_info(&lv, &cd_S9072C1);
    dp->~S9072C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9072C1(Test_S9072C1, "S9072C1", ABISELECT(400,244));

#else // __cplusplus

extern void _ZN7S9072C1C1Ev();
extern void _ZN7S9072C1D1Ev();
Name_Map name_map_S9072C1[] = {
  NSPAIR(_ZN7S9072C1C1Ev),
  NSPAIR(_ZN7S9072C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9072C2;
extern VTBL_ENTRY _ZTI7S9072C2[];
extern  VTBL_ENTRY _ZTV7S9072C2[];
static Base_Class bases_S9072C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9072C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9072C1[];
extern void _ZN7S9072C1D1Ev();
extern void _ZN7S9072C1D0Ev();
extern void _ZN7S9072C22v2Ev();
extern void _ZN7S9072C12v1Ev();
static  VTBL_ENTRY vtc_S9072C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9072C1[0]),
  (VTBL_ENTRY)&_ZN7S9072C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9072C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9072C22v2Ev,
  (VTBL_ENTRY)&_ZN7S9072C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S9072C1[];
extern  VTBL_ENTRY _ZTV7S9072C1[];
Class_Descriptor cd_S9072C1 = {  "S9072C1", // class name
  bases_S9072C1, 1,
  &(vtc_S9072C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(400,244), // object size
  NSPAIRA(_ZTI7S9072C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9072C1),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  S133C5_nt  : S3216C8_nt {
};
//SIG(-1 S133C5_nt) C1{ BC2{ m Fi}}



//skip512 S133C5_nt

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S133C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S133C5_nt = {  "S133C5_nt", // class name
  bases_S133C5_nt, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S133C4  : S133C5_nt {
  unsigned int s133c4f0:1;
  unsigned int s133c4f1:1;
  int s133c4f2:7;
  unsigned int s133c4f3:1;
  unsigned int s133c4f4:1;
  int s133c4f5:2;
  int s133c4f6:5;
};
//SIG(-1 S133C4) C1{ BC2{ BC3{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5}



static void Test_S133C4()
{
  extern Class_Descriptor cd_S133C4;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S133C4, buf);
    S133C4 &lv = *(new (buf) S133C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S133C4)");
    check2(__alignof__(lv), 4, "__alignof__(S133C4)");
    check_base_class_offset(lv, (S3216C8_nt*)(S133C5_nt*), 0, "S133C4");
    check_base_class_offset(lv, (S133C5_nt*), 0, "S133C4");
    set_bf_and_test(lv, s133c4f0, 4, 0, 1, 1, "S133C4");
    set_bf_and_test(lv, s133c4f1, 4, 1, 1, 1, "S133C4");
    set_bf_and_test(lv, s133c4f2, 4, 2, 7, 1, "S133C4");
    set_bf_and_test(lv, s133c4f2, 4, 2, 7, hide_sll(1LL<<6), "S133C4");
    set_bf_and_test(lv, s133c4f3, 5, 1, 1, 1, "S133C4");
    set_bf_and_test(lv, s133c4f4, 5, 2, 1, 1, "S133C4");
    set_bf_and_test(lv, s133c4f5, 5, 3, 2, 1, "S133C4");
    set_bf_and_test(lv, s133c4f5, 5, 3, 2, hide_sll(1LL<<1), "S133C4");
    set_bf_and_test(lv, s133c4f6, 5, 5, 5, 1, "S133C4");
    set_bf_and_test(lv, s133c4f6, 5, 5, 5, hide_sll(1LL<<4), "S133C4");
    test_class_info(&lv, &cd_S133C4);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS133C4(Test_S133C4, "S133C4", 8);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S133C5_nt;
static Base_Class bases_S133C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S133C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S133C4 = {  "S133C4", // class name
  bases_S133C4, 2,
  0, // no vftv
  0, //no vtt
  8, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S133C9_nt  {
  void *s133c9f0;
  int s133c9f1[4];
  void  mf133c9(); // _ZN9S133C9_nt7mf133c9Ev
};
//SIG(-1 S133C9_nt) C1{ m Fp Fi[4]}


void  S133C9_nt ::mf133c9(){}

//skip512 S133C9_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S133C8_nt  {
  ::S133C9_nt s133c8f0;
  void  mf133c8(); // _ZN9S133C8_nt7mf133c8Ev
};
//SIG(-1 S133C8_nt) C1{ m FC2{ m Fp Fi[4]}}


void  S133C8_nt ::mf133c8(){}

//skip512 S133C8_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S133C7_nt  {
  ::S133C8_nt s133c7f0;
  void  mf133c7(); // _ZN9S133C7_nt7mf133c7Ev
};
//SIG(-1 S133C7_nt) C1{ m FC2{ m FC3{ m Fp Fi[4]}}}


void  S133C7_nt ::mf133c7(){}

//skip512 S133C7_nt

#else // __cplusplus

Class_Descriptor cd_S133C7_nt = {  "S133C7_nt", // 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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S133C12  {
  ::S133C9_nt s133c12f0;
  void  mf133c12(); // _ZN7S133C128mf133c12Ev
};
//SIG(-1 S133C12) C1{ m FC2{ m Fp Fi[4]}}


void  S133C12 ::mf133c12(){}

static void Test_S133C12()
{
  {
    init_simple_test("S133C12");
    S133C12 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S133C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S133C12)");
    check_field_offset(lv, s133c12f0, 0, "S133C12.s133c12f0");
  }
}
static Arrange_To_Call_Me vS133C12(Test_S133C12, "S133C12", ABISELECT(24,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S133C3  : S133C4 {
  ::S133C7_nt s133c3f0;
  ::S133C8_nt s133c3f1;
  ::S133C12 s133c3f2;
};
//SIG(-1 S133C3) C1{ BC2{ BC3{ BC4{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5} FC5{ m FC6{ m FC7{ m Fp Fi[4]}}} FC6 FC8{ m FC7}}



static void Test_S133C3()
{
  extern Class_Descriptor cd_S133C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,18)];
    init_test(&cd_S133C3, buf);
    S133C3 &lv = *(new (buf) S133C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,68), "sizeof(S133C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S133C3)");
    check_base_class_offset(lv, (S3216C8_nt*)(S133C5_nt*)(S133C4*), 0, "S133C3");
    check_base_class_offset(lv, (S133C5_nt*)(S133C4*), 0, "S133C3");
    check_base_class_offset(lv, (S133C4*), 0, "S133C3");
    check_field_offset(lv, s133c3f0, 8, "S133C3.s133c3f0");
    check_field_offset(lv, s133c3f1, ABISELECT(32,28), "S133C3.s133c3f1");
    check_field_offset(lv, s133c3f2, ABISELECT(56,48), "S133C3.s133c3f2");
    test_class_info(&lv, &cd_S133C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS133C3(Test_S133C3, "S133C3", ABISELECT(80,68));

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S133C5_nt;
extern Class_Descriptor cd_S133C4;
static Base_Class bases_S133C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S133C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S133C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S133C3 = {  "S133C3", // class name
  bases_S133C3, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(80,68), // 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  S133C17_nt  {
  void *s133c17f0;
  int s133c17f1;
  void  mf133c17(); // _ZN10S133C17_nt8mf133c17Ev
};
//SIG(-1 S133C17_nt) C1{ m Fp Fi}


void  S133C17_nt ::mf133c17(){}

//skip512 S133C17_nt

#else // __cplusplus

Class_Descriptor cd_S133C17_nt = {  "S133C17_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  S133C16_nt  : S133C17_nt {
};
//SIG(-1 S133C16_nt) C1{ BC2{ m Fp Fi}}



//skip512 S133C16_nt

#else // __cplusplus

extern Class_Descriptor cd_S133C17_nt;
static Base_Class bases_S133C16_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S133C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S133C15_nt  {
  int s133c15f0;
  ::S133C16_nt s133c15f1;
  void  mf133c15(); // _ZN10S133C15_nt8mf133c15Ev
};
//SIG(-1 S133C15_nt) C1{ m Fi FC2{ BC3{ m Fp Fi}}}


void  S133C15_nt ::mf133c15(){}

//skip512 S133C15_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S133C2  : S133C3 {
  ::S16701C4_nt s133c2f0;
  ::S16701C4_nt s133c2f1;
  ::S16701C4_nt s133c2f2;
  ::S16701C4_nt s133c2f3;
  ::S133C15_nt s133c2f4;
  char s133c2f5[3];
};
//SIG(-1 S133C2) C1{ BC2{ BC3{ BC4{ BC5{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5} FC6{ m FC7{ m FC8{ m Fp Fi[4]}}} FC7 FC9{ m FC8}} FC10{ m Fp} FC10 FC10 FC10 FC11{ m Fi FC12{ BC13{ m Fp Fi}}} Fc[3]}



static void Test_S133C2()
{
  extern Class_Descriptor cd_S133C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,26)];
    init_test(&cd_S133C2, buf);
    S133C2 &lv = *(new (buf) S133C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S133C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S133C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S133C5_nt*)(S133C4*)(S133C3*), 0, "S133C2");
    check_base_class_offset(lv, (S133C5_nt*)(S133C4*)(S133C3*), 0, "S133C2");
    check_base_class_offset(lv, (S133C4*)(S133C3*), 0, "S133C2");
    check_base_class_offset(lv, (S133C3*), 0, "S133C2");
    check_field_offset(lv, s133c2f0, ABISELECT(80,68), "S133C2.s133c2f0");
    check_field_offset(lv, s133c2f1, ABISELECT(88,72), "S133C2.s133c2f1");
    check_field_offset(lv, s133c2f2, ABISELECT(96,76), "S133C2.s133c2f2");
    check_field_offset(lv, s133c2f3, ABISELECT(104,80), "S133C2.s133c2f3");
    check_field_offset(lv, s133c2f4, ABISELECT(112,84), "S133C2.s133c2f4");
    check_field_offset(lv, s133c2f5, ABISELECT(136,96), "S133C2.s133c2f5");
    test_class_info(&lv, &cd_S133C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS133C2(Test_S133C2, "S133C2", ABISELECT(144,100));

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S133C5_nt;
extern Class_Descriptor cd_S133C4;
extern Class_Descriptor cd_S133C3;
static Base_Class bases_S133C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S133C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S133C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S133C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S133C2 = {  "S133C2", // class name
  bases_S133C2, 4,
  0, // no vftv
  0, //no vtt
  ABISELECT(144,100), // 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  S133C1  : S133C2 {
  ::S16701C4_nt s133c1f0;
  ::S16701C4_nt s133c1f1;
  ::S16701C4_nt s133c1f2;
  ::S16701C4_nt s133c1f3;
  ::S16701C4_nt s133c1f4;
  ::S16701C4_nt s133c1f5;
};
//SIG(1 S133C1) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5} FC7{ m FC8{ m FC9{ m Fp Fi[4]}}} FC8 FC10{ m FC9}} FC11{ m Fp} FC11 FC11 FC11 FC12{ m Fi FC13{ BC14{ m Fp Fi}}} Fc[3]} FC11 FC11 FC11 FC11 FC11 FC11}



static void Test_S133C1()
{
  extern Class_Descriptor cd_S133C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,32)];
    init_test(&cd_S133C1, buf);
    S133C1 &lv = *(new (buf) S133C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,124), "sizeof(S133C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S133C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S133C5_nt*)(S133C4*)(S133C3*)(S133C2*), 0, "S133C1");
    check_base_class_offset(lv, (S133C5_nt*)(S133C4*)(S133C3*)(S133C2*), 0, "S133C1");
    check_base_class_offset(lv, (S133C4*)(S133C3*)(S133C2*), 0, "S133C1");
    check_base_class_offset(lv, (S133C3*)(S133C2*), 0, "S133C1");
    check_base_class_offset(lv, (S133C2*), 0, "S133C1");
    check_field_offset(lv, s133c1f0, ABISELECT(144,100), "S133C1.s133c1f0");
    check_field_offset(lv, s133c1f1, ABISELECT(152,104), "S133C1.s133c1f1");
    check_field_offset(lv, s133c1f2, ABISELECT(160,108), "S133C1.s133c1f2");
    check_field_offset(lv, s133c1f3, ABISELECT(168,112), "S133C1.s133c1f3");
    check_field_offset(lv, s133c1f4, ABISELECT(176,116), "S133C1.s133c1f4");
    check_field_offset(lv, s133c1f5, ABISELECT(184,120), "S133C1.s133c1f5");
    test_class_info(&lv, &cd_S133C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS133C1(Test_S133C1, "S133C1", ABISELECT(192,124));

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S133C5_nt;
extern Class_Descriptor cd_S133C4;
extern Class_Descriptor cd_S133C3;
extern Class_Descriptor cd_S133C2;
static Base_Class bases_S133C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S133C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S133C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S133C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S133C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S133C1 = {  "S133C1", // class name
  bases_S133C1, 5,
  0, // no vftv
  0, //no vtt
  ABISELECT(192,124), // 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  S4145C3  {
  ::S4677C18_nt s4145c3f0;
  int s4145c3f1;
  void *s4145c3f2[4];
  virtual  ~S4145C3(); // _ZN7S4145C3D1Ev
  virtual void  v1(); // _ZN7S4145C32v1Ev
  virtual void  v2(); // _ZN7S4145C32v2Ev
  virtual void  v3(); // _ZN7S4145C32v3Ev
  virtual void  v4(); // _ZN7S4145C32v4Ev
  S4145C3(); // tgen
};
//SIG(-1 S4145C3) C1{ vd v1 v2 v3 v4 FC2{ m FC3{ m Fp Fi FC4{ m}} Fi} Fi Fp[4]}


 S4145C3 ::~S4145C3(){ note_dtor("S4145C3", this);}
void  S4145C3 ::v1(){vfunc_called(this, "_ZN7S4145C32v1Ev");}
void  S4145C3 ::v2(){vfunc_called(this, "_ZN7S4145C32v2Ev");}
void  S4145C3 ::v3(){vfunc_called(this, "_ZN7S4145C32v3Ev");}
void  S4145C3 ::v4(){vfunc_called(this, "_ZN7S4145C32v4Ev");}
S4145C3 ::S4145C3(){ note_ctor("S4145C3", this);} // tgen

static void Test_S4145C3()
{
  extern Class_Descriptor cd_S4145C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S4145C3, buf);
    S4145C3 *dp, &lv = *(dp=new (buf) S4145C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S4145C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4145C3)");
    check_field_offset(lv, s4145c3f0, ABISELECT(8,4), "S4145C3.s4145c3f0");
    check_field_offset(lv, s4145c3f1, ABISELECT(32,20), "S4145C3.s4145c3f1");
    check_field_offset(lv, s4145c3f2, ABISELECT(40,24), "S4145C3.s4145c3f2");
    test_class_info(&lv, &cd_S4145C3);
    dp->~S4145C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4145C3(Test_S4145C3, "S4145C3", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN7S4145C3C1Ev();
extern void _ZN7S4145C3D1Ev();
Name_Map name_map_S4145C3[] = {
  NSPAIR(_ZN7S4145C3C1Ev),
  NSPAIR(_ZN7S4145C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4145C3[];
extern void _ZN7S4145C3D1Ev();
extern void _ZN7S4145C3D0Ev();
extern void _ZN7S4145C32v1Ev();
extern void _ZN7S4145C32v2Ev();
extern void _ZN7S4145C32v3Ev();
extern void _ZN7S4145C32v4Ev();
static  VTBL_ENTRY vtc_S4145C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4145C3[0]),
  (VTBL_ENTRY)&_ZN7S4145C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4145C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4145C32v1Ev,
  (VTBL_ENTRY)&_ZN7S4145C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4145C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4145C32v4Ev,
};
extern VTBL_ENTRY _ZTI7S4145C3[];
extern  VTBL_ENTRY _ZTV7S4145C3[];
Class_Descriptor cd_S4145C3 = {  "S4145C3", // class name
  0,0,//no base classes
  &(vtc_S4145C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI7S4145C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4145C3),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4145C2  : S4145C3 {
  void *s4145c2f0;
  char s4145c2f1[2];
  virtual  ~S4145C2(); // _ZN7S4145C2D1Ev
  virtual void  v5(); // _ZN7S4145C22v5Ev
  virtual void  v6(); // _ZN7S4145C22v6Ev
  virtual void  v7(); // _ZN7S4145C22v7Ev
  virtual void  v8(); // _ZN7S4145C22v8Ev
  S4145C2(); // tgen
};
//SIG(-1 S4145C2) C1{ BC2{ vd v5 v6 v7 v8 FC3{ m FC4{ m Fp Fi FC5{ m}} Fi} Fi Fp[4]} vd v1 v2 v3 v4 Fp Fc[2]}


 S4145C2 ::~S4145C2(){ note_dtor("S4145C2", this);}
void  S4145C2 ::v5(){vfunc_called(this, "_ZN7S4145C22v5Ev");}
void  S4145C2 ::v6(){vfunc_called(this, "_ZN7S4145C22v6Ev");}
void  S4145C2 ::v7(){vfunc_called(this, "_ZN7S4145C22v7Ev");}
void  S4145C2 ::v8(){vfunc_called(this, "_ZN7S4145C22v8Ev");}
S4145C2 ::S4145C2(){ note_ctor("S4145C2", this);} // tgen

static void Test_S4145C2()
{
  extern Class_Descriptor cd_S4145C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,13)];
    init_test(&cd_S4145C2, buf);
    S4145C2 *dp, &lv = *(dp=new (buf) S4145C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,48), "sizeof(S4145C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4145C2)");
    check_base_class_offset(lv, (S4145C3*), 0, "S4145C2");
    check_field_offset(lv, s4145c2f0, ABISELECT(72,40), "S4145C2.s4145c2f0");
    check_field_offset(lv, s4145c2f1, ABISELECT(80,44), "S4145C2.s4145c2f1");
    test_class_info(&lv, &cd_S4145C2);
    dp->~S4145C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4145C2(Test_S4145C2, "S4145C2", ABISELECT(88,48));

#else // __cplusplus

extern void _ZN7S4145C2C1Ev();
extern void _ZN7S4145C2D1Ev();
Name_Map name_map_S4145C2[] = {
  NSPAIR(_ZN7S4145C2C1Ev),
  NSPAIR(_ZN7S4145C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4145C3;
extern VTBL_ENTRY _ZTI7S4145C3[];
extern  VTBL_ENTRY _ZTV7S4145C3[];
static Base_Class bases_S4145C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4145C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4145C2[];
extern void _ZN7S4145C2D1Ev();
extern void _ZN7S4145C2D0Ev();
extern void _ZN7S4145C32v1Ev();
extern void _ZN7S4145C32v2Ev();
extern void _ZN7S4145C32v3Ev();
extern void _ZN7S4145C32v4Ev();
extern void _ZN7S4145C22v5Ev();
extern void _ZN7S4145C22v6Ev();
extern void _ZN7S4145C22v7Ev();
extern void _ZN7S4145C22v8Ev();
static  VTBL_ENTRY vtc_S4145C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4145C2[0]),
  (VTBL_ENTRY)&_ZN7S4145C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4145C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4145C32v1Ev,
  (VTBL_ENTRY)&_ZN7S4145C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4145C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4145C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4145C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4145C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4145C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4145C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S4145C2[];
extern  VTBL_ENTRY _ZTV7S4145C2[];
Class_Descriptor cd_S4145C2 = {  "S4145C2", // class name
  bases_S4145C2, 1,
  &(vtc_S4145C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,48), // object size
  NSPAIRA(_ZTI7S4145C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4145C2),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  S4145C7_nt  {
  void *s4145c7f0[3];
  void  mf4145c7(); // _ZN10S4145C7_nt8mf4145c7Ev
  virtual  ~S4145C7_nt(); // _ZN10S4145C7_ntD1Ev
  S4145C7_nt(); // tgen
};
//SIG(-1 S4145C7_nt) C1{ vd m Fp[3]}


void  S4145C7_nt ::mf4145c7(){}
 S4145C7_nt ::~S4145C7_nt(){ note_dtor("S4145C7_nt", this);}
S4145C7_nt ::S4145C7_nt(){ note_ctor("S4145C7_nt", this);} // tgen

//skip512 S4145C7_nt

#else // __cplusplus

extern void _ZN10S4145C7_ntC1Ev();
extern void _ZN10S4145C7_ntD1Ev();
Name_Map name_map_S4145C7_nt[] = {
  NSPAIR(_ZN10S4145C7_ntC1Ev),
  NSPAIR(_ZN10S4145C7_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S4145C7_nt[];
extern void _ZN10S4145C7_ntD1Ev();
extern void _ZN10S4145C7_ntD0Ev();
static  VTBL_ENTRY vtc_S4145C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4145C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S4145C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4145C7_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S4145C7_nt[];
VTBL_ENTRY *P__ZTI10S4145C7_nt = _ZTI10S4145C7_nt; 
extern  VTBL_ENTRY _ZTV10S4145C7_nt[];
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4145C8_nt  {
  void *s4145c8f0;
  void  mf4145c8(); // _ZN10S4145C8_nt8mf4145c8Ev
  virtual  ~S4145C8_nt(); // _ZN10S4145C8_ntD1Ev
  S4145C8_nt(); // tgen
};
//SIG(-1 S4145C8_nt) C1{ vd m Fp}


void  S4145C8_nt ::mf4145c8(){}
 S4145C8_nt ::~S4145C8_nt(){ note_dtor("S4145C8_nt", this);}
S4145C8_nt ::S4145C8_nt(){ note_ctor("S4145C8_nt", this);} // tgen

//skip512 S4145C8_nt

#else // __cplusplus

extern void _ZN10S4145C8_ntC1Ev();
extern void _ZN10S4145C8_ntD1Ev();
Name_Map name_map_S4145C8_nt[] = {
  NSPAIR(_ZN10S4145C8_ntC1Ev),
  NSPAIR(_ZN10S4145C8_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S4145C8_nt[];
extern void _ZN10S4145C8_ntD1Ev();
extern void _ZN10S4145C8_ntD0Ev();
static  VTBL_ENTRY vtc_S4145C8_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4145C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S4145C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4145C8_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S4145C8_nt[];
VTBL_ENTRY *P__ZTI10S4145C8_nt = _ZTI10S4145C8_nt; 
extern  VTBL_ENTRY _ZTV10S4145C8_nt[];
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4145C11  {
  int s4145c11f0[3];
  virtual  ~S4145C11(); // _ZN8S4145C11D1Ev
  virtual void  v11(); // _ZN8S4145C113v11Ev
  virtual void  v12(); // _ZN8S4145C113v12Ev
  virtual void  v13(); // _ZN8S4145C113v13Ev
  virtual void  v14(); // _ZN8S4145C113v14Ev
  virtual void  v15(); // _ZN8S4145C113v15Ev
  virtual void  v16(); // _ZN8S4145C113v16Ev
  S4145C11(); // tgen
};
//SIG(-1 S4145C11) C1{ vd v1 v2 v3 v4 v5 v6 Fi[3]}


 S4145C11 ::~S4145C11(){ note_dtor("S4145C11", this);}
void  S4145C11 ::v11(){vfunc_called(this, "_ZN8S4145C113v11Ev");}
void  S4145C11 ::v12(){vfunc_called(this, "_ZN8S4145C113v12Ev");}
void  S4145C11 ::v13(){vfunc_called(this, "_ZN8S4145C113v13Ev");}
void  S4145C11 ::v14(){vfunc_called(this, "_ZN8S4145C113v14Ev");}
void  S4145C11 ::v15(){vfunc_called(this, "_ZN8S4145C113v15Ev");}
void  S4145C11 ::v16(){vfunc_called(this, "_ZN8S4145C113v16Ev");}
S4145C11 ::S4145C11(){ note_ctor("S4145C11", this);} // tgen

static void Test_S4145C11()
{
  extern Class_Descriptor cd_S4145C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S4145C11, buf);
    S4145C11 *dp, &lv = *(dp=new (buf) S4145C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S4145C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4145C11)");
    check_field_offset(lv, s4145c11f0, ABISELECT(8,4), "S4145C11.s4145c11f0");
    test_class_info(&lv, &cd_S4145C11);
    dp->~S4145C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4145C11(Test_S4145C11, "S4145C11", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S4145C11C1Ev();
extern void _ZN8S4145C11D1Ev();
Name_Map name_map_S4145C11[] = {
  NSPAIR(_ZN8S4145C11C1Ev),
  NSPAIR(_ZN8S4145C11D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S4145C11[];
extern void _ZN8S4145C11D1Ev();
extern void _ZN8S4145C11D0Ev();
extern void _ZN8S4145C113v11Ev();
extern void _ZN8S4145C113v12Ev();
extern void _ZN8S4145C113v13Ev();
extern void _ZN8S4145C113v14Ev();
extern void _ZN8S4145C113v15Ev();
extern void _ZN8S4145C113v16Ev();
static  VTBL_ENTRY vtc_S4145C11[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S4145C11[0]),
  (VTBL_ENTRY)&_ZN8S4145C11D1Ev,
  (VTBL_ENTRY)&_ZN8S4145C11D0Ev,
  (VTBL_ENTRY)&_ZN8S4145C113v11Ev,
  (VTBL_ENTRY)&_ZN8S4145C113v12Ev,
  (VTBL_ENTRY)&_ZN8S4145C113v13Ev,
  (VTBL_ENTRY)&_ZN8S4145C113v14Ev,
  (VTBL_ENTRY)&_ZN8S4145C113v15Ev,
  (VTBL_ENTRY)&_ZN8S4145C113v16Ev,
};
extern VTBL_ENTRY _ZTI8S4145C11[];
extern  VTBL_ENTRY _ZTV8S4145C11[];
Class_Descriptor cd_S4145C11 = {  "S4145C11", // class name
  0,0,//no base classes
  &(vtc_S4145C11[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S4145C11),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S4145C11),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  S4145C13  : S4145C11 {
  virtual  ~S4145C13(); // _ZN8S4145C13D1Ev
  virtual void  v18(); // _ZN8S4145C133v18Ev
  S4145C13(); // tgen
};
//SIG(-1 S4145C13) C1{ BC2{ vd v2 v3 v4 v5 v6 v7 Fi[3]} vd v1}


 S4145C13 ::~S4145C13(){ note_dtor("S4145C13", this);}
void  S4145C13 ::v18(){vfunc_called(this, "_ZN8S4145C133v18Ev");}
S4145C13 ::S4145C13(){ note_ctor("S4145C13", this);} // tgen

static void Test_S4145C13()
{
  extern Class_Descriptor cd_S4145C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S4145C13, buf);
    S4145C13 *dp, &lv = *(dp=new (buf) S4145C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S4145C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4145C13)");
    check_base_class_offset(lv, (S4145C11*), 0, "S4145C13");
    test_class_info(&lv, &cd_S4145C13);
    dp->~S4145C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4145C13(Test_S4145C13, "S4145C13", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S4145C13C1Ev();
extern void _ZN8S4145C13D1Ev();
Name_Map name_map_S4145C13[] = {
  NSPAIR(_ZN8S4145C13C1Ev),
  NSPAIR(_ZN8S4145C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4145C11;
extern VTBL_ENTRY _ZTI8S4145C11[];
extern  VTBL_ENTRY _ZTV8S4145C11[];
static Base_Class bases_S4145C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4145C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S4145C13[];
extern void _ZN8S4145C13D1Ev();
extern void _ZN8S4145C13D0Ev();
extern void _ZN8S4145C113v11Ev();
extern void _ZN8S4145C113v12Ev();
extern void _ZN8S4145C113v13Ev();
extern void _ZN8S4145C113v14Ev();
extern void _ZN8S4145C113v15Ev();
extern void _ZN8S4145C113v16Ev();
extern void _ZN8S4145C133v18Ev();
static  VTBL_ENTRY vtc_S4145C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S4145C13[0]),
  (VTBL_ENTRY)&_ZN8S4145C13D1Ev,
  (VTBL_ENTRY)&_ZN8S4145C13D0Ev,
  (VTBL_ENTRY)&_ZN8S4145C113v11Ev,
  (VTBL_ENTRY)&_ZN8S4145C113v12Ev,
  (VTBL_ENTRY)&_ZN8S4145C113v13Ev,
  (VTBL_ENTRY)&_ZN8S4145C113v14Ev,
  (VTBL_ENTRY)&_ZN8S4145C113v15Ev,
  (VTBL_ENTRY)&_ZN8S4145C113v16Ev,
  (VTBL_ENTRY)&_ZN8S4145C133v18Ev,
};
extern VTBL_ENTRY _ZTI8S4145C13[];
extern  VTBL_ENTRY _ZTV8S4145C13[];
Class_Descriptor cd_S4145C13 = {  "S4145C13", // class name
  bases_S4145C13, 1,
  &(vtc_S4145C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S4145C13),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S4145C13),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  S4145C9  {
  int s4145c9f0;
  ::S9072C8 s4145c9f1;
  ::S9072C10 s4145c9f2;
  ::S4145C13 s4145c9f3;
  int s4145c9f4[2];
  void  mf4145c9(); // _ZN7S4145C98mf4145c9Ev
  virtual  ~S4145C9(); // _ZN7S4145C9D1Ev
  S4145C9(); // tgen
};
//SIG(-1 S4145C9) C1{ vd m Fi FC2{ BC3{ vd v3 v4 v5 v6 v7 v8 Fi[3]} vd v1 v2} FC4{ BC3 vd v9} FC5{ BC6{ vd v11 v12 v13 v14 v15 v16 Fi[3]} vd v10} Fi[2]}


void  S4145C9 ::mf4145c9(){}
 S4145C9 ::~S4145C9(){ note_dtor("S4145C9", this);}
S4145C9 ::S4145C9(){ note_ctor("S4145C9", this);} // tgen

static void Test_S4145C9()
{
  extern Class_Descriptor cd_S4145C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,17)];
    init_test(&cd_S4145C9, buf);
    S4145C9 *dp, &lv = *(dp=new (buf) S4145C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,64), "sizeof(S4145C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4145C9)");
    check_field_offset(lv, s4145c9f0, ABISELECT(8,4), "S4145C9.s4145c9f0");
    check_field_offset(lv, s4145c9f1, ABISELECT(16,8), "S4145C9.s4145c9f1");
    check_field_offset(lv, s4145c9f2, ABISELECT(40,24), "S4145C9.s4145c9f2");
    check_field_offset(lv, s4145c9f3, ABISELECT(64,40), "S4145C9.s4145c9f3");
    check_field_offset(lv, s4145c9f4, ABISELECT(88,56), "S4145C9.s4145c9f4");
    test_class_info(&lv, &cd_S4145C9);
    dp->~S4145C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4145C9(Test_S4145C9, "S4145C9", ABISELECT(96,64));

#else // __cplusplus

extern void _ZN7S4145C9C1Ev();
extern void _ZN7S4145C9D1Ev();
Name_Map name_map_S4145C9[] = {
  NSPAIR(_ZN7S4145C9C1Ev),
  NSPAIR(_ZN7S4145C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4145C9[];
extern void _ZN7S4145C9D1Ev();
extern void _ZN7S4145C9D0Ev();
static  VTBL_ENTRY vtc_S4145C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4145C9[0]),
  (VTBL_ENTRY)&_ZN7S4145C9D1Ev,
  (VTBL_ENTRY)&_ZN7S4145C9D0Ev,
};
extern VTBL_ENTRY _ZTI7S4145C9[];
extern  VTBL_ENTRY _ZTV7S4145C9[];
Class_Descriptor cd_S4145C9 = {  "S4145C9", // class name
  0,0,//no base classes
  &(vtc_S4145C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,64), // object size
  NSPAIRA(_ZTI7S4145C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4145C9),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  S4145C1  : S4145C2 {
  ::S4145C7_nt s4145c1f0;
  ::S4145C7_nt s4145c1f1;
  ::S4145C7_nt s4145c1f2;
  ::S4145C8_nt s4145c1f3;
  ::S4145C9 s4145c1f4;
  void *s4145c1f5;
  virtual  ~S4145C1(); // _ZN7S4145C1D1Ev
  S4145C1(); // tgen
};
//SIG(1 S4145C1) C1{ BC2{ BC3{ vd v1 v2 v3 v4 FC4{ m FC5{ m Fp Fi FC6{ m}} Fi} Fi Fp[4]} vd v5 v6 v7 v8 Fp Fc[2]} vd FC7{ vd m Fp[3]} FC7 FC7 FC8{ vd m Fp} FC9{ vd m Fi FC10{ BC11{ vd v11 v12 v13 v14 v15 v16 Fi[3]} vd v9 v10} FC12{ BC11 vd v17} FC13{ BC14{ vd v19 v20 v21 v22 v23 v24 Fi[3]} vd v18} Fi[2]} Fp}


 S4145C1 ::~S4145C1(){ note_dtor("S4145C1", this);}
S4145C1 ::S4145C1(){ note_ctor("S4145C1", this);} // tgen

static void Test_S4145C1()
{
  extern Class_Descriptor cd_S4145C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(39,44)];
    init_test(&cd_S4145C1, buf);
    S4145C1 *dp, &lv = *(dp=new (buf) S4145C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,172), "sizeof(S4145C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4145C1)");
    check_base_class_offset(lv, (S4145C3*)(S4145C2*), 0, "S4145C1");
    check_base_class_offset(lv, (S4145C2*), 0, "S4145C1");
    check_field_offset(lv, s4145c1f0, ABISELECT(88,48), "S4145C1.s4145c1f0");
    check_field_offset(lv, s4145c1f1, ABISELECT(120,64), "S4145C1.s4145c1f1");
    check_field_offset(lv, s4145c1f2, ABISELECT(152,80), "S4145C1.s4145c1f2");
    check_field_offset(lv, s4145c1f3, ABISELECT(184,96), "S4145C1.s4145c1f3");
    check_field_offset(lv, s4145c1f4, ABISELECT(200,104), "S4145C1.s4145c1f4");
    check_field_offset(lv, s4145c1f5, ABISELECT(296,168), "S4145C1.s4145c1f5");
    test_class_info(&lv, &cd_S4145C1);
    dp->~S4145C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4145C1(Test_S4145C1, "S4145C1", ABISELECT(304,172));

#else // __cplusplus

extern void _ZN7S4145C1C1Ev();
extern void _ZN7S4145C1D1Ev();
Name_Map name_map_S4145C1[] = {
  NSPAIR(_ZN7S4145C1C1Ev),
  NSPAIR(_ZN7S4145C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4145C3;
extern VTBL_ENTRY _ZTI7S4145C3[];
extern  VTBL_ENTRY _ZTV7S4145C3[];
extern Class_Descriptor cd_S4145C2;
extern VTBL_ENTRY _ZTI7S4145C2[];
extern  VTBL_ENTRY _ZTV7S4145C2[];
static Base_Class bases_S4145C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4145C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4145C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S4145C1[];
extern void _ZN7S4145C1D1Ev();
extern void _ZN7S4145C1D0Ev();
extern void _ZN7S4145C32v1Ev();
extern void _ZN7S4145C32v2Ev();
extern void _ZN7S4145C32v3Ev();
extern void _ZN7S4145C32v4Ev();
extern void _ZN7S4145C22v5Ev();
extern void _ZN7S4145C22v6Ev();
extern void _ZN7S4145C22v7Ev();
extern void _ZN7S4145C22v8Ev();
static  VTBL_ENTRY vtc_S4145C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4145C1[0]),
  (VTBL_ENTRY)&_ZN7S4145C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4145C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4145C32v1Ev,
  (VTBL_ENTRY)&_ZN7S4145C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4145C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4145C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4145C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4145C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4145C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4145C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S4145C1[];
extern  VTBL_ENTRY _ZTV7S4145C1[];
Class_Descriptor cd_S4145C1 = {  "S4145C1", // class name
  bases_S4145C1, 2,
  &(vtc_S4145C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,172), // object size
  NSPAIRA(_ZTI7S4145C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4145C1),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  S1230C3  : S4677C37 {
  virtual  ~S1230C3(); // _ZN7S1230C3D1Ev
  virtual void  v4(); // _ZN7S1230C32v4Ev
  S1230C3(); // tgen
};
//SIG(-1 S1230C3) C1{ BC2{ m} vd v1}


 S1230C3 ::~S1230C3(){ note_dtor("S1230C3", this);}
void  S1230C3 ::v4(){vfunc_called(this, "_ZN7S1230C32v4Ev");}
S1230C3 ::S1230C3(){ note_ctor("S1230C3", this);} // tgen

static void Test_S1230C3()
{
  extern Class_Descriptor cd_S1230C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1230C3, buf);
    S1230C3 *dp, &lv = *(dp=new (buf) S1230C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1230C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1230C3)");
    check_base_class_offset(lv, (S4677C37*), 0, "S1230C3");
    test_class_info(&lv, &cd_S1230C3);
    dp->~S1230C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1230C3(Test_S1230C3, "S1230C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1230C3C1Ev();
extern void _ZN7S1230C3D1Ev();
Name_Map name_map_S1230C3[] = {
  NSPAIR(_ZN7S1230C3C1Ev),
  NSPAIR(_ZN7S1230C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
static Base_Class bases_S1230C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1230C3[];
extern void _ZN7S1230C3D1Ev();
extern void _ZN7S1230C3D0Ev();
extern void _ZN7S1230C32v4Ev();
static  VTBL_ENTRY vtc_S1230C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1230C3[0]),
  (VTBL_ENTRY)&_ZN7S1230C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1230C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1230C32v4Ev,
};
extern VTBL_ENTRY _ZTI7S1230C3[];
extern  VTBL_ENTRY _ZTV7S1230C3[];
Class_Descriptor cd_S1230C3 = {  "S1230C3", // class name
  bases_S1230C3, 1,
  &(vtc_S1230C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1230C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1230C3),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  S1230C6_nt  : S1230C3 {
  virtual  ~S1230C6_nt(); // _ZN10S1230C6_ntD1Ev
  virtual void  v29(); // _ZN10S1230C6_nt3v29Ev
  virtual void  v30(); // _ZN10S1230C6_nt3v30Ev
  virtual void  v31(); // _ZN10S1230C6_nt3v31Ev
  virtual void  v32(); // _ZN10S1230C6_nt3v32Ev
  virtual void  v33(); // _ZN10S1230C6_nt3v33Ev
  virtual void  v34(); // _ZN10S1230C6_nt3v34Ev
  virtual void  v35(); // _ZN10S1230C6_nt3v35Ev
  virtual void  v36(); // _ZN10S1230C6_nt3v36Ev
  S1230C6_nt(); // tgen
};
//SIG(-1 S1230C6_nt) C1{ BC2{ BC3{ m} vd v9} vd v1 v2 v3 v4 v5 v6 v7 v8}


 S1230C6_nt ::~S1230C6_nt(){ note_dtor("S1230C6_nt", this);}
void  S1230C6_nt ::v29(){vfunc_called(this, "_ZN10S1230C6_nt3v29Ev");}
void  S1230C6_nt ::v30(){vfunc_called(this, "_ZN10S1230C6_nt3v30Ev");}
void  S1230C6_nt ::v31(){vfunc_called(this, "_ZN10S1230C6_nt3v31Ev");}
void  S1230C6_nt ::v32(){vfunc_called(this, "_ZN10S1230C6_nt3v32Ev");}
void  S1230C6_nt ::v33(){vfunc_called(this, "_ZN10S1230C6_nt3v33Ev");}
void  S1230C6_nt ::v34(){vfunc_called(this, "_ZN10S1230C6_nt3v34Ev");}
void  S1230C6_nt ::v35(){vfunc_called(this, "_ZN10S1230C6_nt3v35Ev");}
void  S1230C6_nt ::v36(){vfunc_called(this, "_ZN10S1230C6_nt3v36Ev");}
S1230C6_nt ::S1230C6_nt(){ note_ctor("S1230C6_nt", this);} // tgen

//skip512 S1230C6_nt

#else // __cplusplus

extern void _ZN10S1230C6_ntC1Ev();
extern void _ZN10S1230C6_ntD1Ev();
Name_Map name_map_S1230C6_nt[] = {
  NSPAIR(_ZN10S1230C6_ntC1Ev),
  NSPAIR(_ZN10S1230C6_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S1230C3;
extern VTBL_ENTRY _ZTI7S1230C3[];
extern  VTBL_ENTRY _ZTV7S1230C3[];
static Base_Class bases_S1230C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1230C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1230C6_nt[];
extern void _ZN10S1230C6_ntD1Ev();
extern void _ZN10S1230C6_ntD0Ev();
extern void _ZN7S1230C32v4Ev();
extern void _ZN10S1230C6_nt3v29Ev();
extern void _ZN10S1230C6_nt3v30Ev();
extern void _ZN10S1230C6_nt3v31Ev();
extern void _ZN10S1230C6_nt3v32Ev();
extern void _ZN10S1230C6_nt3v33Ev();
extern void _ZN10S1230C6_nt3v34Ev();
extern void _ZN10S1230C6_nt3v35Ev();
extern void _ZN10S1230C6_nt3v36Ev();
static  VTBL_ENTRY vtc_S1230C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1230C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S1230C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1230C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S1230C32v4Ev,
  (VTBL_ENTRY)&_ZN10S1230C6_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S1230C6_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S1230C6_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S1230C6_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S1230C6_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S1230C6_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S1230C6_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S1230C6_nt3v36Ev,
};
extern VTBL_ENTRY _ZTI10S1230C6_nt[];
VTBL_ENTRY *P__ZTI10S1230C6_nt = _ZTI10S1230C6_nt; 
extern  VTBL_ENTRY _ZTV10S1230C6_nt[];
Class_Descriptor cd_S1230C6_nt = {  "S1230C6_nt", // class name
  bases_S1230C6_nt, 2,
  &(vtc_S1230C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S1230C6_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1230C6_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  S1230C8_nt  {
  short s1230c8f0;
  int s1230c8f1;
  void *s1230c8f2;
  int s1230c8f3;
};
//SIG(1 S1230C8_nt) C1{ Fs Fi Fp Fi}



//skip512 S1230C8_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

union  S1230C7_nt  {
  short s1230c7f0[15];
  ::S1230C8_nt s1230c7f1;
};
//SIG(1 S1230C7_nt) U1{ Fs[15] FC2{ Fs Fi Fp Fi}}

#endif // __cplusplus
#ifdef __cplusplus

struct  S1230C5_nt  : S1230C6_nt {
  char s1230c5f0[2];
  ::S1230C7_nt s1230c5f1;
  virtual  ~S1230C5_nt(); // _ZN10S1230C5_ntD1Ev
  virtual void  v20(); // _ZN10S1230C5_nt3v20Ev
  virtual void  v21(); // _ZN10S1230C5_nt3v21Ev
  virtual void  v22(); // _ZN10S1230C5_nt3v22Ev
  virtual void  v23(); // _ZN10S1230C5_nt3v23Ev
  virtual void  v24(); // _ZN10S1230C5_nt3v24Ev
  virtual void  v25(); // _ZN10S1230C5_nt3v25Ev
  virtual void  v26(); // _ZN10S1230C5_nt3v26Ev
  virtual void  v27(); // _ZN10S1230C5_nt3v27Ev
  virtual void  v28(); // _ZN10S1230C5_nt3v28Ev
  S1230C5_nt(); // tgen
};
//SIG(-1 S1230C5_nt) C1{ BC2{ BC3{ BC4{ m} vd v10} vd v11 v12 v13 v14 v15 v16 v17 v18} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fc[2] FU5{ Fs[15] FC6{ Fs Fi Fp Fi}}}


 S1230C5_nt ::~S1230C5_nt(){ note_dtor("S1230C5_nt", this);}
void  S1230C5_nt ::v20(){vfunc_called(this, "_ZN10S1230C5_nt3v20Ev");}
void  S1230C5_nt ::v21(){vfunc_called(this, "_ZN10S1230C5_nt3v21Ev");}
void  S1230C5_nt ::v22(){vfunc_called(this, "_ZN10S1230C5_nt3v22Ev");}
void  S1230C5_nt ::v23(){vfunc_called(this, "_ZN10S1230C5_nt3v23Ev");}
void  S1230C5_nt ::v24(){vfunc_called(this, "_ZN10S1230C5_nt3v24Ev");}
void  S1230C5_nt ::v25(){vfunc_called(this, "_ZN10S1230C5_nt3v25Ev");}
void  S1230C5_nt ::v26(){vfunc_called(this, "_ZN10S1230C5_nt3v26Ev");}
void  S1230C5_nt ::v27(){vfunc_called(this, "_ZN10S1230C5_nt3v27Ev");}
void  S1230C5_nt ::v28(){vfunc_called(this, "_ZN10S1230C5_nt3v28Ev");}
S1230C5_nt ::S1230C5_nt(){ note_ctor("S1230C5_nt", this);} // tgen

//skip512 S1230C5_nt

#else // __cplusplus

extern void _ZN10S1230C5_ntC1Ev();
extern void _ZN10S1230C5_ntD1Ev();
Name_Map name_map_S1230C5_nt[] = {
  NSPAIR(_ZN10S1230C5_ntC1Ev),
  NSPAIR(_ZN10S1230C5_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S1230C3;
extern VTBL_ENTRY _ZTI7S1230C3[];
extern  VTBL_ENTRY _ZTV7S1230C3[];
extern Class_Descriptor cd_S1230C6_nt;
extern VTBL_ENTRY _ZTI10S1230C6_nt[];
extern  VTBL_ENTRY _ZTV10S1230C6_nt[];
static Base_Class bases_S1230C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1230C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1230C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI10S1230C5_nt[];
extern void _ZN10S1230C5_ntD1Ev();
extern void _ZN10S1230C5_ntD0Ev();
extern void _ZN7S1230C32v4Ev();
extern void _ZN10S1230C6_nt3v29Ev();
extern void _ZN10S1230C6_nt3v30Ev();
extern void _ZN10S1230C6_nt3v31Ev();
extern void _ZN10S1230C6_nt3v32Ev();
extern void _ZN10S1230C6_nt3v33Ev();
extern void _ZN10S1230C6_nt3v34Ev();
extern void _ZN10S1230C6_nt3v35Ev();
extern void _ZN10S1230C6_nt3v36Ev();
extern void _ZN10S1230C5_nt3v20Ev();
extern void _ZN10S1230C5_nt3v21Ev();
extern void _ZN10S1230C5_nt3v22Ev();
extern void _ZN10S1230C5_nt3v23Ev();
extern void _ZN10S1230C5_nt3v24Ev();
extern void _ZN10S1230C5_nt3v25Ev();
extern void _ZN10S1230C5_nt3v26Ev();
extern void _ZN10S1230C5_nt3v27Ev();
extern void _ZN10S1230C5_nt3v28Ev();
static  VTBL_ENTRY vtc_S1230C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1230C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S1230C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1230C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S1230C32v4Ev,
  (VTBL_ENTRY)&_ZN10S1230C6_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S1230C6_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S1230C6_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S1230C6_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S1230C6_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S1230C6_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S1230C6_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S1230C6_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S1230C5_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S1230C5_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S1230C5_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S1230C5_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S1230C5_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S1230C5_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S1230C5_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S1230C5_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S1230C5_nt3v28Ev,
};
extern VTBL_ENTRY _ZTI10S1230C5_nt[];
VTBL_ENTRY *P__ZTI10S1230C5_nt = _ZTI10S1230C5_nt; 
extern  VTBL_ENTRY _ZTV10S1230C5_nt[];
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1230C2_nt  : S1230C3 {
  ::S1230C5_nt s1230c2f0;
  void *s1230c2f1;
  int s1230c2f2;
  virtual  ~S1230C2_nt(); // _ZN10S1230C2_ntD1Ev
  virtual void  v5(); // _ZN10S1230C2_nt2v5Ev
  virtual void  v6(); // _ZN10S1230C2_nt2v6Ev
  virtual void  v7(); // _ZN10S1230C2_nt2v7Ev
  virtual void  v8(); // _ZN10S1230C2_nt2v8Ev
  virtual void  v9(); // _ZN10S1230C2_nt2v9Ev
  virtual void  v10(); // _ZN10S1230C2_nt3v10Ev
  virtual void  v11(); // _ZN10S1230C2_nt3v11Ev
  virtual void  v12(); // _ZN10S1230C2_nt3v12Ev
  virtual void  v13(); // _ZN10S1230C2_nt3v13Ev
  virtual void  v14(); // _ZN10S1230C2_nt3v14Ev
  virtual void  v15(); // _ZN10S1230C2_nt3v15Ev
  virtual void  v16(); // _ZN10S1230C2_nt3v16Ev
  virtual void  v17(); // _ZN10S1230C2_nt3v17Ev
  virtual void  v18(); // _ZN10S1230C2_nt3v18Ev
  virtual void  v19(); // _ZN10S1230C2_nt3v19Ev
  S1230C2_nt(); // tgen
};
//SIG(-1 S1230C2_nt) C1{ BC2{ BC3{ m} vd v16} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 FC4{ BC5{ BC2 vd v26 v27 v28 v29 v30 v31 v32 v33} vd v17 v18 v19 v20 v21 v22 v23 v24 v25 Fc[2] FU6{ Fs[15] FC7{ Fs Fi Fp Fi}}} Fp Fi}


 S1230C2_nt ::~S1230C2_nt(){ note_dtor("S1230C2_nt", this);}
void  S1230C2_nt ::v5(){vfunc_called(this, "_ZN10S1230C2_nt2v5Ev");}
void  S1230C2_nt ::v6(){vfunc_called(this, "_ZN10S1230C2_nt2v6Ev");}
void  S1230C2_nt ::v7(){vfunc_called(this, "_ZN10S1230C2_nt2v7Ev");}
void  S1230C2_nt ::v8(){vfunc_called(this, "_ZN10S1230C2_nt2v8Ev");}
void  S1230C2_nt ::v9(){vfunc_called(this, "_ZN10S1230C2_nt2v9Ev");}
void  S1230C2_nt ::v10(){vfunc_called(this, "_ZN10S1230C2_nt3v10Ev");}
void  S1230C2_nt ::v11(){vfunc_called(this, "_ZN10S1230C2_nt3v11Ev");}
void  S1230C2_nt ::v12(){vfunc_called(this, "_ZN10S1230C2_nt3v12Ev");}
void  S1230C2_nt ::v13(){vfunc_called(this, "_ZN10S1230C2_nt3v13Ev");}
void  S1230C2_nt ::v14(){vfunc_called(this, "_ZN10S1230C2_nt3v14Ev");}
void  S1230C2_nt ::v15(){vfunc_called(this, "_ZN10S1230C2_nt3v15Ev");}
void  S1230C2_nt ::v16(){vfunc_called(this, "_ZN10S1230C2_nt3v16Ev");}
void  S1230C2_nt ::v17(){vfunc_called(this, "_ZN10S1230C2_nt3v17Ev");}
void  S1230C2_nt ::v18(){vfunc_called(this, "_ZN10S1230C2_nt3v18Ev");}
void  S1230C2_nt ::v19(){vfunc_called(this, "_ZN10S1230C2_nt3v19Ev");}
S1230C2_nt ::S1230C2_nt(){ note_ctor("S1230C2_nt", this);} // tgen

//skip512 S1230C2_nt

#else // __cplusplus

extern void _ZN10S1230C2_ntC1Ev();
extern void _ZN10S1230C2_ntD1Ev();
Name_Map name_map_S1230C2_nt[] = {
  NSPAIR(_ZN10S1230C2_ntC1Ev),
  NSPAIR(_ZN10S1230C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S1230C3;
extern VTBL_ENTRY _ZTI7S1230C3[];
extern  VTBL_ENTRY _ZTV7S1230C3[];
static Base_Class bases_S1230C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1230C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1230C2_nt[];
extern void _ZN10S1230C2_ntD1Ev();
extern void _ZN10S1230C2_ntD0Ev();
extern void _ZN7S1230C32v4Ev();
extern void _ZN10S1230C2_nt2v5Ev();
extern void _ZN10S1230C2_nt2v6Ev();
extern void _ZN10S1230C2_nt2v7Ev();
extern void _ZN10S1230C2_nt2v8Ev();
extern void _ZN10S1230C2_nt2v9Ev();
extern void _ZN10S1230C2_nt3v10Ev();
extern void _ZN10S1230C2_nt3v11Ev();
extern void _ZN10S1230C2_nt3v12Ev();
extern void _ZN10S1230C2_nt3v13Ev();
extern void _ZN10S1230C2_nt3v14Ev();
extern void _ZN10S1230C2_nt3v15Ev();
extern void _ZN10S1230C2_nt3v16Ev();
extern void _ZN10S1230C2_nt3v17Ev();
extern void _ZN10S1230C2_nt3v18Ev();
extern void _ZN10S1230C2_nt3v19Ev();
static  VTBL_ENTRY vtc_S1230C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1230C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S1230C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1230C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S1230C32v4Ev,
  (VTBL_ENTRY)&_ZN10S1230C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S1230C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S1230C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S1230C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S1230C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S1230C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S1230C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S1230C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S1230C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S1230C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S1230C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S1230C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S1230C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S1230C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S1230C2_nt3v19Ev,
};
extern VTBL_ENTRY _ZTI10S1230C2_nt[];
VTBL_ENTRY *P__ZTI10S1230C2_nt = _ZTI10S1230C2_nt; 
extern  VTBL_ENTRY _ZTV10S1230C2_nt[];
Class_Descriptor cd_S1230C2_nt = {  "S1230C2_nt", // class name
  bases_S1230C2_nt, 2,
  &(vtc_S1230C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,52), // object size
  NSPAIRA(_ZTI10S1230C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1230C2_nt),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  S1230C1  : S1230C2_nt {
  int s1230c1f0;
  int s1230c1f1;
  virtual  ~S1230C1(); // _ZN7S1230C1D1Ev
  virtual void  v1(); // _ZN7S1230C12v1Ev
  virtual void  v2(); // _ZN7S1230C12v2Ev
  virtual void  v3(); // _ZN7S1230C12v3Ev
  S1230C1(); // tgen
};
//SIG(1 S1230C1) C1{ BC2{ BC3{ BC4{ m} vd v4} vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 FC5{ BC6{ BC3 vd v29 v30 v31 v32 v33 v34 v35 v36} vd v20 v21 v22 v23 v24 v25 v26 v27 v28 Fc[2] FU7{ Fs[15] FC8{ Fs Fi Fp Fi}}} Fp Fi} vd v1 v2 v3 Fi Fi}


 S1230C1 ::~S1230C1(){ note_dtor("S1230C1", this);}
void  S1230C1 ::v1(){vfunc_called(this, "_ZN7S1230C12v1Ev");}
void  S1230C1 ::v2(){vfunc_called(this, "_ZN7S1230C12v2Ev");}
void  S1230C1 ::v3(){vfunc_called(this, "_ZN7S1230C12v3Ev");}
S1230C1 ::S1230C1(){ note_ctor("S1230C1", this);} // tgen

static void Test_S1230C1()
{
  extern Class_Descriptor cd_S1230C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,16)];
    init_test(&cd_S1230C1, buf);
    S1230C1 *dp, &lv = *(dp=new (buf) S1230C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,60), "sizeof(S1230C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1230C1)");
    check_base_class_offset(lv, (S4677C37*)(S1230C3*)(S1230C2_nt*), 0, "S1230C1");
    check_base_class_offset(lv, (S1230C3*)(S1230C2_nt*), 0, "S1230C1");
    check_base_class_offset(lv, (S1230C2_nt*), 0, "S1230C1");
    check_field_offset(lv, s1230c1f0, ABISELECT(68,52), "S1230C1.s1230c1f0");
    check_field_offset(lv, s1230c1f1, ABISELECT(72,56), "S1230C1.s1230c1f1");
    test_class_info(&lv, &cd_S1230C1);
    dp->~S1230C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1230C1(Test_S1230C1, "S1230C1", ABISELECT(80,60));

#else // __cplusplus

extern void _ZN7S1230C1C1Ev();
extern void _ZN7S1230C1D1Ev();
Name_Map name_map_S1230C1[] = {
  NSPAIR(_ZN7S1230C1C1Ev),
  NSPAIR(_ZN7S1230C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S1230C3;
extern VTBL_ENTRY _ZTI7S1230C3[];
extern  VTBL_ENTRY _ZTV7S1230C3[];
extern Class_Descriptor cd_S1230C2_nt;
extern VTBL_ENTRY _ZTI10S1230C2_nt[];
extern  VTBL_ENTRY _ZTV10S1230C2_nt[];
static Base_Class bases_S1230C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1230C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1230C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1230C1[];
extern void _ZN7S1230C1D1Ev();
extern void _ZN7S1230C1D0Ev();
extern void _ZN7S1230C32v4Ev();
extern void _ZN10S1230C2_nt2v5Ev();
extern void _ZN10S1230C2_nt2v6Ev();
extern void _ZN10S1230C2_nt2v7Ev();
extern void _ZN10S1230C2_nt2v8Ev();
extern void _ZN10S1230C2_nt2v9Ev();
extern void _ZN10S1230C2_nt3v10Ev();
extern void _ZN10S1230C2_nt3v11Ev();
extern void _ZN10S1230C2_nt3v12Ev();
extern void _ZN10S1230C2_nt3v13Ev();
extern void _ZN10S1230C2_nt3v14Ev();
extern void _ZN10S1230C2_nt3v15Ev();
extern void _ZN10S1230C2_nt3v16Ev();
extern void _ZN10S1230C2_nt3v17Ev();
extern void _ZN10S1230C2_nt3v18Ev();
extern void _ZN10S1230C2_nt3v19Ev();
extern void _ZN7S1230C12v1Ev();
extern void _ZN7S1230C12v2Ev();
extern void _ZN7S1230C12v3Ev();
static  VTBL_ENTRY vtc_S1230C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1230C1[0]),
  (VTBL_ENTRY)&_ZN7S1230C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1230C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1230C32v4Ev,
  (VTBL_ENTRY)&_ZN10S1230C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S1230C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S1230C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S1230C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S1230C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S1230C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S1230C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S1230C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S1230C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S1230C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S1230C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S1230C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S1230C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S1230C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S1230C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN7S1230C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1230C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1230C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S1230C1[];
extern  VTBL_ENTRY _ZTV7S1230C1[];
Class_Descriptor cd_S1230C1 = {  "S1230C1", // class name
  bases_S1230C1, 3,
  &(vtc_S1230C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,60), // object size
  NSPAIRA(_ZTI7S1230C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1230C1),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  S1020C3  : S3216C8_nt {
};
//SIG(-1 S1020C3) C1{ BC2{ m Fi}}



static void Test_S1020C3()
{
  extern Class_Descriptor cd_S1020C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S1020C3, buf);
    S1020C3 &lv = *(new (buf) S1020C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S1020C3)");
    check2(__alignof__(lv), 4, "__alignof__(S1020C3)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S1020C3");
    test_class_info(&lv, &cd_S1020C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1020C3(Test_S1020C3, "S1020C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S1020C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1020C3[];
Class_Descriptor cd_S1020C3 = {  "S1020C3", // class name
  bases_S1020C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S1020C3),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  S1020C2  : S1020C3 {
  ::S16701C3 s1020c2f0;
  ::S16701C4_nt s1020c2f1;
  int s1020c2f2;
  ::S16701C3 s1020c2f3;
  char s1020c2f4;
  void *s1020c2f5;
  ::S133C12 s1020c2f6;
  ::S133C15_nt s1020c2f7;
  void *s1020c2f8;
  virtual  ~S1020C2(); // _ZN7S1020C2D1Ev
  virtual void  v11(); // _ZN7S1020C23v11Ev
  virtual void  v12(); // _ZN7S1020C23v12Ev
  virtual void  v13(); // _ZN7S1020C23v13Ev
  virtual void  v14(); // _ZN7S1020C23v14Ev
  virtual void  v15(); // _ZN7S1020C23v15Ev
  virtual void  v16(); // _ZN7S1020C23v16Ev
  virtual void  v17(); // _ZN7S1020C23v17Ev
  virtual void  v18(); // _ZN7S1020C23v18Ev
  virtual void  v19(); // _ZN7S1020C23v19Ev
  virtual void  v20(); // _ZN7S1020C23v20Ev
  S1020C2(); // tgen
};
//SIG(-1 S1020C2) C1{ BC2{ BC3{ m Fi}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 FC4{ m FC5{ m Fp}} FC5 Fi FC4 Fc Fp FC6{ m FC7{ m Fp Fi[4]}} FC8{ m Fi FC9{ BC10{ m Fp Fi}}} Fp}


 S1020C2 ::~S1020C2(){ note_dtor("S1020C2", this);}
void  S1020C2 ::v11(){vfunc_called(this, "_ZN7S1020C23v11Ev");}
void  S1020C2 ::v12(){vfunc_called(this, "_ZN7S1020C23v12Ev");}
void  S1020C2 ::v13(){vfunc_called(this, "_ZN7S1020C23v13Ev");}
void  S1020C2 ::v14(){vfunc_called(this, "_ZN7S1020C23v14Ev");}
void  S1020C2 ::v15(){vfunc_called(this, "_ZN7S1020C23v15Ev");}
void  S1020C2 ::v16(){vfunc_called(this, "_ZN7S1020C23v16Ev");}
void  S1020C2 ::v17(){vfunc_called(this, "_ZN7S1020C23v17Ev");}
void  S1020C2 ::v18(){vfunc_called(this, "_ZN7S1020C23v18Ev");}
void  S1020C2 ::v19(){vfunc_called(this, "_ZN7S1020C23v19Ev");}
void  S1020C2 ::v20(){vfunc_called(this, "_ZN7S1020C23v20Ev");}
S1020C2 ::S1020C2(){ note_ctor("S1020C2", this);} // tgen

static void Test_S1020C2()
{
  extern Class_Descriptor cd_S1020C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,18)];
    init_test(&cd_S1020C2, buf);
    S1020C2 *dp, &lv = *(dp=new (buf) S1020C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,68), "sizeof(S1020C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1020C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1020C3*), ABISELECT(8,4), "S1020C2");
    check_base_class_offset(lv, (S1020C3*), ABISELECT(8,4), "S1020C2");
    check_field_offset(lv, s1020c2f0, ABISELECT(16,8), "S1020C2.s1020c2f0");
    check_field_offset(lv, s1020c2f1, ABISELECT(24,12), "S1020C2.s1020c2f1");
    check_field_offset(lv, s1020c2f2, ABISELECT(32,16), "S1020C2.s1020c2f2");
    check_field_offset(lv, s1020c2f3, ABISELECT(40,20), "S1020C2.s1020c2f3");
    check_field_offset(lv, s1020c2f4, ABISELECT(48,24), "S1020C2.s1020c2f4");
    check_field_offset(lv, s1020c2f5, ABISELECT(56,28), "S1020C2.s1020c2f5");
    check_field_offset(lv, s1020c2f6, ABISELECT(64,32), "S1020C2.s1020c2f6");
    check_field_offset(lv, s1020c2f7, ABISELECT(88,52), "S1020C2.s1020c2f7");
    check_field_offset(lv, s1020c2f8, ABISELECT(112,64), "S1020C2.s1020c2f8");
    test_class_info(&lv, &cd_S1020C2);
    dp->~S1020C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1020C2(Test_S1020C2, "S1020C2", ABISELECT(120,68));

#else // __cplusplus

extern void _ZN7S1020C2C1Ev();
extern void _ZN7S1020C2D1Ev();
Name_Map name_map_S1020C2[] = {
  NSPAIR(_ZN7S1020C2C1Ev),
  NSPAIR(_ZN7S1020C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1020C3;
extern VTBL_ENTRY _ZTI7S1020C3[];
static Base_Class bases_S1020C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S1020C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1020C2[];
extern void _ZN7S1020C2D1Ev();
extern void _ZN7S1020C2D0Ev();
extern void _ZN7S1020C23v11Ev();
extern void _ZN7S1020C23v12Ev();
extern void _ZN7S1020C23v13Ev();
extern void _ZN7S1020C23v14Ev();
extern void _ZN7S1020C23v15Ev();
extern void _ZN7S1020C23v16Ev();
extern void _ZN7S1020C23v17Ev();
extern void _ZN7S1020C23v18Ev();
extern void _ZN7S1020C23v19Ev();
extern void _ZN7S1020C23v20Ev();
static  VTBL_ENTRY vtc_S1020C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1020C2[0]),
  (VTBL_ENTRY)&_ZN7S1020C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1020C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1020C23v11Ev,
  (VTBL_ENTRY)&_ZN7S1020C23v12Ev,
  (VTBL_ENTRY)&_ZN7S1020C23v13Ev,
  (VTBL_ENTRY)&_ZN7S1020C23v14Ev,
  (VTBL_ENTRY)&_ZN7S1020C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1020C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1020C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1020C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1020C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1020C23v20Ev,
};
extern VTBL_ENTRY _ZTI7S1020C2[];
extern  VTBL_ENTRY _ZTV7S1020C2[];
Class_Descriptor cd_S1020C2 = {  "S1020C2", // class name
  bases_S1020C2, 2,
  &(vtc_S1020C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,68), // object size
  NSPAIRA(_ZTI7S1020C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1020C2),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1020C13_nt  {
  void *s1020c13f0;
  void  mf1020c13(); // _ZN11S1020C13_nt9mf1020c13Ev
};
//SIG(-1 S1020C13_nt) C1{ m Fp}


void  S1020C13_nt ::mf1020c13(){}

//skip512 S1020C13_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1020C15  {
  void *s1020c15f0;
  void  mf1020c15(); // _ZN8S1020C159mf1020c15Ev
};
//SIG(-1 S1020C15) C1{ m Fp}


void  S1020C15 ::mf1020c15(){}

static void Test_S1020C15()
{
  {
    init_simple_test("S1020C15");
    S1020C15 lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1020C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1020C15)");
    check_field_offset(lv, s1020c15f0, 0, "S1020C15.s1020c15f0");
  }
}
static Arrange_To_Call_Me vS1020C15(Test_S1020C15, "S1020C15", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1020C1  : S1020C2 {
  ::S1020C13_nt s1020c1f0;
  ::S1020C13_nt s1020c1f1;
  ::S1020C15 s1020c1f2;
  ::S16701C3 s1020c1f3;
  char s1020c1f4;
  virtual void  v1(); // _ZN7S1020C12v1Ev
  virtual void  v2(); // _ZN7S1020C12v2Ev
  virtual void  v3(); // _ZN7S1020C12v3Ev
  virtual void  v4(); // _ZN7S1020C12v4Ev
  virtual void  v5(); // _ZN7S1020C12v5Ev
  virtual void  v6(); // _ZN7S1020C12v6Ev
  virtual void  v7(); // _ZN7S1020C12v7Ev
  virtual void  v8(); // _ZN7S1020C12v8Ev
  virtual void  v9(); // _ZN7S1020C12v9Ev
  virtual void  v10(); // _ZN7S1020C13v10Ev
  ~S1020C1(); // tgen
  S1020C1(); // tgen
};
//SIG(1 S1020C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 FC5{ m FC6{ m Fp}} FC6 Fi FC5 Fc Fp FC7{ m FC8{ m Fp Fi[4]}} FC9{ m Fi FC10{ BC11{ m Fp Fi}}} Fp} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 FC12{ m Fp} FC12 FC13{ m Fp} FC5 Fc}


void  S1020C1 ::v1(){vfunc_called(this, "_ZN7S1020C12v1Ev");}
void  S1020C1 ::v2(){vfunc_called(this, "_ZN7S1020C12v2Ev");}
void  S1020C1 ::v3(){vfunc_called(this, "_ZN7S1020C12v3Ev");}
void  S1020C1 ::v4(){vfunc_called(this, "_ZN7S1020C12v4Ev");}
void  S1020C1 ::v5(){vfunc_called(this, "_ZN7S1020C12v5Ev");}
void  S1020C1 ::v6(){vfunc_called(this, "_ZN7S1020C12v6Ev");}
void  S1020C1 ::v7(){vfunc_called(this, "_ZN7S1020C12v7Ev");}
void  S1020C1 ::v8(){vfunc_called(this, "_ZN7S1020C12v8Ev");}
void  S1020C1 ::v9(){vfunc_called(this, "_ZN7S1020C12v9Ev");}
void  S1020C1 ::v10(){vfunc_called(this, "_ZN7S1020C13v10Ev");}
S1020C1 ::~S1020C1(){ note_dtor("S1020C1", this);} // tgen
S1020C1 ::S1020C1(){ note_ctor("S1020C1", this);} // tgen

static void Test_S1020C1()
{
  extern Class_Descriptor cd_S1020C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,23)];
    init_test(&cd_S1020C1, buf);
    S1020C1 *dp, &lv = *(dp=new (buf) S1020C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,88), "sizeof(S1020C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1020C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1020C3*)(S1020C2*), ABISELECT(8,4), "S1020C1");
    check_base_class_offset(lv, (S1020C3*)(S1020C2*), ABISELECT(8,4), "S1020C1");
    check_base_class_offset(lv, (S1020C2*), 0, "S1020C1");
    check_field_offset(lv, s1020c1f0, ABISELECT(120,68), "S1020C1.s1020c1f0");
    check_field_offset(lv, s1020c1f1, ABISELECT(128,72), "S1020C1.s1020c1f1");
    check_field_offset(lv, s1020c1f2, ABISELECT(136,76), "S1020C1.s1020c1f2");
    check_field_offset(lv, s1020c1f3, ABISELECT(144,80), "S1020C1.s1020c1f3");
    check_field_offset(lv, s1020c1f4, ABISELECT(152,84), "S1020C1.s1020c1f4");
    test_class_info(&lv, &cd_S1020C1);
    dp->~S1020C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1020C1(Test_S1020C1, "S1020C1", ABISELECT(160,88));

#else // __cplusplus

extern void _ZN7S1020C1C1Ev();
extern void _ZN7S1020C1D1Ev();
Name_Map name_map_S1020C1[] = {
  NSPAIR(_ZN7S1020C1C1Ev),
  NSPAIR(_ZN7S1020C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1020C3;
extern VTBL_ENTRY _ZTI7S1020C3[];
extern Class_Descriptor cd_S1020C2;
extern VTBL_ENTRY _ZTI7S1020C2[];
extern  VTBL_ENTRY _ZTV7S1020C2[];
static Base_Class bases_S1020C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S1020C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1020C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1020C1[];
extern void _ZN7S1020C1D1Ev();
extern void _ZN7S1020C1D0Ev();
extern void _ZN7S1020C23v11Ev();
extern void _ZN7S1020C23v12Ev();
extern void _ZN7S1020C23v13Ev();
extern void _ZN7S1020C23v14Ev();
extern void _ZN7S1020C23v15Ev();
extern void _ZN7S1020C23v16Ev();
extern void _ZN7S1020C23v17Ev();
extern void _ZN7S1020C23v18Ev();
extern void _ZN7S1020C23v19Ev();
extern void _ZN7S1020C23v20Ev();
extern void _ZN7S1020C12v1Ev();
extern void _ZN7S1020C12v2Ev();
extern void _ZN7S1020C12v3Ev();
extern void _ZN7S1020C12v4Ev();
extern void _ZN7S1020C12v5Ev();
extern void _ZN7S1020C12v6Ev();
extern void _ZN7S1020C12v7Ev();
extern void _ZN7S1020C12v8Ev();
extern void _ZN7S1020C12v9Ev();
extern void _ZN7S1020C13v10Ev();
static  VTBL_ENTRY vtc_S1020C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1020C1[0]),
  (VTBL_ENTRY)&_ZN7S1020C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1020C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1020C23v11Ev,
  (VTBL_ENTRY)&_ZN7S1020C23v12Ev,
  (VTBL_ENTRY)&_ZN7S1020C23v13Ev,
  (VTBL_ENTRY)&_ZN7S1020C23v14Ev,
  (VTBL_ENTRY)&_ZN7S1020C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1020C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1020C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1020C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1020C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1020C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1020C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1020C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1020C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1020C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1020C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1020C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1020C12v7Ev,
  (VTBL_ENTRY)&_ZN7S1020C12v8Ev,
  (VTBL_ENTRY)&_ZN7S1020C12v9Ev,
  (VTBL_ENTRY)&_ZN7S1020C13v10Ev,
};
extern VTBL_ENTRY _ZTI7S1020C1[];
extern  VTBL_ENTRY _ZTV7S1020C1[];
Class_Descriptor cd_S1020C1 = {  "S1020C1", // class name
  bases_S1020C1, 3,
  &(vtc_S1020C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,88), // object size
  NSPAIRA(_ZTI7S1020C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1020C1),24, //virtual function table var
  2, // 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  S9057C2  {
  virtual  ~S9057C2(); // _ZN7S9057C2D1Ev
  virtual void  v2(); // _ZN7S9057C22v2Ev
  S9057C2(); // tgen
};
//SIG(-1 S9057C2) C1{ vd v1}


 S9057C2 ::~S9057C2(){ note_dtor("S9057C2", this);}
void  S9057C2 ::v2(){vfunc_called(this, "_ZN7S9057C22v2Ev");}
S9057C2 ::S9057C2(){ note_ctor("S9057C2", this);} // tgen

static void Test_S9057C2()
{
  extern Class_Descriptor cd_S9057C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S9057C2, buf);
    S9057C2 *dp, &lv = *(dp=new (buf) S9057C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S9057C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9057C2)");
    test_class_info(&lv, &cd_S9057C2);
    dp->~S9057C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9057C2(Test_S9057C2, "S9057C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S9057C2C1Ev();
extern void _ZN7S9057C2D1Ev();
Name_Map name_map_S9057C2[] = {
  NSPAIR(_ZN7S9057C2C1Ev),
  NSPAIR(_ZN7S9057C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9057C2[];
extern void _ZN7S9057C2D1Ev();
extern void _ZN7S9057C2D0Ev();
extern void _ZN7S9057C22v2Ev();
static  VTBL_ENTRY vtc_S9057C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9057C2[0]),
  (VTBL_ENTRY)&_ZN7S9057C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9057C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9057C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S9057C2[];
extern  VTBL_ENTRY _ZTV7S9057C2[];
Class_Descriptor cd_S9057C2 = {  "S9057C2", // class name
  0,0,//no base classes
  &(vtc_S9057C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9057C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9057C2),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  S9057C4  {
  int s9057c4f0;
  virtual  ~S9057C4(); // _ZN7S9057C4D1Ev
  virtual void  v5(); // _ZN7S9057C42v5Ev
  virtual void  v6(); // _ZN7S9057C42v6Ev
  virtual void  v7(); // _ZN7S9057C42v7Ev
  S9057C4(); // tgen
};
//SIG(-1 S9057C4) C1{ vd v1 v2 v3 Fi}


 S9057C4 ::~S9057C4(){ note_dtor("S9057C4", this);}
void  S9057C4 ::v5(){vfunc_called(this, "_ZN7S9057C42v5Ev");}
void  S9057C4 ::v6(){vfunc_called(this, "_ZN7S9057C42v6Ev");}
void  S9057C4 ::v7(){vfunc_called(this, "_ZN7S9057C42v7Ev");}
S9057C4 ::S9057C4(){ note_ctor("S9057C4", this);} // tgen

static void Test_S9057C4()
{
  extern Class_Descriptor cd_S9057C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S9057C4, buf);
    S9057C4 *dp, &lv = *(dp=new (buf) S9057C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S9057C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9057C4)");
    check_field_offset(lv, s9057c4f0, ABISELECT(8,4), "S9057C4.s9057c4f0");
    test_class_info(&lv, &cd_S9057C4);
    dp->~S9057C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9057C4(Test_S9057C4, "S9057C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S9057C4C1Ev();
extern void _ZN7S9057C4D1Ev();
Name_Map name_map_S9057C4[] = {
  NSPAIR(_ZN7S9057C4C1Ev),
  NSPAIR(_ZN7S9057C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9057C4[];
extern void _ZN7S9057C4D1Ev();
extern void _ZN7S9057C4D0Ev();
extern void _ZN7S9057C42v5Ev();
extern void _ZN7S9057C42v6Ev();
extern void _ZN7S9057C42v7Ev();
static  VTBL_ENTRY vtc_S9057C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9057C4[0]),
  (VTBL_ENTRY)&_ZN7S9057C4D1Ev,
  (VTBL_ENTRY)&_ZN7S9057C4D0Ev,
  (VTBL_ENTRY)&_ZN7S9057C42v5Ev,
  (VTBL_ENTRY)&_ZN7S9057C42v6Ev,
  (VTBL_ENTRY)&_ZN7S9057C42v7Ev,
};
extern VTBL_ENTRY _ZTI7S9057C4[];
extern  VTBL_ENTRY _ZTV7S9057C4[];
Class_Descriptor cd_S9057C4 = {  "S9057C4", // class name
  0,0,//no base classes
  &(vtc_S9057C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S9057C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9057C4),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  S9057C5_nt  : S9057C4 {
  void *s9057c5f0;
  virtual  ~S9057C5_nt(); // _ZN10S9057C5_ntD1Ev
  virtual void  v8(); // _ZN10S9057C5_nt2v8Ev
  virtual void  v9(); // _ZN10S9057C5_nt2v9Ev
  S9057C5_nt(); // tgen
};
//SIG(-1 S9057C5_nt) C1{ BC2{ vd v3 v4 v5 Fi} vd v1 v2 Fp}


 S9057C5_nt ::~S9057C5_nt(){ note_dtor("S9057C5_nt", this);}
void  S9057C5_nt ::v8(){vfunc_called(this, "_ZN10S9057C5_nt2v8Ev");}
void  S9057C5_nt ::v9(){vfunc_called(this, "_ZN10S9057C5_nt2v9Ev");}
S9057C5_nt ::S9057C5_nt(){ note_ctor("S9057C5_nt", this);} // tgen

//skip512 S9057C5_nt

#else // __cplusplus

extern void _ZN10S9057C5_ntC1Ev();
extern void _ZN10S9057C5_ntD1Ev();
Name_Map name_map_S9057C5_nt[] = {
  NSPAIR(_ZN10S9057C5_ntC1Ev),
  NSPAIR(_ZN10S9057C5_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9057C4;
extern VTBL_ENTRY _ZTI7S9057C4[];
extern  VTBL_ENTRY _ZTV7S9057C4[];
static Base_Class bases_S9057C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9057C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S9057C5_nt[];
extern void _ZN10S9057C5_ntD1Ev();
extern void _ZN10S9057C5_ntD0Ev();
extern void _ZN7S9057C42v5Ev();
extern void _ZN7S9057C42v6Ev();
extern void _ZN7S9057C42v7Ev();
extern void _ZN10S9057C5_nt2v8Ev();
extern void _ZN10S9057C5_nt2v9Ev();
static  VTBL_ENTRY vtc_S9057C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S9057C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S9057C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S9057C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S9057C42v5Ev,
  (VTBL_ENTRY)&_ZN7S9057C42v6Ev,
  (VTBL_ENTRY)&_ZN7S9057C42v7Ev,
  (VTBL_ENTRY)&_ZN10S9057C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S9057C5_nt2v9Ev,
};
extern VTBL_ENTRY _ZTI10S9057C5_nt[];
VTBL_ENTRY *P__ZTI10S9057C5_nt = _ZTI10S9057C5_nt; 
extern  VTBL_ENTRY _ZTV10S9057C5_nt[];
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9057C1  : S9057C2 {
  ::S9073C13_nt s9057c1f0;
  ::S9057C5_nt s9057c1f1;
  ::S4145C9 s9057c1f2;
  int s9057c1f3[4];
  char s9057c1f4;
  int s9057c1f5[2];
  ::S4677C19_nt s9057c1f6;
  ::S16701C4_nt s9057c1f7;
  virtual  ~S9057C1(); // _ZN7S9057C1D1Ev
  virtual void  v1(); // _ZN7S9057C12v1Ev
  S9057C1(); // tgen
};
//SIG(1 S9057C1) C1{ BC2{ vd v2} vd v1 FC3{ BC4{ vd v5 v6 v7 Fi} vd v3 v4} FC5{ BC6{ vd v10 v11 v12 Fi} vd v8 v9 Fp} FC7{ vd m Fi FC8{ BC9{ vd v15 v16 v17 v18 v19 v20 Fi[3]} vd v13 v14} FC10{ BC9 vd v21} FC11{ BC12{ vd v23 v24 v25 v26 v27 v28 Fi[3]} vd v22} Fi[2]} Fi[4] Fc Fi[2] FC13{ m Fp Fi FC14{ m}} FC15{ m Fp}}


 S9057C1 ::~S9057C1(){ note_dtor("S9057C1", this);}
void  S9057C1 ::v1(){vfunc_called(this, "_ZN7S9057C12v1Ev");}
S9057C1 ::S9057C1(){ note_ctor("S9057C1", this);} // tgen

static void Test_S9057C1()
{
  extern Class_Descriptor cd_S9057C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,34)];
    init_test(&cd_S9057C1, buf);
    S9057C1 *dp, &lv = *(dp=new (buf) S9057C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,132), "sizeof(S9057C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9057C1)");
    check_base_class_offset(lv, (S9057C2*), 0, "S9057C1");
    check_field_offset(lv, s9057c1f0, ABISELECT(8,4), "S9057C1.s9057c1f0");
    check_field_offset(lv, s9057c1f1, ABISELECT(24,12), "S9057C1.s9057c1f1");
    check_field_offset(lv, s9057c1f2, ABISELECT(48,24), "S9057C1.s9057c1f2");
    check_field_offset(lv, s9057c1f3, ABISELECT(144,88), "S9057C1.s9057c1f3");
    check_field_offset(lv, s9057c1f4, ABISELECT(160,104), "S9057C1.s9057c1f4");
    check_field_offset(lv, s9057c1f5, ABISELECT(164,108), "S9057C1.s9057c1f5");
    check_field_offset(lv, s9057c1f6, ABISELECT(176,116), "S9057C1.s9057c1f6");
    check_field_offset(lv, s9057c1f7, ABISELECT(192,128), "S9057C1.s9057c1f7");
    test_class_info(&lv, &cd_S9057C1);
    dp->~S9057C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9057C1(Test_S9057C1, "S9057C1", ABISELECT(200,132));

#else // __cplusplus

extern void _ZN7S9057C1C1Ev();
extern void _ZN7S9057C1D1Ev();
Name_Map name_map_S9057C1[] = {
  NSPAIR(_ZN7S9057C1C1Ev),
  NSPAIR(_ZN7S9057C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9057C2;
extern VTBL_ENTRY _ZTI7S9057C2[];
extern  VTBL_ENTRY _ZTV7S9057C2[];
static Base_Class bases_S9057C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9057C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9057C1[];
extern void _ZN7S9057C1D1Ev();
extern void _ZN7S9057C1D0Ev();
extern void _ZN7S9057C22v2Ev();
extern void _ZN7S9057C12v1Ev();
static  VTBL_ENTRY vtc_S9057C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9057C1[0]),
  (VTBL_ENTRY)&_ZN7S9057C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9057C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9057C22v2Ev,
  (VTBL_ENTRY)&_ZN7S9057C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S9057C1[];
extern  VTBL_ENTRY _ZTV7S9057C1[];
Class_Descriptor cd_S9057C1 = {  "S9057C1", // class name
  bases_S9057C1, 1,
  &(vtc_S9057C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(200,132), // object size
  NSPAIRA(_ZTI7S9057C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9057C1),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  S1021C3  : S3216C8_nt {
};
//SIG(-1 S1021C3) C1{ BC2{ m Fi}}



static void Test_S1021C3()
{
  extern Class_Descriptor cd_S1021C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S1021C3, buf);
    S1021C3 &lv = *(new (buf) S1021C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S1021C3)");
    check2(__alignof__(lv), 4, "__alignof__(S1021C3)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S1021C3");
    test_class_info(&lv, &cd_S1021C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1021C3(Test_S1021C3, "S1021C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S1021C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1021C3[];
Class_Descriptor cd_S1021C3 = {  "S1021C3", // class name
  bases_S1021C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S1021C3),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  S1021C2  : S1021C3 {
  virtual  ~S1021C2(); // _ZN7S1021C2D1Ev
  virtual void  v14(); // _ZN7S1021C23v14Ev
  virtual void  v15(); // _ZN7S1021C23v15Ev
  virtual void  v16(); // _ZN7S1021C23v16Ev
  virtual void  v17(); // _ZN7S1021C23v17Ev
  virtual void  v18(); // _ZN7S1021C23v18Ev
  virtual void  v19(); // _ZN7S1021C23v19Ev
  virtual void  v20(); // _ZN7S1021C23v20Ev
  virtual void  v21(); // _ZN7S1021C23v21Ev
  virtual void  v22(); // _ZN7S1021C23v22Ev
  virtual void  v23(); // _ZN7S1021C23v23Ev
  virtual void  v24(); // _ZN7S1021C23v24Ev
  virtual void  v25(); // _ZN7S1021C23v25Ev
  virtual void  v26(); // _ZN7S1021C23v26Ev
  virtual void  v27(); // _ZN7S1021C23v27Ev
  S1021C2(); // tgen
};
//SIG(-1 S1021C2) C1{ BC2{ BC3{ m Fi}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14}


 S1021C2 ::~S1021C2(){ note_dtor("S1021C2", this);}
void  S1021C2 ::v14(){vfunc_called(this, "_ZN7S1021C23v14Ev");}
void  S1021C2 ::v15(){vfunc_called(this, "_ZN7S1021C23v15Ev");}
void  S1021C2 ::v16(){vfunc_called(this, "_ZN7S1021C23v16Ev");}
void  S1021C2 ::v17(){vfunc_called(this, "_ZN7S1021C23v17Ev");}
void  S1021C2 ::v18(){vfunc_called(this, "_ZN7S1021C23v18Ev");}
void  S1021C2 ::v19(){vfunc_called(this, "_ZN7S1021C23v19Ev");}
void  S1021C2 ::v20(){vfunc_called(this, "_ZN7S1021C23v20Ev");}
void  S1021C2 ::v21(){vfunc_called(this, "_ZN7S1021C23v21Ev");}
void  S1021C2 ::v22(){vfunc_called(this, "_ZN7S1021C23v22Ev");}
void  S1021C2 ::v23(){vfunc_called(this, "_ZN7S1021C23v23Ev");}
void  S1021C2 ::v24(){vfunc_called(this, "_ZN7S1021C23v24Ev");}
void  S1021C2 ::v25(){vfunc_called(this, "_ZN7S1021C23v25Ev");}
void  S1021C2 ::v26(){vfunc_called(this, "_ZN7S1021C23v26Ev");}
void  S1021C2 ::v27(){vfunc_called(this, "_ZN7S1021C23v27Ev");}
S1021C2 ::S1021C2(){ note_ctor("S1021C2", this);} // tgen

static void Test_S1021C2()
{
  extern Class_Descriptor cd_S1021C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1021C2, buf);
    S1021C2 *dp, &lv = *(dp=new (buf) S1021C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1021C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1021C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1021C3*), ABISELECT(8,4), "S1021C2");
    check_base_class_offset(lv, (S1021C3*), ABISELECT(8,4), "S1021C2");
    test_class_info(&lv, &cd_S1021C2);
    dp->~S1021C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1021C2(Test_S1021C2, "S1021C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1021C2C1Ev();
extern void _ZN7S1021C2D1Ev();
Name_Map name_map_S1021C2[] = {
  NSPAIR(_ZN7S1021C2C1Ev),
  NSPAIR(_ZN7S1021C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1021C3;
extern VTBL_ENTRY _ZTI7S1021C3[];
static Base_Class bases_S1021C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S1021C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1021C2[];
extern void _ZN7S1021C2D1Ev();
extern void _ZN7S1021C2D0Ev();
extern void _ZN7S1021C23v14Ev();
extern void _ZN7S1021C23v15Ev();
extern void _ZN7S1021C23v16Ev();
extern void _ZN7S1021C23v17Ev();
extern void _ZN7S1021C23v18Ev();
extern void _ZN7S1021C23v19Ev();
extern void _ZN7S1021C23v20Ev();
extern void _ZN7S1021C23v21Ev();
extern void _ZN7S1021C23v22Ev();
extern void _ZN7S1021C23v23Ev();
extern void _ZN7S1021C23v24Ev();
extern void _ZN7S1021C23v25Ev();
extern void _ZN7S1021C23v26Ev();
extern void _ZN7S1021C23v27Ev();
static  VTBL_ENTRY vtc_S1021C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1021C2[0]),
  (VTBL_ENTRY)&_ZN7S1021C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1021C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1021C23v14Ev,
  (VTBL_ENTRY)&_ZN7S1021C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1021C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1021C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1021C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1021C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1021C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1021C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1021C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1021C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1021C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1021C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1021C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1021C23v27Ev,
};
extern VTBL_ENTRY _ZTI7S1021C2[];
extern  VTBL_ENTRY _ZTV7S1021C2[];
Class_Descriptor cd_S1021C2 = {  "S1021C2", // class name
  bases_S1021C2, 2,
  &(vtc_S1021C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1021C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1021C2),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1021C13_nt  {
  void *s1021c13f0;
  void  mf1021c13(); // _ZN11S1021C13_nt9mf1021c13Ev
};
//SIG(-1 S1021C13_nt) C1{ m Fp}


void  S1021C13_nt ::mf1021c13(){}

//skip512 S1021C13_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1021C1  : S1021C2 {
  ::S16701C4_nt s1021c1f0;
  char s1021c1f1;
  ::S16701C3 s1021c1f2;
  ::S1020C15 s1021c1f3;
  void *s1021c1f4[2];
  ::S1020C13_nt s1021c1f5;
  ::S133C15_nt s1021c1f6;
  ::S1021C13_nt s1021c1f7;
  virtual  ~S1021C1(); // _ZN7S1021C1D1Ev
  virtual void  v1(); // _ZN7S1021C12v1Ev
  virtual void  v2(); // _ZN7S1021C12v2Ev
  virtual void  v3(); // _ZN7S1021C12v3Ev
  virtual void  v4(); // _ZN7S1021C12v4Ev
  virtual void  v5(); // _ZN7S1021C12v5Ev
  virtual void  v6(); // _ZN7S1021C12v6Ev
  virtual void  v7(); // _ZN7S1021C12v7Ev
  virtual void  v8(); // _ZN7S1021C12v8Ev
  virtual void  v9(); // _ZN7S1021C12v9Ev
  virtual void  v10(); // _ZN7S1021C13v10Ev
  virtual void  v11(); // _ZN7S1021C13v11Ev
  virtual void  v12(); // _ZN7S1021C13v12Ev
  virtual void  v13(); // _ZN7S1021C13v13Ev
  S1021C1(); // tgen
};
//SIG(1 S1021C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 FC5{ m Fp} Fc FC6{ m FC5} FC7{ m Fp} Fp[2] FC8{ m Fp} FC9{ m Fi FC10{ BC11{ m Fp Fi}}} FC12{ m Fp}}


 S1021C1 ::~S1021C1(){ note_dtor("S1021C1", this);}
void  S1021C1 ::v1(){vfunc_called(this, "_ZN7S1021C12v1Ev");}
void  S1021C1 ::v2(){vfunc_called(this, "_ZN7S1021C12v2Ev");}
void  S1021C1 ::v3(){vfunc_called(this, "_ZN7S1021C12v3Ev");}
void  S1021C1 ::v4(){vfunc_called(this, "_ZN7S1021C12v4Ev");}
void  S1021C1 ::v5(){vfunc_called(this, "_ZN7S1021C12v5Ev");}
void  S1021C1 ::v6(){vfunc_called(this, "_ZN7S1021C12v6Ev");}
void  S1021C1 ::v7(){vfunc_called(this, "_ZN7S1021C12v7Ev");}
void  S1021C1 ::v8(){vfunc_called(this, "_ZN7S1021C12v8Ev");}
void  S1021C1 ::v9(){vfunc_called(this, "_ZN7S1021C12v9Ev");}
void  S1021C1 ::v10(){vfunc_called(this, "_ZN7S1021C13v10Ev");}
void  S1021C1 ::v11(){vfunc_called(this, "_ZN7S1021C13v11Ev");}
void  S1021C1 ::v12(){vfunc_called(this, "_ZN7S1021C13v12Ev");}
void  S1021C1 ::v13(){vfunc_called(this, "_ZN7S1021C13v13Ev");}
S1021C1 ::S1021C1(){ note_ctor("S1021C1", this);} // tgen

static void Test_S1021C1()
{
  extern Class_Descriptor cd_S1021C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[14];
    init_test(&cd_S1021C1, buf);
    S1021C1 *dp, &lv = *(dp=new (buf) S1021C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,52), "sizeof(S1021C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1021C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1021C3*)(S1021C2*), ABISELECT(8,4), "S1021C1");
    check_base_class_offset(lv, (S1021C3*)(S1021C2*), ABISELECT(8,4), "S1021C1");
    check_base_class_offset(lv, (S1021C2*), 0, "S1021C1");
    check_field_offset(lv, s1021c1f0, ABISELECT(16,8), "S1021C1.s1021c1f0");
    check_field_offset(lv, s1021c1f1, ABISELECT(24,12), "S1021C1.s1021c1f1");
    check_field_offset(lv, s1021c1f2, ABISELECT(32,16), "S1021C1.s1021c1f2");
    check_field_offset(lv, s1021c1f3, ABISELECT(40,20), "S1021C1.s1021c1f3");
    check_field_offset(lv, s1021c1f4, ABISELECT(48,24), "S1021C1.s1021c1f4");
    check_field_offset(lv, s1021c1f5, ABISELECT(64,32), "S1021C1.s1021c1f5");
    check_field_offset(lv, s1021c1f6, ABISELECT(72,36), "S1021C1.s1021c1f6");
    check_field_offset(lv, s1021c1f7, ABISELECT(96,48), "S1021C1.s1021c1f7");
    test_class_info(&lv, &cd_S1021C1);
    dp->~S1021C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1021C1(Test_S1021C1, "S1021C1", ABISELECT(104,52));

#else // __cplusplus

extern void _ZN7S1021C1C1Ev();
extern void _ZN7S1021C1D1Ev();
Name_Map name_map_S1021C1[] = {
  NSPAIR(_ZN7S1021C1C1Ev),
  NSPAIR(_ZN7S1021C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1021C3;
extern VTBL_ENTRY _ZTI7S1021C3[];
extern Class_Descriptor cd_S1021C2;
extern VTBL_ENTRY _ZTI7S1021C2[];
extern  VTBL_ENTRY _ZTV7S1021C2[];
static Base_Class bases_S1021C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S1021C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1021C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1021C1[];
extern void _ZN7S1021C1D1Ev();
extern void _ZN7S1021C1D0Ev();
extern void _ZN7S1021C23v14Ev();
extern void _ZN7S1021C23v15Ev();
extern void _ZN7S1021C23v16Ev();
extern void _ZN7S1021C23v17Ev();
extern void _ZN7S1021C23v18Ev();
extern void _ZN7S1021C23v19Ev();
extern void _ZN7S1021C23v20Ev();
extern void _ZN7S1021C23v21Ev();
extern void _ZN7S1021C23v22Ev();
extern void _ZN7S1021C23v23Ev();
extern void _ZN7S1021C23v24Ev();
extern void _ZN7S1021C23v25Ev();
extern void _ZN7S1021C23v26Ev();
extern void _ZN7S1021C23v27Ev();
extern void _ZN7S1021C12v1Ev();
extern void _ZN7S1021C12v2Ev();
extern void _ZN7S1021C12v3Ev();
extern void _ZN7S1021C12v4Ev();
extern void _ZN7S1021C12v5Ev();
extern void _ZN7S1021C12v6Ev();
extern void _ZN7S1021C12v7Ev();
extern void _ZN7S1021C12v8Ev();
extern void _ZN7S1021C12v9Ev();
extern void _ZN7S1021C13v10Ev();
extern void _ZN7S1021C13v11Ev();
extern void _ZN7S1021C13v12Ev();
extern void _ZN7S1021C13v13Ev();
static  VTBL_ENTRY vtc_S1021C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1021C1[0]),
  (VTBL_ENTRY)&_ZN7S1021C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1021C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1021C23v14Ev,
  (VTBL_ENTRY)&_ZN7S1021C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1021C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1021C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1021C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1021C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1021C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1021C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1021C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1021C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1021C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1021C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1021C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1021C23v27Ev,
  (VTBL_ENTRY)&_ZN7S1021C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1021C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1021C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1021C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1021C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1021C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1021C12v7Ev,
  (VTBL_ENTRY)&_ZN7S1021C12v8Ev,
  (VTBL_ENTRY)&_ZN7S1021C12v9Ev,
  (VTBL_ENTRY)&_ZN7S1021C13v10Ev,
  (VTBL_ENTRY)&_ZN7S1021C13v11Ev,
  (VTBL_ENTRY)&_ZN7S1021C13v12Ev,
  (VTBL_ENTRY)&_ZN7S1021C13v13Ev,
};
extern VTBL_ENTRY _ZTI7S1021C1[];
extern  VTBL_ENTRY _ZTV7S1021C1[];
Class_Descriptor cd_S1021C1 = {  "S1021C1", // class name
  bases_S1021C1, 3,
  &(vtc_S1021C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,52), // object size
  NSPAIRA(_ZTI7S1021C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1021C1),31, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19825C5  : virtual S7246C4 {
  virtual  ~S19825C5(); // _ZN8S19825C5D2Ev
  S19825C5(); // tgen
};
//SIG(-1 S19825C5) C1{ VBC2{ m Fi[10]} vd}


 S19825C5 ::~S19825C5(){ note_dtor("S19825C5", this);}
S19825C5 ::S19825C5(){ note_ctor("S19825C5", this);} // tgen

static void Test_S19825C5()
{
  extern Class_Descriptor cd_S19825C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S19825C5, buf);
    S19825C5 *dp, &lv = *(dp=new (buf) S19825C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S19825C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19825C5)");
    check_base_class_offset(lv, (S7246C4*), ABISELECT(8,4), "S19825C5");
    test_class_info(&lv, &cd_S19825C5);
    dp->~S19825C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19825C5(Test_S19825C5, "S19825C5", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S19825C5C1Ev();
extern void _ZN8S19825C5D2Ev();
Name_Map name_map_S19825C5[] = {
  NSPAIR(_ZN8S19825C5C1Ev),
  NSPAIR(_ZN8S19825C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
static Base_Class bases_S19825C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19825C5[];
extern void _ZN8S19825C5D1Ev();
extern void _ZN8S19825C5D0Ev();
static  VTBL_ENTRY vtc_S19825C5[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19825C5[0]),
  (VTBL_ENTRY)&_ZN8S19825C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19825C5D0Ev,
};
extern VTBL_ENTRY _ZTV8S19825C5[];
static  VTT_ENTRY vtt_S19825C5[] = {
  {&(_ZTV8S19825C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19825C5[];
extern  VTBL_ENTRY _ZTV8S19825C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19825C5[];
Class_Descriptor cd_S19825C5 = {  "S19825C5", // class name
  bases_S19825C5, 1,
  &(vtc_S19825C5[0]), // expected_vtbl_contents
  &(vtt_S19825C5[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S19825C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19825C5),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19825C5),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  S19825C7  : virtual S7246C4 , virtual S19825C5 {
  virtual  ~S19825C7(); // _ZN8S19825C7D2Ev
  S19825C7(); // tgen
};
//SIG(-1 S19825C7) C1{ VBC2{ m Fi[10]} VBC3{ VBC2 vd} vd}


 S19825C7 ::~S19825C7(){ note_dtor("S19825C7", this);}
S19825C7 ::S19825C7(){ note_ctor("S19825C7", this);} // tgen

static void Test_S19825C7()
{
  extern Class_Descriptor cd_S19825C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S19825C7, buf);
    S19825C7 *dp, &lv = *(dp=new (buf) S19825C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S19825C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19825C7)");
    check_base_class_offset(lv, (S7246C4*), ABISELECT(8,4), "S19825C7");
    check_base_class_offset(lv, (S7246C4*)(S19825C5*), ABISELECT(8,4), "S19825C7");
    check_base_class_offset(lv, (S19825C5*), 0, "S19825C7");
    test_class_info(&lv, &cd_S19825C7);
    dp->~S19825C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19825C7(Test_S19825C7, "S19825C7", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S19825C7C1Ev();
extern void _ZN8S19825C7D2Ev();
Name_Map name_map_S19825C7[] = {
  NSPAIR(_ZN8S19825C7C1Ev),
  NSPAIR(_ZN8S19825C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C5;
extern VTBL_ENTRY _ZTI8S19825C5[];
extern  VTBL_ENTRY _ZTV8S19825C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19825C5[];
static Base_Class bases_S19825C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19825C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19825C7[];
extern void _ZN8S19825C7D1Ev();
extern void _ZN8S19825C7D0Ev();
static  VTBL_ENTRY vtc_S19825C7[] = {
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19825C7[0]),
  (VTBL_ENTRY)&_ZN8S19825C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19825C7D0Ev,
};
extern VTBL_ENTRY _ZTV8S19825C7[];
extern void _ZN8S19825C5D1Ev();
extern void _ZN8S19825C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19825C5__8S19825C7[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19825C5[0]),
  (VTBL_ENTRY)&_ZN8S19825C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19825C5D0Ev,
};
static  VTT_ENTRY vtt_S19825C7[] = {
  {&(_ZTV8S19825C7[5]),  5,7},
  {&(_ZTV8S19825C7[5]),  5,7},
  {&(_tg__ZTV8S19825C5__8S19825C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19825C7[];
extern  VTBL_ENTRY _ZTV8S19825C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19825C7[];
Class_Descriptor cd_S19825C7 = {  "S19825C7", // class name
  bases_S19825C7, 2,
  &(vtc_S19825C7[0]), // expected_vtbl_contents
  &(vtt_S19825C7[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S19825C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19825C7),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19825C7),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  S19825C4  : virtual S19825C5 , S19825C7 {
  long double s19825c4f0;
  ~S19825C4(); // tgen
  S19825C4(); // tgen
};
//SIG(-1 S19825C4) C1{ VBC2{ VBC3{ m Fi[10]} vd} BC4{ VBC3 VBC2 vd} FD}


S19825C4 ::~S19825C4(){ note_dtor("S19825C4", this);} // tgen
S19825C4 ::S19825C4(){ note_ctor("S19825C4", this);} // tgen

static void Test_S19825C4()
{
  extern Class_Descriptor cd_S19825C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,15)];
    init_test(&cd_S19825C4, buf);
    S19825C4 *dp, &lv = *(dp=new (buf) S19825C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,56), "sizeof(S19825C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19825C4)");
    check_base_class_offset(lv, (S7246C4*)(S19825C5*), ABISELECT(32,16), "S19825C4");
    check_base_class_offset(lv, (S7246C4*)(S19825C7*), ABISELECT(32,16), "S19825C4");
    check_base_class_offset(lv, (S19825C5*), 0, "S19825C4");
    check_base_class_offset(lv, (S19825C5*)(S19825C7*), 0, "S19825C4");
    check_base_class_offset(lv, (S19825C7*), 0, "S19825C4");
    check_field_offset(lv, s19825c4f0, ABISELECT(16,4), "S19825C4.s19825c4f0");
    test_class_info(&lv, &cd_S19825C4);
    dp->~S19825C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19825C4(Test_S19825C4, "S19825C4", ABISELECT(80,56));

#else // __cplusplus

extern void _ZN8S19825C4C1Ev();
extern void _ZN8S19825C4D1Ev();
Name_Map name_map_S19825C4[] = {
  NSPAIR(_ZN8S19825C4C1Ev),
  NSPAIR(_ZN8S19825C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C5;
extern VTBL_ENTRY _ZTI8S19825C5[];
extern  VTBL_ENTRY _ZTV8S19825C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19825C5[];
extern Class_Descriptor cd_S19825C7;
extern VTBL_ENTRY _ZTI8S19825C7[];
extern  VTBL_ENTRY _ZTV8S19825C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19825C7[];
static Base_Class bases_S19825C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19825C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19825C7,    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 _ZTI8S19825C4[];
extern void _ZN8S19825C4D1Ev();
extern void _ZN8S19825C4D0Ev();
static  VTBL_ENTRY vtc_S19825C4[] = {
  0,
  0,
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19825C4[0]),
  (VTBL_ENTRY)&_ZN8S19825C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19825C4D0Ev,
};
extern VTBL_ENTRY _ZTV8S19825C4[];
extern void ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev)();
extern void _ZN8S19825C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev)();
extern void _ZN8S19825C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19825C7__8S19825C4[] = {
  0,
  0,
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19825C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev),
};
extern void _ZN8S19825C5D1Ev();
extern void _ZN8S19825C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19825C5__8S19825C4[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19825C5[0]),
  (VTBL_ENTRY)&_ZN8S19825C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19825C5D0Ev,
};
static  VTT_ENTRY vtt_S19825C4[] = {
  {&(_ZTV8S19825C4[5]),  5,7},
  {&(_tg__ZTV8S19825C7__8S19825C4[5]),  5,7},
  {&(_tg__ZTV8S19825C7__8S19825C4[5]),  5,7},
  {&(_ZTV8S19825C4[5]),  5,7},
  {&(_tg__ZTV8S19825C5__8S19825C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19825C4[];
extern  VTBL_ENTRY _ZTV8S19825C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19825C4[];
static VTBL_ENTRY alt_thunk_names100[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19825C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19825C7D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19825C4 = {  "S19825C4", // class name
  bases_S19825C4, 3,
  &(vtc_S19825C4[0]), // expected_vtbl_contents
  &(vtt_S19825C4[0]), // expected_vtt_contents
  ABISELECT(80,56), // object size
  NSPAIRA(_ZTI8S19825C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19825C4),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19825C4),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names100,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19825C8  : S7246C4 {
  int s19825c8f0;
};
//SIG(-1 S19825C8) C1{ BC2{ m Fi[10]} Fi}



static void Test_S19825C8()
{
  extern Class_Descriptor cd_S19825C8;
  void *lvp;
  {
    int buf[12];
    init_test(&cd_S19825C8, buf);
    S19825C8 &lv = *(new (buf) S19825C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), 44, "sizeof(S19825C8)");
    check2(__alignof__(lv), 4, "__alignof__(S19825C8)");
    check_base_class_offset(lv, (S7246C4*), 0, "S19825C8");
    check_field_offset(lv, s19825c8f0, 40, "S19825C8.s19825c8f0");
    test_class_info(&lv, &cd_S19825C8);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19825C8(Test_S19825C8, "S19825C8", 44);

#else // __cplusplus

extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
static Base_Class bases_S19825C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19825C8[];
Class_Descriptor cd_S19825C8 = {  "S19825C8", // class name
  bases_S19825C8, 1,
  0, // no vftv
  0, //no vtt
  44, // object size
  NSPAIRA(_ZTI8S19825C8),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  S19825C3  : S19825C4 , virtual S19825C7 , S19825C8 {
  char s19825c3f0;
  virtual  ~S19825C3(); // _ZN8S19825C3D2Ev
  S19825C3(); // tgen
};
//SIG(-1 S19825C3) C1{ BC2{ VBC3{ VBC4{ m Fi[10]} vd} BC5{ VBC4 VBC3 vd} FD} VBC5 BC6{ BC4 Fi} vd Fc}


 S19825C3 ::~S19825C3(){ note_dtor("S19825C3", this);}
S19825C3 ::S19825C3(){ note_ctor("S19825C3", this);} // tgen

static void Test_S19825C3()
{
  extern Class_Descriptor cd_S19825C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,28)];
    init_test(&cd_S19825C3, buf);
    S19825C3 *dp, &lv = *(dp=new (buf) S19825C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,108), "sizeof(S19825C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19825C3)");
    check_base_class_offset(lv, (S7246C4*)(S19825C5*), ABISELECT(80,64), "S19825C3");
    check_base_class_offset(lv, (S7246C4*)(S19825C7*)(S19825C4*), ABISELECT(80,64), "S19825C3");
    /*is_ambiguous_... S19825C3::S19825C7 */ AMB_check_base_class_offset(lv, (S7246C4*)(S19825C7*), ABISELECT(80,64), "S19825C3");
    check_base_class_offset(lv, (S19825C5*)(S19825C4*), 0, "S19825C3");
    check_base_class_offset(lv, (S19825C5*)(S19825C7*)(S19825C4*), 0, "S19825C3");
    /*is_ambiguous_... S19825C3::S19825C7 */ AMB_check_base_class_offset(lv, (S19825C5*)(S19825C7*), 0, "S19825C3");
    check_base_class_offset(lv, (S19825C7*)(S19825C4*), 0, "S19825C3");
    check_base_class_offset(lv, (S19825C4*), 0, "S19825C3");
    /*is_ambiguous_... S19825C3::S19825C7 */ AMB_check_base_class_offset(lv, (S19825C7*), ABISELECT(120,104), "S19825C3");
    check_base_class_offset(lv, (S7246C4*)(S19825C8*), ABISELECT(32,16), "S19825C3");
    check_base_class_offset(lv, (S19825C8*), ABISELECT(32,16), "S19825C3");
    check_field_offset(lv, s19825c3f0, ABISELECT(76,60), "S19825C3.s19825c3f0");
    test_class_info(&lv, &cd_S19825C3);
    dp->~S19825C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19825C3(Test_S19825C3, "S19825C3", ABISELECT(128,108));

#else // __cplusplus

extern void _ZN8S19825C3C1Ev();
extern void _ZN8S19825C3D2Ev();
Name_Map name_map_S19825C3[] = {
  NSPAIR(_ZN8S19825C3C1Ev),
  NSPAIR(_ZN8S19825C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C5;
extern VTBL_ENTRY _ZTI8S19825C5[];
extern  VTBL_ENTRY _ZTV8S19825C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19825C5[];
extern Class_Descriptor cd_S19825C7;
extern VTBL_ENTRY _ZTI8S19825C7[];
extern  VTBL_ENTRY _ZTV8S19825C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19825C7[];
extern Class_Descriptor cd_S19825C4;
extern VTBL_ENTRY _ZTI8S19825C4[];
extern  VTBL_ENTRY _ZTV8S19825C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19825C4[];
extern Class_Descriptor cd_S19825C7;
extern VTBL_ENTRY _ZTI8S19825C7[];
extern  VTBL_ENTRY _ZTV8S19825C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19825C7[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C8;
extern VTBL_ENTRY _ZTI8S19825C8[];
static Base_Class bases_S19825C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(80,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19825C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19825C7,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19825C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19825C7,    ABISELECT(120,104), //bcp->offset
    8, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    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_S19825C8,    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},
  {0}};
extern VTBL_ENTRY _ZTI8S19825C3[];
extern void _ZN8S19825C3D1Ev();
extern void _ZN8S19825C3D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19825C3D1Ev,_ZTv0_n16_N8S19825C3D1Ev)();
extern void ABISELECT(_ZThn120_N8S19825C3D1Ev,_ZThn104_N8S19825C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19825C3D0Ev,_ZTv0_n16_N8S19825C3D0Ev)();
extern void ABISELECT(_ZThn120_N8S19825C3D0Ev,_ZThn104_N8S19825C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19825C3[] = {
  ABISELECT(120,104),
  0,
  0,
  ABISELECT(80,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19825C3[0]),
  (VTBL_ENTRY)&_ZN8S19825C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19825C3D0Ev,
  ABISELECT(-120,-104),
  ABISELECT(-120,-104),
  -40,
  ABISELECT(-120,-104),
  (VTBL_ENTRY)&(_ZTI8S19825C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C3D1Ev,_ZTv0_n16_N8S19825C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C3D0Ev,_ZTv0_n16_N8S19825C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S19825C3[];
extern void _ZN8S19825C4D1Ev();
extern void _ZN8S19825C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19825C4__8S19825C3[] = {
  0,
  0,
  ABISELECT(80,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19825C4[0]),
  (VTBL_ENTRY)&_ZN8S19825C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19825C4D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev)();
extern void _ZN8S19825C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev)();
extern void _ZN8S19825C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19825C78S19825C4__8S19825C3[] = {
  0,
  0,
  ABISELECT(80,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19825C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev),
};
extern void _ZN8S19825C5D1Ev();
extern void _ZN8S19825C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19825C5__8S19825C3[] = {
  ABISELECT(80,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19825C5[0]),
  (VTBL_ENTRY)&_ZN8S19825C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19825C5D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev)();
extern void _ZN8S19825C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev)();
extern void _ZN8S19825C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19825C7__A1__8S19825C3[] = {
  ABISELECT(-120,-104),
  0,
  -40,
  0,
  (VTBL_ENTRY)&(_ZTI8S19825C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19825C5__8S19825C7__A1__8S19825C3[] = {
  ABISELECT(120,104),
  ABISELECT(80,64),
  ABISELECT(120,104),
  (VTBL_ENTRY)&(_ZTI8S19825C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev),
};
static  VTT_ENTRY vtt_S19825C3[] = {
  {&(_ZTV8S19825C3[6]),  6,15},
  {&(_tg__ZTV8S19825C4__8S19825C3[5]),  5,7},
  {&(_tg__ZTV8S19825C78S19825C4__8S19825C3[5]),  5,7},
  {&(_tg__ZTV8S19825C78S19825C4__8S19825C3[5]),  5,7},
  {&(_tg__ZTV8S19825C4__8S19825C3[5]),  5,7},
  {&(_ZTV8S19825C3[6]),  6,15},
  {&(_ZTV8S19825C3[13]),  13,15},
  {&(_tg__ZTV8S19825C5__8S19825C3[3]),  3,5},
  {&(_tg__ZTV8S19825C7__A1__8S19825C3[5]),  5,7},
  {&(_tg__ZTV8S19825C5__8S19825C7__A1__8S19825C3[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19825C3[];
extern  VTBL_ENTRY _ZTV8S19825C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19825C3[];
static VTBL_ENTRY alt_thunk_names101[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19825C7D0Ev,
  (VTBL_ENTRY)_ZN8S19825C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19825C7D1Ev,
  (VTBL_ENTRY)_ZN8S19825C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19825C3D0Ev,_ZTv0_n16_N8S19825C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19825C3D0Ev,_ZThn104_N8S19825C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19825C3D1Ev,_ZTv0_n16_N8S19825C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19825C3D1Ev,_ZThn104_N8S19825C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19825C3 = {  "S19825C3", // class name
  bases_S19825C3, 7,
  &(vtc_S19825C3[0]), // expected_vtbl_contents
  &(vtt_S19825C3[0]), // expected_vtt_contents
  ABISELECT(128,108), // object size
  NSPAIRA(_ZTI8S19825C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19825C3),15, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19825C3),10, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names101,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19825C11  : S7246C4 {
};
//SIG(-1 S19825C11) C1{ BC2{ m Fi[10]}}



static void Test_S19825C11()
{
  extern Class_Descriptor cd_S19825C11;
  void *lvp;
  {
    int buf[11];
    init_test(&cd_S19825C11, buf);
    S19825C11 &lv = *(new (buf) S19825C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), 40, "sizeof(S19825C11)");
    check2(__alignof__(lv), 4, "__alignof__(S19825C11)");
    check_base_class_offset(lv, (S7246C4*), 0, "S19825C11");
    test_class_info(&lv, &cd_S19825C11);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19825C11(Test_S19825C11, "S19825C11", 40);

#else // __cplusplus

extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
static Base_Class bases_S19825C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19825C11[];
Class_Descriptor cd_S19825C11 = {  "S19825C11", // class name
  bases_S19825C11, 1,
  0, // no vftv
  0, //no vtt
  40, // object size
  NSPAIRA(_ZTI9S19825C11),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  S19825C10  : S7246C4 , S19825C11 , virtual S19825C7 , S19825C8 {
  ~S19825C10(); // tgen
  S19825C10(); // tgen
};
//SIG(-1 S19825C10) C1{ BC2{ m Fi[10]} BC3{ BC2} VBC4{ VBC2 VBC5{ VBC2 vd} vd} BC6{ BC2 Fi}}


S19825C10 ::~S19825C10(){ note_dtor("S19825C10", this);} // tgen
S19825C10 ::S19825C10(){ note_ctor("S19825C10", this);} // tgen

static void Test_S19825C10()
{
  extern Class_Descriptor cd_S19825C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,43)];
    init_test(&cd_S19825C10, buf);
    S19825C10 *dp, &lv = *(dp=new (buf) S19825C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,168), "sizeof(S19825C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19825C10)");
    /*is_ambiguous_... S19825C10::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*), ABISELECT(8,4), "S19825C10");
    check_base_class_offset(lv, (S7246C4*)(S19825C11*), ABISELECT(48,44), "S19825C10");
    check_base_class_offset(lv, (S19825C11*), ABISELECT(48,44), "S19825C10");
    check_base_class_offset(lv, (S7246C4*)(S19825C7*), ABISELECT(132,128), "S19825C10");
    check_base_class_offset(lv, (S7246C4*)(S19825C5*), ABISELECT(132,128), "S19825C10");
    check_base_class_offset(lv, (S19825C5*)(S19825C7*), 0, "S19825C10");
    check_base_class_offset(lv, (S19825C7*), 0, "S19825C10");
    check_base_class_offset(lv, (S7246C4*)(S19825C8*), ABISELECT(88,84), "S19825C10");
    check_base_class_offset(lv, (S19825C8*), ABISELECT(88,84), "S19825C10");
    test_class_info(&lv, &cd_S19825C10);
    dp->~S19825C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19825C10(Test_S19825C10, "S19825C10", ABISELECT(176,168));

#else // __cplusplus

extern void _ZN9S19825C10C1Ev();
extern void _ZN9S19825C10D1Ev();
Name_Map name_map_S19825C10[] = {
  NSPAIR(_ZN9S19825C10C1Ev),
  NSPAIR(_ZN9S19825C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C11;
extern VTBL_ENTRY _ZTI9S19825C11[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C5;
extern VTBL_ENTRY _ZTI8S19825C5[];
extern  VTBL_ENTRY _ZTV8S19825C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19825C5[];
extern Class_Descriptor cd_S19825C7;
extern VTBL_ENTRY _ZTI8S19825C7[];
extern  VTBL_ENTRY _ZTV8S19825C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19825C7[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C8;
extern VTBL_ENTRY _ZTI8S19825C8[];
static Base_Class bases_S19825C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7246C4,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19825C11,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7246C4,    ABISELECT(132,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
    4, //immediately_derived
  0, 1},
  {&cd_S19825C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //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_S19825C7,    0, //bcp->offset
    -1, //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},
  {&cd_S7246C4,    ABISELECT(88,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
    7, //immediately_derived
  0, 0},
  {&cd_S19825C8,    ABISELECT(88,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19825C10[];
extern void _ZN9S19825C10D1Ev();
extern void _ZN9S19825C10D0Ev();
static  VTBL_ENTRY vtc_S19825C10[] = {
  0,
  0,
  0,
  ABISELECT(132,128),
  0,
  (VTBL_ENTRY)&(_ZTI9S19825C10[0]),
  (VTBL_ENTRY)&_ZN9S19825C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19825C10D0Ev,
};
extern VTBL_ENTRY _ZTV9S19825C10[];
extern void ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev)();
extern void _ZN8S19825C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev)();
extern void _ZN8S19825C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19825C7__9S19825C10[] = {
  0,
  0,
  ABISELECT(132,128),
  0,
  (VTBL_ENTRY)&(_ZTI8S19825C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev),
};
extern void _ZN8S19825C5D1Ev();
extern void _ZN8S19825C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19825C5__9S19825C10[] = {
  ABISELECT(132,128),
  0,
  (VTBL_ENTRY)&(_ZTI8S19825C5[0]),
  (VTBL_ENTRY)&_ZN8S19825C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19825C5D0Ev,
};
static  VTT_ENTRY vtt_S19825C10[] = {
  {&(_ZTV9S19825C10[6]),  6,8},
  {&(_ZTV9S19825C10[6]),  6,8},
  {&(_ZTV9S19825C10[6]),  6,8},
  {&(_tg__ZTV8S19825C7__9S19825C10[5]),  5,7},
  {&(_tg__ZTV8S19825C7__9S19825C10[5]),  5,7},
  {&(_tg__ZTV8S19825C5__9S19825C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19825C10[];
extern  VTBL_ENTRY _ZTV9S19825C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19825C10[];
static VTBL_ENTRY alt_thunk_names102[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19825C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19825C7D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19825C10 = {  "S19825C10", // class name
  bases_S19825C10, 8,
  &(vtc_S19825C10[0]), // expected_vtbl_contents
  &(vtt_S19825C10[0]), // expected_vtt_contents
  ABISELECT(176,168), // object size
  NSPAIRA(_ZTI9S19825C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19825C10),8, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19825C10),6, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names102,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19825C14  : S19825C8 {
  ::S19825C8 s19825c14f0;
};
//SIG(-1 S19825C14) C1{ BC2{ BC3{ m Fi[10]} Fi} FC2}



static void Test_S19825C14()
{
  extern Class_Descriptor cd_S19825C14;
  void *lvp;
  {
    int buf[23];
    init_test(&cd_S19825C14, buf);
    S19825C14 &lv = *(new (buf) S19825C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), 88, "sizeof(S19825C14)");
    check2(__alignof__(lv), 4, "__alignof__(S19825C14)");
    check_base_class_offset(lv, (S7246C4*)(S19825C8*), 0, "S19825C14");
    check_base_class_offset(lv, (S19825C8*), 0, "S19825C14");
    check_field_offset(lv, s19825c14f0, 44, "S19825C14.s19825c14f0");
    test_class_info(&lv, &cd_S19825C14);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19825C14(Test_S19825C14, "S19825C14", 88);

#else // __cplusplus

extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C8;
extern VTBL_ENTRY _ZTI8S19825C8[];
static Base_Class bases_S19825C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19825C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19825C14[];
Class_Descriptor cd_S19825C14 = {  "S19825C14", // class name
  bases_S19825C14, 2,
  0, // no vftv
  0, //no vtt
  88, // object size
  NSPAIRA(_ZTI9S19825C14),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19825C13  : virtual S19825C10 , virtual S19825C14 {
  long double s19825c13f0;
  ~S19825C13(); // tgen
  S19825C13(); // tgen
};
//SIG(-1 S19825C13) C1{ VBC2{ BC3{ m Fi[10]} BC4{ BC3} VBC5{ VBC3 VBC6{ VBC3 vd} vd} BC7{ BC3 Fi}} VBC8{ BC7 FC7} FD}


S19825C13 ::~S19825C13(){ note_dtor("S19825C13", this);} // tgen
S19825C13 ::S19825C13(){ note_ctor("S19825C13", this);} // tgen

static void Test_S19825C13()
{
  extern Class_Descriptor cd_S19825C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(20,69)];
    init_test(&cd_S19825C13, buf);
    S19825C13 *dp, &lv = *(dp=new (buf) S19825C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,272), "sizeof(S19825C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19825C13)");
    /*is_ambiguous_... S19825C10::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*)(S19825C10*), ABISELECT(40,20), "S19825C13");
    check_base_class_offset(lv, (S7246C4*)(S19825C11*)(S19825C10*), ABISELECT(80,60), "S19825C13");
    check_base_class_offset(lv, (S19825C11*)(S19825C10*), ABISELECT(80,60), "S19825C13");
    check_base_class_offset(lv, (S7246C4*)(S19825C7*), ABISELECT(164,144), "S19825C13");
    check_base_class_offset(lv, (S7246C4*)(S19825C5*), ABISELECT(164,144), "S19825C13");
    check_base_class_offset(lv, (S19825C5*)(S19825C7*), 0, "S19825C13");
    check_base_class_offset(lv, (S19825C7*)(S19825C10*), 0, "S19825C13");
    check_base_class_offset(lv, (S7246C4*)(S19825C8*)(S19825C10*), ABISELECT(120,100), "S19825C13");
    check_base_class_offset(lv, (S19825C8*)(S19825C10*), ABISELECT(120,100), "S19825C13");
    check_base_class_offset(lv, (S19825C10*), ABISELECT(32,16), "S19825C13");
    check_base_class_offset(lv, (S7246C4*)(S19825C8*)(S19825C14*), ABISELECT(204,184), "S19825C13");
    check_base_class_offset(lv, (S19825C8*)(S19825C14*), ABISELECT(204,184), "S19825C13");
    check_base_class_offset(lv, (S19825C14*), ABISELECT(204,184), "S19825C13");
    check_field_offset(lv, s19825c13f0, ABISELECT(16,4), "S19825C13.s19825c13f0");
    test_class_info(&lv, &cd_S19825C13);
    dp->~S19825C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19825C13(Test_S19825C13, "S19825C13", ABISELECT(304,272));

#else // __cplusplus

extern void _ZN9S19825C13C1Ev();
extern void _ZN9S19825C13D1Ev();
Name_Map name_map_S19825C13[] = {
  NSPAIR(_ZN9S19825C13C1Ev),
  NSPAIR(_ZN9S19825C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C11;
extern VTBL_ENTRY _ZTI9S19825C11[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C5;
extern VTBL_ENTRY _ZTI8S19825C5[];
extern  VTBL_ENTRY _ZTV8S19825C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19825C5[];
extern Class_Descriptor cd_S19825C7;
extern VTBL_ENTRY _ZTI8S19825C7[];
extern  VTBL_ENTRY _ZTV8S19825C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19825C7[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C8;
extern VTBL_ENTRY _ZTI8S19825C8[];
extern Class_Descriptor cd_S19825C10;
extern VTBL_ENTRY _ZTI9S19825C10[];
extern  VTBL_ENTRY _ZTV9S19825C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19825C10[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C8;
extern VTBL_ENTRY _ZTI8S19825C8[];
extern Class_Descriptor cd_S19825C14;
extern VTBL_ENTRY _ZTI9S19825C14[];
static Base_Class bases_S19825C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7246C4,    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
    2, //immediately_derived
  0, 0},
  {&cd_S19825C11,    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
    8, //immediately_derived
  0, 0},
  {&cd_S7246C4,    ABISELECT(164,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
    4, //immediately_derived
  0, 1},
  {&cd_S19825C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19825C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(120,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
    7, //immediately_derived
  0, 0},
  {&cd_S19825C8,    ABISELECT(120,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19825C10,    ABISELECT(32,16), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(204,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19825C8,    ABISELECT(204,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19825C14,    ABISELECT(204,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
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19825C13[];
extern void _ZN9S19825C13D1Ev();
extern void _ZN9S19825C13D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S19825C13D1Ev,_ZTv0_n16_N9S19825C13D1Ev)();
extern void ABISELECT(_ZThn32_N9S19825C13D1Ev,_ZThn16_N9S19825C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19825C13D0Ev,_ZTv0_n16_N9S19825C13D0Ev)();
extern void ABISELECT(_ZThn32_N9S19825C13D0Ev,_ZThn16_N9S19825C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19825C13[] = {
  ABISELECT(204,184),
  0,
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(164,144),
  0,
  (VTBL_ENTRY)&(_ZTI9S19825C13[0]),
  (VTBL_ENTRY)&_ZN9S19825C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19825C13D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(132,128),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19825C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C13D1Ev,_ZTv0_n16_N9S19825C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C13D0Ev,_ZTv0_n16_N9S19825C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S19825C13[];
extern void ABISELECT(_ZTv0_n32_N9S19825C10D1Ev,_ZTv0_n16_N9S19825C10D1Ev)();
extern void _ZN9S19825C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19825C10D0Ev,_ZTv0_n16_N9S19825C10D0Ev)();
extern void _ZN9S19825C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19825C10__9S19825C13[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  ABISELECT(132,128),
  0,
  (VTBL_ENTRY)&(_ZTI9S19825C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C10D1Ev,_ZTv0_n16_N9S19825C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C10D0Ev,_ZTv0_n16_N9S19825C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19825C10D1Ev,_ZTv0_n16_N9S19825C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19825C10D0Ev,_ZTv0_n16_N9S19825C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19825C7__9S19825C10__9S19825C13[] = {
  0,
  ABISELECT(32,16),
  ABISELECT(164,144),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19825C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C10D1Ev,_ZTv0_n16_N9S19825C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C10D0Ev,_ZTv0_n16_N9S19825C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev)();
extern void _ZN8S19825C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev)();
extern void _ZN8S19825C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19825C7__9S19825C13[] = {
  0,
  0,
  ABISELECT(164,144),
  0,
  (VTBL_ENTRY)&(_ZTI8S19825C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev),
};
extern void _ZN8S19825C5D1Ev();
extern void _ZN8S19825C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19825C5__9S19825C13[] = {
  ABISELECT(164,144),
  0,
  (VTBL_ENTRY)&(_ZTI8S19825C5[0]),
  (VTBL_ENTRY)&_ZN8S19825C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19825C5D0Ev,
};
static  VTT_ENTRY vtt_S19825C13[] = {
  {&(_ZTV9S19825C13[8]),  8,18},
  {&(_ZTV9S19825C13[16]),  16,18},
  {&(_ZTV9S19825C13[8]),  8,18},
  {&(_ZTV9S19825C13[8]),  8,18},
  {&(_tg__ZTV9S19825C10__9S19825C13[6]),  6,8},
  {&(_tg__ZTV8S19825C7__9S19825C10__9S19825C13[5]),  5,7},
  {&(_tg__ZTV8S19825C7__9S19825C10__9S19825C13[5]),  5,7},
  {&(_tg__ZTV8S19825C7__9S19825C13[5]),  5,7},
  {&(_tg__ZTV8S19825C7__9S19825C13[5]),  5,7},
  {&(_tg__ZTV8S19825C5__9S19825C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19825C13[];
extern  VTBL_ENTRY _ZTV9S19825C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19825C13[];
static VTBL_ENTRY alt_thunk_names103[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19825C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19825C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19825C10D0Ev,_ZTv0_n16_N9S19825C10D0Ev), // 
  (VTBL_ENTRY)_ZN9S19825C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19825C10D1Ev,_ZTv0_n16_N9S19825C10D1Ev), // 
  (VTBL_ENTRY)_ZN9S19825C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19825C13D0Ev,_ZTv0_n16_N9S19825C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19825C13D0Ev,_ZThn16_N9S19825C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19825C13D1Ev,_ZTv0_n16_N9S19825C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19825C13D1Ev,_ZThn16_N9S19825C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19825C13 = {  "S19825C13", // class name
  bases_S19825C13, 12,
  &(vtc_S19825C13[0]), // expected_vtbl_contents
  &(vtt_S19825C13[0]), // expected_vtt_contents
  ABISELECT(304,272), // object size
  NSPAIRA(_ZTI9S19825C13),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19825C13),18, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19825C13),10, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names103,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19825C15  : virtual S19825C8 , virtual S19825C11 , virtual S19825C14 , S7246C4 {
  void *s19825c15f0;
  virtual  ~S19825C15(); // _ZN9S19825C15D2Ev
  S19825C15(); // tgen
};
//SIG(-1 S19825C15) C1{ VBC2{ BC3{ m Fi[10]} Fi} VBC4{ BC3} VBC5{ BC2 FC2} BC3 vd Fp}


 S19825C15 ::~S19825C15(){ note_dtor("S19825C15", this);}
S19825C15 ::S19825C15(){ note_ctor("S19825C15", this);} // tgen

static void Test_S19825C15()
{
  extern Class_Descriptor cd_S19825C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,56)];
    init_test(&cd_S19825C15, buf);
    S19825C15 *dp, &lv = *(dp=new (buf) S19825C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,220), "sizeof(S19825C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19825C15)");
    /*is_ambiguous_... S19825C15::S19825C8 */ AMB_check_base_class_offset(lv, (S7246C4*)(S19825C8*), ABISELECT(56,48), "S19825C15");
    /*is_ambiguous_... S19825C15::S19825C8 */ AMB_check_base_class_offset(lv, (S19825C8*), ABISELECT(56,48), "S19825C15");
    check_base_class_offset(lv, (S7246C4*)(S19825C11*), ABISELECT(100,92), "S19825C15");
    check_base_class_offset(lv, (S19825C11*), ABISELECT(100,92), "S19825C15");
    check_base_class_offset(lv, (S7246C4*)(S19825C8*)(S19825C14*), ABISELECT(140,132), "S19825C15");
    check_base_class_offset(lv, (S19825C8*)(S19825C14*), ABISELECT(140,132), "S19825C15");
    check_base_class_offset(lv, (S19825C14*), ABISELECT(140,132), "S19825C15");
    /*is_ambiguous_... S19825C15::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*), ABISELECT(8,4), "S19825C15");
    check_field_offset(lv, s19825c15f0, ABISELECT(48,44), "S19825C15.s19825c15f0");
    test_class_info(&lv, &cd_S19825C15);
    dp->~S19825C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19825C15(Test_S19825C15, "S19825C15", ABISELECT(232,220));

#else // __cplusplus

extern void _ZN9S19825C15C1Ev();
extern void _ZN9S19825C15D2Ev();
Name_Map name_map_S19825C15[] = {
  NSPAIR(_ZN9S19825C15C1Ev),
  NSPAIR(_ZN9S19825C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C8;
extern VTBL_ENTRY _ZTI8S19825C8[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C11;
extern VTBL_ENTRY _ZTI9S19825C11[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C8;
extern VTBL_ENTRY _ZTI8S19825C8[];
extern Class_Descriptor cd_S19825C14;
extern VTBL_ENTRY _ZTI9S19825C14[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
static Base_Class bases_S19825C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19825C8,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(100,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
    3, //immediately_derived
  0, 0},
  {&cd_S19825C11,    ABISELECT(100,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(140,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
    5, //immediately_derived
  0, 0},
  {&cd_S19825C8,    ABISELECT(140,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
    6, //immediately_derived
  0, 0},
  {&cd_S19825C14,    ABISELECT(140,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},
  {&cd_S7246C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19825C15[];
extern void _ZN9S19825C15D1Ev();
extern void _ZN9S19825C15D0Ev();
static  VTBL_ENTRY vtc_S19825C15[] = {
  ABISELECT(140,132),
  ABISELECT(100,92),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19825C15[0]),
  (VTBL_ENTRY)&_ZN9S19825C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19825C15D0Ev,
};
extern VTBL_ENTRY _ZTV9S19825C15[];
static  VTT_ENTRY vtt_S19825C15[] = {
  {&(_ZTV9S19825C15[5]),  5,7},
};
extern VTBL_ENTRY _ZTI9S19825C15[];
extern  VTBL_ENTRY _ZTV9S19825C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19825C15[];
Class_Descriptor cd_S19825C15 = {  "S19825C15", // class name
  bases_S19825C15, 8,
  &(vtc_S19825C15[0]), // expected_vtbl_contents
  &(vtt_S19825C15[0]), // expected_vtt_contents
  ABISELECT(232,220), // object size
  NSPAIRA(_ZTI9S19825C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19825C15),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19825C15),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  S19825C16  : virtual S19825C15 , S19825C5 , S4677C27 {
  ~S19825C16(); // tgen
  S19825C16(); // tgen
};
//SIG(-1 S19825C16) C1{ VBC2{ VBC3{ BC4{ m Fi[10]} Fi} VBC5{ BC4} VBC6{ BC3 FC3} BC4 vd Fp} BC7{ VBC4 vd} BC8{ m}}


S19825C16 ::~S19825C16(){ note_dtor("S19825C16", this);} // tgen
S19825C16 ::S19825C16(){ note_ctor("S19825C16", this);} // tgen

static void Test_S19825C16()
{
  extern Class_Descriptor cd_S19825C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,67)];
    init_test(&cd_S19825C16, buf);
    S19825C16 *dp, &lv = *(dp=new (buf) S19825C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,264), "sizeof(S19825C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19825C16)");
    /*is_ambiguous_... S19825C16::S19825C8 */ AMB_check_base_class_offset(lv, (S7246C4*)(S19825C8*), ABISELECT(64,52), "S19825C16");
    /*is_ambiguous_... S19825C15::S19825C8 */ AMB_check_base_class_offset(lv, (S19825C8*)(S19825C15*), ABISELECT(64,52), "S19825C16");
    check_base_class_offset(lv, (S7246C4*)(S19825C11*), ABISELECT(108,96), "S19825C16");
    check_base_class_offset(lv, (S19825C11*)(S19825C15*), ABISELECT(108,96), "S19825C16");
    check_base_class_offset(lv, (S7246C4*)(S19825C8*)(S19825C14*), ABISELECT(148,136), "S19825C16");
    check_base_class_offset(lv, (S19825C8*)(S19825C14*), ABISELECT(148,136), "S19825C16");
    check_base_class_offset(lv, (S19825C14*)(S19825C15*), ABISELECT(148,136), "S19825C16");
    /*is_ambiguous_... S19825C15::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*)(S19825C15*), ABISELECT(16,8), "S19825C16");
    check_base_class_offset(lv, (S19825C15*), ABISELECT(8,4), "S19825C16");
    check_base_class_offset(lv, (S7246C4*)(S19825C5*), ABISELECT(236,224), "S19825C16");
    check_base_class_offset(lv, (S19825C5*), 0, "S19825C16");
    check_base_class_offset(lv, (S4677C27*), 0, "S19825C16");
    test_class_info(&lv, &cd_S19825C16);
    dp->~S19825C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19825C16(Test_S19825C16, "S19825C16", ABISELECT(280,264));

#else // __cplusplus

extern void _ZN9S19825C16C1Ev();
extern void _ZN9S19825C16D1Ev();
Name_Map name_map_S19825C16[] = {
  NSPAIR(_ZN9S19825C16C1Ev),
  NSPAIR(_ZN9S19825C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C8;
extern VTBL_ENTRY _ZTI8S19825C8[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C11;
extern VTBL_ENTRY _ZTI9S19825C11[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C8;
extern VTBL_ENTRY _ZTI8S19825C8[];
extern Class_Descriptor cd_S19825C14;
extern VTBL_ENTRY _ZTI9S19825C14[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C15;
extern VTBL_ENTRY _ZTI9S19825C15[];
extern  VTBL_ENTRY _ZTV9S19825C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19825C15[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C5;
extern VTBL_ENTRY _ZTI8S19825C5[];
extern  VTBL_ENTRY _ZTV8S19825C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19825C5[];
extern Class_Descriptor cd_S4677C27;
extern VTBL_ENTRY _ZTI8S4677C27[];
static Base_Class bases_S19825C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(64,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19825C8,    ABISELECT(64,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(108,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
    3, //immediately_derived
  0, 0},
  {&cd_S19825C11,    ABISELECT(108,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
    8, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(148,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19825C8,    ABISELECT(148,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19825C14,    ABISELECT(148,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7246C4,    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_S19825C15,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //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_S7246C4,    ABISELECT(236,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19825C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4677C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19825C16[];
extern void _ZN9S19825C16D1Ev();
extern void _ZN9S19825C16D0Ev();
extern void ABISELECT(_ZTv0_n48_N9S19825C16D1Ev,_ZTv0_n24_N9S19825C16D1Ev)();
extern void ABISELECT(_ZThn8_N9S19825C16D1Ev,_ZThn4_N9S19825C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19825C16D0Ev,_ZTv0_n24_N9S19825C16D0Ev)();
extern void ABISELECT(_ZThn8_N9S19825C16D0Ev,_ZThn4_N9S19825C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19825C16[] = {
  ABISELECT(148,136),
  ABISELECT(108,96),
  ABISELECT(64,52),
  ABISELECT(8,4),
  ABISELECT(236,224),
  0,
  (VTBL_ENTRY)&(_ZTI9S19825C16[0]),
  (VTBL_ENTRY)&_ZN9S19825C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19825C16D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(140,132),
  ABISELECT(100,92),
  ABISELECT(56,48),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19825C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19825C16D1Ev,_ZTv0_n24_N9S19825C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19825C16D0Ev,_ZTv0_n24_N9S19825C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S19825C16[];
extern void _ZN8S19825C5D1Ev();
extern void _ZN8S19825C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19825C5__9S19825C16[] = {
  ABISELECT(236,224),
  0,
  (VTBL_ENTRY)&(_ZTI8S19825C5[0]),
  (VTBL_ENTRY)&_ZN8S19825C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19825C5D0Ev,
};
extern void _ZN9S19825C15D1Ev();
extern void _ZN9S19825C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19825C15__9S19825C16[] = {
  ABISELECT(140,132),
  ABISELECT(100,92),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19825C15[0]),
  (VTBL_ENTRY)&_ZN9S19825C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19825C15D0Ev,
};
static  VTT_ENTRY vtt_S19825C16[] = {
  {&(_ZTV9S19825C16[7]),  7,17},
  {&(_tg__ZTV8S19825C5__9S19825C16[3]),  3,5},
  {&(_ZTV9S19825C16[15]),  15,17},
  {&(_tg__ZTV9S19825C15__9S19825C16[5]),  5,7},
};
extern VTBL_ENTRY _ZTI9S19825C16[];
extern  VTBL_ENTRY _ZTV9S19825C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19825C16[];
static VTBL_ENTRY alt_thunk_names104[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19825C16D0Ev,_ZTv0_n24_N9S19825C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19825C16D0Ev,_ZThn4_N9S19825C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19825C16D1Ev,_ZTv0_n24_N9S19825C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19825C16D1Ev,_ZThn4_N9S19825C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19825C16 = {  "S19825C16", // class name
  bases_S19825C16, 12,
  &(vtc_S19825C16[0]), // expected_vtbl_contents
  &(vtt_S19825C16[0]), // expected_vtt_contents
  ABISELECT(280,264), // object size
  NSPAIRA(_ZTI9S19825C16),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19825C16),17, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19825C16),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names104,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19825C12  : virtual S19825C10 , virtual S19825C13 , virtual S19825C4 , S19825C15 , S19825C16 {
  int s19825c12f0;
  ~S19825C12(); // tgen
  S19825C12(); // tgen
};
//SIG(-1 S19825C12) C1{ VBC2{ BC3{ m Fi[10]} BC4{ BC3} VBC5{ VBC3 VBC6{ VBC3 vd} vd} BC7{ BC3 Fi}} VBC8{ VBC2 VBC9{ BC7 FC7} FD} VBC10{ VBC6 BC5 FD} BC11{ VBC7 VBC4 VBC9 BC3 vd Fp} BC12{ VBC11 BC6 BC13{ m}} Fi}


S19825C12 ::~S19825C12(){ note_dtor("S19825C12", this);} // tgen
S19825C12 ::S19825C12(){ note_ctor("S19825C12", this);} // tgen

static void Test_S19825C12()
{
  extern Class_Descriptor cd_S19825C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(36,120)];
    init_test(&cd_S19825C12, buf);
    S19825C12 *dp, &lv = *(dp=new (buf) S19825C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(560,476), "sizeof(S19825C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19825C12)");
    /*is_ambiguous_... S19825C10::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*)(S19825C10*), ABISELECT(80,60), "S19825C12");
    check_base_class_offset(lv, (S7246C4*)(S19825C11*)(S19825C10*), ABISELECT(120,100), "S19825C12");
    check_base_class_offset(lv, (S19825C11*)(S19825C10*), ABISELECT(120,100), "S19825C12");
    /*is_ambiguous_... S19825C12::S19825C7 */ AMB_check_base_class_offset(lv, (S7246C4*)(S19825C7*), ABISELECT(204,184), "S19825C12");
    /*is_ambiguous_... S19825C12::S19825C5 */ AMB_check_base_class_offset(lv, (S7246C4*)(S19825C5*), ABISELECT(204,184), "S19825C12");
    check_base_class_offset(lv, (S7246C4*)(S19825C7*)(S19825C4*), ABISELECT(204,184), "S19825C12");
    check_base_class_offset(lv, (S7246C4*)(S19825C5*)(S19825C16*), ABISELECT(204,184), "S19825C12");
    /*is_ambiguous_... S19825C12::S19825C7 */ AMB_check_base_class_offset(lv, (S19825C5*)(S19825C7*), ABISELECT(72,56), "S19825C12");
    check_base_class_offset(lv, (S19825C5*)(S19825C4*), ABISELECT(72,56), "S19825C12");
    check_base_class_offset(lv, (S19825C5*)(S19825C7*)(S19825C4*), ABISELECT(72,56), "S19825C12");
    check_base_class_offset(lv, (S19825C7*)(S19825C10*), ABISELECT(72,56), "S19825C12");
    check_base_class_offset(lv, (S7246C4*)(S19825C8*)(S19825C10*), ABISELECT(160,140), "S19825C12");
    check_base_class_offset(lv, (S19825C8*)(S19825C10*), ABISELECT(160,140), "S19825C12");
    check_base_class_offset(lv, (S19825C10*), ABISELECT(72,56), "S19825C12");
    check_base_class_offset(lv, (S19825C10*)(S19825C13*), ABISELECT(72,56), "S19825C12");
    check_base_class_offset(lv, (S7246C4*)(S19825C8*)(S19825C14*), ABISELECT(288,240), "S19825C12");
    check_base_class_offset(lv, (S19825C8*)(S19825C14*), ABISELECT(288,240), "S19825C12");
    check_base_class_offset(lv, (S19825C14*)(S19825C13*), ABISELECT(288,240), "S19825C12");
    /*is_ambiguous_... S19825C12::S19825C15 */ AMB_check_base_class_offset(lv, (S19825C14*)(S19825C15*), ABISELECT(288,240), "S19825C12");
    /*is_ambiguous_... S19825C12::S19825C15 */ AMB_check_base_class_offset(lv, (S19825C14*)(S19825C15*), ABISELECT(288,240), "S19825C12");
    check_base_class_offset(lv, (S19825C13*), ABISELECT(256,224), "S19825C12");
    check_base_class_offset(lv, (S19825C7*)(S19825C4*), ABISELECT(384,328), "S19825C12");
    check_base_class_offset(lv, (S19825C4*), ABISELECT(384,328), "S19825C12");
    /*is_ambiguous_... S19825C12::S19825C8 */ AMB_check_base_class_offset(lv, (S7246C4*)(S19825C8*), ABISELECT(416,344), "S19825C12");
    /*is_ambiguous_... S19825C12::S19825C15 */ AMB_check_base_class_offset(lv, (S19825C8*)(S19825C15*), ABISELECT(416,344), "S19825C12");
    /*is_ambiguous_... S19825C12::S19825C15 */ AMB_check_base_class_offset(lv, (S19825C8*)(S19825C15*), ABISELECT(416,344), "S19825C12");
    /*is_ambiguous_... S19825C12::S19825C11 */ AMB_check_base_class_offset(lv, (S7246C4*)(S19825C11*), ABISELECT(460,388), "S19825C12");
    /*is_ambiguous_... S19825C12::S19825C15 */ AMB_check_base_class_offset(lv, (S19825C11*)(S19825C15*), ABISELECT(460,388), "S19825C12");
    /*is_ambiguous_... S19825C12::S19825C15 */ AMB_check_base_class_offset(lv, (S19825C11*)(S19825C15*), ABISELECT(460,388), "S19825C12");
    /*is_ambiguous_... S19825C12::S19825C15 */ AMB_check_base_class_offset(lv, (S7246C4*)(S19825C15*), ABISELECT(8,4), "S19825C12");
    /*is_ambiguous_... S19825C12::S19825C15 */ AMB_check_base_class_offset(lv, (S19825C15*), 0, "S19825C12");
    /*is_ambiguous_... S19825C12::S19825C15 */ AMB_check_base_class_offset(lv, (S7246C4*)(S19825C15*), ABISELECT(512,432), "S19825C12");
    check_base_class_offset(lv, (S19825C15*)(S19825C16*), ABISELECT(504,428), "S19825C12");
    check_base_class_offset(lv, (S19825C5*)(S19825C16*), ABISELECT(56,48), "S19825C12");
    check_base_class_offset(lv, (S4677C27*)(S19825C16*), ABISELECT(56,48), "S19825C12");
    check_base_class_offset(lv, (S19825C16*), ABISELECT(56,48), "S19825C12");
    check_field_offset(lv, s19825c12f0, ABISELECT(64,52), "S19825C12.s19825c12f0");
    test_class_info(&lv, &cd_S19825C12);
    dp->~S19825C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19825C12(Test_S19825C12, "S19825C12", ABISELECT(560,476));

#else // __cplusplus

extern void _ZN9S19825C12C1Ev();
extern void _ZN9S19825C12D1Ev();
Name_Map name_map_S19825C12[] = {
  NSPAIR(_ZN9S19825C12C1Ev),
  NSPAIR(_ZN9S19825C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C11;
extern VTBL_ENTRY _ZTI9S19825C11[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C5;
extern VTBL_ENTRY _ZTI8S19825C5[];
extern  VTBL_ENTRY _ZTV8S19825C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19825C5[];
extern Class_Descriptor cd_S19825C7;
extern VTBL_ENTRY _ZTI8S19825C7[];
extern  VTBL_ENTRY _ZTV8S19825C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19825C7[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C8;
extern VTBL_ENTRY _ZTI8S19825C8[];
extern Class_Descriptor cd_S19825C10;
extern VTBL_ENTRY _ZTI9S19825C10[];
extern  VTBL_ENTRY _ZTV9S19825C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19825C10[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C8;
extern VTBL_ENTRY _ZTI8S19825C8[];
extern Class_Descriptor cd_S19825C14;
extern VTBL_ENTRY _ZTI9S19825C14[];
extern Class_Descriptor cd_S19825C13;
extern VTBL_ENTRY _ZTI9S19825C13[];
extern  VTBL_ENTRY _ZTV9S19825C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19825C13[];
extern Class_Descriptor cd_S19825C7;
extern VTBL_ENTRY _ZTI8S19825C7[];
extern  VTBL_ENTRY _ZTV8S19825C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19825C7[];
extern Class_Descriptor cd_S19825C4;
extern VTBL_ENTRY _ZTI8S19825C4[];
extern  VTBL_ENTRY _ZTV8S19825C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19825C4[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C8;
extern VTBL_ENTRY _ZTI8S19825C8[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C11;
extern VTBL_ENTRY _ZTI9S19825C11[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C15;
extern VTBL_ENTRY _ZTI9S19825C15[];
extern  VTBL_ENTRY _ZTV9S19825C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19825C15[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C15;
extern VTBL_ENTRY _ZTI9S19825C15[];
extern  VTBL_ENTRY _ZTV9S19825C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19825C15[];
extern Class_Descriptor cd_S19825C5;
extern VTBL_ENTRY _ZTI8S19825C5[];
extern  VTBL_ENTRY _ZTV8S19825C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19825C5[];
extern Class_Descriptor cd_S4677C27;
extern VTBL_ENTRY _ZTI8S4677C27[];
extern Class_Descriptor cd_S19825C16;
extern VTBL_ENTRY _ZTI9S19825C16[];
extern  VTBL_ENTRY _ZTV9S19825C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19825C16[];
static Base_Class bases_S19825C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    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
    8, //immediately_derived
  0, 0},
  {&cd_S7246C4,    ABISELECT(120,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
    2, //immediately_derived
  0, 0},
  {&cd_S19825C11,    ABISELECT(120,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7246C4,    ABISELECT(204,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
    4, //immediately_derived
  0, 1},
  {&cd_S19825C5,    ABISELECT(72,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19825C7,    ABISELECT(72,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(160,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
    7, //immediately_derived
  0, 0},
  {&cd_S19825C8,    ABISELECT(160,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19825C10,    ABISELECT(72,56), //bcp->offset
    23, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(288,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19825C8,    ABISELECT(288,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19825C14,    ABISELECT(288,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19825C13,    ABISELECT(256,224), //bcp->offset
    31, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19825C7,    ABISELECT(384,328), //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
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19825C4,    ABISELECT(384,328), //bcp->offset
    41, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(416,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19825C8,    ABISELECT(416,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(460,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19825C11,    ABISELECT(460,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19825C15,    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_S7246C4,    ABISELECT(512,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
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19825C15,    ABISELECT(504,428), //bcp->offset
    48, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S19825C5,    ABISELECT(56,48), //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
    9, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S4677C27,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19825C16,    ABISELECT(56,48), //bcp->offset
    14, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19825C12[];
extern void _ZN9S19825C12D1Ev();
extern void _ZN9S19825C12D0Ev();
extern void ABISELECT(_ZThn56_N9S19825C12D1Ev,_ZThn48_N9S19825C12D1Ev)();
extern void ABISELECT(_ZThn56_N9S19825C12D0Ev,_ZThn48_N9S19825C12D0Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19825C12D1Ev,_ZTv0_n16_N9S19825C12D1Ev)();
extern void ABISELECT(_ZThn72_N9S19825C12D1Ev,_ZThn56_N9S19825C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19825C12D0Ev,_ZTv0_n16_N9S19825C12D0Ev)();
extern void ABISELECT(_ZThn72_N9S19825C12D0Ev,_ZThn56_N9S19825C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19825C12D1Ev,_ZTv0_n16_N9S19825C12D1Ev)();
extern void ABISELECT(_ZThn256_N9S19825C12D1Ev,_ZThn224_N9S19825C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19825C12D0Ev,_ZTv0_n16_N9S19825C12D0Ev)();
extern void ABISELECT(_ZThn256_N9S19825C12D0Ev,_ZThn224_N9S19825C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19825C12D1Ev,_ZTv0_n16_N9S19825C12D1Ev)();
extern void ABISELECT(_ZThn384_N9S19825C12D1Ev,_ZThn328_N9S19825C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19825C12D0Ev,_ZTv0_n16_N9S19825C12D0Ev)();
extern void ABISELECT(_ZThn384_N9S19825C12D0Ev,_ZThn328_N9S19825C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19825C12D1Ev,_ZTv0_n24_N9S19825C12D1Ev)();
extern void ABISELECT(_ZThn504_N9S19825C12D1Ev,_ZThn428_N9S19825C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19825C12D0Ev,_ZTv0_n24_N9S19825C12D0Ev)();
extern void ABISELECT(_ZThn504_N9S19825C12D0Ev,_ZThn428_N9S19825C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19825C12[] = {
  ABISELECT(504,428),
  ABISELECT(384,328),
  ABISELECT(256,224),
  ABISELECT(72,56),
  ABISELECT(204,184),
  ABISELECT(72,56),
  ABISELECT(72,56),
  ABISELECT(288,240),
  ABISELECT(460,388),
  ABISELECT(416,344),
  0,
  (VTBL_ENTRY)&(_ZTI9S19825C12[0]),
  (VTBL_ENTRY)&_ZN9S19825C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19825C12D0Ev,
  ABISELECT(232,192),
  ABISELECT(404,340),
  ABISELECT(360,296),
  ABISELECT(448,380),
  ABISELECT(148,136),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI9S19825C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19825C12D1Ev,_ZThn48_N9S19825C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19825C12D0Ev,_ZThn48_N9S19825C12D0Ev),
  0,
  0,
  ABISELECT(-72,-56),
  ABISELECT(132,128),
  ABISELECT(-72,-56),
  (VTBL_ENTRY)&(_ZTI9S19825C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C12D1Ev,_ZTv0_n16_N9S19825C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C12D0Ev,_ZTv0_n16_N9S19825C12D0Ev),
  ABISELECT(32,16),
  ABISELECT(-184,-168),
  ABISELECT(-184,-168),
  ABISELECT(-184,-168),
  ABISELECT(-256,-224),
  ABISELECT(-52,-40),
  ABISELECT(-256,-224),
  (VTBL_ENTRY)&(_ZTI9S19825C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C12D1Ev,_ZTv0_n16_N9S19825C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C12D0Ev,_ZTv0_n16_N9S19825C12D0Ev),
  ABISELECT(-312,-272),
  ABISELECT(-384,-328),
  ABISELECT(-180,-144),
  ABISELECT(-384,-328),
  (VTBL_ENTRY)&(_ZTI9S19825C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C12D1Ev,_ZTv0_n16_N9S19825C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C12D0Ev,_ZTv0_n16_N9S19825C12D0Ev),
  ABISELECT(-504,-428),
  ABISELECT(-216,-188),
  ABISELECT(-44,-40),
  ABISELECT(-88,-84),
  ABISELECT(-504,-428),
  (VTBL_ENTRY)&(_ZTI9S19825C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19825C12D1Ev,_ZTv0_n24_N9S19825C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19825C12D0Ev,_ZTv0_n24_N9S19825C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S19825C12[];
extern void _ZN9S19825C15D1Ev();
extern void _ZN9S19825C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19825C15__A__9S19825C12[] = {
  ABISELECT(288,240),
  ABISELECT(460,388),
  ABISELECT(416,344),
  0,
  (VTBL_ENTRY)&(_ZTI9S19825C15[0]),
  (VTBL_ENTRY)&_ZN9S19825C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19825C15D0Ev,
};
extern void _ZN9S19825C16D1Ev();
extern void _ZN9S19825C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19825C16__9S19825C12[] = {
  ABISELECT(232,192),
  ABISELECT(404,340),
  ABISELECT(360,296),
  ABISELECT(448,380),
  ABISELECT(148,136),
  0,
  (VTBL_ENTRY)&(_ZTI9S19825C16[0]),
  (VTBL_ENTRY)&_ZN9S19825C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19825C16D0Ev,
};
extern void _ZN8S19825C5D1Ev();
extern void _ZN8S19825C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19825C59S19825C16__A1__9S19825C12[] = {
  ABISELECT(148,136),
  0,
  (VTBL_ENTRY)&(_ZTI8S19825C5[0]),
  (VTBL_ENTRY)&_ZN8S19825C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19825C5D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19825C16D1Ev,_ZTv0_n24_N9S19825C16D1Ev)();
extern void ABISELECT(_ZThn448_N9S19825C16D1Ev,_ZThn380_N9S19825C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19825C16D0Ev,_ZTv0_n24_N9S19825C16D0Ev)();
extern void ABISELECT(_ZThn448_N9S19825C16D0Ev,_ZThn380_N9S19825C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19825C15__9S19825C16__9S19825C12[] = {
  ABISELECT(-448,-380),
  ABISELECT(-216,-188),
  ABISELECT(-44,-40),
  ABISELECT(-88,-84),
  ABISELECT(-448,-380),
  (VTBL_ENTRY)&(_ZTI9S19825C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19825C16D1Ev,_ZTv0_n24_N9S19825C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19825C16D0Ev,_ZTv0_n24_N9S19825C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19825C10D1Ev,_ZTv0_n16_N9S19825C10D1Ev)();
extern void _ZN9S19825C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19825C10D0Ev,_ZTv0_n16_N9S19825C10D0Ev)();
extern void _ZN9S19825C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19825C10__9S19825C12[] = {
  0,
  0,
  0,
  ABISELECT(132,128),
  0,
  (VTBL_ENTRY)&(_ZTI9S19825C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C10D1Ev,_ZTv0_n16_N9S19825C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C10D0Ev,_ZTv0_n16_N9S19825C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev)();
extern void _ZN8S19825C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev)();
extern void _ZN8S19825C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19825C7__9S19825C12[] = {
  0,
  0,
  ABISELECT(132,128),
  0,
  (VTBL_ENTRY)&(_ZTI8S19825C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev),
};
extern void _ZN8S19825C5D1Ev();
extern void _ZN8S19825C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19825C5__9S19825C12[] = {
  ABISELECT(132,128),
  0,
  (VTBL_ENTRY)&(_ZTI8S19825C5[0]),
  (VTBL_ENTRY)&_ZN8S19825C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19825C5D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19825C13D1Ev,_ZTv0_n16_N9S19825C13D1Ev)();
extern void _ZN9S19825C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19825C13D0Ev,_ZTv0_n16_N9S19825C13D0Ev)();
extern void _ZN9S19825C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19825C13__9S19825C12[] = {
  ABISELECT(32,16),
  ABISELECT(-184,-168),
  ABISELECT(-184,-168),
  ABISELECT(-184,-168),
  0,
  ABISELECT(-52,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19825C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C13D1Ev,_ZTv0_n16_N9S19825C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C13D0Ev,_ZTv0_n16_N9S19825C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19825C13D1Ev,_ZTv0_n16_N9S19825C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19825C13D0Ev,_ZTv0_n16_N9S19825C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19825C10__9S19825C13__9S19825C12[] = {
  0,
  0,
  ABISELECT(184,168),
  ABISELECT(132,128),
  ABISELECT(184,168),
  (VTBL_ENTRY)&(_ZTI9S19825C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C13D1Ev,_ZTv0_n16_N9S19825C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C13D0Ev,_ZTv0_n16_N9S19825C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19825C4D1Ev,_ZTv0_n16_N8S19825C4D1Ev)();
extern void _ZN8S19825C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19825C4D0Ev,_ZTv0_n16_N8S19825C4D0Ev)();
extern void _ZN8S19825C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19825C4__9S19825C12[] = {
  ABISELECT(-312,-272),
  0,
  ABISELECT(-180,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S19825C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C4D1Ev,_ZTv0_n16_N8S19825C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C4D0Ev,_ZTv0_n16_N8S19825C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev)();
extern void _ZN8S19825C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev)();
extern void _ZN8S19825C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19825C78S19825C4__A1__9S19825C12[] = {
  ABISELECT(-312,-272),
  0,
  ABISELECT(-180,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S19825C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19825C5__8S19825C78S19825C4__A1__9S19825C12[] = {
  ABISELECT(312,272),
  ABISELECT(132,128),
  ABISELECT(312,272),
  (VTBL_ENTRY)&(_ZTI8S19825C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19825C4D1Ev,_ZTv0_n16_N8S19825C4D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19825C4D0Ev,_ZTv0_n16_N8S19825C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19825C5__8S19825C4__9S19825C12[] = {
  ABISELECT(312,272),
  ABISELECT(132,128),
  ABISELECT(312,272),
  (VTBL_ENTRY)&(_ZTI8S19825C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C4D1Ev,_ZTv0_n16_N8S19825C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C4D0Ev,_ZTv0_n16_N8S19825C4D0Ev),
};
extern void _ZN9S19825C15D1Ev();
extern void _ZN9S19825C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19825C15__A1__9S19825C12[] = {
  ABISELECT(-216,-188),
  ABISELECT(-44,-40),
  ABISELECT(-88,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19825C15[0]),
  (VTBL_ENTRY)&_ZN9S19825C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19825C15D0Ev,
};
static  VTT_ENTRY vtt_S19825C12[] = {
  {&(_ZTV9S19825C12[12]),  12,56},
  {&(_tg__ZTV9S19825C15__A__9S19825C12[5]),  5,7},
  {&(_tg__ZTV9S19825C16__9S19825C12[7]),  7,9},
  {&(_tg__ZTV8S19825C59S19825C16__A1__9S19825C12[3]),  3,5},
  {&(_tg__ZTV9S19825C15__9S19825C16__9S19825C12[6]),  6,8},
  {&(_ZTV9S19825C12[29]),  29,56},
  {&(_ZTV9S19825C12[29]),  29,56},
  {&(_ZTV9S19825C12[29]),  29,56},
  {&(_ZTV9S19825C12[39]),  39,56},
  {&(_ZTV9S19825C12[46]),  46,56},
  {&(_ZTV9S19825C12[21]),  21,56},
  {&(_ZTV9S19825C12[54]),  54,56},
  {&(_tg__ZTV9S19825C10__9S19825C12[6]),  6,8},
  {&(_tg__ZTV9S19825C10__9S19825C12[6]),  6,8},
  {&(_tg__ZTV9S19825C10__9S19825C12[6]),  6,8},
  {&(_tg__ZTV8S19825C7__9S19825C12[5]),  5,7},
  {&(_tg__ZTV8S19825C7__9S19825C12[5]),  5,7},
  {&(_tg__ZTV8S19825C5__9S19825C12[3]),  3,5},
  {&(_tg__ZTV9S19825C13__9S19825C12[8]),  8,10},
  {&(_tg__ZTV9S19825C10__9S19825C13__9S19825C12[6]),  6,8},
  {&(_tg__ZTV9S19825C10__9S19825C13__9S19825C12[6]),  6,8},
  {&(_tg__ZTV9S19825C10__9S19825C13__9S19825C12[6]),  6,8},
  {&(_tg__ZTV8S19825C4__9S19825C12[5]),  5,7},
  {&(_tg__ZTV8S19825C78S19825C4__A1__9S19825C12[5]),  5,7},
  {&(_tg__ZTV8S19825C5__8S19825C78S19825C4__A1__9S19825C12[4]),  4,6},
  {&(_tg__ZTV8S19825C5__8S19825C4__9S19825C12[4]),  4,6},
  {&(_tg__ZTV9S19825C15__A1__9S19825C12[5]),  5,7},
};
extern VTBL_ENTRY _ZTI9S19825C12[];
extern  VTBL_ENTRY _ZTV9S19825C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19825C12[];
static VTBL_ENTRY alt_thunk_names105[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19825C4D0Ev,_ZTv0_n16_N8S19825C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S19825C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19825C4D1Ev,_ZTv0_n16_N8S19825C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S19825C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19825C13D0Ev,_ZTv0_n16_N9S19825C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S19825C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19825C13D1Ev,_ZTv0_n16_N9S19825C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S19825C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19825C7D0Ev,
  (VTBL_ENTRY)_ZN8S19825C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19825C7D1Ev,
  (VTBL_ENTRY)_ZN8S19825C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19825C10D0Ev,_ZTv0_n16_N9S19825C10D0Ev), // 
  (VTBL_ENTRY)_ZN9S19825C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19825C10D1Ev,_ZTv0_n16_N9S19825C10D1Ev), // 
  (VTBL_ENTRY)_ZN9S19825C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19825C16D0Ev,_ZTv0_n24_N9S19825C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N9S19825C16D0Ev,_ZThn380_N9S19825C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19825C16D1Ev,_ZTv0_n24_N9S19825C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N9S19825C16D1Ev,_ZThn380_N9S19825C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19825C12D0Ev,_ZTv0_n24_N9S19825C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N9S19825C12D0Ev,_ZThn428_N9S19825C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19825C12D1Ev,_ZTv0_n24_N9S19825C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N9S19825C12D1Ev,_ZThn428_N9S19825C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19825C12D0Ev,_ZTv0_n16_N9S19825C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S19825C12D0Ev,_ZThn328_N9S19825C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S19825C12D0Ev,_ZThn224_N9S19825C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19825C12D0Ev,_ZThn56_N9S19825C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19825C12D1Ev,_ZTv0_n16_N9S19825C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S19825C12D1Ev,_ZThn328_N9S19825C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S19825C12D1Ev,_ZThn224_N9S19825C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19825C12D1Ev,_ZThn56_N9S19825C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19825C12 = {  "S19825C12", // class name
  bases_S19825C12, 26,
  &(vtc_S19825C12[0]), // expected_vtbl_contents
  &(vtt_S19825C12[0]), // expected_vtt_contents
  ABISELECT(560,476), // object size
  NSPAIRA(_ZTI9S19825C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19825C12),56, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19825C12),27, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names105,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19825C1  : virtual S4677C37 , S19825C3 , S4677C27 , virtual S19825C10 , virtual S19825C12 {
  virtual  ~S19825C1(); // _ZN8S19825C1D2Ev
  S19825C1(); // tgen
};
//SIG(1 S19825C1) C1{ VBC2{ m} BC3{ BC4{ VBC5{ VBC6{ m Fi[10]} vd} BC7{ VBC6 VBC5 vd} FD} VBC7 BC8{ BC6 Fi} vd Fc} BC9{ m} VBC10{ BC6 BC11{ BC6} VBC7 BC8} VBC12{ VBC10 VBC13{ VBC10 VBC14{ BC8 FC8} FD} VBC4 BC15{ VBC8 VBC11 VBC14 BC6 vd Fp} BC16{ VBC15 BC5 BC9} Fi} vd}


 S19825C1 ::~S19825C1(){ note_dtor("S19825C1", this);}
S19825C1 ::S19825C1(){ note_ctor("S19825C1", this);} // tgen

static void Test_S19825C1()
{
  extern Class_Descriptor cd_S19825C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,136)];
    init_test(&cd_S19825C1, buf);
    S19825C1 *dp, &lv = *(dp=new (buf) S19825C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,540), "sizeof(S19825C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19825C1)");
    check_base_class_offset(lv, (S4677C37*), 0, "S19825C1");
    /*is_ambiguous_... S19825C1::S19825C5 */ AMB_check_base_class_offset(lv, (S7246C4*)(S19825C5*), ABISELECT(80,64), "S19825C1");
    check_base_class_offset(lv, (S7246C4*)(S19825C7*)(S19825C4*)(S19825C3*), ABISELECT(80,64), "S19825C1");
    /*is_ambiguous_... S19825C1::S19825C7 */ AMB_check_base_class_offset(lv, (S7246C4*)(S19825C7*), ABISELECT(80,64), "S19825C1");
    /*is_ambiguous_... S19825C1::S19825C4 */ AMB_check_base_class_offset(lv, (S7246C4*)(S19825C7*)(S19825C4*), ABISELECT(80,64), "S19825C1");
    check_base_class_offset(lv, (S7246C4*)(S19825C5*)(S19825C16*)(S19825C12*), ABISELECT(80,64), "S19825C1");
    check_base_class_offset(lv, (S19825C5*)(S19825C4*)(S19825C3*), 0, "S19825C1");
    check_base_class_offset(lv, (S19825C5*)(S19825C7*)(S19825C4*)(S19825C3*), 0, "S19825C1");
    /*is_ambiguous_... S19825C1::S19825C7 */ AMB_check_base_class_offset(lv, (S19825C5*)(S19825C7*), 0, "S19825C1");
    /*is_ambiguous_... S19825C1::S19825C4 */ AMB_check_base_class_offset(lv, (S19825C5*)(S19825C4*), 0, "S19825C1");
    /*is_ambiguous_... S19825C1::S19825C4 */ AMB_check_base_class_offset(lv, (S19825C5*)(S19825C7*)(S19825C4*), 0, "S19825C1");
    check_base_class_offset(lv, (S19825C7*)(S19825C4*)(S19825C3*), 0, "S19825C1");
    check_base_class_offset(lv, (S19825C4*)(S19825C3*), 0, "S19825C1");
    /*is_ambiguous_... S19825C3::S19825C7 */ AMB_check_base_class_offset(lv, (S19825C7*)(S19825C3*), ABISELECT(120,104), "S19825C1");
    check_base_class_offset(lv, (S19825C7*)(S19825C10*), ABISELECT(120,104), "S19825C1");
    check_base_class_offset(lv, (S7246C4*)(S19825C8*)(S19825C3*), ABISELECT(32,16), "S19825C1");
    check_base_class_offset(lv, (S19825C8*)(S19825C3*), ABISELECT(32,16), "S19825C1");
    check_base_class_offset(lv, (S19825C3*), 0, "S19825C1");
    /*is_ambiguous_... S19825C1::S4677C27 */ AMB_check_base_class_offset(lv, (S4677C27*), 0, "S19825C1");
    /*is_ambiguous_... S19825C10::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*)(S19825C10*), ABISELECT(128,108), "S19825C1");
    check_base_class_offset(lv, (S7246C4*)(S19825C11*)(S19825C10*), ABISELECT(168,148), "S19825C1");
    check_base_class_offset(lv, (S19825C11*)(S19825C10*), ABISELECT(168,148), "S19825C1");
    check_base_class_offset(lv, (S7246C4*)(S19825C8*)(S19825C10*), ABISELECT(208,188), "S19825C1");
    check_base_class_offset(lv, (S19825C8*)(S19825C10*), ABISELECT(208,188), "S19825C1");
    check_base_class_offset(lv, (S19825C10*), ABISELECT(120,104), "S19825C1");
    check_base_class_offset(lv, (S19825C10*)(S19825C12*), ABISELECT(120,104), "S19825C1");
    check_base_class_offset(lv, (S19825C10*)(S19825C13*), ABISELECT(120,104), "S19825C1");
    check_base_class_offset(lv, (S7246C4*)(S19825C8*)(S19825C14*), ABISELECT(368,304), "S19825C1");
    check_base_class_offset(lv, (S19825C8*)(S19825C14*), ABISELECT(368,304), "S19825C1");
    check_base_class_offset(lv, (S19825C14*)(S19825C13*), ABISELECT(368,304), "S19825C1");
    /*is_ambiguous_... S19825C12::S19825C15 */ AMB_check_base_class_offset(lv, (S19825C14*)(S19825C15*)(S19825C12*), ABISELECT(368,304), "S19825C1");
    /*is_ambiguous_... S19825C1::S19825C15 */ AMB_check_base_class_offset(lv, (S19825C14*)(S19825C15*), ABISELECT(368,304), "S19825C1");
    check_base_class_offset(lv, (S19825C13*)(S19825C12*), ABISELECT(336,288), "S19825C1");
    /*is_ambiguous_... S19825C1::S19825C4 */ AMB_check_base_class_offset(lv, (S19825C7*)(S19825C4*), ABISELECT(464,392), "S19825C1");
    check_base_class_offset(lv, (S19825C4*)(S19825C12*), ABISELECT(464,392), "S19825C1");
    /*is_ambiguous_... S19825C1::S19825C8 */ AMB_check_base_class_offset(lv, (S7246C4*)(S19825C8*), ABISELECT(496,408), "S19825C1");
    /*is_ambiguous_... S19825C12::S19825C15 */ AMB_check_base_class_offset(lv, (S19825C8*)(S19825C15*)(S19825C12*), ABISELECT(496,408), "S19825C1");
    /*is_ambiguous_... S19825C1::S19825C15 */ AMB_check_base_class_offset(lv, (S19825C8*)(S19825C15*), ABISELECT(496,408), "S19825C1");
    /*is_ambiguous_... S19825C1::S19825C11 */ AMB_check_base_class_offset(lv, (S7246C4*)(S19825C11*), ABISELECT(540,452), "S19825C1");
    /*is_ambiguous_... S19825C12::S19825C15 */ AMB_check_base_class_offset(lv, (S19825C11*)(S19825C15*)(S19825C12*), ABISELECT(540,452), "S19825C1");
    /*is_ambiguous_... S19825C1::S19825C15 */ AMB_check_base_class_offset(lv, (S19825C11*)(S19825C15*), ABISELECT(540,452), "S19825C1");
    /*is_ambiguous_... S19825C12::S19825C15 */ AMB_check_base_class_offset(lv, (S7246C4*)(S19825C15*)(S19825C12*), ABISELECT(264,236), "S19825C1");
    /*is_ambiguous_... S19825C12::S19825C15 */ AMB_check_base_class_offset(lv, (S19825C15*)(S19825C12*), ABISELECT(256,232), "S19825C1");
    /*is_ambiguous_... S19825C1::S19825C15 */ AMB_check_base_class_offset(lv, (S7246C4*)(S19825C15*), ABISELECT(592,496), "S19825C1");
    check_base_class_offset(lv, (S19825C15*)(S19825C16*)(S19825C12*), ABISELECT(584,492), "S19825C1");
    check_base_class_offset(lv, (S19825C5*)(S19825C16*)(S19825C12*), ABISELECT(312,280), "S19825C1");
    check_base_class_offset(lv, (S4677C27*)(S19825C16*)(S19825C12*), ABISELECT(312,280), "S19825C1");
    check_base_class_offset(lv, (S19825C16*)(S19825C12*), ABISELECT(312,280), "S19825C1");
    check_base_class_offset(lv, (S19825C12*), ABISELECT(256,232), "S19825C1");
    test_class_info(&lv, &cd_S19825C1);
    dp->~S19825C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19825C1(Test_S19825C1, "S19825C1", ABISELECT(640,540));

#else // __cplusplus

extern void _ZN8S19825C1C1Ev();
extern void _ZN8S19825C1D2Ev();
Name_Map name_map_S19825C1[] = {
  NSPAIR(_ZN8S19825C1C1Ev),
  NSPAIR(_ZN8S19825C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C5;
extern VTBL_ENTRY _ZTI8S19825C5[];
extern  VTBL_ENTRY _ZTV8S19825C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19825C5[];
extern Class_Descriptor cd_S19825C7;
extern VTBL_ENTRY _ZTI8S19825C7[];
extern  VTBL_ENTRY _ZTV8S19825C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19825C7[];
extern Class_Descriptor cd_S19825C4;
extern VTBL_ENTRY _ZTI8S19825C4[];
extern  VTBL_ENTRY _ZTV8S19825C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19825C4[];
extern Class_Descriptor cd_S19825C7;
extern VTBL_ENTRY _ZTI8S19825C7[];
extern  VTBL_ENTRY _ZTV8S19825C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19825C7[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C8;
extern VTBL_ENTRY _ZTI8S19825C8[];
extern Class_Descriptor cd_S19825C3;
extern VTBL_ENTRY _ZTI8S19825C3[];
extern  VTBL_ENTRY _ZTV8S19825C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19825C3[];
extern Class_Descriptor cd_S4677C27;
extern VTBL_ENTRY _ZTI8S4677C27[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C11;
extern VTBL_ENTRY _ZTI9S19825C11[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C8;
extern VTBL_ENTRY _ZTI8S19825C8[];
extern Class_Descriptor cd_S19825C10;
extern VTBL_ENTRY _ZTI9S19825C10[];
extern  VTBL_ENTRY _ZTV9S19825C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19825C10[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C8;
extern VTBL_ENTRY _ZTI8S19825C8[];
extern Class_Descriptor cd_S19825C14;
extern VTBL_ENTRY _ZTI9S19825C14[];
extern Class_Descriptor cd_S19825C13;
extern VTBL_ENTRY _ZTI9S19825C13[];
extern  VTBL_ENTRY _ZTV9S19825C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19825C13[];
extern Class_Descriptor cd_S19825C7;
extern VTBL_ENTRY _ZTI8S19825C7[];
extern  VTBL_ENTRY _ZTV8S19825C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19825C7[];
extern Class_Descriptor cd_S19825C4;
extern VTBL_ENTRY _ZTI8S19825C4[];
extern  VTBL_ENTRY _ZTV8S19825C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19825C4[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C8;
extern VTBL_ENTRY _ZTI8S19825C8[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C11;
extern VTBL_ENTRY _ZTI9S19825C11[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C15;
extern VTBL_ENTRY _ZTI9S19825C15[];
extern  VTBL_ENTRY _ZTV9S19825C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19825C15[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S19825C15;
extern VTBL_ENTRY _ZTI9S19825C15[];
extern  VTBL_ENTRY _ZTV9S19825C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19825C15[];
extern Class_Descriptor cd_S19825C5;
extern VTBL_ENTRY _ZTI8S19825C5[];
extern  VTBL_ENTRY _ZTV8S19825C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19825C5[];
extern Class_Descriptor cd_S4677C27;
extern VTBL_ENTRY _ZTI8S4677C27[];
extern Class_Descriptor cd_S19825C16;
extern VTBL_ENTRY _ZTI9S19825C16[];
extern  VTBL_ENTRY _ZTV9S19825C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19825C16[];
extern Class_Descriptor cd_S19825C12;
extern VTBL_ENTRY _ZTI9S19825C12[];
extern  VTBL_ENTRY _ZTV9S19825C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19825C12[];
static Base_Class bases_S19825C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(80,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19825C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19825C7,    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
    12, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19825C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19825C7,    ABISELECT(120,104), //bcp->offset
    -1, //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
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19825C8,    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_S19825C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4677C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7246C4,    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
    15, //immediately_derived
  0, 0},
  {&cd_S7246C4,    ABISELECT(168,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
    12, //immediately_derived
  0, 0},
  {&cd_S19825C11,    ABISELECT(168,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
    15, //immediately_derived
  0, 0},
  {&cd_S7246C4,    ABISELECT(208,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19825C8,    ABISELECT(208,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
    15, //immediately_derived
  0, 0},
  {&cd_S19825C10,    ABISELECT(120,104), //bcp->offset
    17, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(368,304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19825C8,    ABISELECT(368,304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19825C14,    ABISELECT(368,304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19825C13,    ABISELECT(336,288), //bcp->offset
    49, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S19825C7,    ABISELECT(464,392), //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
    5, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19825C4,    ABISELECT(464,392), //bcp->offset
    59, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(496,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
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19825C8,    ABISELECT(496,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
    -1, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(540,452), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19825C11,    ABISELECT(540,452), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(264,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19825C15,    ABISELECT(256,232), //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
    8, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7246C4,    ABISELECT(592,496), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19825C15,    ABISELECT(584,492), //bcp->offset
    66, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19825C5,    ABISELECT(312,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S4677C27,    ABISELECT(312,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
    32, //immediately_derived
  0, 0},
  {&cd_S19825C16,    ABISELECT(312,280), //bcp->offset
    40, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19825C12,    ABISELECT(256,232), //bcp->offset
    25, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19825C1[];
extern void ABISELECT(_ZTv0_n32_N8S19825C1D1Ev,_ZTv0_n16_N8S19825C1D1Ev)();
extern void _ZN8S19825C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19825C1D0Ev,_ZTv0_n16_N8S19825C1D0Ev)();
extern void _ZN8S19825C1D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19825C1D1Ev,_ZTv0_n16_N8S19825C1D1Ev)();
extern void ABISELECT(_ZThn120_N8S19825C1D1Ev,_ZThn104_N8S19825C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19825C1D0Ev,_ZTv0_n16_N8S19825C1D0Ev)();
extern void ABISELECT(_ZThn120_N8S19825C1D0Ev,_ZThn104_N8S19825C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S19825C1D1Ev,_ZTv0_n52_N8S19825C1D1Ev)();
extern void ABISELECT(_ZThn256_N8S19825C1D1Ev,_ZThn232_N8S19825C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S19825C1D0Ev,_ZTv0_n52_N8S19825C1D0Ev)();
extern void ABISELECT(_ZThn256_N8S19825C1D0Ev,_ZThn232_N8S19825C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn56_n104_N8S19825C1D1Ev,_ZTvn48_n52_N8S19825C1D1Ev)();
extern void ABISELECT(_ZTvn56_n104_N8S19825C1D0Ev,_ZTvn48_n52_N8S19825C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19825C1D1Ev,_ZTv0_n16_N8S19825C1D1Ev)();
extern void ABISELECT(_ZThn336_N8S19825C1D1Ev,_ZThn288_N8S19825C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19825C1D0Ev,_ZTv0_n16_N8S19825C1D0Ev)();
extern void ABISELECT(_ZThn336_N8S19825C1D0Ev,_ZThn288_N8S19825C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19825C1D1Ev,_ZTv0_n16_N8S19825C1D1Ev)();
extern void ABISELECT(_ZThn464_N8S19825C1D1Ev,_ZThn392_N8S19825C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19825C1D0Ev,_ZTv0_n16_N8S19825C1D0Ev)();
extern void ABISELECT(_ZThn464_N8S19825C1D0Ev,_ZThn392_N8S19825C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19825C1D1Ev,_ZTv0_n24_N8S19825C1D1Ev)();
extern void ABISELECT(_ZThn584_N8S19825C1D1Ev,_ZThn492_N8S19825C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19825C1D0Ev,_ZTv0_n24_N8S19825C1D0Ev)();
extern void ABISELECT(_ZThn584_N8S19825C1D0Ev,_ZThn492_N8S19825C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19825C1[] = {
  ABISELECT(584,492),
  ABISELECT(540,452),
  ABISELECT(496,408),
  ABISELECT(464,392),
  ABISELECT(368,304),
  ABISELECT(336,288),
  ABISELECT(256,232),
  ABISELECT(120,104),
  0,
  ABISELECT(120,104),
  0,
  0,
  ABISELECT(80,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19825C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C1D1Ev,_ZTv0_n16_N8S19825C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C1D0Ev,_ZTv0_n16_N8S19825C1D0Ev),
  0,
  ABISELECT(-120,-104),
  ABISELECT(-120,-104),
  -40,
  ABISELECT(-120,-104),
  (VTBL_ENTRY)&(_ZTI8S19825C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C1D1Ev,_ZTv0_n16_N8S19825C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C1D0Ev,_ZTv0_n16_N8S19825C1D0Ev),
  ABISELECT(-256,-232),
  ABISELECT(328,260),
  ABISELECT(208,160),
  ABISELECT(80,56),
  ABISELECT(-256,-232),
  ABISELECT(-176,-168),
  ABISELECT(-136,-128),
  ABISELECT(-136,-128),
  ABISELECT(112,72),
  ABISELECT(284,220),
  ABISELECT(240,176),
  ABISELECT(-256,-232),
  (VTBL_ENTRY)&(_ZTI8S19825C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19825C1D1Ev,_ZTv0_n52_N8S19825C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19825C1D0Ev,_ZTv0_n52_N8S19825C1D0Ev),
  ABISELECT(56,24),
  ABISELECT(228,172),
  ABISELECT(184,128),
  ABISELECT(272,212),
  ABISELECT(-232,-216),
  ABISELECT(-312,-280),
  (VTBL_ENTRY)&(_ZTI8S19825C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n104_N8S19825C1D1Ev,_ZTvn48_n52_N8S19825C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n104_N8S19825C1D0Ev,_ZTvn48_n52_N8S19825C1D0Ev),
  ABISELECT(32,16),
  ABISELECT(-216,-184),
  ABISELECT(-216,-184),
  ABISELECT(-336,-288),
  ABISELECT(-336,-288),
  ABISELECT(-256,-224),
  ABISELECT(-336,-288),
  (VTBL_ENTRY)&(_ZTI8S19825C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C1D1Ev,_ZTv0_n16_N8S19825C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C1D0Ev,_ZTv0_n16_N8S19825C1D0Ev),
  ABISELECT(-464,-392),
  ABISELECT(-464,-392),
  ABISELECT(-384,-328),
  ABISELECT(-464,-392),
  (VTBL_ENTRY)&(_ZTI8S19825C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C1D1Ev,_ZTv0_n16_N8S19825C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C1D0Ev,_ZTv0_n16_N8S19825C1D0Ev),
  ABISELECT(-584,-492),
  ABISELECT(-216,-188),
  ABISELECT(-44,-40),
  ABISELECT(-88,-84),
  ABISELECT(-584,-492),
  (VTBL_ENTRY)&(_ZTI8S19825C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19825C1D1Ev,_ZTv0_n24_N8S19825C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19825C1D0Ev,_ZTv0_n24_N8S19825C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19825C1[];
extern void ABISELECT(_ZTv0_n32_N8S19825C3D1Ev,_ZTv0_n16_N8S19825C3D1Ev)();
extern void _ZN8S19825C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19825C3D0Ev,_ZTv0_n16_N8S19825C3D0Ev)();
extern void _ZN8S19825C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19825C3__8S19825C1[] = {
  ABISELECT(120,104),
  0,
  0,
  ABISELECT(80,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19825C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C3D1Ev,_ZTv0_n16_N8S19825C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C3D0Ev,_ZTv0_n16_N8S19825C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19825C4D1Ev,_ZTv0_n16_N8S19825C4D1Ev)();
extern void _ZN8S19825C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19825C4D0Ev,_ZTv0_n16_N8S19825C4D0Ev)();
extern void _ZN8S19825C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19825C48S19825C3__8S19825C1[] = {
  0,
  0,
  ABISELECT(80,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19825C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C4D1Ev,_ZTv0_n16_N8S19825C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C4D0Ev,_ZTv0_n16_N8S19825C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev)();
extern void _ZN8S19825C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev)();
extern void _ZN8S19825C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19825C78S19825C48S19825C3__8S19825C1[] = {
  0,
  0,
  ABISELECT(80,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19825C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19825C3D1Ev,_ZTv0_n16_N8S19825C3D1Ev)();
extern void ABISELECT(_ZThn120_N8S19825C3D1Ev,_ZThn104_N8S19825C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19825C3D0Ev,_ZTv0_n16_N8S19825C3D0Ev)();
extern void ABISELECT(_ZThn120_N8S19825C3D0Ev,_ZThn104_N8S19825C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19825C7__A1__8S19825C3__8S19825C1[] = {
  ABISELECT(-120,-104),
  ABISELECT(-120,-104),
  -40,
  ABISELECT(-120,-104),
  (VTBL_ENTRY)&(_ZTI8S19825C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C3D1Ev,_ZTv0_n16_N8S19825C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C3D0Ev,_ZTv0_n16_N8S19825C3D0Ev),
};
extern void _ZN8S19825C5D1Ev();
extern void _ZN8S19825C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19825C5__8S19825C1[] = {
  ABISELECT(80,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19825C5[0]),
  (VTBL_ENTRY)&_ZN8S19825C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19825C5D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev)();
extern void _ZN8S19825C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev)();
extern void _ZN8S19825C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19825C7__A1__8S19825C1[] = {
  ABISELECT(-120,-104),
  0,
  -40,
  0,
  (VTBL_ENTRY)&(_ZTI8S19825C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19825C5__8S19825C7__A1__8S19825C1[] = {
  ABISELECT(120,104),
  ABISELECT(80,64),
  ABISELECT(120,104),
  (VTBL_ENTRY)&(_ZTI8S19825C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19825C10D1Ev,_ZTv0_n16_N9S19825C10D1Ev)();
extern void _ZN9S19825C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19825C10D0Ev,_ZTv0_n16_N9S19825C10D0Ev)();
extern void _ZN9S19825C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19825C10__8S19825C1[] = {
  0,
  ABISELECT(-120,-104),
  0,
  -40,
  0,
  (VTBL_ENTRY)&(_ZTI9S19825C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C10D1Ev,_ZTv0_n16_N9S19825C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C10D0Ev,_ZTv0_n16_N9S19825C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19825C10D1Ev,_ZTv0_n16_N9S19825C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19825C10D0Ev,_ZTv0_n16_N9S19825C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19825C5__9S19825C10__8S19825C1[] = {
  ABISELECT(120,104),
  ABISELECT(80,64),
  ABISELECT(120,104),
  (VTBL_ENTRY)&(_ZTI9S19825C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C10D1Ev,_ZTv0_n16_N9S19825C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C10D0Ev,_ZTv0_n16_N9S19825C10D0Ev),
};
extern void _ZN9S19825C12D1Ev();
extern void _ZN9S19825C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19825C12__8S19825C1[] = {
  ABISELECT(328,260),
  ABISELECT(208,160),
  ABISELECT(80,56),
  ABISELECT(-256,-232),
  ABISELECT(-176,-168),
  ABISELECT(-136,-128),
  ABISELECT(-136,-128),
  ABISELECT(112,72),
  ABISELECT(284,220),
  ABISELECT(240,176),
  0,
  (VTBL_ENTRY)&(_ZTI9S19825C12[0]),
  (VTBL_ENTRY)&_ZN9S19825C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19825C12D0Ev,
};
extern void _ZN9S19825C15D1Ev();
extern void _ZN9S19825C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19825C159S19825C12__8S19825C1[] = {
  ABISELECT(112,72),
  ABISELECT(284,220),
  ABISELECT(240,176),
  0,
  (VTBL_ENTRY)&(_ZTI9S19825C15[0]),
  (VTBL_ENTRY)&_ZN9S19825C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19825C15D0Ev,
};
extern void _ZN9S19825C16D1Ev();
extern void _ZN9S19825C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19825C169S19825C12__8S19825C1[] = {
  ABISELECT(56,24),
  ABISELECT(228,172),
  ABISELECT(184,128),
  ABISELECT(272,212),
  ABISELECT(-232,-216),
  0,
  (VTBL_ENTRY)&(_ZTI9S19825C16[0]),
  (VTBL_ENTRY)&_ZN9S19825C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19825C16D0Ev,
};
extern void _ZN8S19825C5D1Ev();
extern void _ZN8S19825C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19825C59S19825C169S19825C12__A1__8S19825C1[] = {
  ABISELECT(-232,-216),
  0,
  (VTBL_ENTRY)&(_ZTI8S19825C5[0]),
  (VTBL_ENTRY)&_ZN8S19825C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19825C5D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19825C16D1Ev,_ZTv0_n24_N9S19825C16D1Ev)();
extern void ABISELECT(_ZThn272_N9S19825C16D1Ev,_ZThn212_N9S19825C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19825C16D0Ev,_ZTv0_n24_N9S19825C16D0Ev)();
extern void ABISELECT(_ZThn272_N9S19825C16D0Ev,_ZThn212_N9S19825C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19825C15__9S19825C169S19825C12__8S19825C1[] = {
  ABISELECT(-272,-212),
  ABISELECT(-216,-188),
  ABISELECT(-44,-40),
  ABISELECT(-88,-84),
  ABISELECT(-272,-212),
  (VTBL_ENTRY)&(_ZTI9S19825C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19825C16D1Ev,_ZTv0_n24_N9S19825C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19825C16D0Ev,_ZTv0_n24_N9S19825C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19825C12D1Ev,_ZTv0_n16_N9S19825C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19825C12D0Ev,_ZTv0_n16_N9S19825C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19825C10__9S19825C12__8S19825C1[] = {
  0,
  ABISELECT(-120,-104),
  ABISELECT(136,128),
  -40,
  ABISELECT(136,128),
  (VTBL_ENTRY)&(_ZTI9S19825C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C12D1Ev,_ZTv0_n16_N9S19825C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C12D0Ev,_ZTv0_n16_N9S19825C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19825C12D1Ev,_ZTv0_n16_N9S19825C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19825C12D0Ev,_ZTv0_n16_N9S19825C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19825C5__9S19825C12__8S19825C1[] = {
  ABISELECT(256,232),
  ABISELECT(80,64),
  ABISELECT(256,232),
  (VTBL_ENTRY)&(_ZTI9S19825C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C12D1Ev,_ZTv0_n16_N9S19825C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C12D0Ev,_ZTv0_n16_N9S19825C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19825C12D1Ev,_ZTv0_n16_N9S19825C12D1Ev)();
extern void ABISELECT(_ZThn80_N9S19825C12D1Ev,_ZThn56_N9S19825C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19825C12D0Ev,_ZTv0_n16_N9S19825C12D0Ev)();
extern void ABISELECT(_ZThn80_N9S19825C12D0Ev,_ZThn56_N9S19825C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19825C13__9S19825C12__8S19825C1[] = {
  ABISELECT(32,16),
  ABISELECT(-216,-184),
  ABISELECT(-216,-184),
  ABISELECT(-336,-288),
  ABISELECT(-80,-56),
  ABISELECT(-256,-224),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S19825C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C12D1Ev,_ZTv0_n16_N9S19825C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C12D0Ev,_ZTv0_n16_N9S19825C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19825C12D1Ev,_ZTv0_n16_N9S19825C12D1Ev)();
extern void ABISELECT(_ZThn208_N9S19825C12D1Ev,_ZThn160_N9S19825C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19825C12D0Ev,_ZTv0_n16_N9S19825C12D0Ev)();
extern void ABISELECT(_ZThn208_N9S19825C12D0Ev,_ZThn160_N9S19825C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19825C4__9S19825C12__8S19825C1[] = {
  ABISELECT(-464,-392),
  ABISELECT(-208,-160),
  ABISELECT(-384,-328),
  ABISELECT(-208,-160),
  (VTBL_ENTRY)&(_ZTI9S19825C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C12D1Ev,_ZTv0_n16_N9S19825C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C12D0Ev,_ZTv0_n16_N9S19825C12D0Ev),
};
extern void ABISELECT(_ZThn56_N9S19825C12D1Ev,_ZThn48_N9S19825C12D1Ev)();
extern void ABISELECT(_ZThn56_N9S19825C12D0Ev,_ZThn48_N9S19825C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19825C16__9S19825C12__8S19825C1[] = {
  ABISELECT(56,24),
  ABISELECT(228,172),
  ABISELECT(184,128),
  ABISELECT(272,212),
  ABISELECT(-232,-216),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI9S19825C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19825C12D1Ev,_ZThn48_N9S19825C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19825C12D0Ev,_ZThn48_N9S19825C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19825C12D1Ev,_ZTv0_n24_N9S19825C12D1Ev)();
extern void ABISELECT(_ZThn328_N9S19825C12D1Ev,_ZThn260_N9S19825C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19825C12D0Ev,_ZTv0_n24_N9S19825C12D0Ev)();
extern void ABISELECT(_ZThn328_N9S19825C12D0Ev,_ZThn260_N9S19825C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19825C15__A1__9S19825C12__8S19825C1[] = {
  ABISELECT(-328,-260),
  ABISELECT(-216,-188),
  ABISELECT(-44,-40),
  ABISELECT(-88,-84),
  ABISELECT(-328,-260),
  (VTBL_ENTRY)&(_ZTI9S19825C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19825C12D1Ev,_ZTv0_n24_N9S19825C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19825C12D0Ev,_ZTv0_n24_N9S19825C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19825C13D1Ev,_ZTv0_n16_N9S19825C13D1Ev)();
extern void _ZN9S19825C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19825C13D0Ev,_ZTv0_n16_N9S19825C13D0Ev)();
extern void _ZN9S19825C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19825C13__8S19825C1[] = {
  ABISELECT(32,16),
  ABISELECT(-216,-184),
  ABISELECT(-216,-184),
  ABISELECT(-336,-288),
  0,
  ABISELECT(-256,-224),
  0,
  (VTBL_ENTRY)&(_ZTI9S19825C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C13D1Ev,_ZTv0_n16_N9S19825C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C13D0Ev,_ZTv0_n16_N9S19825C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19825C13D1Ev,_ZTv0_n16_N9S19825C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19825C13D0Ev,_ZTv0_n16_N9S19825C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19825C10__9S19825C13__8S19825C1[] = {
  0,
  ABISELECT(-120,-104),
  ABISELECT(216,184),
  -40,
  ABISELECT(216,184),
  (VTBL_ENTRY)&(_ZTI9S19825C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C13D1Ev,_ZTv0_n16_N9S19825C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C13D0Ev,_ZTv0_n16_N9S19825C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19825C13D1Ev,_ZTv0_n16_N9S19825C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19825C13D0Ev,_ZTv0_n16_N9S19825C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19825C5__9S19825C13__8S19825C1[] = {
  ABISELECT(336,288),
  ABISELECT(80,64),
  ABISELECT(336,288),
  (VTBL_ENTRY)&(_ZTI9S19825C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C13D1Ev,_ZTv0_n16_N9S19825C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19825C13D0Ev,_ZTv0_n16_N9S19825C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19825C4D1Ev,_ZTv0_n16_N8S19825C4D1Ev)();
extern void _ZN8S19825C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19825C4D0Ev,_ZTv0_n16_N8S19825C4D0Ev)();
extern void _ZN8S19825C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19825C4__A1__8S19825C1[] = {
  ABISELECT(-464,-392),
  0,
  ABISELECT(-384,-328),
  0,
  (VTBL_ENTRY)&(_ZTI8S19825C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C4D1Ev,_ZTv0_n16_N8S19825C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C4D0Ev,_ZTv0_n16_N8S19825C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev)();
extern void _ZN8S19825C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev)();
extern void _ZN8S19825C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19825C78S19825C4__A2__8S19825C1[] = {
  ABISELECT(-464,-392),
  0,
  ABISELECT(-384,-328),
  0,
  (VTBL_ENTRY)&(_ZTI8S19825C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19825C5__8S19825C78S19825C4__A2__8S19825C1[] = {
  ABISELECT(464,392),
  ABISELECT(80,64),
  ABISELECT(464,392),
  (VTBL_ENTRY)&(_ZTI8S19825C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19825C4D1Ev,_ZTv0_n16_N8S19825C4D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19825C4D0Ev,_ZTv0_n16_N8S19825C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19825C5__8S19825C4__A1__8S19825C1[] = {
  ABISELECT(464,392),
  ABISELECT(80,64),
  ABISELECT(464,392),
  (VTBL_ENTRY)&(_ZTI8S19825C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C4D1Ev,_ZTv0_n16_N8S19825C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19825C4D0Ev,_ZTv0_n16_N8S19825C4D0Ev),
};
extern void _ZN9S19825C15D1Ev();
extern void _ZN9S19825C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19825C15__A1__8S19825C1[] = {
  ABISELECT(-216,-188),
  ABISELECT(-44,-40),
  ABISELECT(-88,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19825C15[0]),
  (VTBL_ENTRY)&_ZN9S19825C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19825C15D0Ev,
};
static  VTT_ENTRY vtt_S19825C1[] = {
  {&(_ZTV8S19825C1[15]),  15,74},
  {&(_tg__ZTV8S19825C3__8S19825C1[6]),  6,8},
  {&(_tg__ZTV8S19825C48S19825C3__8S19825C1[5]),  5,7},
  {&(_tg__ZTV8S19825C78S19825C48S19825C3__8S19825C1[5]),  5,7},
  {&(_tg__ZTV8S19825C78S19825C48S19825C3__8S19825C1[5]),  5,7},
  {&(_tg__ZTV8S19825C48S19825C3__8S19825C1[5]),  5,7},
  {&(_tg__ZTV8S19825C3__8S19825C1[6]),  6,8},
  {&(_tg__ZTV8S19825C7__A1__8S19825C3__8S19825C1[5]),  5,7},
  {&(_ZTV8S19825C1[15]),  15,74},
  {&(_ZTV8S19825C1[23]),  23,74},
  {&(_ZTV8S19825C1[23]),  23,74},
  {&(_ZTV8S19825C1[38]),  38,74},
  {&(_ZTV8S19825C1[57]),  57,74},
  {&(_ZTV8S19825C1[64]),  64,74},
  {&(_ZTV8S19825C1[47]),  47,74},
  {&(_ZTV8S19825C1[72]),  72,74},
  {&(_tg__ZTV8S19825C5__8S19825C1[3]),  3,5},
  {&(_tg__ZTV8S19825C7__A1__8S19825C1[5]),  5,7},
  {&(_tg__ZTV8S19825C5__8S19825C7__A1__8S19825C1[4]),  4,6},
  {&(_tg__ZTV9S19825C10__8S19825C1[6]),  6,8},
  {&(_tg__ZTV9S19825C10__8S19825C1[6]),  6,8},
  {&(_tg__ZTV8S19825C5__9S19825C10__8S19825C1[4]),  4,6},
  {&(_tg__ZTV9S19825C12__8S19825C1[12]),  12,14},
  {&(_tg__ZTV9S19825C159S19825C12__8S19825C1[5]),  5,7},
  {&(_tg__ZTV9S19825C169S19825C12__8S19825C1[7]),  7,9},
  {&(_tg__ZTV8S19825C59S19825C169S19825C12__A1__8S19825C1[3]),  3,5},
  {&(_tg__ZTV9S19825C15__9S19825C169S19825C12__8S19825C1[6]),  6,8},
  {&(_tg__ZTV9S19825C10__9S19825C12__8S19825C1[6]),  6,8},
  {&(_tg__ZTV9S19825C10__9S19825C12__8S19825C1[6]),  6,8},
  {&(_tg__ZTV8S19825C5__9S19825C12__8S19825C1[4]),  4,6},
  {&(_tg__ZTV9S19825C13__9S19825C12__8S19825C1[8]),  8,10},
  {&(_tg__ZTV8S19825C4__9S19825C12__8S19825C1[5]),  5,7},
  {&(_tg__ZTV9S19825C16__9S19825C12__8S19825C1[7]),  7,9},
  {&(_tg__ZTV9S19825C15__A1__9S19825C12__8S19825C1[6]),  6,8},
  {&(_tg__ZTV9S19825C13__8S19825C1[8]),  8,10},
  {&(_tg__ZTV9S19825C10__9S19825C13__8S19825C1[6]),  6,8},
  {&(_tg__ZTV9S19825C10__9S19825C13__8S19825C1[6]),  6,8},
  {&(_tg__ZTV8S19825C5__9S19825C13__8S19825C1[4]),  4,6},
  {&(_tg__ZTV8S19825C4__A1__8S19825C1[5]),  5,7},
  {&(_tg__ZTV8S19825C78S19825C4__A2__8S19825C1[5]),  5,7},
  {&(_tg__ZTV8S19825C5__8S19825C78S19825C4__A2__8S19825C1[4]),  4,6},
  {&(_tg__ZTV8S19825C5__8S19825C4__A1__8S19825C1[4]),  4,6},
  {&(_tg__ZTV9S19825C15__A1__8S19825C1[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S19825C1[];
extern  VTBL_ENTRY _ZTV8S19825C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19825C1[];
static VTBL_ENTRY alt_thunk_names106[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19825C13D0Ev,_ZTv0_n16_N9S19825C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S19825C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19825C13D1Ev,_ZTv0_n16_N9S19825C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S19825C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19825C12D0Ev,_ZTv0_n24_N9S19825C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N9S19825C12D0Ev,_ZThn260_N9S19825C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19825C12D1Ev,_ZTv0_n24_N9S19825C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N9S19825C12D1Ev,_ZThn260_N9S19825C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19825C12D0Ev,_ZTv0_n16_N9S19825C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19825C12D0Ev,_ZThn160_N9S19825C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19825C12D0Ev,_ZThn56_N9S19825C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19825C12D1Ev,_ZTv0_n16_N9S19825C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19825C12D1Ev,_ZThn160_N9S19825C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19825C12D1Ev,_ZThn56_N9S19825C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19825C16D0Ev,_ZTv0_n24_N9S19825C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S19825C16D0Ev,_ZThn212_N9S19825C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19825C16D1Ev,_ZTv0_n24_N9S19825C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S19825C16D1Ev,_ZThn212_N9S19825C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19825C10D0Ev,_ZTv0_n16_N9S19825C10D0Ev), // 
  (VTBL_ENTRY)_ZN9S19825C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19825C10D1Ev,_ZTv0_n16_N9S19825C10D1Ev), // 
  (VTBL_ENTRY)_ZN9S19825C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19825C7D0Ev,_ZTv0_n16_N8S19825C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19825C7D0Ev,
  (VTBL_ENTRY)_ZN8S19825C7D0Ev,
  (VTBL_ENTRY)_ZN8S19825C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19825C7D1Ev,_ZTv0_n16_N8S19825C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19825C7D1Ev,
  (VTBL_ENTRY)_ZN8S19825C7D1Ev,
  (VTBL_ENTRY)_ZN8S19825C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19825C4D0Ev,_ZTv0_n16_N8S19825C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S19825C4D0Ev,
  (VTBL_ENTRY)_ZN8S19825C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19825C4D1Ev,_ZTv0_n16_N8S19825C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S19825C4D1Ev,
  (VTBL_ENTRY)_ZN8S19825C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19825C3D0Ev,_ZTv0_n16_N8S19825C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19825C3D0Ev,_ZThn104_N8S19825C3D0Ev),
  (VTBL_ENTRY)_ZN8S19825C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19825C3D1Ev,_ZTv0_n16_N8S19825C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19825C3D1Ev,_ZThn104_N8S19825C3D1Ev),
  (VTBL_ENTRY)_ZN8S19825C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19825C1D0Ev,_ZTv0_n24_N8S19825C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N8S19825C1D0Ev,_ZThn492_N8S19825C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19825C1D1Ev,_ZTv0_n24_N8S19825C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N8S19825C1D1Ev,_ZThn492_N8S19825C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19825C1D0Ev,_ZTv0_n52_N8S19825C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19825C1D0Ev,_ZThn232_N8S19825C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19825C1D1Ev,_ZTv0_n52_N8S19825C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19825C1D1Ev,_ZThn232_N8S19825C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19825C1D0Ev,_ZTv0_n16_N8S19825C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19825C1D0Ev,_ZThn392_N8S19825C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S19825C1D0Ev,_ZThn288_N8S19825C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19825C1D0Ev,_ZThn104_N8S19825C1D0Ev),
  (VTBL_ENTRY)_ZN8S19825C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19825C1D1Ev,_ZTv0_n16_N8S19825C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19825C1D1Ev,_ZThn392_N8S19825C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S19825C1D1Ev,_ZThn288_N8S19825C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19825C1D1Ev,_ZThn104_N8S19825C1D1Ev),
  (VTBL_ENTRY)_ZN8S19825C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19825C1 = {  "S19825C1", // class name
  bases_S19825C1, 34,
  &(vtc_S19825C1[0]), // expected_vtbl_contents
  &(vtt_S19825C1[0]), // expected_vtt_contents
  ABISELECT(640,540), // object size
  NSPAIRA(_ZTI8S19825C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19825C1),74, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19825C1),43, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names106,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20699C6  : virtual S7246C4 {
  virtual  ~S20699C6(); // _ZN8S20699C6D2Ev
  S20699C6(); // tgen
};
//SIG(-1 S20699C6) C1{ VBC2{ m Fi[10]} vd}


 S20699C6 ::~S20699C6(){ note_dtor("S20699C6", this);}
S20699C6 ::S20699C6(){ note_ctor("S20699C6", this);} // tgen

static void Test_S20699C6()
{
  extern Class_Descriptor cd_S20699C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S20699C6, buf);
    S20699C6 *dp, &lv = *(dp=new (buf) S20699C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S20699C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20699C6)");
    check_base_class_offset(lv, (S7246C4*), ABISELECT(8,4), "S20699C6");
    test_class_info(&lv, &cd_S20699C6);
    dp->~S20699C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20699C6(Test_S20699C6, "S20699C6", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S20699C6C1Ev();
extern void _ZN8S20699C6D2Ev();
Name_Map name_map_S20699C6[] = {
  NSPAIR(_ZN8S20699C6C1Ev),
  NSPAIR(_ZN8S20699C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
static Base_Class bases_S20699C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S20699C6[];
extern void _ZN8S20699C6D1Ev();
extern void _ZN8S20699C6D0Ev();
static  VTBL_ENTRY vtc_S20699C6[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C6[0]),
  (VTBL_ENTRY)&_ZN8S20699C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20699C6D0Ev,
};
extern VTBL_ENTRY _ZTV8S20699C6[];
static  VTT_ENTRY vtt_S20699C6[] = {
  {&(_ZTV8S20699C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20699C6[];
extern  VTBL_ENTRY _ZTV8S20699C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C6[];
Class_Descriptor cd_S20699C6 = {  "S20699C6", // class name
  bases_S20699C6, 1,
  &(vtc_S20699C6[0]), // expected_vtbl_contents
  &(vtt_S20699C6[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S20699C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20699C6),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20699C6),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  S20699C8  : virtual S7246C4 , virtual S20699C6 {
  virtual  ~S20699C8(); // _ZN8S20699C8D2Ev
  S20699C8(); // tgen
};
//SIG(-1 S20699C8) C1{ VBC2{ m Fi[10]} VBC3{ VBC2 vd} vd}


 S20699C8 ::~S20699C8(){ note_dtor("S20699C8", this);}
S20699C8 ::S20699C8(){ note_ctor("S20699C8", this);} // tgen

static void Test_S20699C8()
{
  extern Class_Descriptor cd_S20699C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S20699C8, buf);
    S20699C8 *dp, &lv = *(dp=new (buf) S20699C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S20699C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20699C8)");
    check_base_class_offset(lv, (S7246C4*), ABISELECT(8,4), "S20699C8");
    check_base_class_offset(lv, (S7246C4*)(S20699C6*), ABISELECT(8,4), "S20699C8");
    check_base_class_offset(lv, (S20699C6*), 0, "S20699C8");
    test_class_info(&lv, &cd_S20699C8);
    dp->~S20699C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20699C8(Test_S20699C8, "S20699C8", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S20699C8C1Ev();
extern void _ZN8S20699C8D2Ev();
Name_Map name_map_S20699C8[] = {
  NSPAIR(_ZN8S20699C8C1Ev),
  NSPAIR(_ZN8S20699C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20699C6;
extern VTBL_ENTRY _ZTI8S20699C6[];
extern  VTBL_ENTRY _ZTV8S20699C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C6[];
static Base_Class bases_S20699C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20699C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20699C8[];
extern void _ZN8S20699C8D1Ev();
extern void _ZN8S20699C8D0Ev();
static  VTBL_ENTRY vtc_S20699C8[] = {
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C8[0]),
  (VTBL_ENTRY)&_ZN8S20699C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20699C8D0Ev,
};
extern VTBL_ENTRY _ZTV8S20699C8[];
extern void _ZN8S20699C6D1Ev();
extern void _ZN8S20699C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20699C6__8S20699C8[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C6[0]),
  (VTBL_ENTRY)&_ZN8S20699C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20699C6D0Ev,
};
static  VTT_ENTRY vtt_S20699C8[] = {
  {&(_ZTV8S20699C8[5]),  5,7},
  {&(_ZTV8S20699C8[5]),  5,7},
  {&(_tg__ZTV8S20699C6__8S20699C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20699C8[];
extern  VTBL_ENTRY _ZTV8S20699C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C8[];
Class_Descriptor cd_S20699C8 = {  "S20699C8", // class name
  bases_S20699C8, 2,
  &(vtc_S20699C8[0]), // expected_vtbl_contents
  &(vtt_S20699C8[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S20699C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20699C8),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20699C8),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  S20699C5  : virtual S20699C6 , S20699C8 {
  long double s20699c5f0;
  ~S20699C5(); // tgen
  S20699C5(); // tgen
};
//SIG(-1 S20699C5) C1{ VBC2{ VBC3{ m Fi[10]} vd} BC4{ VBC3 VBC2 vd} FD}


S20699C5 ::~S20699C5(){ note_dtor("S20699C5", this);} // tgen
S20699C5 ::S20699C5(){ note_ctor("S20699C5", this);} // tgen

static void Test_S20699C5()
{
  extern Class_Descriptor cd_S20699C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,15)];
    init_test(&cd_S20699C5, buf);
    S20699C5 *dp, &lv = *(dp=new (buf) S20699C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,56), "sizeof(S20699C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20699C5)");
    check_base_class_offset(lv, (S7246C4*)(S20699C6*), ABISELECT(32,16), "S20699C5");
    check_base_class_offset(lv, (S7246C4*)(S20699C8*), ABISELECT(32,16), "S20699C5");
    check_base_class_offset(lv, (S20699C6*), 0, "S20699C5");
    check_base_class_offset(lv, (S20699C6*)(S20699C8*), 0, "S20699C5");
    check_base_class_offset(lv, (S20699C8*), 0, "S20699C5");
    check_field_offset(lv, s20699c5f0, ABISELECT(16,4), "S20699C5.s20699c5f0");
    test_class_info(&lv, &cd_S20699C5);
    dp->~S20699C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20699C5(Test_S20699C5, "S20699C5", ABISELECT(80,56));

#else // __cplusplus

extern void _ZN8S20699C5C1Ev();
extern void _ZN8S20699C5D1Ev();
Name_Map name_map_S20699C5[] = {
  NSPAIR(_ZN8S20699C5C1Ev),
  NSPAIR(_ZN8S20699C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20699C6;
extern VTBL_ENTRY _ZTI8S20699C6[];
extern  VTBL_ENTRY _ZTV8S20699C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C6[];
extern Class_Descriptor cd_S20699C8;
extern VTBL_ENTRY _ZTI8S20699C8[];
extern  VTBL_ENTRY _ZTV8S20699C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C8[];
static Base_Class bases_S20699C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20699C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20699C8,    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 _ZTI8S20699C5[];
extern void _ZN8S20699C5D1Ev();
extern void _ZN8S20699C5D0Ev();
static  VTBL_ENTRY vtc_S20699C5[] = {
  0,
  0,
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C5[0]),
  (VTBL_ENTRY)&_ZN8S20699C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20699C5D0Ev,
};
extern VTBL_ENTRY _ZTV8S20699C5[];
extern void ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev)();
extern void _ZN8S20699C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev)();
extern void _ZN8S20699C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20699C8__8S20699C5[] = {
  0,
  0,
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev),
};
extern void _ZN8S20699C6D1Ev();
extern void _ZN8S20699C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20699C6__8S20699C5[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C6[0]),
  (VTBL_ENTRY)&_ZN8S20699C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20699C6D0Ev,
};
static  VTT_ENTRY vtt_S20699C5[] = {
  {&(_ZTV8S20699C5[5]),  5,7},
  {&(_tg__ZTV8S20699C8__8S20699C5[5]),  5,7},
  {&(_tg__ZTV8S20699C8__8S20699C5[5]),  5,7},
  {&(_ZTV8S20699C5[5]),  5,7},
  {&(_tg__ZTV8S20699C6__8S20699C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20699C5[];
extern  VTBL_ENTRY _ZTV8S20699C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C5[];
static VTBL_ENTRY alt_thunk_names107[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20699C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20699C8D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20699C5 = {  "S20699C5", // class name
  bases_S20699C5, 3,
  &(vtc_S20699C5[0]), // expected_vtbl_contents
  &(vtt_S20699C5[0]), // expected_vtt_contents
  ABISELECT(80,56), // object size
  NSPAIRA(_ZTI8S20699C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20699C5),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20699C5),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names107,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20699C9  : S7246C4 {
  int s20699c9f0;
};
//SIG(-1 S20699C9) C1{ BC2{ m Fi[10]} Fi}



static void Test_S20699C9()
{
  extern Class_Descriptor cd_S20699C9;
  void *lvp;
  {
    int buf[12];
    init_test(&cd_S20699C9, buf);
    S20699C9 &lv = *(new (buf) S20699C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), 44, "sizeof(S20699C9)");
    check2(__alignof__(lv), 4, "__alignof__(S20699C9)");
    check_base_class_offset(lv, (S7246C4*), 0, "S20699C9");
    check_field_offset(lv, s20699c9f0, 40, "S20699C9.s20699c9f0");
    test_class_info(&lv, &cd_S20699C9);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20699C9(Test_S20699C9, "S20699C9", 44);

#else // __cplusplus

extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
static Base_Class bases_S20699C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20699C9[];
Class_Descriptor cd_S20699C9 = {  "S20699C9", // class name
  bases_S20699C9, 1,
  0, // no vftv
  0, //no vtt
  44, // object size
  NSPAIRA(_ZTI8S20699C9),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  S20699C4  : S20699C5 , virtual S20699C8 , S20699C9 {
  char s20699c4f0;
  virtual  ~S20699C4(); // _ZN8S20699C4D2Ev
  S20699C4(); // tgen
};
//SIG(-1 S20699C4) C1{ BC2{ VBC3{ VBC4{ m Fi[10]} vd} BC5{ VBC4 VBC3 vd} FD} VBC5 BC6{ BC4 Fi} vd Fc}


 S20699C4 ::~S20699C4(){ note_dtor("S20699C4", this);}
S20699C4 ::S20699C4(){ note_ctor("S20699C4", this);} // tgen

static void Test_S20699C4()
{
  extern Class_Descriptor cd_S20699C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,28)];
    init_test(&cd_S20699C4, buf);
    S20699C4 *dp, &lv = *(dp=new (buf) S20699C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,108), "sizeof(S20699C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20699C4)");
    check_base_class_offset(lv, (S7246C4*)(S20699C6*), ABISELECT(80,64), "S20699C4");
    check_base_class_offset(lv, (S7246C4*)(S20699C8*)(S20699C5*), ABISELECT(80,64), "S20699C4");
    /*is_ambiguous_... S20699C4::S20699C8 */ AMB_check_base_class_offset(lv, (S7246C4*)(S20699C8*), ABISELECT(80,64), "S20699C4");
    check_base_class_offset(lv, (S20699C6*)(S20699C5*), 0, "S20699C4");
    check_base_class_offset(lv, (S20699C6*)(S20699C8*)(S20699C5*), 0, "S20699C4");
    /*is_ambiguous_... S20699C4::S20699C8 */ AMB_check_base_class_offset(lv, (S20699C6*)(S20699C8*), 0, "S20699C4");
    check_base_class_offset(lv, (S20699C8*)(S20699C5*), 0, "S20699C4");
    check_base_class_offset(lv, (S20699C5*), 0, "S20699C4");
    /*is_ambiguous_... S20699C4::S20699C8 */ AMB_check_base_class_offset(lv, (S20699C8*), ABISELECT(120,104), "S20699C4");
    check_base_class_offset(lv, (S7246C4*)(S20699C9*), ABISELECT(32,16), "S20699C4");
    check_base_class_offset(lv, (S20699C9*), ABISELECT(32,16), "S20699C4");
    check_field_offset(lv, s20699c4f0, ABISELECT(76,60), "S20699C4.s20699c4f0");
    test_class_info(&lv, &cd_S20699C4);
    dp->~S20699C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20699C4(Test_S20699C4, "S20699C4", ABISELECT(128,108));

#else // __cplusplus

extern void _ZN8S20699C4C1Ev();
extern void _ZN8S20699C4D2Ev();
Name_Map name_map_S20699C4[] = {
  NSPAIR(_ZN8S20699C4C1Ev),
  NSPAIR(_ZN8S20699C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20699C6;
extern VTBL_ENTRY _ZTI8S20699C6[];
extern  VTBL_ENTRY _ZTV8S20699C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C6[];
extern Class_Descriptor cd_S20699C8;
extern VTBL_ENTRY _ZTI8S20699C8[];
extern  VTBL_ENTRY _ZTV8S20699C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C8[];
extern Class_Descriptor cd_S20699C5;
extern VTBL_ENTRY _ZTI8S20699C5[];
extern  VTBL_ENTRY _ZTV8S20699C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C5[];
extern Class_Descriptor cd_S20699C8;
extern VTBL_ENTRY _ZTI8S20699C8[];
extern  VTBL_ENTRY _ZTV8S20699C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C8[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20699C9;
extern VTBL_ENTRY _ZTI8S20699C9[];
static Base_Class bases_S20699C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(80,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20699C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20699C8,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20699C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20699C8,    ABISELECT(120,104), //bcp->offset
    8, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    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_S20699C9,    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},
  {0}};
extern VTBL_ENTRY _ZTI8S20699C4[];
extern void _ZN8S20699C4D1Ev();
extern void _ZN8S20699C4D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S20699C4D1Ev,_ZTv0_n16_N8S20699C4D1Ev)();
extern void ABISELECT(_ZThn120_N8S20699C4D1Ev,_ZThn104_N8S20699C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20699C4D0Ev,_ZTv0_n16_N8S20699C4D0Ev)();
extern void ABISELECT(_ZThn120_N8S20699C4D0Ev,_ZThn104_N8S20699C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20699C4[] = {
  ABISELECT(120,104),
  0,
  0,
  ABISELECT(80,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C4[0]),
  (VTBL_ENTRY)&_ZN8S20699C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20699C4D0Ev,
  ABISELECT(-120,-104),
  ABISELECT(-120,-104),
  -40,
  ABISELECT(-120,-104),
  (VTBL_ENTRY)&(_ZTI8S20699C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C4D1Ev,_ZTv0_n16_N8S20699C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C4D0Ev,_ZTv0_n16_N8S20699C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S20699C4[];
extern void _ZN8S20699C5D1Ev();
extern void _ZN8S20699C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20699C5__8S20699C4[] = {
  0,
  0,
  ABISELECT(80,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C5[0]),
  (VTBL_ENTRY)&_ZN8S20699C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20699C5D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev)();
extern void _ZN8S20699C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev)();
extern void _ZN8S20699C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20699C88S20699C5__8S20699C4[] = {
  0,
  0,
  ABISELECT(80,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev),
};
extern void _ZN8S20699C6D1Ev();
extern void _ZN8S20699C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20699C6__8S20699C4[] = {
  ABISELECT(80,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C6[0]),
  (VTBL_ENTRY)&_ZN8S20699C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20699C6D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev)();
extern void _ZN8S20699C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev)();
extern void _ZN8S20699C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20699C8__A1__8S20699C4[] = {
  ABISELECT(-120,-104),
  0,
  -40,
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20699C6__8S20699C8__A1__8S20699C4[] = {
  ABISELECT(120,104),
  ABISELECT(80,64),
  ABISELECT(120,104),
  (VTBL_ENTRY)&(_ZTI8S20699C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev),
};
static  VTT_ENTRY vtt_S20699C4[] = {
  {&(_ZTV8S20699C4[6]),  6,15},
  {&(_tg__ZTV8S20699C5__8S20699C4[5]),  5,7},
  {&(_tg__ZTV8S20699C88S20699C5__8S20699C4[5]),  5,7},
  {&(_tg__ZTV8S20699C88S20699C5__8S20699C4[5]),  5,7},
  {&(_tg__ZTV8S20699C5__8S20699C4[5]),  5,7},
  {&(_ZTV8S20699C4[6]),  6,15},
  {&(_ZTV8S20699C4[13]),  13,15},
  {&(_tg__ZTV8S20699C6__8S20699C4[3]),  3,5},
  {&(_tg__ZTV8S20699C8__A1__8S20699C4[5]),  5,7},
  {&(_tg__ZTV8S20699C6__8S20699C8__A1__8S20699C4[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20699C4[];
extern  VTBL_ENTRY _ZTV8S20699C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C4[];
static VTBL_ENTRY alt_thunk_names108[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20699C8D0Ev,
  (VTBL_ENTRY)_ZN8S20699C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20699C8D1Ev,
  (VTBL_ENTRY)_ZN8S20699C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20699C4D0Ev,_ZTv0_n16_N8S20699C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S20699C4D0Ev,_ZThn104_N8S20699C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20699C4D1Ev,_ZTv0_n16_N8S20699C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S20699C4D1Ev,_ZThn104_N8S20699C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20699C4 = {  "S20699C4", // class name
  bases_S20699C4, 7,
  &(vtc_S20699C4[0]), // expected_vtbl_contents
  &(vtt_S20699C4[0]), // expected_vtt_contents
  ABISELECT(128,108), // object size
  NSPAIRA(_ZTI8S20699C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20699C4),15, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20699C4),10, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names108,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20699C11  : S7246C4 {
};
//SIG(-1 S20699C11) C1{ BC2{ m Fi[10]}}



static void Test_S20699C11()
{
  extern Class_Descriptor cd_S20699C11;
  void *lvp;
  {
    int buf[11];
    init_test(&cd_S20699C11, buf);
    S20699C11 &lv = *(new (buf) S20699C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), 40, "sizeof(S20699C11)");
    check2(__alignof__(lv), 4, "__alignof__(S20699C11)");
    check_base_class_offset(lv, (S7246C4*), 0, "S20699C11");
    test_class_info(&lv, &cd_S20699C11);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20699C11(Test_S20699C11, "S20699C11", 40);

#else // __cplusplus

extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
static Base_Class bases_S20699C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20699C11[];
Class_Descriptor cd_S20699C11 = {  "S20699C11", // class name
  bases_S20699C11, 1,
  0, // no vftv
  0, //no vtt
  40, // object size
  NSPAIRA(_ZTI9S20699C11),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  S20699C10  : S7246C4 , S20699C11 , virtual S20699C8 , S20699C9 {
  ~S20699C10(); // tgen
  S20699C10(); // tgen
};
//SIG(-1 S20699C10) C1{ BC2{ m Fi[10]} BC3{ BC2} VBC4{ VBC2 VBC5{ VBC2 vd} vd} BC6{ BC2 Fi}}


S20699C10 ::~S20699C10(){ note_dtor("S20699C10", this);} // tgen
S20699C10 ::S20699C10(){ note_ctor("S20699C10", this);} // tgen

static void Test_S20699C10()
{
  extern Class_Descriptor cd_S20699C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,43)];
    init_test(&cd_S20699C10, buf);
    S20699C10 *dp, &lv = *(dp=new (buf) S20699C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,168), "sizeof(S20699C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20699C10)");
    /*is_ambiguous_... S20699C10::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*), ABISELECT(8,4), "S20699C10");
    check_base_class_offset(lv, (S7246C4*)(S20699C11*), ABISELECT(48,44), "S20699C10");
    check_base_class_offset(lv, (S20699C11*), ABISELECT(48,44), "S20699C10");
    check_base_class_offset(lv, (S7246C4*)(S20699C8*), ABISELECT(132,128), "S20699C10");
    check_base_class_offset(lv, (S7246C4*)(S20699C6*), ABISELECT(132,128), "S20699C10");
    check_base_class_offset(lv, (S20699C6*)(S20699C8*), 0, "S20699C10");
    check_base_class_offset(lv, (S20699C8*), 0, "S20699C10");
    check_base_class_offset(lv, (S7246C4*)(S20699C9*), ABISELECT(88,84), "S20699C10");
    check_base_class_offset(lv, (S20699C9*), ABISELECT(88,84), "S20699C10");
    test_class_info(&lv, &cd_S20699C10);
    dp->~S20699C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20699C10(Test_S20699C10, "S20699C10", ABISELECT(176,168));

#else // __cplusplus

extern void _ZN9S20699C10C1Ev();
extern void _ZN9S20699C10D1Ev();
Name_Map name_map_S20699C10[] = {
  NSPAIR(_ZN9S20699C10C1Ev),
  NSPAIR(_ZN9S20699C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20699C11;
extern VTBL_ENTRY _ZTI9S20699C11[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20699C6;
extern VTBL_ENTRY _ZTI8S20699C6[];
extern  VTBL_ENTRY _ZTV8S20699C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C6[];
extern Class_Descriptor cd_S20699C8;
extern VTBL_ENTRY _ZTI8S20699C8[];
extern  VTBL_ENTRY _ZTV8S20699C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C8[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20699C9;
extern VTBL_ENTRY _ZTI8S20699C9[];
static Base_Class bases_S20699C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7246C4,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20699C11,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7246C4,    ABISELECT(132,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
    4, //immediately_derived
  0, 1},
  {&cd_S20699C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //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_S20699C8,    0, //bcp->offset
    -1, //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},
  {&cd_S7246C4,    ABISELECT(88,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
    7, //immediately_derived
  0, 0},
  {&cd_S20699C9,    ABISELECT(88,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20699C10[];
extern void _ZN9S20699C10D1Ev();
extern void _ZN9S20699C10D0Ev();
static  VTBL_ENTRY vtc_S20699C10[] = {
  0,
  0,
  0,
  ABISELECT(132,128),
  0,
  (VTBL_ENTRY)&(_ZTI9S20699C10[0]),
  (VTBL_ENTRY)&_ZN9S20699C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20699C10D0Ev,
};
extern VTBL_ENTRY _ZTV9S20699C10[];
extern void ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev)();
extern void _ZN8S20699C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev)();
extern void _ZN8S20699C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20699C8__9S20699C10[] = {
  0,
  0,
  ABISELECT(132,128),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev),
};
extern void _ZN8S20699C6D1Ev();
extern void _ZN8S20699C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20699C6__9S20699C10[] = {
  ABISELECT(132,128),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C6[0]),
  (VTBL_ENTRY)&_ZN8S20699C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20699C6D0Ev,
};
static  VTT_ENTRY vtt_S20699C10[] = {
  {&(_ZTV9S20699C10[6]),  6,8},
  {&(_ZTV9S20699C10[6]),  6,8},
  {&(_ZTV9S20699C10[6]),  6,8},
  {&(_tg__ZTV8S20699C8__9S20699C10[5]),  5,7},
  {&(_tg__ZTV8S20699C8__9S20699C10[5]),  5,7},
  {&(_tg__ZTV8S20699C6__9S20699C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20699C10[];
extern  VTBL_ENTRY _ZTV9S20699C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20699C10[];
static VTBL_ENTRY alt_thunk_names109[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20699C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20699C8D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20699C10 = {  "S20699C10", // class name
  bases_S20699C10, 8,
  &(vtc_S20699C10[0]), // expected_vtbl_contents
  &(vtt_S20699C10[0]), // expected_vtt_contents
  ABISELECT(176,168), // object size
  NSPAIRA(_ZTI9S20699C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20699C10),8, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20699C10),6, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names109,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20699C12  : S20699C8 {
  __tsi64 s20699c12f0;
  virtual  ~S20699C12(); // _ZN9S20699C12D2Ev
  virtual void  v1(); // _ZN9S20699C122v1Ev
  S20699C12(); // tgen
};
//SIG(-1 S20699C12) C1{ BC2{ VBC3{ m Fi[10]} VBC4{ VBC3 vd} vd} vd v1 FL}


 S20699C12 ::~S20699C12(){ note_dtor("S20699C12", this);}
void  S20699C12 ::v1(){vfunc_called(this, "_ZN9S20699C122v1Ev");}
S20699C12 ::S20699C12(){ note_ctor("S20699C12", this);} // tgen

static void Test_S20699C12()
{
  extern Class_Descriptor cd_S20699C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,14)];
    init_test(&cd_S20699C12, buf);
    S20699C12 *dp, &lv = *(dp=new (buf) S20699C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,52), "sizeof(S20699C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20699C12)");
    check_base_class_offset(lv, (S7246C4*)(S20699C8*), ABISELECT(16,12), "S20699C12");
    check_base_class_offset(lv, (S7246C4*)(S20699C6*), ABISELECT(16,12), "S20699C12");
    check_base_class_offset(lv, (S20699C6*)(S20699C8*), 0, "S20699C12");
    check_base_class_offset(lv, (S20699C8*), 0, "S20699C12");
    check_field_offset(lv, s20699c12f0, ABISELECT(8,4), "S20699C12.s20699c12f0");
    test_class_info(&lv, &cd_S20699C12);
    dp->~S20699C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20699C12(Test_S20699C12, "S20699C12", ABISELECT(56,52));

#else // __cplusplus

extern void _ZN9S20699C12C1Ev();
extern void _ZN9S20699C12D2Ev();
Name_Map name_map_S20699C12[] = {
  NSPAIR(_ZN9S20699C12C1Ev),
  NSPAIR(_ZN9S20699C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20699C6;
extern VTBL_ENTRY _ZTI8S20699C6[];
extern  VTBL_ENTRY _ZTV8S20699C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C6[];
extern Class_Descriptor cd_S20699C8;
extern VTBL_ENTRY _ZTI8S20699C8[];
extern  VTBL_ENTRY _ZTV8S20699C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C8[];
static Base_Class bases_S20699C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20699C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20699C8,    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 _ZTI9S20699C12[];
extern void _ZN9S20699C12D1Ev();
extern void _ZN9S20699C12D0Ev();
extern void _ZN9S20699C122v1Ev();
static  VTBL_ENTRY vtc_S20699C12[] = {
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20699C12[0]),
  (VTBL_ENTRY)&_ZN9S20699C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20699C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20699C122v1Ev,
};
extern VTBL_ENTRY _ZTV9S20699C12[];
extern void _ZN8S20699C8D1Ev();
extern void _ZN8S20699C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20699C8__9S20699C12[] = {
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C8[0]),
  (VTBL_ENTRY)&_ZN8S20699C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20699C8D0Ev,
};
extern void _ZN8S20699C6D1Ev();
extern void _ZN8S20699C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20699C6__9S20699C12[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C6[0]),
  (VTBL_ENTRY)&_ZN8S20699C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20699C6D0Ev,
};
static  VTT_ENTRY vtt_S20699C12[] = {
  {&(_ZTV9S20699C12[5]),  5,8},
  {&(_tg__ZTV8S20699C8__9S20699C12[5]),  5,7},
  {&(_tg__ZTV8S20699C8__9S20699C12[5]),  5,7},
  {&(_ZTV9S20699C12[5]),  5,8},
  {&(_tg__ZTV8S20699C6__9S20699C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20699C12[];
extern  VTBL_ENTRY _ZTV9S20699C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20699C12[];
Class_Descriptor cd_S20699C12 = {  "S20699C12", // class name
  bases_S20699C12, 3,
  &(vtc_S20699C12[0]), // expected_vtbl_contents
  &(vtt_S20699C12[0]), // expected_vtt_contents
  ABISELECT(56,52), // object size
  NSPAIRA(_ZTI9S20699C12),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20699C12),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20699C12),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  S20699C2  : virtual S4677C37 , S20699C4 , S20699C10 , S20699C8 , virtual S20699C12 {
  short s20699c2f0:7;
  ~S20699C2(); // tgen
  S20699C2(); // tgen
};
//SIG(-1 S20699C2) C1{ VBC2{ m} BC3{ BC4{ VBC5{ VBC6{ m Fi[10]} vd} BC7{ VBC6 VBC5 vd} FD} VBC7 BC8{ BC6 Fi} vd Fc} BC9{ BC6 BC10{ BC6} VBC7 BC8} BC7 VBC11{ BC7 vd v1 FL} Fs:7}


S20699C2 ::~S20699C2(){ note_dtor("S20699C2", this);} // tgen
S20699C2 ::S20699C2(){ note_ctor("S20699C2", this);} // tgen

static void Test_S20699C2()
{
  extern Class_Descriptor cd_S20699C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(19,64)];
    init_test(&cd_S20699C2, buf);
    S20699C2 *dp, &lv = *(dp=new (buf) S20699C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,252), "sizeof(S20699C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20699C2)");
    check_base_class_offset(lv, (S4677C37*), 0, "S20699C2");
    check_base_class_offset(lv, (S7246C4*)(S20699C6*), ABISELECT(228,200), "S20699C2");
    check_base_class_offset(lv, (S7246C4*)(S20699C8*)(S20699C5*)(S20699C4*), ABISELECT(228,200), "S20699C2");
    /*is_ambiguous_... S20699C2::S20699C8 */ AMB_check_base_class_offset(lv, (S7246C4*)(S20699C8*), ABISELECT(228,200), "S20699C2");
    /*is_ambiguous_... S20699C2::S20699C8 */ AMB_check_base_class_offset(lv, (S7246C4*)(S20699C8*), ABISELECT(228,200), "S20699C2");
    check_base_class_offset(lv, (S7246C4*)(S20699C8*)(S20699C12*), ABISELECT(228,200), "S20699C2");
    check_base_class_offset(lv, (S20699C6*)(S20699C5*)(S20699C4*), 0, "S20699C2");
    check_base_class_offset(lv, (S20699C6*)(S20699C8*)(S20699C5*)(S20699C4*), 0, "S20699C2");
    /*is_ambiguous_... S20699C2::S20699C8 */ AMB_check_base_class_offset(lv, (S20699C6*)(S20699C8*), 0, "S20699C2");
    /*is_ambiguous_... S20699C2::S20699C8 */ AMB_check_base_class_offset(lv, (S20699C6*)(S20699C8*), 0, "S20699C2");
    check_base_class_offset(lv, (S20699C6*)(S20699C8*)(S20699C12*), 0, "S20699C2");
    check_base_class_offset(lv, (S20699C8*)(S20699C5*)(S20699C4*), 0, "S20699C2");
    check_base_class_offset(lv, (S20699C5*)(S20699C4*), 0, "S20699C2");
    /*is_ambiguous_... S20699C4::S20699C8 */ AMB_check_base_class_offset(lv, (S20699C8*)(S20699C4*), ABISELECT(80,64), "S20699C2");
    check_base_class_offset(lv, (S20699C8*)(S20699C10*), ABISELECT(80,64), "S20699C2");
    check_base_class_offset(lv, (S7246C4*)(S20699C9*)(S20699C4*), ABISELECT(32,16), "S20699C2");
    check_base_class_offset(lv, (S20699C9*)(S20699C4*), ABISELECT(32,16), "S20699C2");
    check_base_class_offset(lv, (S20699C4*), 0, "S20699C2");
    /*is_ambiguous_... S20699C10::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*)(S20699C10*), ABISELECT(88,68), "S20699C2");
    check_base_class_offset(lv, (S7246C4*)(S20699C11*)(S20699C10*), ABISELECT(128,108), "S20699C2");
    check_base_class_offset(lv, (S20699C11*)(S20699C10*), ABISELECT(128,108), "S20699C2");
    check_base_class_offset(lv, (S7246C4*)(S20699C9*)(S20699C10*), ABISELECT(168,148), "S20699C2");
    check_base_class_offset(lv, (S20699C9*)(S20699C10*), ABISELECT(168,148), "S20699C2");
    check_base_class_offset(lv, (S20699C10*), ABISELECT(80,64), "S20699C2");
    /*is_ambiguous_... S20699C2::S20699C8 */ AMB_check_base_class_offset(lv, (S20699C8*), ABISELECT(216,192), "S20699C2");
    check_base_class_offset(lv, (S20699C8*)(S20699C12*), ABISELECT(272,240), "S20699C2");
    check_base_class_offset(lv, (S20699C12*), ABISELECT(272,240), "S20699C2");
    set_bf_and_test(lv, s20699c2f0, ABISELECT(224,196), 0, 7, 1, "S20699C2");
    set_bf_and_test(lv, s20699c2f0, ABISELECT(224,196), 0, 7, hide_sll(1LL<<6), "S20699C2");
    test_class_info(&lv, &cd_S20699C2);
    dp->~S20699C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20699C2(Test_S20699C2, "S20699C2", ABISELECT(288,252));

#else // __cplusplus

extern void _ZN8S20699C2C1Ev();
extern void _ZN8S20699C2D1Ev();
Name_Map name_map_S20699C2[] = {
  NSPAIR(_ZN8S20699C2C1Ev),
  NSPAIR(_ZN8S20699C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20699C6;
extern VTBL_ENTRY _ZTI8S20699C6[];
extern  VTBL_ENTRY _ZTV8S20699C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C6[];
extern Class_Descriptor cd_S20699C8;
extern VTBL_ENTRY _ZTI8S20699C8[];
extern  VTBL_ENTRY _ZTV8S20699C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C8[];
extern Class_Descriptor cd_S20699C5;
extern VTBL_ENTRY _ZTI8S20699C5[];
extern  VTBL_ENTRY _ZTV8S20699C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C5[];
extern Class_Descriptor cd_S20699C8;
extern VTBL_ENTRY _ZTI8S20699C8[];
extern  VTBL_ENTRY _ZTV8S20699C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C8[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20699C9;
extern VTBL_ENTRY _ZTI8S20699C9[];
extern Class_Descriptor cd_S20699C4;
extern VTBL_ENTRY _ZTI8S20699C4[];
extern  VTBL_ENTRY _ZTV8S20699C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C4[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20699C11;
extern VTBL_ENTRY _ZTI9S20699C11[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20699C9;
extern VTBL_ENTRY _ZTI8S20699C9[];
extern Class_Descriptor cd_S20699C10;
extern VTBL_ENTRY _ZTI9S20699C10[];
extern  VTBL_ENTRY _ZTV9S20699C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20699C10[];
extern Class_Descriptor cd_S20699C8;
extern VTBL_ENTRY _ZTI8S20699C8[];
extern  VTBL_ENTRY _ZTV8S20699C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C8[];
extern Class_Descriptor cd_S20699C8;
extern VTBL_ENTRY _ZTI8S20699C8[];
extern  VTBL_ENTRY _ZTV8S20699C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C8[];
extern Class_Descriptor cd_S20699C12;
extern VTBL_ENTRY _ZTI9S20699C12[];
extern  VTBL_ENTRY _ZTV9S20699C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20699C12[];
static Base_Class bases_S20699C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(228,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20699C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20699C8,    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
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20699C5,    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
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20699C8,    ABISELECT(80,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20699C9,    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_S20699C4,    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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7246C4,    ABISELECT(88,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7246C4,    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
    11, //immediately_derived
  0, 0},
  {&cd_S20699C11,    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
    14, //immediately_derived
  0, 0},
  {&cd_S7246C4,    ABISELECT(168,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
    13, //immediately_derived
  0, 0},
  {&cd_S20699C9,    ABISELECT(168,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20699C10,    ABISELECT(80,64), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20699C8,    ABISELECT(216,192), //bcp->offset
    18, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20699C8,    ABISELECT(272,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20699C12,    ABISELECT(272,240), //bcp->offset
    25, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20699C2[];
extern void _ZN8S20699C2D1Ev();
extern void _ZN8S20699C2D0Ev();
extern void ABISELECT(_ZThn80_N8S20699C2D1Ev,_ZThn64_N8S20699C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S20699C2D0Ev,_ZThn64_N8S20699C2D0Ev)();
extern void ABISELECT(_ZThn216_N8S20699C2D1Ev,_ZThn192_N8S20699C2D1Ev)();
extern void ABISELECT(_ZThn216_N8S20699C2D0Ev,_ZThn192_N8S20699C2D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20699C2D1Ev,_ZTv0_n16_N8S20699C2D1Ev)();
extern void ABISELECT(_ZThn272_N8S20699C2D1Ev,_ZThn240_N8S20699C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20699C2D0Ev,_ZTv0_n16_N8S20699C2D0Ev)();
extern void ABISELECT(_ZThn272_N8S20699C2D0Ev,_ZThn240_N8S20699C2D0Ev)() __attribute__((weak));
extern void _ZN9S20699C122v1Ev();
static  VTBL_ENTRY vtc_S20699C2[] = {
  ABISELECT(272,240),
  0,
  ABISELECT(80,64),
  0,
  0,
  ABISELECT(228,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C2[0]),
  (VTBL_ENTRY)&_ZN8S20699C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20699C2D0Ev,
  0,
  ABISELECT(-80,-64),
  ABISELECT(-80,-64),
  ABISELECT(148,136),
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI8S20699C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20699C2D1Ev,_ZThn64_N8S20699C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20699C2D0Ev,_ZThn64_N8S20699C2D0Ev),
  ABISELECT(-216,-192),
  ABISELECT(-216,-192),
  ABISELECT(12,8),
  ABISELECT(-216,-192),
  (VTBL_ENTRY)&(_ZTI8S20699C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn216_N8S20699C2D1Ev,_ZThn192_N8S20699C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn216_N8S20699C2D0Ev,_ZThn192_N8S20699C2D0Ev),
  0,
  ABISELECT(-272,-240),
  ABISELECT(-272,-240),
  ABISELECT(-44,-40),
  ABISELECT(-272,-240),
  (VTBL_ENTRY)&(_ZTI8S20699C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C2D1Ev,_ZTv0_n16_N8S20699C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C2D0Ev,_ZTv0_n16_N8S20699C2D0Ev),
  (VTBL_ENTRY)&_ZN9S20699C122v1Ev,
};
extern VTBL_ENTRY _ZTV8S20699C2[];
extern void _ZN8S20699C4D1Ev();
extern void _ZN8S20699C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20699C4__8S20699C2[] = {
  ABISELECT(80,64),
  0,
  0,
  ABISELECT(228,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C4[0]),
  (VTBL_ENTRY)&_ZN8S20699C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20699C4D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20699C5D1Ev,_ZTv0_n16_N8S20699C5D1Ev)();
extern void _ZN8S20699C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20699C5D0Ev,_ZTv0_n16_N8S20699C5D0Ev)();
extern void _ZN8S20699C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20699C58S20699C4__8S20699C2[] = {
  0,
  0,
  ABISELECT(228,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C5D1Ev,_ZTv0_n16_N8S20699C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C5D0Ev,_ZTv0_n16_N8S20699C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev)();
extern void _ZN8S20699C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev)();
extern void _ZN8S20699C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20699C88S20699C58S20699C4__8S20699C2[] = {
  0,
  0,
  ABISELECT(228,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20699C4D1Ev,_ZTv0_n16_N8S20699C4D1Ev)();
extern void ABISELECT(_ZThn80_N8S20699C4D1Ev,_ZThn64_N8S20699C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20699C4D0Ev,_ZTv0_n16_N8S20699C4D0Ev)();
extern void ABISELECT(_ZThn80_N8S20699C4D0Ev,_ZThn64_N8S20699C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20699C8__A1__8S20699C4__8S20699C2[] = {
  ABISELECT(-80,-64),
  ABISELECT(-80,-64),
  ABISELECT(148,136),
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI8S20699C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C4D1Ev,_ZTv0_n16_N8S20699C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C4D0Ev,_ZTv0_n16_N8S20699C4D0Ev),
};
extern void _ZN9S20699C10D1Ev();
extern void _ZN9S20699C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20699C10__8S20699C2[] = {
  0,
  ABISELECT(-80,-64),
  0,
  ABISELECT(148,136),
  0,
  (VTBL_ENTRY)&(_ZTI9S20699C10[0]),
  (VTBL_ENTRY)&_ZN9S20699C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20699C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20699C10D1Ev,_ZTv0_n16_N9S20699C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20699C10D0Ev,_ZTv0_n16_N9S20699C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20699C6__9S20699C10__8S20699C2[] = {
  ABISELECT(80,64),
  ABISELECT(228,200),
  ABISELECT(80,64),
  (VTBL_ENTRY)&(_ZTI9S20699C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20699C10D1Ev,_ZTv0_n16_N9S20699C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20699C10D0Ev,_ZTv0_n16_N9S20699C10D0Ev),
};
extern void _ZN8S20699C8D1Ev();
extern void _ZN8S20699C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20699C8__A__8S20699C2[] = {
  ABISELECT(-216,-192),
  0,
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C8[0]),
  (VTBL_ENTRY)&_ZN8S20699C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20699C8D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20699C6__8S20699C8__A__8S20699C2[] = {
  ABISELECT(216,192),
  ABISELECT(228,200),
  ABISELECT(216,192),
  (VTBL_ENTRY)&(_ZTI8S20699C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev),
};
extern void _ZN8S20699C6D1Ev();
extern void _ZN8S20699C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20699C6__8S20699C2[] = {
  ABISELECT(228,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C6[0]),
  (VTBL_ENTRY)&_ZN8S20699C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20699C6D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev)();
extern void _ZN8S20699C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev)();
extern void _ZN8S20699C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20699C8__A1__8S20699C2[] = {
  ABISELECT(-80,-64),
  0,
  ABISELECT(148,136),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20699C6__8S20699C8__A1__8S20699C2[] = {
  ABISELECT(80,64),
  ABISELECT(228,200),
  ABISELECT(80,64),
  (VTBL_ENTRY)&(_ZTI8S20699C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20699C12D1Ev,_ZTv0_n16_N9S20699C12D1Ev)();
extern void _ZN9S20699C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20699C12D0Ev,_ZTv0_n16_N9S20699C12D0Ev)();
extern void _ZN9S20699C12D0Ev() __attribute__((weak));
extern void _ZN9S20699C122v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20699C12__8S20699C2[] = {
  ABISELECT(-272,-240),
  0,
  ABISELECT(-44,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20699C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20699C12D1Ev,_ZTv0_n16_N9S20699C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20699C12D0Ev,_ZTv0_n16_N9S20699C12D0Ev),
  (VTBL_ENTRY)&_ZN9S20699C122v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev)();
extern void _ZN8S20699C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev)();
extern void _ZN8S20699C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20699C89S20699C12__A3__8S20699C2[] = {
  ABISELECT(-272,-240),
  0,
  ABISELECT(-44,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20699C6__8S20699C89S20699C12__A3__8S20699C2[] = {
  ABISELECT(272,240),
  ABISELECT(228,200),
  ABISELECT(272,240),
  (VTBL_ENTRY)&(_ZTI8S20699C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20699C12D1Ev,_ZTv0_n16_N9S20699C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20699C12D0Ev,_ZTv0_n16_N9S20699C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20699C6__9S20699C12__8S20699C2[] = {
  ABISELECT(272,240),
  ABISELECT(228,200),
  ABISELECT(272,240),
  (VTBL_ENTRY)&(_ZTI9S20699C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20699C12D1Ev,_ZTv0_n16_N9S20699C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20699C12D0Ev,_ZTv0_n16_N9S20699C12D0Ev),
};
static  VTT_ENTRY vtt_S20699C2[] = {
  {&(_ZTV8S20699C2[8]),  8,34},
  {&(_tg__ZTV8S20699C4__8S20699C2[6]),  6,8},
  {&(_tg__ZTV8S20699C58S20699C4__8S20699C2[5]),  5,7},
  {&(_tg__ZTV8S20699C88S20699C58S20699C4__8S20699C2[5]),  5,7},
  {&(_tg__ZTV8S20699C88S20699C58S20699C4__8S20699C2[5]),  5,7},
  {&(_tg__ZTV8S20699C58S20699C4__8S20699C2[5]),  5,7},
  {&(_tg__ZTV8S20699C4__8S20699C2[6]),  6,8},
  {&(_tg__ZTV8S20699C8__A1__8S20699C4__8S20699C2[5]),  5,7},
  {&(_tg__ZTV9S20699C10__8S20699C2[6]),  6,8},
  {&(_tg__ZTV9S20699C10__8S20699C2[6]),  6,8},
  {&(_tg__ZTV8S20699C6__9S20699C10__8S20699C2[4]),  4,6},
  {&(_tg__ZTV8S20699C8__A__8S20699C2[5]),  5,7},
  {&(_tg__ZTV8S20699C6__8S20699C8__A__8S20699C2[4]),  4,6},
  {&(_ZTV8S20699C2[8]),  8,34},
  {&(_ZTV8S20699C2[16]),  16,34},
  {&(_ZTV8S20699C2[16]),  16,34},
  {&(_ZTV8S20699C2[23]),  23,34},
  {&(_ZTV8S20699C2[31]),  31,34},
  {&(_tg__ZTV8S20699C6__8S20699C2[3]),  3,5},
  {&(_tg__ZTV8S20699C8__A1__8S20699C2[5]),  5,7},
  {&(_tg__ZTV8S20699C6__8S20699C8__A1__8S20699C2[4]),  4,6},
  {&(_tg__ZTV9S20699C12__8S20699C2[5]),  5,8},
  {&(_tg__ZTV8S20699C89S20699C12__A3__8S20699C2[5]),  5,7},
  {&(_tg__ZTV8S20699C6__8S20699C89S20699C12__A3__8S20699C2[4]),  4,6},
  {&(_tg__ZTV8S20699C6__9S20699C12__8S20699C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20699C2[];
extern  VTBL_ENTRY _ZTV8S20699C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C2[];
static VTBL_ENTRY alt_thunk_names110[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20699C12D0Ev,_ZTv0_n16_N9S20699C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S20699C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20699C12D1Ev,_ZTv0_n16_N9S20699C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S20699C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20699C4D0Ev,_ZTv0_n16_N8S20699C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20699C4D0Ev,_ZThn64_N8S20699C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20699C4D1Ev,_ZTv0_n16_N8S20699C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20699C4D1Ev,_ZThn64_N8S20699C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20699C8D0Ev,
  (VTBL_ENTRY)_ZN8S20699C8D0Ev,
  (VTBL_ENTRY)_ZN8S20699C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20699C8D1Ev,
  (VTBL_ENTRY)_ZN8S20699C8D1Ev,
  (VTBL_ENTRY)_ZN8S20699C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20699C5D0Ev,_ZTv0_n16_N8S20699C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S20699C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20699C5D1Ev,_ZTv0_n16_N8S20699C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S20699C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20699C2D0Ev,_ZTv0_n16_N8S20699C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S20699C2D0Ev,_ZThn240_N8S20699C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20699C2D1Ev,_ZTv0_n16_N8S20699C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S20699C2D1Ev,_ZThn240_N8S20699C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20699C2 = {  "S20699C2", // class name
  bases_S20699C2, 18,
  &(vtc_S20699C2[0]), // expected_vtbl_contents
  &(vtt_S20699C2[0]), // expected_vtt_contents
  ABISELECT(288,252), // object size
  NSPAIRA(_ZTI8S20699C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20699C2),34, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20699C2),25, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names110,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20699C15  : S20699C9 {
  ::S20699C9 s20699c15f0;
};
//SIG(-1 S20699C15) C1{ BC2{ BC3{ m Fi[10]} Fi} FC2}



static void Test_S20699C15()
{
  extern Class_Descriptor cd_S20699C15;
  void *lvp;
  {
    int buf[23];
    init_test(&cd_S20699C15, buf);
    S20699C15 &lv = *(new (buf) S20699C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), 88, "sizeof(S20699C15)");
    check2(__alignof__(lv), 4, "__alignof__(S20699C15)");
    check_base_class_offset(lv, (S7246C4*)(S20699C9*), 0, "S20699C15");
    check_base_class_offset(lv, (S20699C9*), 0, "S20699C15");
    check_field_offset(lv, s20699c15f0, 44, "S20699C15.s20699c15f0");
    test_class_info(&lv, &cd_S20699C15);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20699C15(Test_S20699C15, "S20699C15", 88);

#else // __cplusplus

extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20699C9;
extern VTBL_ENTRY _ZTI8S20699C9[];
static Base_Class bases_S20699C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20699C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20699C15[];
Class_Descriptor cd_S20699C15 = {  "S20699C15", // class name
  bases_S20699C15, 2,
  0, // no vftv
  0, //no vtt
  88, // object size
  NSPAIRA(_ZTI9S20699C15),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20699C14  : virtual S20699C9 , virtual S20699C11 , virtual S20699C15 , S7246C4 {
  void *s20699c14f0;
  virtual  ~S20699C14(); // _ZN9S20699C14D2Ev
  S20699C14(); // tgen
};
//SIG(-1 S20699C14) C1{ VBC2{ BC3{ m Fi[10]} Fi} VBC4{ BC3} VBC5{ BC2 FC2} BC3 vd Fp}


 S20699C14 ::~S20699C14(){ note_dtor("S20699C14", this);}
S20699C14 ::S20699C14(){ note_ctor("S20699C14", this);} // tgen

static void Test_S20699C14()
{
  extern Class_Descriptor cd_S20699C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,56)];
    init_test(&cd_S20699C14, buf);
    S20699C14 *dp, &lv = *(dp=new (buf) S20699C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,220), "sizeof(S20699C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20699C14)");
    /*is_ambiguous_... S20699C14::S20699C9 */ AMB_check_base_class_offset(lv, (S7246C4*)(S20699C9*), ABISELECT(56,48), "S20699C14");
    /*is_ambiguous_... S20699C14::S20699C9 */ AMB_check_base_class_offset(lv, (S20699C9*), ABISELECT(56,48), "S20699C14");
    check_base_class_offset(lv, (S7246C4*)(S20699C11*), ABISELECT(100,92), "S20699C14");
    check_base_class_offset(lv, (S20699C11*), ABISELECT(100,92), "S20699C14");
    check_base_class_offset(lv, (S7246C4*)(S20699C9*)(S20699C15*), ABISELECT(140,132), "S20699C14");
    check_base_class_offset(lv, (S20699C9*)(S20699C15*), ABISELECT(140,132), "S20699C14");
    check_base_class_offset(lv, (S20699C15*), ABISELECT(140,132), "S20699C14");
    /*is_ambiguous_... S20699C14::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*), ABISELECT(8,4), "S20699C14");
    check_field_offset(lv, s20699c14f0, ABISELECT(48,44), "S20699C14.s20699c14f0");
    test_class_info(&lv, &cd_S20699C14);
    dp->~S20699C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20699C14(Test_S20699C14, "S20699C14", ABISELECT(232,220));

#else // __cplusplus

extern void _ZN9S20699C14C1Ev();
extern void _ZN9S20699C14D2Ev();
Name_Map name_map_S20699C14[] = {
  NSPAIR(_ZN9S20699C14C1Ev),
  NSPAIR(_ZN9S20699C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20699C9;
extern VTBL_ENTRY _ZTI8S20699C9[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20699C11;
extern VTBL_ENTRY _ZTI9S20699C11[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20699C9;
extern VTBL_ENTRY _ZTI8S20699C9[];
extern Class_Descriptor cd_S20699C15;
extern VTBL_ENTRY _ZTI9S20699C15[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
static Base_Class bases_S20699C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20699C9,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(100,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
    3, //immediately_derived
  0, 0},
  {&cd_S20699C11,    ABISELECT(100,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(140,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
    5, //immediately_derived
  0, 0},
  {&cd_S20699C9,    ABISELECT(140,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
    6, //immediately_derived
  0, 0},
  {&cd_S20699C15,    ABISELECT(140,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},
  {&cd_S7246C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20699C14[];
extern void _ZN9S20699C14D1Ev();
extern void _ZN9S20699C14D0Ev();
static  VTBL_ENTRY vtc_S20699C14[] = {
  ABISELECT(140,132),
  ABISELECT(100,92),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20699C14[0]),
  (VTBL_ENTRY)&_ZN9S20699C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20699C14D0Ev,
};
extern VTBL_ENTRY _ZTV9S20699C14[];
static  VTT_ENTRY vtt_S20699C14[] = {
  {&(_ZTV9S20699C14[5]),  5,7},
};
extern VTBL_ENTRY _ZTI9S20699C14[];
extern  VTBL_ENTRY _ZTV9S20699C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20699C14[];
Class_Descriptor cd_S20699C14 = {  "S20699C14", // class name
  bases_S20699C14, 8,
  &(vtc_S20699C14[0]), // expected_vtbl_contents
  &(vtt_S20699C14[0]), // expected_vtt_contents
  ABISELECT(232,220), // object size
  NSPAIRA(_ZTI9S20699C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20699C14),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20699C14),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  S20699C13  : virtual S20699C14 , S20699C6 , S4677C37 {
  ~S20699C13(); // tgen
  S20699C13(); // tgen
};
//SIG(-1 S20699C13) C1{ VBC2{ VBC3{ BC4{ m Fi[10]} Fi} VBC5{ BC4} VBC6{ BC3 FC3} BC4 vd Fp} BC7{ VBC4 vd} BC8{ m}}


S20699C13 ::~S20699C13(){ note_dtor("S20699C13", this);} // tgen
S20699C13 ::S20699C13(){ note_ctor("S20699C13", this);} // tgen

static void Test_S20699C13()
{
  extern Class_Descriptor cd_S20699C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,67)];
    init_test(&cd_S20699C13, buf);
    S20699C13 *dp, &lv = *(dp=new (buf) S20699C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,264), "sizeof(S20699C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20699C13)");
    /*is_ambiguous_... S20699C13::S20699C9 */ AMB_check_base_class_offset(lv, (S7246C4*)(S20699C9*), ABISELECT(64,52), "S20699C13");
    /*is_ambiguous_... S20699C14::S20699C9 */ AMB_check_base_class_offset(lv, (S20699C9*)(S20699C14*), ABISELECT(64,52), "S20699C13");
    check_base_class_offset(lv, (S7246C4*)(S20699C11*), ABISELECT(108,96), "S20699C13");
    check_base_class_offset(lv, (S20699C11*)(S20699C14*), ABISELECT(108,96), "S20699C13");
    check_base_class_offset(lv, (S7246C4*)(S20699C9*)(S20699C15*), ABISELECT(148,136), "S20699C13");
    check_base_class_offset(lv, (S20699C9*)(S20699C15*), ABISELECT(148,136), "S20699C13");
    check_base_class_offset(lv, (S20699C15*)(S20699C14*), ABISELECT(148,136), "S20699C13");
    /*is_ambiguous_... S20699C14::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*)(S20699C14*), ABISELECT(16,8), "S20699C13");
    check_base_class_offset(lv, (S20699C14*), ABISELECT(8,4), "S20699C13");
    check_base_class_offset(lv, (S7246C4*)(S20699C6*), ABISELECT(236,224), "S20699C13");
    check_base_class_offset(lv, (S20699C6*), 0, "S20699C13");
    check_base_class_offset(lv, (S4677C37*), 0, "S20699C13");
    test_class_info(&lv, &cd_S20699C13);
    dp->~S20699C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20699C13(Test_S20699C13, "S20699C13", ABISELECT(280,264));

#else // __cplusplus

extern void _ZN9S20699C13C1Ev();
extern void _ZN9S20699C13D1Ev();
Name_Map name_map_S20699C13[] = {
  NSPAIR(_ZN9S20699C13C1Ev),
  NSPAIR(_ZN9S20699C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20699C9;
extern VTBL_ENTRY _ZTI8S20699C9[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20699C11;
extern VTBL_ENTRY _ZTI9S20699C11[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20699C9;
extern VTBL_ENTRY _ZTI8S20699C9[];
extern Class_Descriptor cd_S20699C15;
extern VTBL_ENTRY _ZTI9S20699C15[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20699C14;
extern VTBL_ENTRY _ZTI9S20699C14[];
extern  VTBL_ENTRY _ZTV9S20699C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20699C14[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20699C6;
extern VTBL_ENTRY _ZTI8S20699C6[];
extern  VTBL_ENTRY _ZTV8S20699C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
static Base_Class bases_S20699C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(64,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20699C9,    ABISELECT(64,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(108,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
    3, //immediately_derived
  0, 0},
  {&cd_S20699C11,    ABISELECT(108,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
    8, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(148,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20699C9,    ABISELECT(148,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20699C15,    ABISELECT(148,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7246C4,    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_S20699C14,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //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_S7246C4,    ABISELECT(236,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20699C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20699C13[];
extern void _ZN9S20699C13D1Ev();
extern void _ZN9S20699C13D0Ev();
extern void ABISELECT(_ZTv0_n48_N9S20699C13D1Ev,_ZTv0_n24_N9S20699C13D1Ev)();
extern void ABISELECT(_ZThn8_N9S20699C13D1Ev,_ZThn4_N9S20699C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20699C13D0Ev,_ZTv0_n24_N9S20699C13D0Ev)();
extern void ABISELECT(_ZThn8_N9S20699C13D0Ev,_ZThn4_N9S20699C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20699C13[] = {
  ABISELECT(148,136),
  ABISELECT(108,96),
  ABISELECT(64,52),
  ABISELECT(8,4),
  ABISELECT(236,224),
  0,
  (VTBL_ENTRY)&(_ZTI9S20699C13[0]),
  (VTBL_ENTRY)&_ZN9S20699C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20699C13D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(140,132),
  ABISELECT(100,92),
  ABISELECT(56,48),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20699C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20699C13D1Ev,_ZTv0_n24_N9S20699C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20699C13D0Ev,_ZTv0_n24_N9S20699C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S20699C13[];
extern void _ZN8S20699C6D1Ev();
extern void _ZN8S20699C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20699C6__9S20699C13[] = {
  ABISELECT(236,224),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C6[0]),
  (VTBL_ENTRY)&_ZN8S20699C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20699C6D0Ev,
};
extern void _ZN9S20699C14D1Ev();
extern void _ZN9S20699C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20699C14__9S20699C13[] = {
  ABISELECT(140,132),
  ABISELECT(100,92),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20699C14[0]),
  (VTBL_ENTRY)&_ZN9S20699C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20699C14D0Ev,
};
static  VTT_ENTRY vtt_S20699C13[] = {
  {&(_ZTV9S20699C13[7]),  7,17},
  {&(_tg__ZTV8S20699C6__9S20699C13[3]),  3,5},
  {&(_ZTV9S20699C13[15]),  15,17},
  {&(_tg__ZTV9S20699C14__9S20699C13[5]),  5,7},
};
extern VTBL_ENTRY _ZTI9S20699C13[];
extern  VTBL_ENTRY _ZTV9S20699C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20699C13[];
static VTBL_ENTRY alt_thunk_names111[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20699C13D0Ev,_ZTv0_n24_N9S20699C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20699C13D0Ev,_ZThn4_N9S20699C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20699C13D1Ev,_ZTv0_n24_N9S20699C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20699C13D1Ev,_ZThn4_N9S20699C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20699C13 = {  "S20699C13", // class name
  bases_S20699C13, 12,
  &(vtc_S20699C13[0]), // expected_vtbl_contents
  &(vtt_S20699C13[0]), // expected_vtt_contents
  ABISELECT(280,264), // object size
  NSPAIRA(_ZTI9S20699C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20699C13),17, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20699C13),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names111,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20699C1  : virtual S20699C2 , virtual S20699C9 , virtual S20699C11 , virtual S20699C13 , S4677C37 {
  virtual  ~S20699C1(); // _ZN8S20699C1D2Ev
  S20699C1(); // tgen
};
//SIG(1 S20699C1) C1{ VBC2{ VBC3{ m} BC4{ BC5{ VBC6{ VBC7{ m Fi[10]} vd} BC8{ VBC7 VBC6 vd} FD} VBC8 BC9{ BC7 Fi} vd Fc} BC10{ BC7 BC11{ BC7} VBC8 BC9} BC8 VBC12{ BC8 vd v1 FL} Fs:7} VBC9 VBC11 VBC13{ VBC14{ VBC9 VBC11 VBC15{ BC9 FC9} BC7 vd Fp} BC6 BC3} BC3 vd}


 S20699C1 ::~S20699C1(){ note_dtor("S20699C1", this);}
S20699C1 ::S20699C1(){ note_ctor("S20699C1", this);} // tgen

static void Test_S20699C1()
{
  extern Class_Descriptor cd_S20699C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(35,120)];
    init_test(&cd_S20699C1, buf);
    S20699C1 *dp, &lv = *(dp=new (buf) S20699C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(544,476), "sizeof(S20699C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20699C1)");
    check_base_class_offset(lv, (S4677C37*)(S20699C2*), ABISELECT(241,201), "S20699C1");
    /*is_ambiguous_... S20699C1::S20699C6 */ AMB_check_base_class_offset(lv, (S7246C4*)(S20699C6*), ABISELECT(244,204), "S20699C1");
    check_base_class_offset(lv, (S7246C4*)(S20699C8*)(S20699C5*)(S20699C4*)(S20699C2*), ABISELECT(244,204), "S20699C1");
    /*is_ambiguous_... S20699C1::S20699C8 */ AMB_check_base_class_offset(lv, (S7246C4*)(S20699C8*), ABISELECT(244,204), "S20699C1");
    /*is_ambiguous_... S20699C2::S20699C8 */ AMB_check_base_class_offset(lv, (S7246C4*)(S20699C8*)(S20699C2*), ABISELECT(244,204), "S20699C1");
    check_base_class_offset(lv, (S7246C4*)(S20699C8*)(S20699C12*), ABISELECT(244,204), "S20699C1");
    check_base_class_offset(lv, (S7246C4*)(S20699C6*)(S20699C13*), ABISELECT(244,204), "S20699C1");
    check_base_class_offset(lv, (S20699C6*)(S20699C5*)(S20699C4*)(S20699C2*), ABISELECT(16,4), "S20699C1");
    check_base_class_offset(lv, (S20699C6*)(S20699C8*)(S20699C5*)(S20699C4*)(S20699C2*), ABISELECT(16,4), "S20699C1");
    /*is_ambiguous_... S20699C1::S20699C8 */ AMB_check_base_class_offset(lv, (S20699C6*)(S20699C8*), ABISELECT(16,4), "S20699C1");
    /*is_ambiguous_... S20699C2::S20699C8 */ AMB_check_base_class_offset(lv, (S20699C6*)(S20699C8*)(S20699C2*), ABISELECT(16,4), "S20699C1");
    check_base_class_offset(lv, (S20699C6*)(S20699C8*)(S20699C12*), ABISELECT(16,4), "S20699C1");
    check_base_class_offset(lv, (S20699C8*)(S20699C5*)(S20699C4*)(S20699C2*), ABISELECT(16,4), "S20699C1");
    check_base_class_offset(lv, (S20699C5*)(S20699C4*)(S20699C2*), ABISELECT(16,4), "S20699C1");
    /*is_ambiguous_... S20699C4::S20699C8 */ AMB_check_base_class_offset(lv, (S20699C8*)(S20699C4*)(S20699C2*), ABISELECT(96,68), "S20699C1");
    check_base_class_offset(lv, (S20699C8*)(S20699C10*)(S20699C2*), ABISELECT(96,68), "S20699C1");
    check_base_class_offset(lv, (S7246C4*)(S20699C9*)(S20699C4*)(S20699C2*), ABISELECT(48,20), "S20699C1");
    check_base_class_offset(lv, (S20699C9*)(S20699C4*)(S20699C2*), ABISELECT(48,20), "S20699C1");
    check_base_class_offset(lv, (S20699C4*)(S20699C2*), ABISELECT(16,4), "S20699C1");
    /*is_ambiguous_... S20699C10::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*)(S20699C10*)(S20699C2*), ABISELECT(104,72), "S20699C1");
    check_base_class_offset(lv, (S7246C4*)(S20699C11*)(S20699C10*)(S20699C2*), ABISELECT(144,112), "S20699C1");
    check_base_class_offset(lv, (S20699C11*)(S20699C10*)(S20699C2*), ABISELECT(144,112), "S20699C1");
    check_base_class_offset(lv, (S7246C4*)(S20699C9*)(S20699C10*)(S20699C2*), ABISELECT(184,152), "S20699C1");
    check_base_class_offset(lv, (S20699C9*)(S20699C10*)(S20699C2*), ABISELECT(184,152), "S20699C1");
    check_base_class_offset(lv, (S20699C10*)(S20699C2*), ABISELECT(96,68), "S20699C1");
    /*is_ambiguous_... S20699C2::S20699C8 */ AMB_check_base_class_offset(lv, (S20699C8*)(S20699C2*), ABISELECT(232,196), "S20699C1");
    check_base_class_offset(lv, (S20699C8*)(S20699C12*), ABISELECT(288,244), "S20699C1");
    check_base_class_offset(lv, (S20699C12*)(S20699C2*), ABISELECT(288,244), "S20699C1");
    check_base_class_offset(lv, (S20699C2*), ABISELECT(16,4), "S20699C1");
    /*is_ambiguous_... S20699C1::S20699C9 */ AMB_check_base_class_offset(lv, (S7246C4*)(S20699C9*), ABISELECT(304,256), "S20699C1");
    /*is_ambiguous_... S20699C1::S20699C9 */ AMB_check_base_class_offset(lv, (S20699C9*), ABISELECT(304,256), "S20699C1");
    /*is_ambiguous_... S20699C14::S20699C9 */ AMB_check_base_class_offset(lv, (S20699C9*)(S20699C14*), ABISELECT(304,256), "S20699C1");
    /*is_ambiguous_... S20699C1::S20699C11 */ AMB_check_base_class_offset(lv, (S7246C4*)(S20699C11*), ABISELECT(348,300), "S20699C1");
    /*is_ambiguous_... S20699C1::S20699C11 */ AMB_check_base_class_offset(lv, (S20699C11*), ABISELECT(348,300), "S20699C1");
    check_base_class_offset(lv, (S20699C11*)(S20699C14*), ABISELECT(348,300), "S20699C1");
    check_base_class_offset(lv, (S7246C4*)(S20699C9*)(S20699C15*), ABISELECT(448,388), "S20699C1");
    check_base_class_offset(lv, (S20699C9*)(S20699C15*), ABISELECT(448,388), "S20699C1");
    check_base_class_offset(lv, (S20699C15*)(S20699C14*), ABISELECT(448,388), "S20699C1");
    /*is_ambiguous_... S20699C14::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*)(S20699C14*), ABISELECT(400,344), "S20699C1");
    check_base_class_offset(lv, (S20699C14*)(S20699C13*), ABISELECT(392,340), "S20699C1");
    check_base_class_offset(lv, (S20699C6*)(S20699C13*), 0, "S20699C1");
    check_base_class_offset(lv, (S4677C37*)(S20699C13*), 0, "S20699C1");
    check_base_class_offset(lv, (S20699C13*), 0, "S20699C1");
    /*is_ambiguous_... S20699C1::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*), ABISELECT(8,4), "S20699C1");
    test_class_info(&lv, &cd_S20699C1);
    dp->~S20699C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20699C1(Test_S20699C1, "S20699C1", ABISELECT(544,476));

#else // __cplusplus

extern void _ZN8S20699C1C1Ev();
extern void _ZN8S20699C1D2Ev();
Name_Map name_map_S20699C1[] = {
  NSPAIR(_ZN8S20699C1C1Ev),
  NSPAIR(_ZN8S20699C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20699C6;
extern VTBL_ENTRY _ZTI8S20699C6[];
extern  VTBL_ENTRY _ZTV8S20699C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C6[];
extern Class_Descriptor cd_S20699C8;
extern VTBL_ENTRY _ZTI8S20699C8[];
extern  VTBL_ENTRY _ZTV8S20699C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C8[];
extern Class_Descriptor cd_S20699C5;
extern VTBL_ENTRY _ZTI8S20699C5[];
extern  VTBL_ENTRY _ZTV8S20699C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C5[];
extern Class_Descriptor cd_S20699C8;
extern VTBL_ENTRY _ZTI8S20699C8[];
extern  VTBL_ENTRY _ZTV8S20699C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C8[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20699C9;
extern VTBL_ENTRY _ZTI8S20699C9[];
extern Class_Descriptor cd_S20699C4;
extern VTBL_ENTRY _ZTI8S20699C4[];
extern  VTBL_ENTRY _ZTV8S20699C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C4[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20699C11;
extern VTBL_ENTRY _ZTI9S20699C11[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20699C9;
extern VTBL_ENTRY _ZTI8S20699C9[];
extern Class_Descriptor cd_S20699C10;
extern VTBL_ENTRY _ZTI9S20699C10[];
extern  VTBL_ENTRY _ZTV9S20699C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20699C10[];
extern Class_Descriptor cd_S20699C8;
extern VTBL_ENTRY _ZTI8S20699C8[];
extern  VTBL_ENTRY _ZTV8S20699C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C8[];
extern Class_Descriptor cd_S20699C8;
extern VTBL_ENTRY _ZTI8S20699C8[];
extern  VTBL_ENTRY _ZTV8S20699C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C8[];
extern Class_Descriptor cd_S20699C12;
extern VTBL_ENTRY _ZTI9S20699C12[];
extern  VTBL_ENTRY _ZTV9S20699C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20699C12[];
extern Class_Descriptor cd_S20699C2;
extern VTBL_ENTRY _ZTI8S20699C2[];
extern  VTBL_ENTRY _ZTV8S20699C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C2[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20699C9;
extern VTBL_ENTRY _ZTI8S20699C9[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20699C11;
extern VTBL_ENTRY _ZTI9S20699C11[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20699C9;
extern VTBL_ENTRY _ZTI8S20699C9[];
extern Class_Descriptor cd_S20699C15;
extern VTBL_ENTRY _ZTI9S20699C15[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20699C14;
extern VTBL_ENTRY _ZTI9S20699C14[];
extern  VTBL_ENTRY _ZTV9S20699C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20699C14[];
extern Class_Descriptor cd_S20699C6;
extern VTBL_ENTRY _ZTI8S20699C6[];
extern  VTBL_ENTRY _ZTV8S20699C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20699C13;
extern VTBL_ENTRY _ZTI9S20699C13[];
extern  VTBL_ENTRY _ZTV9S20699C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20699C13[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
static Base_Class bases_S20699C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    ABISELECT(241,201), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7246C4,    ABISELECT(244,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
    2, //immediately_derived
  0, 1},
  {&cd_S20699C6,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20699C8,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20699C5,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20699C8,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(48,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_S20699C9,    ABISELECT(48,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_S20699C4,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7246C4,    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
    14, //immediately_derived
  0, 0},
  {&cd_S7246C4,    ABISELECT(144,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20699C11,    ABISELECT(144,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
    14, //immediately_derived
  0, 0},
  {&cd_S7246C4,    ABISELECT(184,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
    13, //immediately_derived
  0, 0},
  {&cd_S20699C9,    ABISELECT(184,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
    14, //immediately_derived
  0, 0},
  {&cd_S20699C10,    ABISELECT(96,68), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20699C8,    ABISELECT(232,196), //bcp->offset
    34, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20699C8,    ABISELECT(288,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //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
    17, //immediately_derived
  0, 0},
  {&cd_S20699C12,    ABISELECT(288,244), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20699C2,    ABISELECT(16,4), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //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_S7246C4,    ABISELECT(304,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
    20, //immediately_derived
  0, 0},
  {&cd_S20699C9,    ABISELECT(304,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(348,300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20699C11,    ABISELECT(348,300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(448,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20699C9,    ABISELECT(448,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20699C15,    ABISELECT(448,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(400,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20699C14,    ABISELECT(392,340), //bcp->offset
    50, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S20699C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20699C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20699C1[];
extern void _ZN8S20699C1D1Ev();
extern void _ZN8S20699C1D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S20699C1D1Ev,_ZTv0_n16_N8S20699C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S20699C1D1Ev,_ZThn4_N8S20699C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20699C1D0Ev,_ZTv0_n16_N8S20699C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S20699C1D0Ev,_ZThn4_N8S20699C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20699C1D1Ev,_ZTv0_n16_N8S20699C1D1Ev)();
extern void ABISELECT(_ZThn96_N8S20699C1D1Ev,_ZThn68_N8S20699C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20699C1D0Ev,_ZTv0_n16_N8S20699C1D0Ev)();
extern void ABISELECT(_ZThn96_N8S20699C1D0Ev,_ZThn68_N8S20699C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20699C1D1Ev,_ZTv0_n16_N8S20699C1D1Ev)();
extern void ABISELECT(_ZThn232_N8S20699C1D1Ev,_ZThn196_N8S20699C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20699C1D0Ev,_ZTv0_n16_N8S20699C1D0Ev)();
extern void ABISELECT(_ZThn232_N8S20699C1D0Ev,_ZThn196_N8S20699C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20699C1D1Ev,_ZTv0_n16_N8S20699C1D1Ev)();
extern void ABISELECT(_ZThn288_N8S20699C1D1Ev,_ZThn244_N8S20699C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20699C1D0Ev,_ZTv0_n16_N8S20699C1D0Ev)();
extern void ABISELECT(_ZThn288_N8S20699C1D0Ev,_ZThn244_N8S20699C1D0Ev)() __attribute__((weak));
extern void _ZN9S20699C122v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20699C1D1Ev,_ZTv0_n24_N8S20699C1D1Ev)();
extern void ABISELECT(_ZThn392_N8S20699C1D1Ev,_ZThn340_N8S20699C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20699C1D0Ev,_ZTv0_n24_N8S20699C1D0Ev)();
extern void ABISELECT(_ZThn392_N8S20699C1D0Ev,_ZThn340_N8S20699C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20699C1[] = {
  0,
  ABISELECT(288,244),
  ABISELECT(96,68),
  ABISELECT(16,4),
  ABISELECT(241,201),
  ABISELECT(16,4),
  0,
  ABISELECT(448,388),
  ABISELECT(348,300),
  ABISELECT(304,256),
  ABISELECT(392,340),
  ABISELECT(244,204),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C1[0]),
  (VTBL_ENTRY)&_ZN8S20699C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20699C1D0Ev,
  ABISELECT(272,240),
  ABISELECT(225,197),
  ABISELECT(80,64),
  0,
  ABISELECT(-16,-4),
  ABISELECT(228,200),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S20699C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C1D1Ev,_ZTv0_n16_N8S20699C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C1D0Ev,_ZTv0_n16_N8S20699C1D0Ev),
  0,
  ABISELECT(-80,-64),
  ABISELECT(-96,-68),
  ABISELECT(148,136),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S20699C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C1D1Ev,_ZTv0_n16_N8S20699C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C1D0Ev,_ZTv0_n16_N8S20699C1D0Ev),
  ABISELECT(-216,-192),
  ABISELECT(-232,-196),
  ABISELECT(12,8),
  ABISELECT(-232,-196),
  (VTBL_ENTRY)&(_ZTI8S20699C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C1D1Ev,_ZTv0_n16_N8S20699C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C1D0Ev,_ZTv0_n16_N8S20699C1D0Ev),
  0,
  ABISELECT(-272,-240),
  ABISELECT(-288,-244),
  ABISELECT(-44,-40),
  ABISELECT(-288,-244),
  (VTBL_ENTRY)&(_ZTI8S20699C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C1D1Ev,_ZTv0_n16_N8S20699C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C1D0Ev,_ZTv0_n16_N8S20699C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20699C122v1Ev,
  ABISELECT(-392,-340),
  ABISELECT(56,48),
  ABISELECT(-44,-40),
  ABISELECT(-88,-84),
  ABISELECT(-392,-340),
  (VTBL_ENTRY)&(_ZTI8S20699C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20699C1D1Ev,_ZTv0_n24_N8S20699C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20699C1D0Ev,_ZTv0_n24_N8S20699C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S20699C1[];
extern void ABISELECT(_ZTv0_n32_N8S20699C2D1Ev,_ZTv0_n16_N8S20699C2D1Ev)();
extern void _ZN8S20699C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20699C2D0Ev,_ZTv0_n16_N8S20699C2D0Ev)();
extern void _ZN8S20699C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20699C2__8S20699C1[] = {
  ABISELECT(272,240),
  ABISELECT(225,197),
  ABISELECT(80,64),
  0,
  0,
  ABISELECT(228,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C2D1Ev,_ZTv0_n16_N8S20699C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C2D0Ev,_ZTv0_n16_N8S20699C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20699C4D1Ev,_ZTv0_n16_N8S20699C4D1Ev)();
extern void _ZN8S20699C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20699C4D0Ev,_ZTv0_n16_N8S20699C4D0Ev)();
extern void _ZN8S20699C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20699C48S20699C2__8S20699C1[] = {
  ABISELECT(80,64),
  0,
  0,
  ABISELECT(228,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C4D1Ev,_ZTv0_n16_N8S20699C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C4D0Ev,_ZTv0_n16_N8S20699C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20699C5D1Ev,_ZTv0_n16_N8S20699C5D1Ev)();
extern void _ZN8S20699C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20699C5D0Ev,_ZTv0_n16_N8S20699C5D0Ev)();
extern void _ZN8S20699C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20699C58S20699C48S20699C2__8S20699C1[] = {
  0,
  0,
  ABISELECT(228,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C5D1Ev,_ZTv0_n16_N8S20699C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C5D0Ev,_ZTv0_n16_N8S20699C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev)();
extern void _ZN8S20699C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev)();
extern void _ZN8S20699C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20699C88S20699C58S20699C48S20699C2__8S20699C1[] = {
  0,
  0,
  ABISELECT(228,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20699C4D1Ev,_ZTv0_n16_N8S20699C4D1Ev)();
extern void ABISELECT(_ZThn80_N8S20699C4D1Ev,_ZThn64_N8S20699C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20699C4D0Ev,_ZTv0_n16_N8S20699C4D0Ev)();
extern void ABISELECT(_ZThn80_N8S20699C4D0Ev,_ZThn64_N8S20699C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20699C8__A1__8S20699C48S20699C2__8S20699C1[] = {
  ABISELECT(-80,-64),
  ABISELECT(-80,-64),
  ABISELECT(148,136),
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI8S20699C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C4D1Ev,_ZTv0_n16_N8S20699C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C4D0Ev,_ZTv0_n16_N8S20699C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20699C10D1Ev,_ZTv0_n16_N9S20699C10D1Ev)();
extern void _ZN9S20699C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20699C10D0Ev,_ZTv0_n16_N9S20699C10D0Ev)();
extern void _ZN9S20699C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20699C108S20699C2__8S20699C1[] = {
  0,
  ABISELECT(-80,-64),
  0,
  ABISELECT(148,136),
  0,
  (VTBL_ENTRY)&(_ZTI9S20699C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20699C10D1Ev,_ZTv0_n16_N9S20699C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20699C10D0Ev,_ZTv0_n16_N9S20699C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20699C10D1Ev,_ZTv0_n16_N9S20699C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20699C10D0Ev,_ZTv0_n16_N9S20699C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20699C6__9S20699C108S20699C2__8S20699C1[] = {
  ABISELECT(80,64),
  ABISELECT(228,200),
  ABISELECT(80,64),
  (VTBL_ENTRY)&(_ZTI9S20699C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20699C10D1Ev,_ZTv0_n16_N9S20699C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20699C10D0Ev,_ZTv0_n16_N9S20699C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev)();
extern void _ZN8S20699C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev)();
extern void _ZN8S20699C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20699C88S20699C2__A2__8S20699C1[] = {
  ABISELECT(-216,-192),
  0,
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20699C6__8S20699C88S20699C2__A2__8S20699C1[] = {
  ABISELECT(216,192),
  ABISELECT(228,200),
  ABISELECT(216,192),
  (VTBL_ENTRY)&(_ZTI8S20699C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20699C2D1Ev,_ZTv0_n16_N8S20699C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S20699C2D1Ev,_ZThn64_N8S20699C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20699C2D0Ev,_ZTv0_n16_N8S20699C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S20699C2D0Ev,_ZThn64_N8S20699C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20699C10__8S20699C2__8S20699C1[] = {
  0,
  ABISELECT(-80,-64),
  ABISELECT(-80,-64),
  ABISELECT(148,136),
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI8S20699C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C2D1Ev,_ZTv0_n16_N8S20699C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C2D0Ev,_ZTv0_n16_N8S20699C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20699C2D1Ev,_ZTv0_n16_N8S20699C2D1Ev)();
extern void ABISELECT(_ZThn216_N8S20699C2D1Ev,_ZThn192_N8S20699C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20699C2D0Ev,_ZTv0_n16_N8S20699C2D0Ev)();
extern void ABISELECT(_ZThn216_N8S20699C2D0Ev,_ZThn192_N8S20699C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20699C8__A__8S20699C2__8S20699C1[] = {
  ABISELECT(-216,-192),
  ABISELECT(-216,-192),
  ABISELECT(12,8),
  ABISELECT(-216,-192),
  (VTBL_ENTRY)&(_ZTI8S20699C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C2D1Ev,_ZTv0_n16_N8S20699C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C2D0Ev,_ZTv0_n16_N8S20699C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20699C2D1Ev,_ZTv0_n16_N8S20699C2D1Ev)();
extern void ABISELECT(_ZThn272_N8S20699C2D1Ev,_ZThn240_N8S20699C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20699C2D0Ev,_ZTv0_n16_N8S20699C2D0Ev)();
extern void ABISELECT(_ZThn272_N8S20699C2D0Ev,_ZThn240_N8S20699C2D0Ev)() __attribute__((weak));
extern void _ZN9S20699C122v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20699C12__8S20699C2__8S20699C1[] = {
  0,
  ABISELECT(-272,-240),
  ABISELECT(-272,-240),
  ABISELECT(-44,-40),
  ABISELECT(-272,-240),
  (VTBL_ENTRY)&(_ZTI8S20699C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C2D1Ev,_ZTv0_n16_N8S20699C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C2D0Ev,_ZTv0_n16_N8S20699C2D0Ev),
  (VTBL_ENTRY)&_ZN9S20699C122v1Ev,
};
extern void _ZN8S20699C6D1Ev();
extern void _ZN8S20699C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20699C6__8S20699C1[] = {
  ABISELECT(228,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C6[0]),
  (VTBL_ENTRY)&_ZN8S20699C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20699C6D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev)();
extern void _ZN8S20699C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev)();
extern void _ZN8S20699C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20699C8__A1__8S20699C1[] = {
  ABISELECT(-80,-64),
  0,
  ABISELECT(148,136),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20699C6__8S20699C8__A1__8S20699C1[] = {
  ABISELECT(80,64),
  ABISELECT(228,200),
  ABISELECT(80,64),
  (VTBL_ENTRY)&(_ZTI8S20699C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20699C12D1Ev,_ZTv0_n16_N9S20699C12D1Ev)();
extern void _ZN9S20699C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20699C12D0Ev,_ZTv0_n16_N9S20699C12D0Ev)();
extern void _ZN9S20699C12D0Ev() __attribute__((weak));
extern void _ZN9S20699C122v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20699C12__8S20699C1[] = {
  ABISELECT(-272,-240),
  0,
  ABISELECT(-44,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20699C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20699C12D1Ev,_ZTv0_n16_N9S20699C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20699C12D0Ev,_ZTv0_n16_N9S20699C12D0Ev),
  (VTBL_ENTRY)&_ZN9S20699C122v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev)();
extern void _ZN8S20699C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev)();
extern void _ZN8S20699C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20699C89S20699C12__A3__8S20699C1[] = {
  ABISELECT(-272,-240),
  0,
  ABISELECT(-44,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20699C6__8S20699C89S20699C12__A3__8S20699C1[] = {
  ABISELECT(272,240),
  ABISELECT(228,200),
  ABISELECT(272,240),
  (VTBL_ENTRY)&(_ZTI8S20699C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20699C12D1Ev,_ZTv0_n16_N9S20699C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20699C12D0Ev,_ZTv0_n16_N9S20699C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20699C6__9S20699C12__8S20699C1[] = {
  ABISELECT(272,240),
  ABISELECT(228,200),
  ABISELECT(272,240),
  (VTBL_ENTRY)&(_ZTI9S20699C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20699C12D1Ev,_ZTv0_n16_N9S20699C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20699C12D0Ev,_ZTv0_n16_N9S20699C12D0Ev),
};
extern void _ZN9S20699C13D1Ev();
extern void _ZN9S20699C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20699C13__8S20699C1[] = {
  ABISELECT(448,388),
  ABISELECT(348,300),
  ABISELECT(304,256),
  ABISELECT(392,340),
  ABISELECT(244,204),
  0,
  (VTBL_ENTRY)&(_ZTI9S20699C13[0]),
  (VTBL_ENTRY)&_ZN9S20699C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20699C13D0Ev,
};
extern void _ZN8S20699C6D1Ev();
extern void _ZN8S20699C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20699C69S20699C13__A1__8S20699C1[] = {
  ABISELECT(244,204),
  0,
  (VTBL_ENTRY)&(_ZTI8S20699C6[0]),
  (VTBL_ENTRY)&_ZN8S20699C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20699C6D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S20699C13D1Ev,_ZTv0_n24_N9S20699C13D1Ev)();
extern void ABISELECT(_ZThn392_N9S20699C13D1Ev,_ZThn340_N9S20699C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20699C13D0Ev,_ZTv0_n24_N9S20699C13D0Ev)();
extern void ABISELECT(_ZThn392_N9S20699C13D0Ev,_ZThn340_N9S20699C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20699C14__9S20699C13__8S20699C1[] = {
  ABISELECT(-392,-340),
  ABISELECT(56,48),
  ABISELECT(-44,-40),
  ABISELECT(-88,-84),
  ABISELECT(-392,-340),
  (VTBL_ENTRY)&(_ZTI9S20699C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20699C13D1Ev,_ZTv0_n24_N9S20699C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20699C13D0Ev,_ZTv0_n24_N9S20699C13D0Ev),
};
extern void _ZN9S20699C14D1Ev();
extern void _ZN9S20699C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20699C14__8S20699C1[] = {
  ABISELECT(56,48),
  ABISELECT(-44,-40),
  ABISELECT(-88,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20699C14[0]),
  (VTBL_ENTRY)&_ZN9S20699C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20699C14D0Ev,
};
static  VTT_ENTRY vtt_S20699C1[] = {
  {&(_ZTV8S20699C1[14]),  14,58},
  {&(_ZTV8S20699C1[24]),  24,58},
  {&(_ZTV8S20699C1[24]),  24,58},
  {&(_ZTV8S20699C1[32]),  32,58},
  {&(_ZTV8S20699C1[32]),  32,58},
  {&(_ZTV8S20699C1[39]),  39,58},
  {&(_ZTV8S20699C1[47]),  47,58},
  {&(_ZTV8S20699C1[14]),  14,58},
  {&(_ZTV8S20699C1[56]),  56,58},
  {&(_tg__ZTV8S20699C2__8S20699C1[8]),  8,10},
  {&(_tg__ZTV8S20699C48S20699C2__8S20699C1[6]),  6,8},
  {&(_tg__ZTV8S20699C58S20699C48S20699C2__8S20699C1[5]),  5,7},
  {&(_tg__ZTV8S20699C88S20699C58S20699C48S20699C2__8S20699C1[5]),  5,7},
  {&(_tg__ZTV8S20699C88S20699C58S20699C48S20699C2__8S20699C1[5]),  5,7},
  {&(_tg__ZTV8S20699C58S20699C48S20699C2__8S20699C1[5]),  5,7},
  {&(_tg__ZTV8S20699C48S20699C2__8S20699C1[6]),  6,8},
  {&(_tg__ZTV8S20699C8__A1__8S20699C48S20699C2__8S20699C1[5]),  5,7},
  {&(_tg__ZTV9S20699C108S20699C2__8S20699C1[6]),  6,8},
  {&(_tg__ZTV9S20699C108S20699C2__8S20699C1[6]),  6,8},
  {&(_tg__ZTV8S20699C6__9S20699C108S20699C2__8S20699C1[4]),  4,6},
  {&(_tg__ZTV8S20699C88S20699C2__A2__8S20699C1[5]),  5,7},
  {&(_tg__ZTV8S20699C6__8S20699C88S20699C2__A2__8S20699C1[4]),  4,6},
  {&(_tg__ZTV8S20699C2__8S20699C1[8]),  8,10},
  {&(_tg__ZTV9S20699C10__8S20699C2__8S20699C1[6]),  6,8},
  {&(_tg__ZTV9S20699C10__8S20699C2__8S20699C1[6]),  6,8},
  {&(_tg__ZTV8S20699C8__A__8S20699C2__8S20699C1[5]),  5,7},
  {&(_tg__ZTV9S20699C12__8S20699C2__8S20699C1[6]),  6,9},
  {&(_tg__ZTV8S20699C6__8S20699C1[3]),  3,5},
  {&(_tg__ZTV8S20699C8__A1__8S20699C1[5]),  5,7},
  {&(_tg__ZTV8S20699C6__8S20699C8__A1__8S20699C1[4]),  4,6},
  {&(_tg__ZTV9S20699C12__8S20699C1[5]),  5,8},
  {&(_tg__ZTV8S20699C89S20699C12__A3__8S20699C1[5]),  5,7},
  {&(_tg__ZTV8S20699C6__8S20699C89S20699C12__A3__8S20699C1[4]),  4,6},
  {&(_tg__ZTV8S20699C6__9S20699C12__8S20699C1[4]),  4,6},
  {&(_tg__ZTV9S20699C13__8S20699C1[7]),  7,9},
  {&(_tg__ZTV8S20699C69S20699C13__A1__8S20699C1[3]),  3,5},
  {&(_tg__ZTV9S20699C14__9S20699C13__8S20699C1[6]),  6,8},
  {&(_tg__ZTV9S20699C14__8S20699C1[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S20699C1[];
extern  VTBL_ENTRY _ZTV8S20699C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20699C1[];
static VTBL_ENTRY alt_thunk_names112[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20699C13D0Ev,_ZTv0_n24_N9S20699C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N9S20699C13D0Ev,_ZThn340_N9S20699C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20699C13D1Ev,_ZTv0_n24_N9S20699C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N9S20699C13D1Ev,_ZThn340_N9S20699C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20699C12D0Ev,_ZTv0_n16_N9S20699C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S20699C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20699C12D1Ev,_ZTv0_n16_N9S20699C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S20699C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20699C10D0Ev,_ZTv0_n16_N9S20699C10D0Ev), // 
  (VTBL_ENTRY)_ZN9S20699C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20699C10D1Ev,_ZTv0_n16_N9S20699C10D1Ev), // 
  (VTBL_ENTRY)_ZN9S20699C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20699C8D0Ev,_ZTv0_n16_N8S20699C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20699C8D0Ev,
  (VTBL_ENTRY)_ZN8S20699C8D0Ev,
  (VTBL_ENTRY)_ZN8S20699C8D0Ev,
  (VTBL_ENTRY)_ZN8S20699C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20699C8D1Ev,_ZTv0_n16_N8S20699C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20699C8D1Ev,
  (VTBL_ENTRY)_ZN8S20699C8D1Ev,
  (VTBL_ENTRY)_ZN8S20699C8D1Ev,
  (VTBL_ENTRY)_ZN8S20699C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20699C5D0Ev,_ZTv0_n16_N8S20699C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S20699C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20699C5D1Ev,_ZTv0_n16_N8S20699C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S20699C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20699C4D0Ev,_ZTv0_n16_N8S20699C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20699C4D0Ev,_ZThn64_N8S20699C4D0Ev),
  (VTBL_ENTRY)_ZN8S20699C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20699C4D1Ev,_ZTv0_n16_N8S20699C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20699C4D1Ev,_ZThn64_N8S20699C4D1Ev),
  (VTBL_ENTRY)_ZN8S20699C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20699C2D0Ev,_ZTv0_n16_N8S20699C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S20699C2D0Ev,_ZThn240_N8S20699C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S20699C2D0Ev,_ZThn192_N8S20699C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20699C2D0Ev,_ZThn64_N8S20699C2D0Ev),
  (VTBL_ENTRY)_ZN8S20699C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20699C2D1Ev,_ZTv0_n16_N8S20699C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S20699C2D1Ev,_ZThn240_N8S20699C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S20699C2D1Ev,_ZThn192_N8S20699C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20699C2D1Ev,_ZThn64_N8S20699C2D1Ev),
  (VTBL_ENTRY)_ZN8S20699C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20699C1D0Ev,_ZTv0_n24_N8S20699C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N8S20699C1D0Ev,_ZThn340_N8S20699C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20699C1D1Ev,_ZTv0_n24_N8S20699C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N8S20699C1D1Ev,_ZThn340_N8S20699C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20699C1D0Ev,_ZTv0_n16_N8S20699C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20699C1D0Ev,_ZThn244_N8S20699C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S20699C1D0Ev,_ZThn196_N8S20699C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20699C1D0Ev,_ZThn68_N8S20699C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20699C1D0Ev,_ZThn4_N8S20699C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20699C1D1Ev,_ZTv0_n16_N8S20699C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20699C1D1Ev,_ZThn244_N8S20699C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S20699C1D1Ev,_ZThn196_N8S20699C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20699C1D1Ev,_ZThn68_N8S20699C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20699C1D1Ev,_ZThn4_N8S20699C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20699C1 = {  "S20699C1", // class name
  bases_S20699C1, 32,
  &(vtc_S20699C1[0]), // expected_vtbl_contents
  &(vtt_S20699C1[0]), // expected_vtt_contents
  ABISELECT(544,476), // object size
  NSPAIRA(_ZTI8S20699C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20699C1),58, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20699C1),38, //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  S8259C5  : S7246C4 {
  int s8259c5f0;
};
//SIG(-1 S8259C5) C1{ BC2{ m Fi[10]} Fi}



static void Test_S8259C5()
{
  extern Class_Descriptor cd_S8259C5;
  void *lvp;
  {
    int buf[12];
    init_test(&cd_S8259C5, buf);
    S8259C5 &lv = *(new (buf) S8259C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), 44, "sizeof(S8259C5)");
    check2(__alignof__(lv), 4, "__alignof__(S8259C5)");
    check_base_class_offset(lv, (S7246C4*), 0, "S8259C5");
    check_field_offset(lv, s8259c5f0, 40, "S8259C5.s8259c5f0");
    test_class_info(&lv, &cd_S8259C5);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8259C5(Test_S8259C5, "S8259C5", 44);

#else // __cplusplus

extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
static Base_Class bases_S8259C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8259C5[];
Class_Descriptor cd_S8259C5 = {  "S8259C5", // class name
  bases_S8259C5, 1,
  0, // no vftv
  0, //no vtt
  44, // object size
  NSPAIRA(_ZTI7S8259C5),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  S8259C7  : S7246C4 {
};
//SIG(-1 S8259C7) C1{ BC2{ m Fi[10]}}



static void Test_S8259C7()
{
  extern Class_Descriptor cd_S8259C7;
  void *lvp;
  {
    int buf[11];
    init_test(&cd_S8259C7, buf);
    S8259C7 &lv = *(new (buf) S8259C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), 40, "sizeof(S8259C7)");
    check2(__alignof__(lv), 4, "__alignof__(S8259C7)");
    check_base_class_offset(lv, (S7246C4*), 0, "S8259C7");
    test_class_info(&lv, &cd_S8259C7);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8259C7(Test_S8259C7, "S8259C7", 40);

#else // __cplusplus

extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
static Base_Class bases_S8259C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8259C7[];
Class_Descriptor cd_S8259C7 = {  "S8259C7", // class name
  bases_S8259C7, 1,
  0, // no vftv
  0, //no vtt
  40, // object size
  NSPAIRA(_ZTI7S8259C7),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  S8259C8  : S8259C5 {
  ::S8259C5 s8259c8f0;
};
//SIG(-1 S8259C8) C1{ BC2{ BC3{ m Fi[10]} Fi} FC2}



static void Test_S8259C8()
{
  extern Class_Descriptor cd_S8259C8;
  void *lvp;
  {
    int buf[23];
    init_test(&cd_S8259C8, buf);
    S8259C8 &lv = *(new (buf) S8259C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), 88, "sizeof(S8259C8)");
    check2(__alignof__(lv), 4, "__alignof__(S8259C8)");
    check_base_class_offset(lv, (S7246C4*)(S8259C5*), 0, "S8259C8");
    check_base_class_offset(lv, (S8259C5*), 0, "S8259C8");
    check_field_offset(lv, s8259c8f0, 44, "S8259C8.s8259c8f0");
    test_class_info(&lv, &cd_S8259C8);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8259C8(Test_S8259C8, "S8259C8", 88);

#else // __cplusplus

extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S8259C5;
extern VTBL_ENTRY _ZTI7S8259C5[];
static Base_Class bases_S8259C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S8259C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8259C8[];
Class_Descriptor cd_S8259C8 = {  "S8259C8", // class name
  bases_S8259C8, 2,
  0, // no vftv
  0, //no vtt
  88, // object size
  NSPAIRA(_ZTI7S8259C8),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8259C4  : virtual S8259C5 , virtual S8259C7 , virtual S8259C8 , S7246C4 {
  void *s8259c4f0;
  virtual  ~S8259C4(); // _ZN7S8259C4D2Ev
  S8259C4(); // tgen
};
//SIG(-1 S8259C4) C1{ VBC2{ BC3{ m Fi[10]} Fi} VBC4{ BC3} VBC5{ BC2 FC2} BC3 vd Fp}


 S8259C4 ::~S8259C4(){ note_dtor("S8259C4", this);}
S8259C4 ::S8259C4(){ note_ctor("S8259C4", this);} // tgen

static void Test_S8259C4()
{
  extern Class_Descriptor cd_S8259C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,56)];
    init_test(&cd_S8259C4, buf);
    S8259C4 *dp, &lv = *(dp=new (buf) S8259C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,220), "sizeof(S8259C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8259C4)");
    /*is_ambiguous_... S8259C4::S8259C5 */ AMB_check_base_class_offset(lv, (S7246C4*)(S8259C5*), ABISELECT(56,48), "S8259C4");
    /*is_ambiguous_... S8259C4::S8259C5 */ AMB_check_base_class_offset(lv, (S8259C5*), ABISELECT(56,48), "S8259C4");
    check_base_class_offset(lv, (S7246C4*)(S8259C7*), ABISELECT(100,92), "S8259C4");
    check_base_class_offset(lv, (S8259C7*), ABISELECT(100,92), "S8259C4");
    check_base_class_offset(lv, (S7246C4*)(S8259C5*)(S8259C8*), ABISELECT(140,132), "S8259C4");
    check_base_class_offset(lv, (S8259C5*)(S8259C8*), ABISELECT(140,132), "S8259C4");
    check_base_class_offset(lv, (S8259C8*), ABISELECT(140,132), "S8259C4");
    /*is_ambiguous_... S8259C4::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*), ABISELECT(8,4), "S8259C4");
    check_field_offset(lv, s8259c4f0, ABISELECT(48,44), "S8259C4.s8259c4f0");
    test_class_info(&lv, &cd_S8259C4);
    dp->~S8259C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8259C4(Test_S8259C4, "S8259C4", ABISELECT(232,220));

#else // __cplusplus

extern void _ZN7S8259C4C1Ev();
extern void _ZN7S8259C4D2Ev();
Name_Map name_map_S8259C4[] = {
  NSPAIR(_ZN7S8259C4C1Ev),
  NSPAIR(_ZN7S8259C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S8259C5;
extern VTBL_ENTRY _ZTI7S8259C5[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S8259C7;
extern VTBL_ENTRY _ZTI7S8259C7[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S8259C5;
extern VTBL_ENTRY _ZTI7S8259C5[];
extern Class_Descriptor cd_S8259C8;
extern VTBL_ENTRY _ZTI7S8259C8[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
static Base_Class bases_S8259C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S8259C5,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(100,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
    3, //immediately_derived
  0, 0},
  {&cd_S8259C7,    ABISELECT(100,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(140,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
    5, //immediately_derived
  0, 0},
  {&cd_S8259C5,    ABISELECT(140,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
    6, //immediately_derived
  0, 0},
  {&cd_S8259C8,    ABISELECT(140,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},
  {&cd_S7246C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8259C4[];
extern void _ZN7S8259C4D1Ev();
extern void _ZN7S8259C4D0Ev();
static  VTBL_ENTRY vtc_S8259C4[] = {
  ABISELECT(140,132),
  ABISELECT(100,92),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S8259C4[0]),
  (VTBL_ENTRY)&_ZN7S8259C4D1Ev,
  (VTBL_ENTRY)&_ZN7S8259C4D0Ev,
};
extern VTBL_ENTRY _ZTV7S8259C4[];
static  VTT_ENTRY vtt_S8259C4[] = {
  {&(_ZTV7S8259C4[5]),  5,7},
};
extern VTBL_ENTRY _ZTI7S8259C4[];
extern  VTBL_ENTRY _ZTV7S8259C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8259C4[];
Class_Descriptor cd_S8259C4 = {  "S8259C4", // class name
  bases_S8259C4, 8,
  &(vtc_S8259C4[0]), // expected_vtbl_contents
  &(vtt_S8259C4[0]), // expected_vtt_contents
  ABISELECT(232,220), // object size
  NSPAIRA(_ZTI7S8259C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S8259C4),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S8259C4),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  S8259C9  : virtual S7246C4 {
  virtual  ~S8259C9(); // _ZN7S8259C9D2Ev
  S8259C9(); // tgen
};
//SIG(-1 S8259C9) C1{ VBC2{ m Fi[10]} vd}


 S8259C9 ::~S8259C9(){ note_dtor("S8259C9", this);}
S8259C9 ::S8259C9(){ note_ctor("S8259C9", this);} // tgen

static void Test_S8259C9()
{
  extern Class_Descriptor cd_S8259C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S8259C9, buf);
    S8259C9 *dp, &lv = *(dp=new (buf) S8259C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S8259C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8259C9)");
    check_base_class_offset(lv, (S7246C4*), ABISELECT(8,4), "S8259C9");
    test_class_info(&lv, &cd_S8259C9);
    dp->~S8259C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8259C9(Test_S8259C9, "S8259C9", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN7S8259C9C1Ev();
extern void _ZN7S8259C9D2Ev();
Name_Map name_map_S8259C9[] = {
  NSPAIR(_ZN7S8259C9C1Ev),
  NSPAIR(_ZN7S8259C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
static Base_Class bases_S8259C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S8259C9[];
extern void _ZN7S8259C9D1Ev();
extern void _ZN7S8259C9D0Ev();
static  VTBL_ENTRY vtc_S8259C9[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S8259C9[0]),
  (VTBL_ENTRY)&_ZN7S8259C9D1Ev,
  (VTBL_ENTRY)&_ZN7S8259C9D0Ev,
};
extern VTBL_ENTRY _ZTV7S8259C9[];
static  VTT_ENTRY vtt_S8259C9[] = {
  {&(_ZTV7S8259C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S8259C9[];
extern  VTBL_ENTRY _ZTV7S8259C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8259C9[];
Class_Descriptor cd_S8259C9 = {  "S8259C9", // class name
  bases_S8259C9, 1,
  &(vtc_S8259C9[0]), // expected_vtbl_contents
  &(vtt_S8259C9[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI7S8259C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S8259C9),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S8259C9),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  S8259C3  : virtual S8259C4 , S8259C9 , S4677C37 {
  ~S8259C3(); // tgen
  S8259C3(); // tgen
};
//SIG(-1 S8259C3) C1{ VBC2{ VBC3{ BC4{ m Fi[10]} Fi} VBC5{ BC4} VBC6{ BC3 FC3} BC4 vd Fp} BC7{ VBC4 vd} BC8{ m}}


S8259C3 ::~S8259C3(){ note_dtor("S8259C3", this);} // tgen
S8259C3 ::S8259C3(){ note_ctor("S8259C3", this);} // tgen

static void Test_S8259C3()
{
  extern Class_Descriptor cd_S8259C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,67)];
    init_test(&cd_S8259C3, buf);
    S8259C3 *dp, &lv = *(dp=new (buf) S8259C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,264), "sizeof(S8259C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8259C3)");
    /*is_ambiguous_... S8259C3::S8259C5 */ AMB_check_base_class_offset(lv, (S7246C4*)(S8259C5*), ABISELECT(64,52), "S8259C3");
    /*is_ambiguous_... S8259C4::S8259C5 */ AMB_check_base_class_offset(lv, (S8259C5*)(S8259C4*), ABISELECT(64,52), "S8259C3");
    check_base_class_offset(lv, (S7246C4*)(S8259C7*), ABISELECT(108,96), "S8259C3");
    check_base_class_offset(lv, (S8259C7*)(S8259C4*), ABISELECT(108,96), "S8259C3");
    check_base_class_offset(lv, (S7246C4*)(S8259C5*)(S8259C8*), ABISELECT(148,136), "S8259C3");
    check_base_class_offset(lv, (S8259C5*)(S8259C8*), ABISELECT(148,136), "S8259C3");
    check_base_class_offset(lv, (S8259C8*)(S8259C4*), ABISELECT(148,136), "S8259C3");
    /*is_ambiguous_... S8259C4::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*)(S8259C4*), ABISELECT(16,8), "S8259C3");
    check_base_class_offset(lv, (S8259C4*), ABISELECT(8,4), "S8259C3");
    check_base_class_offset(lv, (S7246C4*)(S8259C9*), ABISELECT(236,224), "S8259C3");
    check_base_class_offset(lv, (S8259C9*), 0, "S8259C3");
    check_base_class_offset(lv, (S4677C37*), 0, "S8259C3");
    test_class_info(&lv, &cd_S8259C3);
    dp->~S8259C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8259C3(Test_S8259C3, "S8259C3", ABISELECT(280,264));

#else // __cplusplus

extern void _ZN7S8259C3C1Ev();
extern void _ZN7S8259C3D1Ev();
Name_Map name_map_S8259C3[] = {
  NSPAIR(_ZN7S8259C3C1Ev),
  NSPAIR(_ZN7S8259C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S8259C5;
extern VTBL_ENTRY _ZTI7S8259C5[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S8259C7;
extern VTBL_ENTRY _ZTI7S8259C7[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S8259C5;
extern VTBL_ENTRY _ZTI7S8259C5[];
extern Class_Descriptor cd_S8259C8;
extern VTBL_ENTRY _ZTI7S8259C8[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S8259C4;
extern VTBL_ENTRY _ZTI7S8259C4[];
extern  VTBL_ENTRY _ZTV7S8259C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8259C4[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S8259C9;
extern VTBL_ENTRY _ZTI7S8259C9[];
extern  VTBL_ENTRY _ZTV7S8259C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8259C9[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
static Base_Class bases_S8259C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(64,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S8259C5,    ABISELECT(64,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(108,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
    3, //immediately_derived
  0, 0},
  {&cd_S8259C7,    ABISELECT(108,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
    8, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(148,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S8259C5,    ABISELECT(148,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S8259C8,    ABISELECT(148,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7246C4,    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_S8259C4,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //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_S7246C4,    ABISELECT(236,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S8259C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8259C3[];
extern void _ZN7S8259C3D1Ev();
extern void _ZN7S8259C3D0Ev();
extern void ABISELECT(_ZTv0_n48_N7S8259C3D1Ev,_ZTv0_n24_N7S8259C3D1Ev)();
extern void ABISELECT(_ZThn8_N7S8259C3D1Ev,_ZThn4_N7S8259C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8259C3D0Ev,_ZTv0_n24_N7S8259C3D0Ev)();
extern void ABISELECT(_ZThn8_N7S8259C3D0Ev,_ZThn4_N7S8259C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S8259C3[] = {
  ABISELECT(148,136),
  ABISELECT(108,96),
  ABISELECT(64,52),
  ABISELECT(8,4),
  ABISELECT(236,224),
  0,
  (VTBL_ENTRY)&(_ZTI7S8259C3[0]),
  (VTBL_ENTRY)&_ZN7S8259C3D1Ev,
  (VTBL_ENTRY)&_ZN7S8259C3D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(140,132),
  ABISELECT(100,92),
  ABISELECT(56,48),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S8259C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8259C3D1Ev,_ZTv0_n24_N7S8259C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8259C3D0Ev,_ZTv0_n24_N7S8259C3D0Ev),
};
extern VTBL_ENTRY _ZTV7S8259C3[];
extern void _ZN7S8259C9D1Ev();
extern void _ZN7S8259C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S8259C9__7S8259C3[] = {
  ABISELECT(236,224),
  0,
  (VTBL_ENTRY)&(_ZTI7S8259C9[0]),
  (VTBL_ENTRY)&_ZN7S8259C9D1Ev,
  (VTBL_ENTRY)&_ZN7S8259C9D0Ev,
};
extern void _ZN7S8259C4D1Ev();
extern void _ZN7S8259C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S8259C4__7S8259C3[] = {
  ABISELECT(140,132),
  ABISELECT(100,92),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S8259C4[0]),
  (VTBL_ENTRY)&_ZN7S8259C4D1Ev,
  (VTBL_ENTRY)&_ZN7S8259C4D0Ev,
};
static  VTT_ENTRY vtt_S8259C3[] = {
  {&(_ZTV7S8259C3[7]),  7,17},
  {&(_tg__ZTV7S8259C9__7S8259C3[3]),  3,5},
  {&(_ZTV7S8259C3[15]),  15,17},
  {&(_tg__ZTV7S8259C4__7S8259C3[5]),  5,7},
};
extern VTBL_ENTRY _ZTI7S8259C3[];
extern  VTBL_ENTRY _ZTV7S8259C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8259C3[];
static VTBL_ENTRY alt_thunk_names113[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8259C3D0Ev,_ZTv0_n24_N7S8259C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S8259C3D0Ev,_ZThn4_N7S8259C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8259C3D1Ev,_ZTv0_n24_N7S8259C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S8259C3D1Ev,_ZThn4_N7S8259C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8259C3 = {  "S8259C3", // class name
  bases_S8259C3, 12,
  &(vtc_S8259C3[0]), // expected_vtbl_contents
  &(vtt_S8259C3[0]), // expected_vtt_contents
  ABISELECT(280,264), // object size
  NSPAIRA(_ZTI7S8259C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S8259C3),17, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S8259C3),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names113,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8259C14  : virtual S7246C4 , virtual S8259C9 {
  virtual  ~S8259C14(); // _ZN8S8259C14D2Ev
  S8259C14(); // tgen
};
//SIG(-1 S8259C14) C1{ VBC2{ m Fi[10]} VBC3{ VBC2 vd} vd}


 S8259C14 ::~S8259C14(){ note_dtor("S8259C14", this);}
S8259C14 ::S8259C14(){ note_ctor("S8259C14", this);} // tgen

static void Test_S8259C14()
{
  extern Class_Descriptor cd_S8259C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S8259C14, buf);
    S8259C14 *dp, &lv = *(dp=new (buf) S8259C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S8259C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8259C14)");
    check_base_class_offset(lv, (S7246C4*), ABISELECT(8,4), "S8259C14");
    check_base_class_offset(lv, (S7246C4*)(S8259C9*), ABISELECT(8,4), "S8259C14");
    check_base_class_offset(lv, (S8259C9*), 0, "S8259C14");
    test_class_info(&lv, &cd_S8259C14);
    dp->~S8259C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8259C14(Test_S8259C14, "S8259C14", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S8259C14C1Ev();
extern void _ZN8S8259C14D2Ev();
Name_Map name_map_S8259C14[] = {
  NSPAIR(_ZN8S8259C14C1Ev),
  NSPAIR(_ZN8S8259C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S8259C9;
extern VTBL_ENTRY _ZTI7S8259C9[];
extern  VTBL_ENTRY _ZTV7S8259C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8259C9[];
static Base_Class bases_S8259C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8259C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S8259C14[];
extern void _ZN8S8259C14D1Ev();
extern void _ZN8S8259C14D0Ev();
static  VTBL_ENTRY vtc_S8259C14[] = {
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S8259C14[0]),
  (VTBL_ENTRY)&_ZN8S8259C14D1Ev,
  (VTBL_ENTRY)&_ZN8S8259C14D0Ev,
};
extern VTBL_ENTRY _ZTV8S8259C14[];
extern void _ZN7S8259C9D1Ev();
extern void _ZN7S8259C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S8259C9__8S8259C14[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S8259C9[0]),
  (VTBL_ENTRY)&_ZN7S8259C9D1Ev,
  (VTBL_ENTRY)&_ZN7S8259C9D0Ev,
};
static  VTT_ENTRY vtt_S8259C14[] = {
  {&(_ZTV8S8259C14[5]),  5,7},
  {&(_ZTV8S8259C14[5]),  5,7},
  {&(_tg__ZTV7S8259C9__8S8259C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S8259C14[];
extern  VTBL_ENTRY _ZTV8S8259C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8259C14[];
Class_Descriptor cd_S8259C14 = {  "S8259C14", // class name
  bases_S8259C14, 2,
  &(vtc_S8259C14[0]), // expected_vtbl_contents
  &(vtt_S8259C14[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S8259C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S8259C14),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8259C14),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  S8259C13  : virtual S8259C9 , S8259C14 {
  long double s8259c13f0;
  ~S8259C13(); // tgen
  S8259C13(); // tgen
};
//SIG(-1 S8259C13) C1{ VBC2{ VBC3{ m Fi[10]} vd} BC4{ VBC3 VBC2 vd} FD}


S8259C13 ::~S8259C13(){ note_dtor("S8259C13", this);} // tgen
S8259C13 ::S8259C13(){ note_ctor("S8259C13", this);} // tgen

static void Test_S8259C13()
{
  extern Class_Descriptor cd_S8259C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,15)];
    init_test(&cd_S8259C13, buf);
    S8259C13 *dp, &lv = *(dp=new (buf) S8259C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,56), "sizeof(S8259C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8259C13)");
    check_base_class_offset(lv, (S7246C4*)(S8259C9*), ABISELECT(32,16), "S8259C13");
    check_base_class_offset(lv, (S7246C4*)(S8259C14*), ABISELECT(32,16), "S8259C13");
    check_base_class_offset(lv, (S8259C9*), 0, "S8259C13");
    check_base_class_offset(lv, (S8259C9*)(S8259C14*), 0, "S8259C13");
    check_base_class_offset(lv, (S8259C14*), 0, "S8259C13");
    check_field_offset(lv, s8259c13f0, ABISELECT(16,4), "S8259C13.s8259c13f0");
    test_class_info(&lv, &cd_S8259C13);
    dp->~S8259C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8259C13(Test_S8259C13, "S8259C13", ABISELECT(80,56));

#else // __cplusplus

extern void _ZN8S8259C13C1Ev();
extern void _ZN8S8259C13D1Ev();
Name_Map name_map_S8259C13[] = {
  NSPAIR(_ZN8S8259C13C1Ev),
  NSPAIR(_ZN8S8259C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S8259C9;
extern VTBL_ENTRY _ZTI7S8259C9[];
extern  VTBL_ENTRY _ZTV7S8259C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8259C9[];
extern Class_Descriptor cd_S8259C14;
extern VTBL_ENTRY _ZTI8S8259C14[];
extern  VTBL_ENTRY _ZTV8S8259C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8259C14[];
static Base_Class bases_S8259C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S8259C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S8259C14,    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 _ZTI8S8259C13[];
extern void _ZN8S8259C13D1Ev();
extern void _ZN8S8259C13D0Ev();
static  VTBL_ENTRY vtc_S8259C13[] = {
  0,
  0,
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S8259C13[0]),
  (VTBL_ENTRY)&_ZN8S8259C13D1Ev,
  (VTBL_ENTRY)&_ZN8S8259C13D0Ev,
};
extern VTBL_ENTRY _ZTV8S8259C13[];
extern void ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev)();
extern void _ZN8S8259C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev)();
extern void _ZN8S8259C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8259C14__8S8259C13[] = {
  0,
  0,
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S8259C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev),
};
extern void _ZN7S8259C9D1Ev();
extern void _ZN7S8259C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S8259C9__8S8259C13[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S8259C9[0]),
  (VTBL_ENTRY)&_ZN7S8259C9D1Ev,
  (VTBL_ENTRY)&_ZN7S8259C9D0Ev,
};
static  VTT_ENTRY vtt_S8259C13[] = {
  {&(_ZTV8S8259C13[5]),  5,7},
  {&(_tg__ZTV8S8259C14__8S8259C13[5]),  5,7},
  {&(_tg__ZTV8S8259C14__8S8259C13[5]),  5,7},
  {&(_ZTV8S8259C13[5]),  5,7},
  {&(_tg__ZTV7S8259C9__8S8259C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S8259C13[];
extern  VTBL_ENTRY _ZTV8S8259C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8259C13[];
static VTBL_ENTRY alt_thunk_names114[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev), // 
  (VTBL_ENTRY)_ZN8S8259C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev), // 
  (VTBL_ENTRY)_ZN8S8259C14D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8259C13 = {  "S8259C13", // class name
  bases_S8259C13, 3,
  &(vtc_S8259C13[0]), // expected_vtbl_contents
  &(vtt_S8259C13[0]), // expected_vtt_contents
  ABISELECT(80,56), // object size
  NSPAIRA(_ZTI8S8259C13),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S8259C13),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8259C13),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names114,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8259C12  : S8259C13 , virtual S8259C14 , S8259C5 {
  char s8259c12f0;
  virtual  ~S8259C12(); // _ZN8S8259C12D2Ev
  S8259C12(); // tgen
};
//SIG(-1 S8259C12) C1{ BC2{ VBC3{ VBC4{ m Fi[10]} vd} BC5{ VBC4 VBC3 vd} FD} VBC5 BC6{ BC4 Fi} vd Fc}


 S8259C12 ::~S8259C12(){ note_dtor("S8259C12", this);}
S8259C12 ::S8259C12(){ note_ctor("S8259C12", this);} // tgen

static void Test_S8259C12()
{
  extern Class_Descriptor cd_S8259C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,28)];
    init_test(&cd_S8259C12, buf);
    S8259C12 *dp, &lv = *(dp=new (buf) S8259C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,108), "sizeof(S8259C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8259C12)");
    check_base_class_offset(lv, (S7246C4*)(S8259C9*), ABISELECT(80,64), "S8259C12");
    check_base_class_offset(lv, (S7246C4*)(S8259C14*)(S8259C13*), ABISELECT(80,64), "S8259C12");
    /*is_ambiguous_... S8259C12::S8259C14 */ AMB_check_base_class_offset(lv, (S7246C4*)(S8259C14*), ABISELECT(80,64), "S8259C12");
    check_base_class_offset(lv, (S8259C9*)(S8259C13*), 0, "S8259C12");
    check_base_class_offset(lv, (S8259C9*)(S8259C14*)(S8259C13*), 0, "S8259C12");
    /*is_ambiguous_... S8259C12::S8259C14 */ AMB_check_base_class_offset(lv, (S8259C9*)(S8259C14*), 0, "S8259C12");
    check_base_class_offset(lv, (S8259C14*)(S8259C13*), 0, "S8259C12");
    check_base_class_offset(lv, (S8259C13*), 0, "S8259C12");
    /*is_ambiguous_... S8259C12::S8259C14 */ AMB_check_base_class_offset(lv, (S8259C14*), ABISELECT(120,104), "S8259C12");
    check_base_class_offset(lv, (S7246C4*)(S8259C5*), ABISELECT(32,16), "S8259C12");
    check_base_class_offset(lv, (S8259C5*), ABISELECT(32,16), "S8259C12");
    check_field_offset(lv, s8259c12f0, ABISELECT(76,60), "S8259C12.s8259c12f0");
    test_class_info(&lv, &cd_S8259C12);
    dp->~S8259C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8259C12(Test_S8259C12, "S8259C12", ABISELECT(128,108));

#else // __cplusplus

extern void _ZN8S8259C12C1Ev();
extern void _ZN8S8259C12D2Ev();
Name_Map name_map_S8259C12[] = {
  NSPAIR(_ZN8S8259C12C1Ev),
  NSPAIR(_ZN8S8259C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S8259C9;
extern VTBL_ENTRY _ZTI7S8259C9[];
extern  VTBL_ENTRY _ZTV7S8259C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8259C9[];
extern Class_Descriptor cd_S8259C14;
extern VTBL_ENTRY _ZTI8S8259C14[];
extern  VTBL_ENTRY _ZTV8S8259C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8259C14[];
extern Class_Descriptor cd_S8259C13;
extern VTBL_ENTRY _ZTI8S8259C13[];
extern  VTBL_ENTRY _ZTV8S8259C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8259C13[];
extern Class_Descriptor cd_S8259C14;
extern VTBL_ENTRY _ZTI8S8259C14[];
extern  VTBL_ENTRY _ZTV8S8259C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8259C14[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S8259C5;
extern VTBL_ENTRY _ZTI7S8259C5[];
static Base_Class bases_S8259C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(80,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S8259C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S8259C14,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S8259C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8259C14,    ABISELECT(120,104), //bcp->offset
    8, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    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_S8259C5,    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},
  {0}};
extern VTBL_ENTRY _ZTI8S8259C12[];
extern void _ZN8S8259C12D1Ev();
extern void _ZN8S8259C12D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S8259C12D1Ev,_ZTv0_n16_N8S8259C12D1Ev)();
extern void ABISELECT(_ZThn120_N8S8259C12D1Ev,_ZThn104_N8S8259C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8259C12D0Ev,_ZTv0_n16_N8S8259C12D0Ev)();
extern void ABISELECT(_ZThn120_N8S8259C12D0Ev,_ZThn104_N8S8259C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S8259C12[] = {
  ABISELECT(120,104),
  0,
  0,
  ABISELECT(80,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S8259C12[0]),
  (VTBL_ENTRY)&_ZN8S8259C12D1Ev,
  (VTBL_ENTRY)&_ZN8S8259C12D0Ev,
  ABISELECT(-120,-104),
  ABISELECT(-120,-104),
  -40,
  ABISELECT(-120,-104),
  (VTBL_ENTRY)&(_ZTI8S8259C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C12D1Ev,_ZTv0_n16_N8S8259C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C12D0Ev,_ZTv0_n16_N8S8259C12D0Ev),
};
extern VTBL_ENTRY _ZTV8S8259C12[];
extern void _ZN8S8259C13D1Ev();
extern void _ZN8S8259C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8259C13__8S8259C12[] = {
  0,
  0,
  ABISELECT(80,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S8259C13[0]),
  (VTBL_ENTRY)&_ZN8S8259C13D1Ev,
  (VTBL_ENTRY)&_ZN8S8259C13D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev)();
extern void _ZN8S8259C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev)();
extern void _ZN8S8259C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8259C148S8259C13__8S8259C12[] = {
  0,
  0,
  ABISELECT(80,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S8259C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev),
};
extern void _ZN7S8259C9D1Ev();
extern void _ZN7S8259C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S8259C9__8S8259C12[] = {
  ABISELECT(80,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S8259C9[0]),
  (VTBL_ENTRY)&_ZN7S8259C9D1Ev,
  (VTBL_ENTRY)&_ZN7S8259C9D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev)();
extern void _ZN8S8259C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev)();
extern void _ZN8S8259C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8259C14__A1__8S8259C12[] = {
  ABISELECT(-120,-104),
  0,
  -40,
  0,
  (VTBL_ENTRY)&(_ZTI8S8259C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8259C9__8S8259C14__A1__8S8259C12[] = {
  ABISELECT(120,104),
  ABISELECT(80,64),
  ABISELECT(120,104),
  (VTBL_ENTRY)&(_ZTI8S8259C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev),
};
static  VTT_ENTRY vtt_S8259C12[] = {
  {&(_ZTV8S8259C12[6]),  6,15},
  {&(_tg__ZTV8S8259C13__8S8259C12[5]),  5,7},
  {&(_tg__ZTV8S8259C148S8259C13__8S8259C12[5]),  5,7},
  {&(_tg__ZTV8S8259C148S8259C13__8S8259C12[5]),  5,7},
  {&(_tg__ZTV8S8259C13__8S8259C12[5]),  5,7},
  {&(_ZTV8S8259C12[6]),  6,15},
  {&(_ZTV8S8259C12[13]),  13,15},
  {&(_tg__ZTV7S8259C9__8S8259C12[3]),  3,5},
  {&(_tg__ZTV8S8259C14__A1__8S8259C12[5]),  5,7},
  {&(_tg__ZTV7S8259C9__8S8259C14__A1__8S8259C12[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S8259C12[];
extern  VTBL_ENTRY _ZTV8S8259C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8259C12[];
static VTBL_ENTRY alt_thunk_names115[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev), // 
  (VTBL_ENTRY)_ZN8S8259C14D0Ev,
  (VTBL_ENTRY)_ZN8S8259C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev), // 
  (VTBL_ENTRY)_ZN8S8259C14D1Ev,
  (VTBL_ENTRY)_ZN8S8259C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8259C12D0Ev,_ZTv0_n16_N8S8259C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S8259C12D0Ev,_ZThn104_N8S8259C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8259C12D1Ev,_ZTv0_n16_N8S8259C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S8259C12D1Ev,_ZThn104_N8S8259C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8259C12 = {  "S8259C12", // class name
  bases_S8259C12, 7,
  &(vtc_S8259C12[0]), // expected_vtbl_contents
  &(vtt_S8259C12[0]), // expected_vtt_contents
  ABISELECT(128,108), // object size
  NSPAIRA(_ZTI8S8259C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S8259C12),15, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8259C12),10, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names115,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8259C15  : S7246C4 , S8259C7 , virtual S8259C14 , S8259C5 {
  ~S8259C15(); // tgen
  S8259C15(); // tgen
};
//SIG(-1 S8259C15) C1{ BC2{ m Fi[10]} BC3{ BC2} VBC4{ VBC2 VBC5{ VBC2 vd} vd} BC6{ BC2 Fi}}


S8259C15 ::~S8259C15(){ note_dtor("S8259C15", this);} // tgen
S8259C15 ::S8259C15(){ note_ctor("S8259C15", this);} // tgen

static void Test_S8259C15()
{
  extern Class_Descriptor cd_S8259C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,43)];
    init_test(&cd_S8259C15, buf);
    S8259C15 *dp, &lv = *(dp=new (buf) S8259C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,168), "sizeof(S8259C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8259C15)");
    /*is_ambiguous_... S8259C15::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*), ABISELECT(8,4), "S8259C15");
    check_base_class_offset(lv, (S7246C4*)(S8259C7*), ABISELECT(48,44), "S8259C15");
    check_base_class_offset(lv, (S8259C7*), ABISELECT(48,44), "S8259C15");
    check_base_class_offset(lv, (S7246C4*)(S8259C14*), ABISELECT(132,128), "S8259C15");
    check_base_class_offset(lv, (S7246C4*)(S8259C9*), ABISELECT(132,128), "S8259C15");
    check_base_class_offset(lv, (S8259C9*)(S8259C14*), 0, "S8259C15");
    check_base_class_offset(lv, (S8259C14*), 0, "S8259C15");
    check_base_class_offset(lv, (S7246C4*)(S8259C5*), ABISELECT(88,84), "S8259C15");
    check_base_class_offset(lv, (S8259C5*), ABISELECT(88,84), "S8259C15");
    test_class_info(&lv, &cd_S8259C15);
    dp->~S8259C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8259C15(Test_S8259C15, "S8259C15", ABISELECT(176,168));

#else // __cplusplus

extern void _ZN8S8259C15C1Ev();
extern void _ZN8S8259C15D1Ev();
Name_Map name_map_S8259C15[] = {
  NSPAIR(_ZN8S8259C15C1Ev),
  NSPAIR(_ZN8S8259C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S8259C7;
extern VTBL_ENTRY _ZTI7S8259C7[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S8259C9;
extern VTBL_ENTRY _ZTI7S8259C9[];
extern  VTBL_ENTRY _ZTV7S8259C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8259C9[];
extern Class_Descriptor cd_S8259C14;
extern VTBL_ENTRY _ZTI8S8259C14[];
extern  VTBL_ENTRY _ZTV8S8259C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8259C14[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S8259C5;
extern VTBL_ENTRY _ZTI7S8259C5[];
static Base_Class bases_S8259C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7246C4,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S8259C7,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7246C4,    ABISELECT(132,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
    4, //immediately_derived
  0, 1},
  {&cd_S8259C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //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_S8259C14,    0, //bcp->offset
    -1, //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},
  {&cd_S7246C4,    ABISELECT(88,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
    7, //immediately_derived
  0, 0},
  {&cd_S8259C5,    ABISELECT(88,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S8259C15[];
extern void _ZN8S8259C15D1Ev();
extern void _ZN8S8259C15D0Ev();
static  VTBL_ENTRY vtc_S8259C15[] = {
  0,
  0,
  0,
  ABISELECT(132,128),
  0,
  (VTBL_ENTRY)&(_ZTI8S8259C15[0]),
  (VTBL_ENTRY)&_ZN8S8259C15D1Ev,
  (VTBL_ENTRY)&_ZN8S8259C15D0Ev,
};
extern VTBL_ENTRY _ZTV8S8259C15[];
extern void ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev)();
extern void _ZN8S8259C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev)();
extern void _ZN8S8259C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8259C14__8S8259C15[] = {
  0,
  0,
  ABISELECT(132,128),
  0,
  (VTBL_ENTRY)&(_ZTI8S8259C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev),
};
extern void _ZN7S8259C9D1Ev();
extern void _ZN7S8259C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S8259C9__8S8259C15[] = {
  ABISELECT(132,128),
  0,
  (VTBL_ENTRY)&(_ZTI7S8259C9[0]),
  (VTBL_ENTRY)&_ZN7S8259C9D1Ev,
  (VTBL_ENTRY)&_ZN7S8259C9D0Ev,
};
static  VTT_ENTRY vtt_S8259C15[] = {
  {&(_ZTV8S8259C15[6]),  6,8},
  {&(_ZTV8S8259C15[6]),  6,8},
  {&(_ZTV8S8259C15[6]),  6,8},
  {&(_tg__ZTV8S8259C14__8S8259C15[5]),  5,7},
  {&(_tg__ZTV8S8259C14__8S8259C15[5]),  5,7},
  {&(_tg__ZTV7S8259C9__8S8259C15[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S8259C15[];
extern  VTBL_ENTRY _ZTV8S8259C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8259C15[];
static VTBL_ENTRY alt_thunk_names116[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev), // 
  (VTBL_ENTRY)_ZN8S8259C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev), // 
  (VTBL_ENTRY)_ZN8S8259C14D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8259C15 = {  "S8259C15", // class name
  bases_S8259C15, 8,
  &(vtc_S8259C15[0]), // expected_vtbl_contents
  &(vtt_S8259C15[0]), // expected_vtt_contents
  ABISELECT(176,168), // object size
  NSPAIRA(_ZTI8S8259C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S8259C15),8, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8259C15),6, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names116,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8259C16  : S8259C14 {
  __tsi64 s8259c16f0;
  virtual  ~S8259C16(); // _ZN8S8259C16D2Ev
  virtual void  v1(); // _ZN8S8259C162v1Ev
  S8259C16(); // tgen
};
//SIG(-1 S8259C16) C1{ BC2{ VBC3{ m Fi[10]} VBC4{ VBC3 vd} vd} vd v1 FL}


 S8259C16 ::~S8259C16(){ note_dtor("S8259C16", this);}
void  S8259C16 ::v1(){vfunc_called(this, "_ZN8S8259C162v1Ev");}
S8259C16 ::S8259C16(){ note_ctor("S8259C16", this);} // tgen

static void Test_S8259C16()
{
  extern Class_Descriptor cd_S8259C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,14)];
    init_test(&cd_S8259C16, buf);
    S8259C16 *dp, &lv = *(dp=new (buf) S8259C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,52), "sizeof(S8259C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8259C16)");
    check_base_class_offset(lv, (S7246C4*)(S8259C14*), ABISELECT(16,12), "S8259C16");
    check_base_class_offset(lv, (S7246C4*)(S8259C9*), ABISELECT(16,12), "S8259C16");
    check_base_class_offset(lv, (S8259C9*)(S8259C14*), 0, "S8259C16");
    check_base_class_offset(lv, (S8259C14*), 0, "S8259C16");
    check_field_offset(lv, s8259c16f0, ABISELECT(8,4), "S8259C16.s8259c16f0");
    test_class_info(&lv, &cd_S8259C16);
    dp->~S8259C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8259C16(Test_S8259C16, "S8259C16", ABISELECT(56,52));

#else // __cplusplus

extern void _ZN8S8259C16C1Ev();
extern void _ZN8S8259C16D2Ev();
Name_Map name_map_S8259C16[] = {
  NSPAIR(_ZN8S8259C16C1Ev),
  NSPAIR(_ZN8S8259C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S8259C9;
extern VTBL_ENTRY _ZTI7S8259C9[];
extern  VTBL_ENTRY _ZTV7S8259C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8259C9[];
extern Class_Descriptor cd_S8259C14;
extern VTBL_ENTRY _ZTI8S8259C14[];
extern  VTBL_ENTRY _ZTV8S8259C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8259C14[];
static Base_Class bases_S8259C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S8259C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S8259C14,    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 _ZTI8S8259C16[];
extern void _ZN8S8259C16D1Ev();
extern void _ZN8S8259C16D0Ev();
extern void _ZN8S8259C162v1Ev();
static  VTBL_ENTRY vtc_S8259C16[] = {
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S8259C16[0]),
  (VTBL_ENTRY)&_ZN8S8259C16D1Ev,
  (VTBL_ENTRY)&_ZN8S8259C16D0Ev,
  (VTBL_ENTRY)&_ZN8S8259C162v1Ev,
};
extern VTBL_ENTRY _ZTV8S8259C16[];
extern void _ZN8S8259C14D1Ev();
extern void _ZN8S8259C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8259C14__8S8259C16[] = {
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S8259C14[0]),
  (VTBL_ENTRY)&_ZN8S8259C14D1Ev,
  (VTBL_ENTRY)&_ZN8S8259C14D0Ev,
};
extern void _ZN7S8259C9D1Ev();
extern void _ZN7S8259C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S8259C9__8S8259C16[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S8259C9[0]),
  (VTBL_ENTRY)&_ZN7S8259C9D1Ev,
  (VTBL_ENTRY)&_ZN7S8259C9D0Ev,
};
static  VTT_ENTRY vtt_S8259C16[] = {
  {&(_ZTV8S8259C16[5]),  5,8},
  {&(_tg__ZTV8S8259C14__8S8259C16[5]),  5,7},
  {&(_tg__ZTV8S8259C14__8S8259C16[5]),  5,7},
  {&(_ZTV8S8259C16[5]),  5,8},
  {&(_tg__ZTV7S8259C9__8S8259C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S8259C16[];
extern  VTBL_ENTRY _ZTV8S8259C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8259C16[];
Class_Descriptor cd_S8259C16 = {  "S8259C16", // class name
  bases_S8259C16, 3,
  &(vtc_S8259C16[0]), // expected_vtbl_contents
  &(vtt_S8259C16[0]), // expected_vtt_contents
  ABISELECT(56,52), // object size
  NSPAIRA(_ZTI8S8259C16),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S8259C16),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8259C16),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  S8259C11  : virtual S4677C37 , S8259C12 , S8259C15 , S8259C14 , virtual S8259C16 {
  short s8259c11f0:7;
  ~S8259C11(); // tgen
  S8259C11(); // tgen
};
//SIG(-1 S8259C11) C1{ VBC2{ m} BC3{ BC4{ VBC5{ VBC6{ m Fi[10]} vd} BC7{ VBC6 VBC5 vd} FD} VBC7 BC8{ BC6 Fi} vd Fc} BC9{ BC6 BC10{ BC6} VBC7 BC8} BC7 VBC11{ BC7 vd v1 FL} Fs:7}


S8259C11 ::~S8259C11(){ note_dtor("S8259C11", this);} // tgen
S8259C11 ::S8259C11(){ note_ctor("S8259C11", this);} // tgen

static void Test_S8259C11()
{
  extern Class_Descriptor cd_S8259C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(19,64)];
    init_test(&cd_S8259C11, buf);
    S8259C11 *dp, &lv = *(dp=new (buf) S8259C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,252), "sizeof(S8259C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8259C11)");
    check_base_class_offset(lv, (S4677C37*), 0, "S8259C11");
    check_base_class_offset(lv, (S7246C4*)(S8259C9*), ABISELECT(228,200), "S8259C11");
    check_base_class_offset(lv, (S7246C4*)(S8259C14*)(S8259C13*)(S8259C12*), ABISELECT(228,200), "S8259C11");
    /*is_ambiguous_... S8259C11::S8259C14 */ AMB_check_base_class_offset(lv, (S7246C4*)(S8259C14*), ABISELECT(228,200), "S8259C11");
    /*is_ambiguous_... S8259C11::S8259C14 */ AMB_check_base_class_offset(lv, (S7246C4*)(S8259C14*), ABISELECT(228,200), "S8259C11");
    check_base_class_offset(lv, (S7246C4*)(S8259C14*)(S8259C16*), ABISELECT(228,200), "S8259C11");
    check_base_class_offset(lv, (S8259C9*)(S8259C13*)(S8259C12*), 0, "S8259C11");
    check_base_class_offset(lv, (S8259C9*)(S8259C14*)(S8259C13*)(S8259C12*), 0, "S8259C11");
    /*is_ambiguous_... S8259C11::S8259C14 */ AMB_check_base_class_offset(lv, (S8259C9*)(S8259C14*), 0, "S8259C11");
    /*is_ambiguous_... S8259C11::S8259C14 */ AMB_check_base_class_offset(lv, (S8259C9*)(S8259C14*), 0, "S8259C11");
    check_base_class_offset(lv, (S8259C9*)(S8259C14*)(S8259C16*), 0, "S8259C11");
    check_base_class_offset(lv, (S8259C14*)(S8259C13*)(S8259C12*), 0, "S8259C11");
    check_base_class_offset(lv, (S8259C13*)(S8259C12*), 0, "S8259C11");
    /*is_ambiguous_... S8259C12::S8259C14 */ AMB_check_base_class_offset(lv, (S8259C14*)(S8259C12*), ABISELECT(80,64), "S8259C11");
    check_base_class_offset(lv, (S8259C14*)(S8259C15*), ABISELECT(80,64), "S8259C11");
    check_base_class_offset(lv, (S7246C4*)(S8259C5*)(S8259C12*), ABISELECT(32,16), "S8259C11");
    check_base_class_offset(lv, (S8259C5*)(S8259C12*), ABISELECT(32,16), "S8259C11");
    check_base_class_offset(lv, (S8259C12*), 0, "S8259C11");
    /*is_ambiguous_... S8259C15::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*)(S8259C15*), ABISELECT(88,68), "S8259C11");
    check_base_class_offset(lv, (S7246C4*)(S8259C7*)(S8259C15*), ABISELECT(128,108), "S8259C11");
    check_base_class_offset(lv, (S8259C7*)(S8259C15*), ABISELECT(128,108), "S8259C11");
    check_base_class_offset(lv, (S7246C4*)(S8259C5*)(S8259C15*), ABISELECT(168,148), "S8259C11");
    check_base_class_offset(lv, (S8259C5*)(S8259C15*), ABISELECT(168,148), "S8259C11");
    check_base_class_offset(lv, (S8259C15*), ABISELECT(80,64), "S8259C11");
    /*is_ambiguous_... S8259C11::S8259C14 */ AMB_check_base_class_offset(lv, (S8259C14*), ABISELECT(216,192), "S8259C11");
    check_base_class_offset(lv, (S8259C14*)(S8259C16*), ABISELECT(272,240), "S8259C11");
    check_base_class_offset(lv, (S8259C16*), ABISELECT(272,240), "S8259C11");
    set_bf_and_test(lv, s8259c11f0, ABISELECT(224,196), 0, 7, 1, "S8259C11");
    set_bf_and_test(lv, s8259c11f0, ABISELECT(224,196), 0, 7, hide_sll(1LL<<6), "S8259C11");
    test_class_info(&lv, &cd_S8259C11);
    dp->~S8259C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8259C11(Test_S8259C11, "S8259C11", ABISELECT(288,252));

#else // __cplusplus

extern void _ZN8S8259C11C1Ev();
extern void _ZN8S8259C11D1Ev();
Name_Map name_map_S8259C11[] = {
  NSPAIR(_ZN8S8259C11C1Ev),
  NSPAIR(_ZN8S8259C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S8259C9;
extern VTBL_ENTRY _ZTI7S8259C9[];
extern  VTBL_ENTRY _ZTV7S8259C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8259C9[];
extern Class_Descriptor cd_S8259C14;
extern VTBL_ENTRY _ZTI8S8259C14[];
extern  VTBL_ENTRY _ZTV8S8259C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8259C14[];
extern Class_Descriptor cd_S8259C13;
extern VTBL_ENTRY _ZTI8S8259C13[];
extern  VTBL_ENTRY _ZTV8S8259C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8259C13[];
extern Class_Descriptor cd_S8259C14;
extern VTBL_ENTRY _ZTI8S8259C14[];
extern  VTBL_ENTRY _ZTV8S8259C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8259C14[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S8259C5;
extern VTBL_ENTRY _ZTI7S8259C5[];
extern Class_Descriptor cd_S8259C12;
extern VTBL_ENTRY _ZTI8S8259C12[];
extern  VTBL_ENTRY _ZTV8S8259C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8259C12[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S8259C7;
extern VTBL_ENTRY _ZTI7S8259C7[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S8259C5;
extern VTBL_ENTRY _ZTI7S8259C5[];
extern Class_Descriptor cd_S8259C15;
extern VTBL_ENTRY _ZTI8S8259C15[];
extern  VTBL_ENTRY _ZTV8S8259C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8259C15[];
extern Class_Descriptor cd_S8259C14;
extern VTBL_ENTRY _ZTI8S8259C14[];
extern  VTBL_ENTRY _ZTV8S8259C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8259C14[];
extern Class_Descriptor cd_S8259C14;
extern VTBL_ENTRY _ZTI8S8259C14[];
extern  VTBL_ENTRY _ZTV8S8259C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8259C14[];
extern Class_Descriptor cd_S8259C16;
extern VTBL_ENTRY _ZTI8S8259C16[];
extern  VTBL_ENTRY _ZTV8S8259C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8259C16[];
static Base_Class bases_S8259C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(228,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S8259C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S8259C14,    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
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S8259C13,    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
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S8259C14,    ABISELECT(80,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S8259C5,    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_S8259C12,    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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7246C4,    ABISELECT(88,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7246C4,    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
    11, //immediately_derived
  0, 0},
  {&cd_S8259C7,    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
    14, //immediately_derived
  0, 0},
  {&cd_S7246C4,    ABISELECT(168,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
    13, //immediately_derived
  0, 0},
  {&cd_S8259C5,    ABISELECT(168,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S8259C15,    ABISELECT(80,64), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8259C14,    ABISELECT(216,192), //bcp->offset
    18, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8259C14,    ABISELECT(272,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S8259C16,    ABISELECT(272,240), //bcp->offset
    25, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S8259C11[];
extern void _ZN8S8259C11D1Ev();
extern void _ZN8S8259C11D0Ev();
extern void ABISELECT(_ZThn80_N8S8259C11D1Ev,_ZThn64_N8S8259C11D1Ev)();
extern void ABISELECT(_ZThn80_N8S8259C11D0Ev,_ZThn64_N8S8259C11D0Ev)();
extern void ABISELECT(_ZThn216_N8S8259C11D1Ev,_ZThn192_N8S8259C11D1Ev)();
extern void ABISELECT(_ZThn216_N8S8259C11D0Ev,_ZThn192_N8S8259C11D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8259C11D1Ev,_ZTv0_n16_N8S8259C11D1Ev)();
extern void ABISELECT(_ZThn272_N8S8259C11D1Ev,_ZThn240_N8S8259C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8259C11D0Ev,_ZTv0_n16_N8S8259C11D0Ev)();
extern void ABISELECT(_ZThn272_N8S8259C11D0Ev,_ZThn240_N8S8259C11D0Ev)() __attribute__((weak));
extern void _ZN8S8259C162v1Ev();
static  VTBL_ENTRY vtc_S8259C11[] = {
  ABISELECT(272,240),
  0,
  ABISELECT(80,64),
  0,
  0,
  ABISELECT(228,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S8259C11[0]),
  (VTBL_ENTRY)&_ZN8S8259C11D1Ev,
  (VTBL_ENTRY)&_ZN8S8259C11D0Ev,
  0,
  ABISELECT(-80,-64),
  ABISELECT(-80,-64),
  ABISELECT(148,136),
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI8S8259C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S8259C11D1Ev,_ZThn64_N8S8259C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S8259C11D0Ev,_ZThn64_N8S8259C11D0Ev),
  ABISELECT(-216,-192),
  ABISELECT(-216,-192),
  ABISELECT(12,8),
  ABISELECT(-216,-192),
  (VTBL_ENTRY)&(_ZTI8S8259C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn216_N8S8259C11D1Ev,_ZThn192_N8S8259C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn216_N8S8259C11D0Ev,_ZThn192_N8S8259C11D0Ev),
  0,
  ABISELECT(-272,-240),
  ABISELECT(-272,-240),
  ABISELECT(-44,-40),
  ABISELECT(-272,-240),
  (VTBL_ENTRY)&(_ZTI8S8259C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C11D1Ev,_ZTv0_n16_N8S8259C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C11D0Ev,_ZTv0_n16_N8S8259C11D0Ev),
  (VTBL_ENTRY)&_ZN8S8259C162v1Ev,
};
extern VTBL_ENTRY _ZTV8S8259C11[];
extern void _ZN8S8259C12D1Ev();
extern void _ZN8S8259C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8259C12__8S8259C11[] = {
  ABISELECT(80,64),
  0,
  0,
  ABISELECT(228,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S8259C12[0]),
  (VTBL_ENTRY)&_ZN8S8259C12D1Ev,
  (VTBL_ENTRY)&_ZN8S8259C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8259C13D1Ev,_ZTv0_n16_N8S8259C13D1Ev)();
extern void _ZN8S8259C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8259C13D0Ev,_ZTv0_n16_N8S8259C13D0Ev)();
extern void _ZN8S8259C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8259C138S8259C12__8S8259C11[] = {
  0,
  0,
  ABISELECT(228,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S8259C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C13D1Ev,_ZTv0_n16_N8S8259C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C13D0Ev,_ZTv0_n16_N8S8259C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev)();
extern void _ZN8S8259C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev)();
extern void _ZN8S8259C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8259C148S8259C138S8259C12__8S8259C11[] = {
  0,
  0,
  ABISELECT(228,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S8259C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8259C12D1Ev,_ZTv0_n16_N8S8259C12D1Ev)();
extern void ABISELECT(_ZThn80_N8S8259C12D1Ev,_ZThn64_N8S8259C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8259C12D0Ev,_ZTv0_n16_N8S8259C12D0Ev)();
extern void ABISELECT(_ZThn80_N8S8259C12D0Ev,_ZThn64_N8S8259C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8259C14__A1__8S8259C12__8S8259C11[] = {
  ABISELECT(-80,-64),
  ABISELECT(-80,-64),
  ABISELECT(148,136),
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI8S8259C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C12D1Ev,_ZTv0_n16_N8S8259C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C12D0Ev,_ZTv0_n16_N8S8259C12D0Ev),
};
extern void _ZN8S8259C15D1Ev();
extern void _ZN8S8259C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8259C15__8S8259C11[] = {
  0,
  ABISELECT(-80,-64),
  0,
  ABISELECT(148,136),
  0,
  (VTBL_ENTRY)&(_ZTI8S8259C15[0]),
  (VTBL_ENTRY)&_ZN8S8259C15D1Ev,
  (VTBL_ENTRY)&_ZN8S8259C15D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8259C15D1Ev,_ZTv0_n16_N8S8259C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8259C15D0Ev,_ZTv0_n16_N8S8259C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8259C9__8S8259C15__8S8259C11[] = {
  ABISELECT(80,64),
  ABISELECT(228,200),
  ABISELECT(80,64),
  (VTBL_ENTRY)&(_ZTI8S8259C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C15D1Ev,_ZTv0_n16_N8S8259C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C15D0Ev,_ZTv0_n16_N8S8259C15D0Ev),
};
extern void _ZN8S8259C14D1Ev();
extern void _ZN8S8259C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S8259C14__A__8S8259C11[] = {
  ABISELECT(-216,-192),
  0,
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S8259C14[0]),
  (VTBL_ENTRY)&_ZN8S8259C14D1Ev,
  (VTBL_ENTRY)&_ZN8S8259C14D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8259C9__8S8259C14__A__8S8259C11[] = {
  ABISELECT(216,192),
  ABISELECT(228,200),
  ABISELECT(216,192),
  (VTBL_ENTRY)&(_ZTI8S8259C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev),
};
extern void _ZN7S8259C9D1Ev();
extern void _ZN7S8259C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S8259C9__8S8259C11[] = {
  ABISELECT(228,200),
  0,
  (VTBL_ENTRY)&(_ZTI7S8259C9[0]),
  (VTBL_ENTRY)&_ZN7S8259C9D1Ev,
  (VTBL_ENTRY)&_ZN7S8259C9D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev)();
extern void _ZN8S8259C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev)();
extern void _ZN8S8259C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8259C14__A1__8S8259C11[] = {
  ABISELECT(-80,-64),
  0,
  ABISELECT(148,136),
  0,
  (VTBL_ENTRY)&(_ZTI8S8259C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8259C9__8S8259C14__A1__8S8259C11[] = {
  ABISELECT(80,64),
  ABISELECT(228,200),
  ABISELECT(80,64),
  (VTBL_ENTRY)&(_ZTI8S8259C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8259C16D1Ev,_ZTv0_n16_N8S8259C16D1Ev)();
extern void _ZN8S8259C16D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8259C16D0Ev,_ZTv0_n16_N8S8259C16D0Ev)();
extern void _ZN8S8259C16D0Ev() __attribute__((weak));
extern void _ZN8S8259C162v1Ev();
static  VTBL_ENTRY _tg__ZTV8S8259C16__8S8259C11[] = {
  ABISELECT(-272,-240),
  0,
  ABISELECT(-44,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S8259C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C16D1Ev,_ZTv0_n16_N8S8259C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C16D0Ev,_ZTv0_n16_N8S8259C16D0Ev),
  (VTBL_ENTRY)&_ZN8S8259C162v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev)();
extern void _ZN8S8259C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev)();
extern void _ZN8S8259C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8259C148S8259C16__A3__8S8259C11[] = {
  ABISELECT(-272,-240),
  0,
  ABISELECT(-44,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S8259C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8259C9__8S8259C148S8259C16__A3__8S8259C11[] = {
  ABISELECT(272,240),
  ABISELECT(228,200),
  ABISELECT(272,240),
  (VTBL_ENTRY)&(_ZTI8S8259C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8259C16D1Ev,_ZTv0_n16_N8S8259C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8259C16D0Ev,_ZTv0_n16_N8S8259C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8259C9__8S8259C16__8S8259C11[] = {
  ABISELECT(272,240),
  ABISELECT(228,200),
  ABISELECT(272,240),
  (VTBL_ENTRY)&(_ZTI8S8259C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C16D1Ev,_ZTv0_n16_N8S8259C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C16D0Ev,_ZTv0_n16_N8S8259C16D0Ev),
};
static  VTT_ENTRY vtt_S8259C11[] = {
  {&(_ZTV8S8259C11[8]),  8,34},
  {&(_tg__ZTV8S8259C12__8S8259C11[6]),  6,8},
  {&(_tg__ZTV8S8259C138S8259C12__8S8259C11[5]),  5,7},
  {&(_tg__ZTV8S8259C148S8259C138S8259C12__8S8259C11[5]),  5,7},
  {&(_tg__ZTV8S8259C148S8259C138S8259C12__8S8259C11[5]),  5,7},
  {&(_tg__ZTV8S8259C138S8259C12__8S8259C11[5]),  5,7},
  {&(_tg__ZTV8S8259C12__8S8259C11[6]),  6,8},
  {&(_tg__ZTV8S8259C14__A1__8S8259C12__8S8259C11[5]),  5,7},
  {&(_tg__ZTV8S8259C15__8S8259C11[6]),  6,8},
  {&(_tg__ZTV8S8259C15__8S8259C11[6]),  6,8},
  {&(_tg__ZTV7S8259C9__8S8259C15__8S8259C11[4]),  4,6},
  {&(_tg__ZTV8S8259C14__A__8S8259C11[5]),  5,7},
  {&(_tg__ZTV7S8259C9__8S8259C14__A__8S8259C11[4]),  4,6},
  {&(_ZTV8S8259C11[8]),  8,34},
  {&(_ZTV8S8259C11[16]),  16,34},
  {&(_ZTV8S8259C11[16]),  16,34},
  {&(_ZTV8S8259C11[23]),  23,34},
  {&(_ZTV8S8259C11[31]),  31,34},
  {&(_tg__ZTV7S8259C9__8S8259C11[3]),  3,5},
  {&(_tg__ZTV8S8259C14__A1__8S8259C11[5]),  5,7},
  {&(_tg__ZTV7S8259C9__8S8259C14__A1__8S8259C11[4]),  4,6},
  {&(_tg__ZTV8S8259C16__8S8259C11[5]),  5,8},
  {&(_tg__ZTV8S8259C148S8259C16__A3__8S8259C11[5]),  5,7},
  {&(_tg__ZTV7S8259C9__8S8259C148S8259C16__A3__8S8259C11[4]),  4,6},
  {&(_tg__ZTV7S8259C9__8S8259C16__8S8259C11[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S8259C11[];
extern  VTBL_ENTRY _ZTV8S8259C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8259C11[];
static VTBL_ENTRY alt_thunk_names117[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8259C16D0Ev,_ZTv0_n16_N8S8259C16D0Ev), // 
  (VTBL_ENTRY)_ZN8S8259C16D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8259C16D1Ev,_ZTv0_n16_N8S8259C16D1Ev), // 
  (VTBL_ENTRY)_ZN8S8259C16D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8259C12D0Ev,_ZTv0_n16_N8S8259C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S8259C12D0Ev,_ZThn64_N8S8259C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8259C12D1Ev,_ZTv0_n16_N8S8259C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S8259C12D1Ev,_ZThn64_N8S8259C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev), // 
  (VTBL_ENTRY)_ZN8S8259C14D0Ev,
  (VTBL_ENTRY)_ZN8S8259C14D0Ev,
  (VTBL_ENTRY)_ZN8S8259C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev), // 
  (VTBL_ENTRY)_ZN8S8259C14D1Ev,
  (VTBL_ENTRY)_ZN8S8259C14D1Ev,
  (VTBL_ENTRY)_ZN8S8259C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8259C13D0Ev,_ZTv0_n16_N8S8259C13D0Ev), // 
  (VTBL_ENTRY)_ZN8S8259C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8259C13D1Ev,_ZTv0_n16_N8S8259C13D1Ev), // 
  (VTBL_ENTRY)_ZN8S8259C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8259C11D0Ev,_ZTv0_n16_N8S8259C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S8259C11D0Ev,_ZThn240_N8S8259C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8259C11D1Ev,_ZTv0_n16_N8S8259C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S8259C11D1Ev,_ZThn240_N8S8259C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8259C11 = {  "S8259C11", // class name
  bases_S8259C11, 18,
  &(vtc_S8259C11[0]), // expected_vtbl_contents
  &(vtt_S8259C11[0]), // expected_vtt_contents
  ABISELECT(288,252), // object size
  NSPAIRA(_ZTI8S8259C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S8259C11),34, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S8259C11),25, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names117,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8259C1  : S7883C3_nt , S8259C3 , virtual S8259C11 {
  virtual  ~S8259C1(); // _ZN7S8259C1D2Ev
  S8259C1(); // tgen
};
//SIG(1 S8259C1) C1{ BC2{ vd m} BC3{ VBC4{ VBC5{ BC6{ m Fi[10]} Fi} VBC7{ BC6} VBC8{ BC5 FC5} BC6 vd Fp} BC9{ VBC6 vd} BC10{ m}} VBC11{ VBC10 BC12{ BC13{ VBC9 BC14{ VBC6 VBC9 vd} FD} VBC14 BC5 vd Fc} BC15{ BC6 BC7 VBC14 BC5} BC14 VBC16{ BC14 vd v1 FL} Fs:7} vd}


 S8259C1 ::~S8259C1(){ note_dtor("S8259C1", this);}
S8259C1 ::S8259C1(){ note_ctor("S8259C1", this);} // tgen

static void Test_S8259C1()
{
  extern Class_Descriptor cd_S8259C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(35,121)];
    init_test(&cd_S8259C1, buf);
    S8259C1 *dp, &lv = *(dp=new (buf) S8259C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(544,480), "sizeof(S8259C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S8259C1)");
    check_base_class_offset(lv, (S7883C3_nt*), 0, "S8259C1");
    /*is_ambiguous_... S8259C1::S8259C5 */ AMB_check_base_class_offset(lv, (S7246C4*)(S8259C5*), ABISELECT(72,56), "S8259C1");
    /*is_ambiguous_... S8259C4::S8259C5 */ AMB_check_base_class_offset(lv, (S8259C5*)(S8259C4*), ABISELECT(72,56), "S8259C1");
    /*is_ambiguous_... S8259C1::S8259C7 */ AMB_check_base_class_offset(lv, (S7246C4*)(S8259C7*), ABISELECT(116,100), "S8259C1");
    check_base_class_offset(lv, (S8259C7*)(S8259C4*), ABISELECT(116,100), "S8259C1");
    check_base_class_offset(lv, (S7246C4*)(S8259C5*)(S8259C8*), ABISELECT(156,140), "S8259C1");
    check_base_class_offset(lv, (S8259C5*)(S8259C8*), ABISELECT(156,140), "S8259C1");
    check_base_class_offset(lv, (S8259C8*)(S8259C4*), ABISELECT(156,140), "S8259C1");
    /*is_ambiguous_... S8259C4::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*)(S8259C4*), ABISELECT(24,12), "S8259C1");
    check_base_class_offset(lv, (S8259C4*)(S8259C3*), ABISELECT(16,8), "S8259C1");
    check_base_class_offset(lv, (S7246C4*)(S8259C9*)(S8259C3*), ABISELECT(244,228), "S8259C1");
    /*is_ambiguous_... S8259C1::S8259C9 */ AMB_check_base_class_offset(lv, (S7246C4*)(S8259C9*), ABISELECT(244,228), "S8259C1");
    check_base_class_offset(lv, (S7246C4*)(S8259C14*)(S8259C13*)(S8259C12*)(S8259C11*), ABISELECT(244,228), "S8259C1");
    /*is_ambiguous_... S8259C1::S8259C14 */ AMB_check_base_class_offset(lv, (S7246C4*)(S8259C14*), ABISELECT(244,228), "S8259C1");
    /*is_ambiguous_... S8259C11::S8259C14 */ AMB_check_base_class_offset(lv, (S7246C4*)(S8259C14*)(S8259C11*), ABISELECT(244,228), "S8259C1");
    check_base_class_offset(lv, (S7246C4*)(S8259C14*)(S8259C16*), ABISELECT(244,228), "S8259C1");
    check_base_class_offset(lv, (S8259C9*)(S8259C3*), ABISELECT(8,4), "S8259C1");
    check_base_class_offset(lv, (S4677C37*)(S8259C3*), ABISELECT(8,4), "S8259C1");
    check_base_class_offset(lv, (S8259C3*), ABISELECT(8,4), "S8259C1");
    check_base_class_offset(lv, (S4677C37*)(S8259C11*), 0, "S8259C1");
    check_base_class_offset(lv, (S8259C9*)(S8259C13*)(S8259C12*)(S8259C11*), ABISELECT(288,268), "S8259C1");
    check_base_class_offset(lv, (S8259C9*)(S8259C14*)(S8259C13*)(S8259C12*)(S8259C11*), ABISELECT(288,268), "S8259C1");
    /*is_ambiguous_... S8259C1::S8259C14 */ AMB_check_base_class_offset(lv, (S8259C9*)(S8259C14*), ABISELECT(288,268), "S8259C1");
    /*is_ambiguous_... S8259C11::S8259C14 */ AMB_check_base_class_offset(lv, (S8259C9*)(S8259C14*)(S8259C11*), ABISELECT(288,268), "S8259C1");
    check_base_class_offset(lv, (S8259C9*)(S8259C14*)(S8259C16*), ABISELECT(288,268), "S8259C1");
    check_base_class_offset(lv, (S8259C14*)(S8259C13*)(S8259C12*)(S8259C11*), ABISELECT(288,268), "S8259C1");
    check_base_class_offset(lv, (S8259C13*)(S8259C12*)(S8259C11*), ABISELECT(288,268), "S8259C1");
    /*is_ambiguous_... S8259C12::S8259C14 */ AMB_check_base_class_offset(lv, (S8259C14*)(S8259C12*)(S8259C11*), ABISELECT(368,332), "S8259C1");
    check_base_class_offset(lv, (S8259C14*)(S8259C15*)(S8259C11*), ABISELECT(368,332), "S8259C1");
    check_base_class_offset(lv, (S7246C4*)(S8259C5*)(S8259C12*)(S8259C11*), ABISELECT(320,284), "S8259C1");
    check_base_class_offset(lv, (S8259C5*)(S8259C12*)(S8259C11*), ABISELECT(320,284), "S8259C1");
    check_base_class_offset(lv, (S8259C12*)(S8259C11*), ABISELECT(288,268), "S8259C1");
    /*is_ambiguous_... S8259C15::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*)(S8259C15*)(S8259C11*), ABISELECT(376,336), "S8259C1");
    check_base_class_offset(lv, (S7246C4*)(S8259C7*)(S8259C15*)(S8259C11*), ABISELECT(416,376), "S8259C1");
    check_base_class_offset(lv, (S8259C7*)(S8259C15*)(S8259C11*), ABISELECT(416,376), "S8259C1");
    check_base_class_offset(lv, (S7246C4*)(S8259C5*)(S8259C15*)(S8259C11*), ABISELECT(456,416), "S8259C1");
    check_base_class_offset(lv, (S8259C5*)(S8259C15*)(S8259C11*), ABISELECT(456,416), "S8259C1");
    check_base_class_offset(lv, (S8259C15*)(S8259C11*), ABISELECT(368,332), "S8259C1");
    /*is_ambiguous_... S8259C11::S8259C14 */ AMB_check_base_class_offset(lv, (S8259C14*)(S8259C11*), ABISELECT(504,460), "S8259C1");
    check_base_class_offset(lv, (S8259C14*)(S8259C16*), ABISELECT(520,468), "S8259C1");
    check_base_class_offset(lv, (S8259C16*)(S8259C11*), ABISELECT(520,468), "S8259C1");
    check_base_class_offset(lv, (S8259C11*), ABISELECT(288,268), "S8259C1");
    test_class_info(&lv, &cd_S8259C1);
    dp->~S8259C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8259C1(Test_S8259C1, "S8259C1", ABISELECT(544,480));

#else // __cplusplus

extern void _ZN7S8259C1C1Ev();
extern void _ZN7S8259C1D2Ev();
Name_Map name_map_S8259C1[] = {
  NSPAIR(_ZN7S8259C1C1Ev),
  NSPAIR(_ZN7S8259C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S8259C5;
extern VTBL_ENTRY _ZTI7S8259C5[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S8259C7;
extern VTBL_ENTRY _ZTI7S8259C7[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S8259C5;
extern VTBL_ENTRY _ZTI7S8259C5[];
extern Class_Descriptor cd_S8259C8;
extern VTBL_ENTRY _ZTI7S8259C8[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S8259C4;
extern VTBL_ENTRY _ZTI7S8259C4[];
extern  VTBL_ENTRY _ZTV7S8259C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8259C4[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S8259C9;
extern VTBL_ENTRY _ZTI7S8259C9[];
extern  VTBL_ENTRY _ZTV7S8259C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8259C9[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S8259C3;
extern VTBL_ENTRY _ZTI7S8259C3[];
extern  VTBL_ENTRY _ZTV7S8259C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8259C3[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S8259C9;
extern VTBL_ENTRY _ZTI7S8259C9[];
extern  VTBL_ENTRY _ZTV7S8259C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8259C9[];
extern Class_Descriptor cd_S8259C14;
extern VTBL_ENTRY _ZTI8S8259C14[];
extern  VTBL_ENTRY _ZTV8S8259C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8259C14[];
extern Class_Descriptor cd_S8259C13;
extern VTBL_ENTRY _ZTI8S8259C13[];
extern  VTBL_ENTRY _ZTV8S8259C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8259C13[];
extern Class_Descriptor cd_S8259C14;
extern VTBL_ENTRY _ZTI8S8259C14[];
extern  VTBL_ENTRY _ZTV8S8259C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8259C14[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S8259C5;
extern VTBL_ENTRY _ZTI7S8259C5[];
extern Class_Descriptor cd_S8259C12;
extern VTBL_ENTRY _ZTI8S8259C12[];
extern  VTBL_ENTRY _ZTV8S8259C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8259C12[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S8259C7;
extern VTBL_ENTRY _ZTI7S8259C7[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S8259C5;
extern VTBL_ENTRY _ZTI7S8259C5[];
extern Class_Descriptor cd_S8259C15;
extern VTBL_ENTRY _ZTI8S8259C15[];
extern  VTBL_ENTRY _ZTV8S8259C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8259C15[];
extern Class_Descriptor cd_S8259C14;
extern VTBL_ENTRY _ZTI8S8259C14[];
extern  VTBL_ENTRY _ZTV8S8259C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8259C14[];
extern Class_Descriptor cd_S8259C14;
extern VTBL_ENTRY _ZTI8S8259C14[];
extern  VTBL_ENTRY _ZTV8S8259C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8259C14[];
extern Class_Descriptor cd_S8259C16;
extern VTBL_ENTRY _ZTI8S8259C16[];
extern  VTBL_ENTRY _ZTV8S8259C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8259C16[];
extern Class_Descriptor cd_S8259C11;
extern VTBL_ENTRY _ZTI8S8259C11[];
extern  VTBL_ENTRY _ZTV8S8259C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S8259C11[];
static Base_Class bases_S8259C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7246C4,    ABISELECT(72,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
    2, //immediately_derived
  0, 0},
  {&cd_S8259C5,    ABISELECT(72,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
    9, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(116,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_S8259C7,    ABISELECT(116,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(156,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S8259C5,    ABISELECT(156,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
    7, //immediately_derived
  0, 0},
  {&cd_S8259C8,    ABISELECT(156,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
    9, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S8259C4,    ABISELECT(16,8), //bcp->offset
    23, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(244,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S8259C9,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S8259C3,    ABISELECT(8,4), //bcp->offset
    14, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S8259C9,    ABISELECT(288,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S8259C14,    ABISELECT(288,268), //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
    17, //immediately_derived
  0, 0},
  {&cd_S8259C13,    ABISELECT(288,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S8259C14,    ABISELECT(368,332), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(320,284), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S8259C5,    ABISELECT(320,284), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S8259C12,    ABISELECT(288,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7246C4,    ABISELECT(376,336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7246C4,    ABISELECT(416,376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S8259C7,    ABISELECT(416,376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7246C4,    ABISELECT(456,416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S8259C5,    ABISELECT(456,416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S8259C15,    ABISELECT(368,332), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S8259C14,    ABISELECT(504,460), //bcp->offset
    49, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S8259C14,    ABISELECT(520,468), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S8259C16,    ABISELECT(520,468), //bcp->offset
    56, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S8259C11,    ABISELECT(288,268), //bcp->offset
    31, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S8259C1[];
extern void _ZN7S8259C1D1Ev();
extern void _ZN7S8259C1D0Ev();
extern void ABISELECT(_ZThn8_N7S8259C1D1Ev,_ZThn4_N7S8259C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S8259C1D0Ev,_ZThn4_N7S8259C1D0Ev)();
extern void ABISELECT(_ZTv0_n48_N7S8259C1D1Ev,_ZTv0_n24_N7S8259C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S8259C1D1Ev,_ZThn8_N7S8259C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8259C1D0Ev,_ZTv0_n24_N7S8259C1D0Ev)();
extern void ABISELECT(_ZThn16_N7S8259C1D0Ev,_ZThn8_N7S8259C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8259C1D1Ev,_ZTv0_n16_N7S8259C1D1Ev)();
extern void ABISELECT(_ZThn288_N7S8259C1D1Ev,_ZThn268_N7S8259C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8259C1D0Ev,_ZTv0_n16_N7S8259C1D0Ev)();
extern void ABISELECT(_ZThn288_N7S8259C1D0Ev,_ZThn268_N7S8259C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8259C1D1Ev,_ZTv0_n16_N7S8259C1D1Ev)();
extern void ABISELECT(_ZThn368_N7S8259C1D1Ev,_ZThn332_N7S8259C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8259C1D0Ev,_ZTv0_n16_N7S8259C1D0Ev)();
extern void ABISELECT(_ZThn368_N7S8259C1D0Ev,_ZThn332_N7S8259C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8259C1D1Ev,_ZTv0_n16_N7S8259C1D1Ev)();
extern void ABISELECT(_ZThn504_N7S8259C1D1Ev,_ZThn460_N7S8259C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8259C1D0Ev,_ZTv0_n16_N7S8259C1D0Ev)();
extern void ABISELECT(_ZThn504_N7S8259C1D0Ev,_ZThn460_N7S8259C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8259C1D1Ev,_ZTv0_n16_N7S8259C1D1Ev)();
extern void ABISELECT(_ZThn520_N7S8259C1D1Ev,_ZThn468_N7S8259C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S8259C1D0Ev,_ZTv0_n16_N7S8259C1D0Ev)();
extern void ABISELECT(_ZThn520_N7S8259C1D0Ev,_ZThn468_N7S8259C1D0Ev)() __attribute__((weak));
extern void _ZN8S8259C162v1Ev();
static  VTBL_ENTRY vtc_S8259C1[] = {
  ABISELECT(520,468),
  ABISELECT(368,332),
  ABISELECT(288,268),
  0,
  ABISELECT(288,268),
  ABISELECT(244,228),
  ABISELECT(156,140),
  ABISELECT(116,100),
  ABISELECT(72,56),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S8259C1[0]),
  (VTBL_ENTRY)&_ZN7S8259C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8259C1D0Ev,
  ABISELECT(148,136),
  ABISELECT(108,96),
  ABISELECT(64,52),
  ABISELECT(8,4),
  ABISELECT(236,224),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S8259C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S8259C1D1Ev,_ZThn4_N7S8259C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S8259C1D0Ev,_ZThn4_N7S8259C1D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(140,132),
  ABISELECT(100,92),
  ABISELECT(56,48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S8259C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8259C1D1Ev,_ZTv0_n24_N7S8259C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8259C1D0Ev,_ZTv0_n24_N7S8259C1D0Ev),
  ABISELECT(232,200),
  ABISELECT(-288,-268),
  ABISELECT(80,64),
  0,
  ABISELECT(-288,-268),
  ABISELECT(-44,-40),
  ABISELECT(-288,-268),
  (VTBL_ENTRY)&(_ZTI7S8259C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8259C1D1Ev,_ZTv0_n16_N7S8259C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8259C1D0Ev,_ZTv0_n16_N7S8259C1D0Ev),
  0,
  ABISELECT(-80,-64),
  ABISELECT(-368,-332),
  ABISELECT(-124,-104),
  ABISELECT(-368,-332),
  (VTBL_ENTRY)&(_ZTI7S8259C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8259C1D1Ev,_ZTv0_n16_N7S8259C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8259C1D0Ev,_ZTv0_n16_N7S8259C1D0Ev),
  ABISELECT(-216,-192),
  ABISELECT(-504,-460),
  ABISELECT(-260,-232),
  ABISELECT(-504,-460),
  (VTBL_ENTRY)&(_ZTI7S8259C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8259C1D1Ev,_ZTv0_n16_N7S8259C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8259C1D0Ev,_ZTv0_n16_N7S8259C1D0Ev),
  0,
  ABISELECT(-232,-200),
  ABISELECT(-520,-468),
  ABISELECT(-276,-240),
  ABISELECT(-520,-468),
  (VTBL_ENTRY)&(_ZTI7S8259C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8259C1D1Ev,_ZTv0_n16_N7S8259C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S8259C1D0Ev,_ZTv0_n16_N7S8259C1D0Ev),
  (VTBL_ENTRY)&_ZN8S8259C162v1Ev,
};
extern VTBL_ENTRY _ZTV7S8259C1[];
extern void _ZN7S8259C3D1Ev();
extern void _ZN7S8259C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S8259C3__7S8259C1[] = {
  ABISELECT(148,136),
  ABISELECT(108,96),
  ABISELECT(64,52),
  ABISELECT(8,4),
  ABISELECT(236,224),
  0,
  (VTBL_ENTRY)&(_ZTI7S8259C3[0]),
  (VTBL_ENTRY)&_ZN7S8259C3D1Ev,
  (VTBL_ENTRY)&_ZN7S8259C3D0Ev,
};
extern void _ZN7S8259C9D1Ev();
extern void _ZN7S8259C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S8259C97S8259C3__7S8259C1[] = {
  ABISELECT(236,224),
  0,
  (VTBL_ENTRY)&(_ZTI7S8259C9[0]),
  (VTBL_ENTRY)&_ZN7S8259C9D1Ev,
  (VTBL_ENTRY)&_ZN7S8259C9D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N7S8259C3D1Ev,_ZTv0_n24_N7S8259C3D1Ev)();
extern void ABISELECT(_ZThn8_N7S8259C3D1Ev,_ZThn4_N7S8259C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S8259C3D0Ev,_ZTv0_n24_N7S8259C3D0Ev)();
extern void ABISELECT(_ZThn8_N7S8259C3D0Ev,_ZThn4_N7S8259C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S8259C4__7S8259C3__7S8259C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(140,132),
  ABISELECT(100,92),
  ABISELECT(56,48),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S8259C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8259C3D1Ev,_ZTv0_n24_N7S8259C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S8259C3D0Ev,_ZTv0_n24_N7S8259C3D0Ev),
};
extern void _ZN7S8259C4D1Ev();
extern void _ZN7S8259C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S8259C4__7S8259C1[] = {
  ABISELECT(140,132),
  ABISELECT(100,92),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S8259C4[0]),
  (VTBL_ENTRY)&_ZN7S8259C4D1Ev,
  (VTBL_ENTRY)&_ZN7S8259C4D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8259C11D1Ev,_ZTv0_n16_N8S8259C11D1Ev)();
extern void _ZN8S8259C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8259C11D0Ev,_ZTv0_n16_N8S8259C11D0Ev)();
extern void _ZN8S8259C11D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8259C11__7S8259C1[] = {
  ABISELECT(232,200),
  ABISELECT(-288,-268),
  ABISELECT(80,64),
  0,
  0,
  ABISELECT(-44,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S8259C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C11D1Ev,_ZTv0_n16_N8S8259C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C11D0Ev,_ZTv0_n16_N8S8259C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8259C12D1Ev,_ZTv0_n16_N8S8259C12D1Ev)();
extern void _ZN8S8259C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8259C12D0Ev,_ZTv0_n16_N8S8259C12D0Ev)();
extern void _ZN8S8259C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8259C128S8259C11__7S8259C1[] = {
  ABISELECT(80,64),
  0,
  0,
  ABISELECT(-44,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S8259C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C12D1Ev,_ZTv0_n16_N8S8259C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C12D0Ev,_ZTv0_n16_N8S8259C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8259C13D1Ev,_ZTv0_n16_N8S8259C13D1Ev)();
extern void _ZN8S8259C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8259C13D0Ev,_ZTv0_n16_N8S8259C13D0Ev)();
extern void _ZN8S8259C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8259C138S8259C128S8259C11__7S8259C1[] = {
  0,
  0,
  ABISELECT(-44,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S8259C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C13D1Ev,_ZTv0_n16_N8S8259C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C13D0Ev,_ZTv0_n16_N8S8259C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev)();
extern void _ZN8S8259C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev)();
extern void _ZN8S8259C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8259C148S8259C138S8259C128S8259C11__7S8259C1[] = {
  0,
  0,
  ABISELECT(-44,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S8259C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8259C12D1Ev,_ZTv0_n16_N8S8259C12D1Ev)();
extern void ABISELECT(_ZThn80_N8S8259C12D1Ev,_ZThn64_N8S8259C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8259C12D0Ev,_ZTv0_n16_N8S8259C12D0Ev)();
extern void ABISELECT(_ZThn80_N8S8259C12D0Ev,_ZThn64_N8S8259C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8259C14__A1__8S8259C128S8259C11__7S8259C1[] = {
  ABISELECT(-80,-64),
  ABISELECT(-80,-64),
  ABISELECT(-124,-104),
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI8S8259C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C12D1Ev,_ZTv0_n16_N8S8259C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C12D0Ev,_ZTv0_n16_N8S8259C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8259C15D1Ev,_ZTv0_n16_N8S8259C15D1Ev)();
extern void _ZN8S8259C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8259C15D0Ev,_ZTv0_n16_N8S8259C15D0Ev)();
extern void _ZN8S8259C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8259C158S8259C11__7S8259C1[] = {
  0,
  ABISELECT(-80,-64),
  0,
  ABISELECT(-124,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S8259C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C15D1Ev,_ZTv0_n16_N8S8259C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C15D0Ev,_ZTv0_n16_N8S8259C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8259C15D1Ev,_ZTv0_n16_N8S8259C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8259C15D0Ev,_ZTv0_n16_N8S8259C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8259C9__8S8259C158S8259C11__7S8259C1[] = {
  ABISELECT(80,64),
  ABISELECT(-44,-40),
  ABISELECT(80,64),
  (VTBL_ENTRY)&(_ZTI8S8259C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C15D1Ev,_ZTv0_n16_N8S8259C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C15D0Ev,_ZTv0_n16_N8S8259C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev)();
extern void _ZN8S8259C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev)();
extern void _ZN8S8259C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8259C148S8259C11__A2__7S8259C1[] = {
  ABISELECT(-216,-192),
  0,
  ABISELECT(-260,-232),
  0,
  (VTBL_ENTRY)&(_ZTI8S8259C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8259C9__8S8259C148S8259C11__A2__7S8259C1[] = {
  ABISELECT(216,192),
  ABISELECT(-44,-40),
  ABISELECT(216,192),
  (VTBL_ENTRY)&(_ZTI8S8259C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8259C11D1Ev,_ZTv0_n16_N8S8259C11D1Ev)();
extern void ABISELECT(_ZThn80_N8S8259C11D1Ev,_ZThn64_N8S8259C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8259C11D0Ev,_ZTv0_n16_N8S8259C11D0Ev)();
extern void ABISELECT(_ZThn80_N8S8259C11D0Ev,_ZThn64_N8S8259C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8259C15__8S8259C11__7S8259C1[] = {
  0,
  ABISELECT(-80,-64),
  ABISELECT(-80,-64),
  ABISELECT(-124,-104),
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI8S8259C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C11D1Ev,_ZTv0_n16_N8S8259C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C11D0Ev,_ZTv0_n16_N8S8259C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8259C11D1Ev,_ZTv0_n16_N8S8259C11D1Ev)();
extern void ABISELECT(_ZThn216_N8S8259C11D1Ev,_ZThn192_N8S8259C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8259C11D0Ev,_ZTv0_n16_N8S8259C11D0Ev)();
extern void ABISELECT(_ZThn216_N8S8259C11D0Ev,_ZThn192_N8S8259C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8259C14__A__8S8259C11__7S8259C1[] = {
  ABISELECT(-216,-192),
  ABISELECT(-216,-192),
  ABISELECT(-260,-232),
  ABISELECT(-216,-192),
  (VTBL_ENTRY)&(_ZTI8S8259C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C11D1Ev,_ZTv0_n16_N8S8259C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C11D0Ev,_ZTv0_n16_N8S8259C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8259C11D1Ev,_ZTv0_n16_N8S8259C11D1Ev)();
extern void ABISELECT(_ZThn232_N8S8259C11D1Ev,_ZThn200_N8S8259C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8259C11D0Ev,_ZTv0_n16_N8S8259C11D0Ev)();
extern void ABISELECT(_ZThn232_N8S8259C11D0Ev,_ZThn200_N8S8259C11D0Ev)() __attribute__((weak));
extern void _ZN8S8259C162v1Ev();
static  VTBL_ENTRY _tg__ZTV8S8259C16__8S8259C11__7S8259C1[] = {
  0,
  ABISELECT(-232,-200),
  ABISELECT(-232,-200),
  ABISELECT(-276,-240),
  ABISELECT(-232,-200),
  (VTBL_ENTRY)&(_ZTI8S8259C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C11D1Ev,_ZTv0_n16_N8S8259C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C11D0Ev,_ZTv0_n16_N8S8259C11D0Ev),
  (VTBL_ENTRY)&_ZN8S8259C162v1Ev,
};
extern void _ZN7S8259C9D1Ev();
extern void _ZN7S8259C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S8259C9__A1__7S8259C1[] = {
  ABISELECT(-44,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S8259C9[0]),
  (VTBL_ENTRY)&_ZN7S8259C9D1Ev,
  (VTBL_ENTRY)&_ZN7S8259C9D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev)();
extern void _ZN8S8259C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev)();
extern void _ZN8S8259C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8259C14__A1__7S8259C1[] = {
  ABISELECT(-80,-64),
  0,
  ABISELECT(-124,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S8259C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8259C9__8S8259C14__A1__7S8259C1[] = {
  ABISELECT(80,64),
  ABISELECT(-44,-40),
  ABISELECT(80,64),
  (VTBL_ENTRY)&(_ZTI8S8259C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8259C16D1Ev,_ZTv0_n16_N8S8259C16D1Ev)();
extern void _ZN8S8259C16D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8259C16D0Ev,_ZTv0_n16_N8S8259C16D0Ev)();
extern void _ZN8S8259C16D0Ev() __attribute__((weak));
extern void _ZN8S8259C162v1Ev();
static  VTBL_ENTRY _tg__ZTV8S8259C16__7S8259C1[] = {
  ABISELECT(-232,-200),
  0,
  ABISELECT(-276,-240),
  0,
  (VTBL_ENTRY)&(_ZTI8S8259C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C16D1Ev,_ZTv0_n16_N8S8259C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C16D0Ev,_ZTv0_n16_N8S8259C16D0Ev),
  (VTBL_ENTRY)&_ZN8S8259C162v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev)();
extern void _ZN8S8259C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev)();
extern void _ZN8S8259C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S8259C148S8259C16__A3__7S8259C1[] = {
  ABISELECT(-232,-200),
  0,
  ABISELECT(-276,-240),
  0,
  (VTBL_ENTRY)&(_ZTI8S8259C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8259C9__8S8259C148S8259C16__A3__7S8259C1[] = {
  ABISELECT(232,200),
  ABISELECT(-44,-40),
  ABISELECT(232,200),
  (VTBL_ENTRY)&(_ZTI8S8259C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S8259C16D1Ev,_ZTv0_n16_N8S8259C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S8259C16D0Ev,_ZTv0_n16_N8S8259C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S8259C9__8S8259C16__7S8259C1[] = {
  ABISELECT(232,200),
  ABISELECT(-44,-40),
  ABISELECT(232,200),
  (VTBL_ENTRY)&(_ZTI8S8259C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C16D1Ev,_ZTv0_n16_N8S8259C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S8259C16D0Ev,_ZTv0_n16_N8S8259C16D0Ev),
};
static  VTT_ENTRY vtt_S8259C1[] = {
  {&(_ZTV7S8259C1[12]),  12,65},
  {&(_tg__ZTV7S8259C3__7S8259C1[7]),  7,9},
  {&(_tg__ZTV7S8259C97S8259C3__7S8259C1[3]),  3,5},
  {&(_tg__ZTV7S8259C4__7S8259C3__7S8259C1[6]),  6,8},
  {&(_ZTV7S8259C1[21]),  21,65},
  {&(_ZTV7S8259C1[29]),  29,65},
  {&(_ZTV7S8259C1[39]),  39,65},
  {&(_ZTV7S8259C1[39]),  39,65},
  {&(_ZTV7S8259C1[47]),  47,65},
  {&(_ZTV7S8259C1[47]),  47,65},
  {&(_ZTV7S8259C1[54]),  54,65},
  {&(_ZTV7S8259C1[62]),  62,65},
  {&(_tg__ZTV7S8259C4__7S8259C1[5]),  5,7},
  {&(_tg__ZTV8S8259C11__7S8259C1[8]),  8,10},
  {&(_tg__ZTV8S8259C128S8259C11__7S8259C1[6]),  6,8},
  {&(_tg__ZTV8S8259C138S8259C128S8259C11__7S8259C1[5]),  5,7},
  {&(_tg__ZTV8S8259C148S8259C138S8259C128S8259C11__7S8259C1[5]),  5,7},
  {&(_tg__ZTV8S8259C148S8259C138S8259C128S8259C11__7S8259C1[5]),  5,7},
  {&(_tg__ZTV8S8259C138S8259C128S8259C11__7S8259C1[5]),  5,7},
  {&(_tg__ZTV8S8259C128S8259C11__7S8259C1[6]),  6,8},
  {&(_tg__ZTV8S8259C14__A1__8S8259C128S8259C11__7S8259C1[5]),  5,7},
  {&(_tg__ZTV8S8259C158S8259C11__7S8259C1[6]),  6,8},
  {&(_tg__ZTV8S8259C158S8259C11__7S8259C1[6]),  6,8},
  {&(_tg__ZTV7S8259C9__8S8259C158S8259C11__7S8259C1[4]),  4,6},
  {&(_tg__ZTV8S8259C148S8259C11__A2__7S8259C1[5]),  5,7},
  {&(_tg__ZTV7S8259C9__8S8259C148S8259C11__A2__7S8259C1[4]),  4,6},
  {&(_tg__ZTV8S8259C11__7S8259C1[8]),  8,10},
  {&(_tg__ZTV8S8259C15__8S8259C11__7S8259C1[6]),  6,8},
  {&(_tg__ZTV8S8259C15__8S8259C11__7S8259C1[6]),  6,8},
  {&(_tg__ZTV8S8259C14__A__8S8259C11__7S8259C1[5]),  5,7},
  {&(_tg__ZTV8S8259C16__8S8259C11__7S8259C1[6]),  6,9},
  {&(_tg__ZTV7S8259C9__A1__7S8259C1[3]),  3,5},
  {&(_tg__ZTV8S8259C14__A1__7S8259C1[5]),  5,7},
  {&(_tg__ZTV7S8259C9__8S8259C14__A1__7S8259C1[4]),  4,6},
  {&(_tg__ZTV8S8259C16__7S8259C1[5]),  5,8},
  {&(_tg__ZTV8S8259C148S8259C16__A3__7S8259C1[5]),  5,7},
  {&(_tg__ZTV7S8259C9__8S8259C148S8259C16__A3__7S8259C1[4]),  4,6},
  {&(_tg__ZTV7S8259C9__8S8259C16__7S8259C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S8259C1[];
extern  VTBL_ENTRY _ZTV7S8259C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S8259C1[];
static VTBL_ENTRY alt_thunk_names118[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8259C16D0Ev,_ZTv0_n16_N8S8259C16D0Ev), // 
  (VTBL_ENTRY)_ZN8S8259C16D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8259C16D1Ev,_ZTv0_n16_N8S8259C16D1Ev), // 
  (VTBL_ENTRY)_ZN8S8259C16D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8259C15D0Ev,_ZTv0_n16_N8S8259C15D0Ev), // 
  (VTBL_ENTRY)_ZN8S8259C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8259C15D1Ev,_ZTv0_n16_N8S8259C15D1Ev), // 
  (VTBL_ENTRY)_ZN8S8259C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8259C14D0Ev,_ZTv0_n16_N8S8259C14D0Ev), // 
  (VTBL_ENTRY)_ZN8S8259C14D0Ev,
  (VTBL_ENTRY)_ZN8S8259C14D0Ev,
  (VTBL_ENTRY)_ZN8S8259C14D0Ev,
  (VTBL_ENTRY)_ZN8S8259C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8259C14D1Ev,_ZTv0_n16_N8S8259C14D1Ev), // 
  (VTBL_ENTRY)_ZN8S8259C14D1Ev,
  (VTBL_ENTRY)_ZN8S8259C14D1Ev,
  (VTBL_ENTRY)_ZN8S8259C14D1Ev,
  (VTBL_ENTRY)_ZN8S8259C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8259C13D0Ev,_ZTv0_n16_N8S8259C13D0Ev), // 
  (VTBL_ENTRY)_ZN8S8259C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8259C13D1Ev,_ZTv0_n16_N8S8259C13D1Ev), // 
  (VTBL_ENTRY)_ZN8S8259C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8259C12D0Ev,_ZTv0_n16_N8S8259C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S8259C12D0Ev,_ZThn64_N8S8259C12D0Ev),
  (VTBL_ENTRY)_ZN8S8259C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8259C12D1Ev,_ZTv0_n16_N8S8259C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S8259C12D1Ev,_ZThn64_N8S8259C12D1Ev),
  (VTBL_ENTRY)_ZN8S8259C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8259C11D0Ev,_ZTv0_n16_N8S8259C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S8259C11D0Ev,_ZThn200_N8S8259C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S8259C11D0Ev,_ZThn192_N8S8259C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S8259C11D0Ev,_ZThn64_N8S8259C11D0Ev),
  (VTBL_ENTRY)_ZN8S8259C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S8259C11D1Ev,_ZTv0_n16_N8S8259C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S8259C11D1Ev,_ZThn200_N8S8259C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S8259C11D1Ev,_ZThn192_N8S8259C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S8259C11D1Ev,_ZThn64_N8S8259C11D1Ev),
  (VTBL_ENTRY)_ZN8S8259C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8259C3D0Ev,_ZTv0_n24_N7S8259C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S8259C3D0Ev,_ZThn4_N7S8259C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8259C3D1Ev,_ZTv0_n24_N7S8259C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S8259C3D1Ev,_ZThn4_N7S8259C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8259C1D0Ev,_ZTv0_n16_N7S8259C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N7S8259C1D0Ev,_ZThn468_N7S8259C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S8259C1D0Ev,_ZThn460_N7S8259C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S8259C1D0Ev,_ZThn332_N7S8259C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S8259C1D0Ev,_ZThn268_N7S8259C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S8259C1D1Ev,_ZTv0_n16_N7S8259C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N7S8259C1D1Ev,_ZThn468_N7S8259C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S8259C1D1Ev,_ZThn460_N7S8259C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S8259C1D1Ev,_ZThn332_N7S8259C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S8259C1D1Ev,_ZThn268_N7S8259C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8259C1D0Ev,_ZTv0_n24_N7S8259C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S8259C1D0Ev,_ZThn8_N7S8259C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S8259C1D1Ev,_ZTv0_n24_N7S8259C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S8259C1D1Ev,_ZThn8_N7S8259C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S8259C1 = {  "S8259C1", // class name
  bases_S8259C1, 32,
  &(vtc_S8259C1[0]), // expected_vtbl_contents
  &(vtt_S8259C1[0]), // expected_vtt_contents
  ABISELECT(544,480), // object size
  NSPAIRA(_ZTI7S8259C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S8259C1),65, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S8259C1),38, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names118,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S134C5  : S3216C8_nt {
};
//SIG(-1 S134C5) C1{ BC2{ m Fi}}



static void Test_S134C5()
{
  extern Class_Descriptor cd_S134C5;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S134C5, buf);
    S134C5 &lv = *(new (buf) S134C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S134C5)");
    check2(__alignof__(lv), 4, "__alignof__(S134C5)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S134C5");
    test_class_info(&lv, &cd_S134C5);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS134C5(Test_S134C5, "S134C5", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S134C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S134C5 = {  "S134C5", // class name
  bases_S134C5, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S134C4  : S134C5 {
  unsigned int s134c4f0:1;
  unsigned int s134c4f1:1;
  int s134c4f2:7;
  unsigned int s134c4f3:1;
  unsigned int s134c4f4:1;
  int s134c4f5:2;
  int s134c4f6:5;
};
//SIG(-1 S134C4) C1{ BC2{ BC3{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5}



static void Test_S134C4()
{
  extern Class_Descriptor cd_S134C4;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S134C4, buf);
    S134C4 &lv = *(new (buf) S134C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S134C4)");
    check2(__alignof__(lv), 4, "__alignof__(S134C4)");
    check_base_class_offset(lv, (S3216C8_nt*)(S134C5*), 0, "S134C4");
    check_base_class_offset(lv, (S134C5*), 0, "S134C4");
    set_bf_and_test(lv, s134c4f0, 4, 0, 1, 1, "S134C4");
    set_bf_and_test(lv, s134c4f1, 4, 1, 1, 1, "S134C4");
    set_bf_and_test(lv, s134c4f2, 4, 2, 7, 1, "S134C4");
    set_bf_and_test(lv, s134c4f2, 4, 2, 7, hide_sll(1LL<<6), "S134C4");
    set_bf_and_test(lv, s134c4f3, 5, 1, 1, 1, "S134C4");
    set_bf_and_test(lv, s134c4f4, 5, 2, 1, 1, "S134C4");
    set_bf_and_test(lv, s134c4f5, 5, 3, 2, 1, "S134C4");
    set_bf_and_test(lv, s134c4f5, 5, 3, 2, hide_sll(1LL<<1), "S134C4");
    set_bf_and_test(lv, s134c4f6, 5, 5, 5, 1, "S134C4");
    set_bf_and_test(lv, s134c4f6, 5, 5, 5, hide_sll(1LL<<4), "S134C4");
    test_class_info(&lv, &cd_S134C4);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS134C4(Test_S134C4, "S134C4", 8);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S134C5;
static Base_Class bases_S134C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S134C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S134C4 = {  "S134C4", // class name
  bases_S134C4, 2,
  0, // no vftv
  0, //no vtt
  8, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S134C3  : S134C4 {
  ::S133C7_nt s134c3f0;
  ::S133C12 s134c3f1;
  ::S133C8_nt s134c3f2;
};
//SIG(-1 S134C3) C1{ BC2{ BC3{ BC4{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5} FC5{ m FC6{ m FC7{ m Fp Fi[4]}}} FC8{ m FC7} FC6}



static void Test_S134C3()
{
  extern Class_Descriptor cd_S134C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,18)];
    init_test(&cd_S134C3, buf);
    S134C3 &lv = *(new (buf) S134C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,68), "sizeof(S134C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S134C3)");
    check_base_class_offset(lv, (S3216C8_nt*)(S134C5*)(S134C4*), 0, "S134C3");
    check_base_class_offset(lv, (S134C5*)(S134C4*), 0, "S134C3");
    check_base_class_offset(lv, (S134C4*), 0, "S134C3");
    check_field_offset(lv, s134c3f0, 8, "S134C3.s134c3f0");
    check_field_offset(lv, s134c3f1, ABISELECT(32,28), "S134C3.s134c3f1");
    check_field_offset(lv, s134c3f2, ABISELECT(56,48), "S134C3.s134c3f2");
    test_class_info(&lv, &cd_S134C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS134C3(Test_S134C3, "S134C3", ABISELECT(80,68));

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S134C5;
extern Class_Descriptor cd_S134C4;
static Base_Class bases_S134C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S134C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S134C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S134C3 = {  "S134C3", // class name
  bases_S134C3, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(80,68), // 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  S134C2  : S134C3 {
  ::S16701C4_nt s134c2f0;
  ::S16701C4_nt s134c2f1;
  ::S16701C4_nt s134c2f2;
  ::S16701C4_nt s134c2f3;
  ::S133C15_nt s134c2f4;
  char s134c2f5[3];
};
//SIG(-1 S134C2) C1{ BC2{ BC3{ BC4{ BC5{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5} FC6{ m FC7{ m FC8{ m Fp Fi[4]}}} FC9{ m FC8} FC7} FC10{ m Fp} FC10 FC10 FC10 FC11{ m Fi FC12{ BC13{ m Fp Fi}}} Fc[3]}



static void Test_S134C2()
{
  extern Class_Descriptor cd_S134C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,26)];
    init_test(&cd_S134C2, buf);
    S134C2 &lv = *(new (buf) S134C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S134C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S134C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S134C5*)(S134C4*)(S134C3*), 0, "S134C2");
    check_base_class_offset(lv, (S134C5*)(S134C4*)(S134C3*), 0, "S134C2");
    check_base_class_offset(lv, (S134C4*)(S134C3*), 0, "S134C2");
    check_base_class_offset(lv, (S134C3*), 0, "S134C2");
    check_field_offset(lv, s134c2f0, ABISELECT(80,68), "S134C2.s134c2f0");
    check_field_offset(lv, s134c2f1, ABISELECT(88,72), "S134C2.s134c2f1");
    check_field_offset(lv, s134c2f2, ABISELECT(96,76), "S134C2.s134c2f2");
    check_field_offset(lv, s134c2f3, ABISELECT(104,80), "S134C2.s134c2f3");
    check_field_offset(lv, s134c2f4, ABISELECT(112,84), "S134C2.s134c2f4");
    check_field_offset(lv, s134c2f5, ABISELECT(136,96), "S134C2.s134c2f5");
    test_class_info(&lv, &cd_S134C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS134C2(Test_S134C2, "S134C2", ABISELECT(144,100));

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S134C5;
extern Class_Descriptor cd_S134C4;
extern Class_Descriptor cd_S134C3;
static Base_Class bases_S134C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S134C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S134C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S134C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S134C2 = {  "S134C2", // class name
  bases_S134C2, 4,
  0, // no vftv
  0, //no vtt
  ABISELECT(144,100), // 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  S134C1  : S134C2 {
  ::S16701C4_nt s134c1f0;
};
//SIG(1 S134C1) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5} FC7{ m FC8{ m FC9{ m Fp Fi[4]}}} FC10{ m FC9} FC8} FC11{ m Fp} FC11 FC11 FC11 FC12{ m Fi FC13{ BC14{ m Fp Fi}}} Fc[3]} FC11}



static void Test_S134C1()
{
  extern Class_Descriptor cd_S134C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,27)];
    init_test(&cd_S134C1, buf);
    S134C1 &lv = *(new (buf) S134C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,104), "sizeof(S134C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S134C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S134C5*)(S134C4*)(S134C3*)(S134C2*), 0, "S134C1");
    check_base_class_offset(lv, (S134C5*)(S134C4*)(S134C3*)(S134C2*), 0, "S134C1");
    check_base_class_offset(lv, (S134C4*)(S134C3*)(S134C2*), 0, "S134C1");
    check_base_class_offset(lv, (S134C3*)(S134C2*), 0, "S134C1");
    check_base_class_offset(lv, (S134C2*), 0, "S134C1");
    check_field_offset(lv, s134c1f0, ABISELECT(144,100), "S134C1.s134c1f0");
    test_class_info(&lv, &cd_S134C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS134C1(Test_S134C1, "S134C1", ABISELECT(152,104));

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S134C5;
extern Class_Descriptor cd_S134C4;
extern Class_Descriptor cd_S134C3;
extern Class_Descriptor cd_S134C2;
static Base_Class bases_S134C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S134C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S134C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S134C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S134C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S134C1 = {  "S134C1", // class name
  bases_S134C1, 5,
  0, // no vftv
  0, //no vtt
  ABISELECT(152,104), // 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  S21311C6  {
  int s21311c6f0;
  ::S9072C8 s21311c6f1;
  ::S9072C10 s21311c6f2;
  ::S4145C13 s21311c6f3;
  void  mf21311c6(); // _ZN8S21311C69mf21311c6Ev
  virtual  ~S21311C6(); // _ZN8S21311C6D1Ev
  S21311C6(); // tgen
};
//SIG(-1 S21311C6) C1{ vd m Fi FC2{ BC3{ vd v3 v4 v5 v6 v7 v8 Fi[3]} vd v1 v2} FC4{ BC3 vd v9} FC5{ BC6{ vd v11 v12 v13 v14 v15 v16 Fi[3]} vd v10}}


void  S21311C6 ::mf21311c6(){}
 S21311C6 ::~S21311C6(){ note_dtor("S21311C6", this);}
S21311C6 ::S21311C6(){ note_ctor("S21311C6", this);} // tgen

static void Test_S21311C6()
{
  extern Class_Descriptor cd_S21311C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S21311C6, buf);
    S21311C6 *dp, &lv = *(dp=new (buf) S21311C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S21311C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21311C6)");
    check_field_offset(lv, s21311c6f0, ABISELECT(8,4), "S21311C6.s21311c6f0");
    check_field_offset(lv, s21311c6f1, ABISELECT(16,8), "S21311C6.s21311c6f1");
    check_field_offset(lv, s21311c6f2, ABISELECT(40,24), "S21311C6.s21311c6f2");
    check_field_offset(lv, s21311c6f3, ABISELECT(64,40), "S21311C6.s21311c6f3");
    test_class_info(&lv, &cd_S21311C6);
    dp->~S21311C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21311C6(Test_S21311C6, "S21311C6", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN8S21311C6C1Ev();
extern void _ZN8S21311C6D1Ev();
Name_Map name_map_S21311C6[] = {
  NSPAIR(_ZN8S21311C6C1Ev),
  NSPAIR(_ZN8S21311C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21311C6[];
extern void _ZN8S21311C6D1Ev();
extern void _ZN8S21311C6D0Ev();
static  VTBL_ENTRY vtc_S21311C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21311C6[0]),
  (VTBL_ENTRY)&_ZN8S21311C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21311C6D0Ev,
};
extern VTBL_ENTRY _ZTI8S21311C6[];
extern  VTBL_ENTRY _ZTV8S21311C6[];
Class_Descriptor cd_S21311C6 = {  "S21311C6", // class name
  0,0,//no base classes
  &(vtc_S21311C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI8S21311C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21311C6),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  S21311C1  {
  ::S9073C13_nt s21311c1f0;
  ::S9057C5_nt s21311c1f1;
  ::S9073C22_nt s21311c1f2[3];
  ::S21311C6 s21311c1f3;
  ::S9073C8 s21311c1f4;
  ::S9073C8 s21311c1f5;
  ::S9073C8 s21311c1f6;
  __tsi64 s21311c1f7;
  void  mf21311c1(); // _ZN8S21311C19mf21311c1Ev
  virtual  ~S21311C1(); // _ZN8S21311C1D1Ev
  S21311C1(); // tgen
};
//SIG(1 S21311C1) C1{ vd m FC2{ BC3{ vd v3 v4 v5 Fi} vd v1 v2} FC4{ BC5{ vd v8 v9 v10 Fi} vd v6 v7 Fp} FC6{ vd m Fc}[3] FC7{ vd m Fi FC8{ BC9{ vd v13 v14 v15 v16 v17 v18 Fi[3]} vd v11 v12} FC10{ BC9 vd v19} FC11{ BC12{ vd v21 v22 v23 v24 v25 v26 Fi[3]} vd v20}} FC13{ vd v27 Fp Fi[3]} FC13 FC13 FL}


void  S21311C1 ::mf21311c1(){}
 S21311C1 ::~S21311C1(){ note_dtor("S21311C1", this);}
S21311C1 ::S21311C1(){ note_ctor("S21311C1", this);} // tgen

static void Test_S21311C1()
{
  extern Class_Descriptor cd_S21311C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(37,44)];
    init_test(&cd_S21311C1, buf);
    S21311C1 *dp, &lv = *(dp=new (buf) S21311C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,172), "sizeof(S21311C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21311C1)");
    check_field_offset(lv, s21311c1f0, ABISELECT(8,4), "S21311C1.s21311c1f0");
    check_field_offset(lv, s21311c1f1, ABISELECT(24,12), "S21311C1.s21311c1f1");
    check_field_offset(lv, s21311c1f2, ABISELECT(48,24), "S21311C1.s21311c1f2");
    check_field_offset(lv, s21311c1f3, ABISELECT(96,48), "S21311C1.s21311c1f3");
    check_field_offset(lv, s21311c1f4, ABISELECT(184,104), "S21311C1.s21311c1f4");
    check_field_offset(lv, s21311c1f5, ABISELECT(216,124), "S21311C1.s21311c1f5");
    check_field_offset(lv, s21311c1f6, ABISELECT(248,144), "S21311C1.s21311c1f6");
    check_field_offset(lv, s21311c1f7, ABISELECT(280,164), "S21311C1.s21311c1f7");
    test_class_info(&lv, &cd_S21311C1);
    dp->~S21311C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21311C1(Test_S21311C1, "S21311C1", ABISELECT(288,172));

#else // __cplusplus

extern void _ZN8S21311C1C1Ev();
extern void _ZN8S21311C1D1Ev();
Name_Map name_map_S21311C1[] = {
  NSPAIR(_ZN8S21311C1C1Ev),
  NSPAIR(_ZN8S21311C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21311C1[];
extern void _ZN8S21311C1D1Ev();
extern void _ZN8S21311C1D0Ev();
static  VTBL_ENTRY vtc_S21311C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21311C1[0]),
  (VTBL_ENTRY)&_ZN8S21311C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21311C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21311C1[];
extern  VTBL_ENTRY _ZTV8S21311C1[];
Class_Descriptor cd_S21311C1 = {  "S21311C1", // class name
  0,0,//no base classes
  &(vtc_S21311C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(288,172), // object size
  NSPAIRA(_ZTI8S21311C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21311C1),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  S6639C2  {
  virtual  ~S6639C2(); // _ZN7S6639C2D1Ev
  virtual void  v24(); // _ZN7S6639C23v24Ev
  virtual void  v25(); // _ZN7S6639C23v25Ev
  virtual void  v26(); // _ZN7S6639C23v26Ev
  virtual void  v27(); // _ZN7S6639C23v27Ev
  virtual void  v28(); // _ZN7S6639C23v28Ev
  virtual void  v29(); // _ZN7S6639C23v29Ev
  virtual void  v30(); // _ZN7S6639C23v30Ev
  virtual void  v31(); // _ZN7S6639C23v31Ev
  virtual void  v32(); // _ZN7S6639C23v32Ev
  virtual void  v33(); // _ZN7S6639C23v33Ev
  virtual void  v34(); // _ZN7S6639C23v34Ev
  virtual void  v35(); // _ZN7S6639C23v35Ev
  virtual void  v36(); // _ZN7S6639C23v36Ev
  virtual void  v37(); // _ZN7S6639C23v37Ev
  virtual void  v38(); // _ZN7S6639C23v38Ev
  virtual void  v39(); // _ZN7S6639C23v39Ev
  virtual void  v40(); // _ZN7S6639C23v40Ev
  virtual void  v41(); // _ZN7S6639C23v41Ev
  virtual void  v42(); // _ZN7S6639C23v42Ev
  virtual void  v43(); // _ZN7S6639C23v43Ev
  virtual void  v44(); // _ZN7S6639C23v44Ev
  virtual void  v45(); // _ZN7S6639C23v45Ev
  virtual void  v46(); // _ZN7S6639C23v46Ev
  virtual void  v47(); // _ZN7S6639C23v47Ev
  virtual void  v48(); // _ZN7S6639C23v48Ev
  virtual void  v49(); // _ZN7S6639C23v49Ev
  virtual void  v50(); // _ZN7S6639C23v50Ev
  S6639C2(); // tgen
};
//SIG(-1 S6639C2) 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}


 S6639C2 ::~S6639C2(){ note_dtor("S6639C2", this);}
void  S6639C2 ::v24(){vfunc_called(this, "_ZN7S6639C23v24Ev");}
void  S6639C2 ::v25(){vfunc_called(this, "_ZN7S6639C23v25Ev");}
void  S6639C2 ::v26(){vfunc_called(this, "_ZN7S6639C23v26Ev");}
void  S6639C2 ::v27(){vfunc_called(this, "_ZN7S6639C23v27Ev");}
void  S6639C2 ::v28(){vfunc_called(this, "_ZN7S6639C23v28Ev");}
void  S6639C2 ::v29(){vfunc_called(this, "_ZN7S6639C23v29Ev");}
void  S6639C2 ::v30(){vfunc_called(this, "_ZN7S6639C23v30Ev");}
void  S6639C2 ::v31(){vfunc_called(this, "_ZN7S6639C23v31Ev");}
void  S6639C2 ::v32(){vfunc_called(this, "_ZN7S6639C23v32Ev");}
void  S6639C2 ::v33(){vfunc_called(this, "_ZN7S6639C23v33Ev");}
void  S6639C2 ::v34(){vfunc_called(this, "_ZN7S6639C23v34Ev");}
void  S6639C2 ::v35(){vfunc_called(this, "_ZN7S6639C23v35Ev");}
void  S6639C2 ::v36(){vfunc_called(this, "_ZN7S6639C23v36Ev");}
void  S6639C2 ::v37(){vfunc_called(this, "_ZN7S6639C23v37Ev");}
void  S6639C2 ::v38(){vfunc_called(this, "_ZN7S6639C23v38Ev");}
void  S6639C2 ::v39(){vfunc_called(this, "_ZN7S6639C23v39Ev");}
void  S6639C2 ::v40(){vfunc_called(this, "_ZN7S6639C23v40Ev");}
void  S6639C2 ::v41(){vfunc_called(this, "_ZN7S6639C23v41Ev");}
void  S6639C2 ::v42(){vfunc_called(this, "_ZN7S6639C23v42Ev");}
void  S6639C2 ::v43(){vfunc_called(this, "_ZN7S6639C23v43Ev");}
void  S6639C2 ::v44(){vfunc_called(this, "_ZN7S6639C23v44Ev");}
void  S6639C2 ::v45(){vfunc_called(this, "_ZN7S6639C23v45Ev");}
void  S6639C2 ::v46(){vfunc_called(this, "_ZN7S6639C23v46Ev");}
void  S6639C2 ::v47(){vfunc_called(this, "_ZN7S6639C23v47Ev");}
void  S6639C2 ::v48(){vfunc_called(this, "_ZN7S6639C23v48Ev");}
void  S6639C2 ::v49(){vfunc_called(this, "_ZN7S6639C23v49Ev");}
void  S6639C2 ::v50(){vfunc_called(this, "_ZN7S6639C23v50Ev");}
S6639C2 ::S6639C2(){ note_ctor("S6639C2", this);} // tgen

static void Test_S6639C2()
{
  extern Class_Descriptor cd_S6639C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6639C2, buf);
    S6639C2 *dp, &lv = *(dp=new (buf) S6639C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6639C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6639C2)");
    test_class_info(&lv, &cd_S6639C2);
    dp->~S6639C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6639C2(Test_S6639C2, "S6639C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6639C2C1Ev();
extern void _ZN7S6639C2D1Ev();
Name_Map name_map_S6639C2[] = {
  NSPAIR(_ZN7S6639C2C1Ev),
  NSPAIR(_ZN7S6639C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6639C2[];
extern void _ZN7S6639C2D1Ev();
extern void _ZN7S6639C2D0Ev();
extern void _ZN7S6639C23v24Ev();
extern void _ZN7S6639C23v25Ev();
extern void _ZN7S6639C23v26Ev();
extern void _ZN7S6639C23v27Ev();
extern void _ZN7S6639C23v28Ev();
extern void _ZN7S6639C23v29Ev();
extern void _ZN7S6639C23v30Ev();
extern void _ZN7S6639C23v31Ev();
extern void _ZN7S6639C23v32Ev();
extern void _ZN7S6639C23v33Ev();
extern void _ZN7S6639C23v34Ev();
extern void _ZN7S6639C23v35Ev();
extern void _ZN7S6639C23v36Ev();
extern void _ZN7S6639C23v37Ev();
extern void _ZN7S6639C23v38Ev();
extern void _ZN7S6639C23v39Ev();
extern void _ZN7S6639C23v40Ev();
extern void _ZN7S6639C23v41Ev();
extern void _ZN7S6639C23v42Ev();
extern void _ZN7S6639C23v43Ev();
extern void _ZN7S6639C23v44Ev();
extern void _ZN7S6639C23v45Ev();
extern void _ZN7S6639C23v46Ev();
extern void _ZN7S6639C23v47Ev();
extern void _ZN7S6639C23v48Ev();
extern void _ZN7S6639C23v49Ev();
extern void _ZN7S6639C23v50Ev();
static  VTBL_ENTRY vtc_S6639C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6639C2[0]),
  (VTBL_ENTRY)&_ZN7S6639C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6639C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v29Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v30Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v31Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v32Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v33Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v50Ev,
};
extern VTBL_ENTRY _ZTI7S6639C2[];
extern  VTBL_ENTRY _ZTV7S6639C2[];
Class_Descriptor cd_S6639C2 = {  "S6639C2", // class name
  0,0,//no base classes
  &(vtc_S6639C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6639C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6639C2),31, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6639C1  : S6639C2 {
  void *s6639c1f0;
  virtual void  v1(); // _ZN7S6639C12v1Ev
  virtual void  v2(); // _ZN7S6639C12v2Ev
  virtual void  v3(); // _ZN7S6639C12v3Ev
  virtual void  v4(); // _ZN7S6639C12v4Ev
  virtual void  v5(); // _ZN7S6639C12v5Ev
  virtual void  v6(); // _ZN7S6639C12v6Ev
  virtual void  v7(); // _ZN7S6639C12v7Ev
  virtual void  v8(); // _ZN7S6639C12v8Ev
  virtual void  v9(); // _ZN7S6639C12v9Ev
  virtual void  v10(); // _ZN7S6639C13v10Ev
  virtual void  v11(); // _ZN7S6639C13v11Ev
  virtual void  v12(); // _ZN7S6639C13v12Ev
  virtual void  v13(); // _ZN7S6639C13v13Ev
  virtual void  v14(); // _ZN7S6639C13v14Ev
  virtual void  v15(); // _ZN7S6639C13v15Ev
  virtual void  v16(); // _ZN7S6639C13v16Ev
  virtual void  v17(); // _ZN7S6639C13v17Ev
  virtual void  v18(); // _ZN7S6639C13v18Ev
  virtual void  v19(); // _ZN7S6639C13v19Ev
  virtual void  v20(); // _ZN7S6639C13v20Ev
  virtual void  v21(); // _ZN7S6639C13v21Ev
  virtual void  v22(); // _ZN7S6639C13v22Ev
  virtual void  v23(); // _ZN7S6639C13v23Ev
  ~S6639C1(); // tgen
  S6639C1(); // tgen
};
//SIG(1 S6639C1) C1{ BC2{ vd 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} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 Fp}


void  S6639C1 ::v1(){vfunc_called(this, "_ZN7S6639C12v1Ev");}
void  S6639C1 ::v2(){vfunc_called(this, "_ZN7S6639C12v2Ev");}
void  S6639C1 ::v3(){vfunc_called(this, "_ZN7S6639C12v3Ev");}
void  S6639C1 ::v4(){vfunc_called(this, "_ZN7S6639C12v4Ev");}
void  S6639C1 ::v5(){vfunc_called(this, "_ZN7S6639C12v5Ev");}
void  S6639C1 ::v6(){vfunc_called(this, "_ZN7S6639C12v6Ev");}
void  S6639C1 ::v7(){vfunc_called(this, "_ZN7S6639C12v7Ev");}
void  S6639C1 ::v8(){vfunc_called(this, "_ZN7S6639C12v8Ev");}
void  S6639C1 ::v9(){vfunc_called(this, "_ZN7S6639C12v9Ev");}
void  S6639C1 ::v10(){vfunc_called(this, "_ZN7S6639C13v10Ev");}
void  S6639C1 ::v11(){vfunc_called(this, "_ZN7S6639C13v11Ev");}
void  S6639C1 ::v12(){vfunc_called(this, "_ZN7S6639C13v12Ev");}
void  S6639C1 ::v13(){vfunc_called(this, "_ZN7S6639C13v13Ev");}
void  S6639C1 ::v14(){vfunc_called(this, "_ZN7S6639C13v14Ev");}
void  S6639C1 ::v15(){vfunc_called(this, "_ZN7S6639C13v15Ev");}
void  S6639C1 ::v16(){vfunc_called(this, "_ZN7S6639C13v16Ev");}
void  S6639C1 ::v17(){vfunc_called(this, "_ZN7S6639C13v17Ev");}
void  S6639C1 ::v18(){vfunc_called(this, "_ZN7S6639C13v18Ev");}
void  S6639C1 ::v19(){vfunc_called(this, "_ZN7S6639C13v19Ev");}
void  S6639C1 ::v20(){vfunc_called(this, "_ZN7S6639C13v20Ev");}
void  S6639C1 ::v21(){vfunc_called(this, "_ZN7S6639C13v21Ev");}
void  S6639C1 ::v22(){vfunc_called(this, "_ZN7S6639C13v22Ev");}
void  S6639C1 ::v23(){vfunc_called(this, "_ZN7S6639C13v23Ev");}
S6639C1 ::~S6639C1(){ note_dtor("S6639C1", this);} // tgen
S6639C1 ::S6639C1(){ note_ctor("S6639C1", this);} // tgen

static void Test_S6639C1()
{
  extern Class_Descriptor cd_S6639C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6639C1, buf);
    S6639C1 *dp, &lv = *(dp=new (buf) S6639C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6639C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6639C1)");
    check_base_class_offset(lv, (S6639C2*), 0, "S6639C1");
    check_field_offset(lv, s6639c1f0, ABISELECT(8,4), "S6639C1.s6639c1f0");
    test_class_info(&lv, &cd_S6639C1);
    dp->~S6639C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6639C1(Test_S6639C1, "S6639C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6639C1C1Ev();
extern void _ZN7S6639C1D1Ev();
Name_Map name_map_S6639C1[] = {
  NSPAIR(_ZN7S6639C1C1Ev),
  NSPAIR(_ZN7S6639C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6639C2;
extern VTBL_ENTRY _ZTI7S6639C2[];
extern  VTBL_ENTRY _ZTV7S6639C2[];
static Base_Class bases_S6639C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6639C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6639C1[];
extern void _ZN7S6639C1D1Ev();
extern void _ZN7S6639C1D0Ev();
extern void _ZN7S6639C23v24Ev();
extern void _ZN7S6639C23v25Ev();
extern void _ZN7S6639C23v26Ev();
extern void _ZN7S6639C23v27Ev();
extern void _ZN7S6639C23v28Ev();
extern void _ZN7S6639C23v29Ev();
extern void _ZN7S6639C23v30Ev();
extern void _ZN7S6639C23v31Ev();
extern void _ZN7S6639C23v32Ev();
extern void _ZN7S6639C23v33Ev();
extern void _ZN7S6639C23v34Ev();
extern void _ZN7S6639C23v35Ev();
extern void _ZN7S6639C23v36Ev();
extern void _ZN7S6639C23v37Ev();
extern void _ZN7S6639C23v38Ev();
extern void _ZN7S6639C23v39Ev();
extern void _ZN7S6639C23v40Ev();
extern void _ZN7S6639C23v41Ev();
extern void _ZN7S6639C23v42Ev();
extern void _ZN7S6639C23v43Ev();
extern void _ZN7S6639C23v44Ev();
extern void _ZN7S6639C23v45Ev();
extern void _ZN7S6639C23v46Ev();
extern void _ZN7S6639C23v47Ev();
extern void _ZN7S6639C23v48Ev();
extern void _ZN7S6639C23v49Ev();
extern void _ZN7S6639C23v50Ev();
extern void _ZN7S6639C12v1Ev();
extern void _ZN7S6639C12v2Ev();
extern void _ZN7S6639C12v3Ev();
extern void _ZN7S6639C12v4Ev();
extern void _ZN7S6639C12v5Ev();
extern void _ZN7S6639C12v6Ev();
extern void _ZN7S6639C12v7Ev();
extern void _ZN7S6639C12v8Ev();
extern void _ZN7S6639C12v9Ev();
extern void _ZN7S6639C13v10Ev();
extern void _ZN7S6639C13v11Ev();
extern void _ZN7S6639C13v12Ev();
extern void _ZN7S6639C13v13Ev();
extern void _ZN7S6639C13v14Ev();
extern void _ZN7S6639C13v15Ev();
extern void _ZN7S6639C13v16Ev();
extern void _ZN7S6639C13v17Ev();
extern void _ZN7S6639C13v18Ev();
extern void _ZN7S6639C13v19Ev();
extern void _ZN7S6639C13v20Ev();
extern void _ZN7S6639C13v21Ev();
extern void _ZN7S6639C13v22Ev();
extern void _ZN7S6639C13v23Ev();
static  VTBL_ENTRY vtc_S6639C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6639C1[0]),
  (VTBL_ENTRY)&_ZN7S6639C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6639C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v29Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v30Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v31Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v32Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v33Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6639C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6639C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6639C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6639C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6639C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6639C12v5Ev,
  (VTBL_ENTRY)&_ZN7S6639C12v6Ev,
  (VTBL_ENTRY)&_ZN7S6639C12v7Ev,
  (VTBL_ENTRY)&_ZN7S6639C12v8Ev,
  (VTBL_ENTRY)&_ZN7S6639C12v9Ev,
  (VTBL_ENTRY)&_ZN7S6639C13v10Ev,
  (VTBL_ENTRY)&_ZN7S6639C13v11Ev,
  (VTBL_ENTRY)&_ZN7S6639C13v12Ev,
  (VTBL_ENTRY)&_ZN7S6639C13v13Ev,
  (VTBL_ENTRY)&_ZN7S6639C13v14Ev,
  (VTBL_ENTRY)&_ZN7S6639C13v15Ev,
  (VTBL_ENTRY)&_ZN7S6639C13v16Ev,
  (VTBL_ENTRY)&_ZN7S6639C13v17Ev,
  (VTBL_ENTRY)&_ZN7S6639C13v18Ev,
  (VTBL_ENTRY)&_ZN7S6639C13v19Ev,
  (VTBL_ENTRY)&_ZN7S6639C13v20Ev,
  (VTBL_ENTRY)&_ZN7S6639C13v21Ev,
  (VTBL_ENTRY)&_ZN7S6639C13v22Ev,
  (VTBL_ENTRY)&_ZN7S6639C13v23Ev,
};
extern VTBL_ENTRY _ZTI7S6639C1[];
extern  VTBL_ENTRY _ZTV7S6639C1[];
Class_Descriptor cd_S6639C1 = {  "S6639C1", // class name
  bases_S6639C1, 1,
  &(vtc_S6639C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6639C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6639C1),54, //virtual function table var
  2, // 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  S4146C3  {
  ::S4677C18_nt s4146c3f0;
  int s4146c3f1;
  void *s4146c3f2[4];
  virtual  ~S4146C3(); // _ZN7S4146C3D1Ev
  virtual void  v1(); // _ZN7S4146C32v1Ev
  virtual void  v2(); // _ZN7S4146C32v2Ev
  virtual void  v3(); // _ZN7S4146C32v3Ev
  virtual void  v4(); // _ZN7S4146C32v4Ev
  S4146C3(); // tgen
};
//SIG(-1 S4146C3) C1{ vd v1 v2 v3 v4 FC2{ m FC3{ m Fp Fi FC4{ m}} Fi} Fi Fp[4]}


 S4146C3 ::~S4146C3(){ note_dtor("S4146C3", this);}
void  S4146C3 ::v1(){vfunc_called(this, "_ZN7S4146C32v1Ev");}
void  S4146C3 ::v2(){vfunc_called(this, "_ZN7S4146C32v2Ev");}
void  S4146C3 ::v3(){vfunc_called(this, "_ZN7S4146C32v3Ev");}
void  S4146C3 ::v4(){vfunc_called(this, "_ZN7S4146C32v4Ev");}
S4146C3 ::S4146C3(){ note_ctor("S4146C3", this);} // tgen

static void Test_S4146C3()
{
  extern Class_Descriptor cd_S4146C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S4146C3, buf);
    S4146C3 *dp, &lv = *(dp=new (buf) S4146C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S4146C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4146C3)");
    check_field_offset(lv, s4146c3f0, ABISELECT(8,4), "S4146C3.s4146c3f0");
    check_field_offset(lv, s4146c3f1, ABISELECT(32,20), "S4146C3.s4146c3f1");
    check_field_offset(lv, s4146c3f2, ABISELECT(40,24), "S4146C3.s4146c3f2");
    test_class_info(&lv, &cd_S4146C3);
    dp->~S4146C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4146C3(Test_S4146C3, "S4146C3", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN7S4146C3C1Ev();
extern void _ZN7S4146C3D1Ev();
Name_Map name_map_S4146C3[] = {
  NSPAIR(_ZN7S4146C3C1Ev),
  NSPAIR(_ZN7S4146C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4146C3[];
extern void _ZN7S4146C3D1Ev();
extern void _ZN7S4146C3D0Ev();
extern void _ZN7S4146C32v1Ev();
extern void _ZN7S4146C32v2Ev();
extern void _ZN7S4146C32v3Ev();
extern void _ZN7S4146C32v4Ev();
static  VTBL_ENTRY vtc_S4146C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4146C3[0]),
  (VTBL_ENTRY)&_ZN7S4146C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4146C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4146C32v1Ev,
  (VTBL_ENTRY)&_ZN7S4146C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4146C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4146C32v4Ev,
};
extern VTBL_ENTRY _ZTI7S4146C3[];
extern  VTBL_ENTRY _ZTV7S4146C3[];
Class_Descriptor cd_S4146C3 = {  "S4146C3", // class name
  0,0,//no base classes
  &(vtc_S4146C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI7S4146C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4146C3),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4146C2  : S4146C3 {
  void *s4146c2f0;
  char s4146c2f1[2];
  virtual  ~S4146C2(); // _ZN7S4146C2D1Ev
  virtual void  v5(); // _ZN7S4146C22v5Ev
  virtual void  v6(); // _ZN7S4146C22v6Ev
  virtual void  v7(); // _ZN7S4146C22v7Ev
  virtual void  v8(); // _ZN7S4146C22v8Ev
  S4146C2(); // tgen
};
//SIG(-1 S4146C2) C1{ BC2{ vd v5 v6 v7 v8 FC3{ m FC4{ m Fp Fi FC5{ m}} Fi} Fi Fp[4]} vd v1 v2 v3 v4 Fp Fc[2]}


 S4146C2 ::~S4146C2(){ note_dtor("S4146C2", this);}
void  S4146C2 ::v5(){vfunc_called(this, "_ZN7S4146C22v5Ev");}
void  S4146C2 ::v6(){vfunc_called(this, "_ZN7S4146C22v6Ev");}
void  S4146C2 ::v7(){vfunc_called(this, "_ZN7S4146C22v7Ev");}
void  S4146C2 ::v8(){vfunc_called(this, "_ZN7S4146C22v8Ev");}
S4146C2 ::S4146C2(){ note_ctor("S4146C2", this);} // tgen

static void Test_S4146C2()
{
  extern Class_Descriptor cd_S4146C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,13)];
    init_test(&cd_S4146C2, buf);
    S4146C2 *dp, &lv = *(dp=new (buf) S4146C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,48), "sizeof(S4146C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4146C2)");
    check_base_class_offset(lv, (S4146C3*), 0, "S4146C2");
    check_field_offset(lv, s4146c2f0, ABISELECT(72,40), "S4146C2.s4146c2f0");
    check_field_offset(lv, s4146c2f1, ABISELECT(80,44), "S4146C2.s4146c2f1");
    test_class_info(&lv, &cd_S4146C2);
    dp->~S4146C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4146C2(Test_S4146C2, "S4146C2", ABISELECT(88,48));

#else // __cplusplus

extern void _ZN7S4146C2C1Ev();
extern void _ZN7S4146C2D1Ev();
Name_Map name_map_S4146C2[] = {
  NSPAIR(_ZN7S4146C2C1Ev),
  NSPAIR(_ZN7S4146C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4146C3;
extern VTBL_ENTRY _ZTI7S4146C3[];
extern  VTBL_ENTRY _ZTV7S4146C3[];
static Base_Class bases_S4146C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4146C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4146C2[];
extern void _ZN7S4146C2D1Ev();
extern void _ZN7S4146C2D0Ev();
extern void _ZN7S4146C32v1Ev();
extern void _ZN7S4146C32v2Ev();
extern void _ZN7S4146C32v3Ev();
extern void _ZN7S4146C32v4Ev();
extern void _ZN7S4146C22v5Ev();
extern void _ZN7S4146C22v6Ev();
extern void _ZN7S4146C22v7Ev();
extern void _ZN7S4146C22v8Ev();
static  VTBL_ENTRY vtc_S4146C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4146C2[0]),
  (VTBL_ENTRY)&_ZN7S4146C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4146C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4146C32v1Ev,
  (VTBL_ENTRY)&_ZN7S4146C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4146C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4146C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4146C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4146C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4146C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4146C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S4146C2[];
extern  VTBL_ENTRY _ZTV7S4146C2[];
Class_Descriptor cd_S4146C2 = {  "S4146C2", // class name
  bases_S4146C2, 1,
  &(vtc_S4146C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,48), // object size
  NSPAIRA(_ZTI7S4146C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4146C2),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  S4146C1  : S4146C2 {
  ::S4145C7_nt s4146c1f0;
  ::S4145C7_nt s4146c1f1;
  ::S4145C8_nt s4146c1f2;
  ::S9072C7 s4146c1f3;
  void *s4146c1f4;
  virtual  ~S4146C1(); // _ZN7S4146C1D1Ev
  S4146C1(); // tgen
};
//SIG(1 S4146C1) C1{ BC2{ BC3{ vd v1 v2 v3 v4 FC4{ m FC5{ m Fp Fi FC6{ m}} Fi} Fi Fp[4]} vd v5 v6 v7 v8 Fp Fc[2]} vd FC7{ vd m Fp[3]} FC7 FC8{ vd m Fp} FC9{ vd m FC10{ BC11{ vd v11 v12 v13 v14 v15 v16 Fi[3]} vd v9 v10} FC12{ BC11 vd v17}} Fp}


 S4146C1 ::~S4146C1(){ note_dtor("S4146C1", this);}
S4146C1 ::S4146C1(){ note_ctor("S4146C1", this);} // tgen

static void Test_S4146C1()
{
  extern Class_Descriptor cd_S4146C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,33)];
    init_test(&cd_S4146C1, buf);
    S4146C1 *dp, &lv = *(dp=new (buf) S4146C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,128), "sizeof(S4146C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4146C1)");
    check_base_class_offset(lv, (S4146C3*)(S4146C2*), 0, "S4146C1");
    check_base_class_offset(lv, (S4146C2*), 0, "S4146C1");
    check_field_offset(lv, s4146c1f0, ABISELECT(88,48), "S4146C1.s4146c1f0");
    check_field_offset(lv, s4146c1f1, ABISELECT(120,64), "S4146C1.s4146c1f1");
    check_field_offset(lv, s4146c1f2, ABISELECT(152,80), "S4146C1.s4146c1f2");
    check_field_offset(lv, s4146c1f3, ABISELECT(168,88), "S4146C1.s4146c1f3");
    check_field_offset(lv, s4146c1f4, ABISELECT(224,124), "S4146C1.s4146c1f4");
    test_class_info(&lv, &cd_S4146C1);
    dp->~S4146C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4146C1(Test_S4146C1, "S4146C1", ABISELECT(232,128));

#else // __cplusplus

extern void _ZN7S4146C1C1Ev();
extern void _ZN7S4146C1D1Ev();
Name_Map name_map_S4146C1[] = {
  NSPAIR(_ZN7S4146C1C1Ev),
  NSPAIR(_ZN7S4146C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4146C3;
extern VTBL_ENTRY _ZTI7S4146C3[];
extern  VTBL_ENTRY _ZTV7S4146C3[];
extern Class_Descriptor cd_S4146C2;
extern VTBL_ENTRY _ZTI7S4146C2[];
extern  VTBL_ENTRY _ZTV7S4146C2[];
static Base_Class bases_S4146C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4146C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4146C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S4146C1[];
extern void _ZN7S4146C1D1Ev();
extern void _ZN7S4146C1D0Ev();
extern void _ZN7S4146C32v1Ev();
extern void _ZN7S4146C32v2Ev();
extern void _ZN7S4146C32v3Ev();
extern void _ZN7S4146C32v4Ev();
extern void _ZN7S4146C22v5Ev();
extern void _ZN7S4146C22v6Ev();
extern void _ZN7S4146C22v7Ev();
extern void _ZN7S4146C22v8Ev();
static  VTBL_ENTRY vtc_S4146C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4146C1[0]),
  (VTBL_ENTRY)&_ZN7S4146C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4146C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4146C32v1Ev,
  (VTBL_ENTRY)&_ZN7S4146C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4146C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4146C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4146C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4146C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4146C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4146C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S4146C1[];
extern  VTBL_ENTRY _ZTV7S4146C1[];
Class_Descriptor cd_S4146C1 = {  "S4146C1", // class name
  bases_S4146C1, 2,
  &(vtc_S4146C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(232,128), // object size
  NSPAIRA(_ZTI7S4146C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4146C1),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  S8497C2  {
  virtual  ~S8497C2(); // _ZN7S8497C2D1Ev
  virtual void  v1(); // _ZN7S8497C22v1Ev
  S8497C2(); // tgen
};
//SIG(-1 S8497C2) C1{ vd v1}


 S8497C2 ::~S8497C2(){ note_dtor("S8497C2", this);}
void  S8497C2 ::v1(){vfunc_called(this, "_ZN7S8497C22v1Ev");}
S8497C2 ::S8497C2(){ note_ctor("S8497C2", this);} // tgen

static void Test_S8497C2()
{
  extern Class_Descriptor cd_S8497C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8497C2, buf);
    S8497C2 *dp, &lv = *(dp=new (buf) S8497C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8497C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8497C2)");
    test_class_info(&lv, &cd_S8497C2);
    dp->~S8497C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8497C2(Test_S8497C2, "S8497C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8497C2C1Ev();
extern void _ZN7S8497C2D1Ev();
Name_Map name_map_S8497C2[] = {
  NSPAIR(_ZN7S8497C2C1Ev),
  NSPAIR(_ZN7S8497C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8497C2[];
extern void _ZN7S8497C2D1Ev();
extern void _ZN7S8497C2D0Ev();
extern void _ZN7S8497C22v1Ev();
static  VTBL_ENTRY vtc_S8497C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8497C2[0]),
  (VTBL_ENTRY)&_ZN7S8497C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8497C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8497C22v1Ev,
};
extern VTBL_ENTRY _ZTI7S8497C2[];
extern  VTBL_ENTRY _ZTV7S8497C2[];
Class_Descriptor cd_S8497C2 = {  "S8497C2", // class name
  0,0,//no base classes
  &(vtc_S8497C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8497C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8497C2),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  S8497C3  {
  ::S9073C8 s8497c3f0;
  ::S9073C8 s8497c3f1;
  void  mf8497c3(); // _ZN7S8497C38mf8497c3Ev
  virtual  ~S8497C3(); // _ZN7S8497C3D1Ev
  S8497C3(); // tgen
};
//SIG(-1 S8497C3) C1{ vd m FC2{ vd v1 Fp Fi[3]} FC2}


void  S8497C3 ::mf8497c3(){}
 S8497C3 ::~S8497C3(){ note_dtor("S8497C3", this);}
S8497C3 ::S8497C3(){ note_ctor("S8497C3", this);} // tgen

static void Test_S8497C3()
{
  extern Class_Descriptor cd_S8497C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S8497C3, buf);
    S8497C3 *dp, &lv = *(dp=new (buf) S8497C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S8497C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8497C3)");
    check_field_offset(lv, s8497c3f0, ABISELECT(8,4), "S8497C3.s8497c3f0");
    check_field_offset(lv, s8497c3f1, ABISELECT(40,24), "S8497C3.s8497c3f1");
    test_class_info(&lv, &cd_S8497C3);
    dp->~S8497C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8497C3(Test_S8497C3, "S8497C3", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN7S8497C3C1Ev();
extern void _ZN7S8497C3D1Ev();
Name_Map name_map_S8497C3[] = {
  NSPAIR(_ZN7S8497C3C1Ev),
  NSPAIR(_ZN7S8497C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8497C3[];
extern void _ZN7S8497C3D1Ev();
extern void _ZN7S8497C3D0Ev();
static  VTBL_ENTRY vtc_S8497C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8497C3[0]),
  (VTBL_ENTRY)&_ZN7S8497C3D1Ev,
  (VTBL_ENTRY)&_ZN7S8497C3D0Ev,
};
extern VTBL_ENTRY _ZTI7S8497C3[];
extern  VTBL_ENTRY _ZTV7S8497C3[];
Class_Descriptor cd_S8497C3 = {  "S8497C3", // class name
  0,0,//no base classes
  &(vtc_S8497C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI7S8497C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8497C3),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  S8497C1  : S8497C2 {
  ::S8497C3 s8497c1f0;
  ::S9072C3 s8497c1f1;
  ::S9073C8 s8497c1f2;
  __tsi64 s8497c1f3;
  virtual  ~S8497C1(); // _ZN7S8497C1D1Ev
  S8497C1(); // tgen
};
//SIG(1 S8497C1) C1{ BC2{ vd v1} vd FC3{ vd m FC4{ vd v2 Fp Fi[3]} FC4} FC5{ vd m FC6{ BC7{ vd v5 v6 v7 Fi} vd v3 v4} FC4 FC4 FC8{ vd m FC9{ BC10{ vd v10 v11 v12 v13 v14 v15 Fi[3]} vd v8 v9} FC11{ BC10 vd v16}} FC8 FC4 FC4 Fi[2]} FC4 FL}


 S8497C1 ::~S8497C1(){ note_dtor("S8497C1", this);}
S8497C1 ::S8497C1(){ note_ctor("S8497C1", this);} // tgen

static void Test_S8497C1()
{
  extern Class_Descriptor cd_S8497C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(50,63)];
    init_test(&cd_S8497C1, buf);
    S8497C1 *dp, &lv = *(dp=new (buf) S8497C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(392,248), "sizeof(S8497C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8497C1)");
    check_base_class_offset(lv, (S8497C2*), 0, "S8497C1");
    check_field_offset(lv, s8497c1f0, ABISELECT(8,4), "S8497C1.s8497c1f0");
    check_field_offset(lv, s8497c1f1, ABISELECT(80,48), "S8497C1.s8497c1f1");
    check_field_offset(lv, s8497c1f2, ABISELECT(352,220), "S8497C1.s8497c1f2");
    check_field_offset(lv, s8497c1f3, ABISELECT(384,240), "S8497C1.s8497c1f3");
    test_class_info(&lv, &cd_S8497C1);
    dp->~S8497C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8497C1(Test_S8497C1, "S8497C1", ABISELECT(392,248));

#else // __cplusplus

extern void _ZN7S8497C1C1Ev();
extern void _ZN7S8497C1D1Ev();
Name_Map name_map_S8497C1[] = {
  NSPAIR(_ZN7S8497C1C1Ev),
  NSPAIR(_ZN7S8497C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8497C2;
extern VTBL_ENTRY _ZTI7S8497C2[];
extern  VTBL_ENTRY _ZTV7S8497C2[];
static Base_Class bases_S8497C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8497C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8497C1[];
extern void _ZN7S8497C1D1Ev();
extern void _ZN7S8497C1D0Ev();
extern void _ZN7S8497C22v1Ev();
static  VTBL_ENTRY vtc_S8497C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8497C1[0]),
  (VTBL_ENTRY)&_ZN7S8497C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8497C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8497C22v1Ev,
};
extern VTBL_ENTRY _ZTI7S8497C1[];
extern  VTBL_ENTRY _ZTV7S8497C1[];
Class_Descriptor cd_S8497C1 = {  "S8497C1", // class name
  bases_S8497C1, 1,
  &(vtc_S8497C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(392,248), // object size
  NSPAIRA(_ZTI7S8497C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8497C1),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  S8472C2  {
  ::S4677C18_nt s8472c2f0;
  int s8472c2f1;
  void *s8472c2f2[3];
  virtual  ~S8472C2(); // _ZN7S8472C2D1Ev
  virtual void  v1(); // _ZN7S8472C22v1Ev
  virtual void  v2(); // _ZN7S8472C22v2Ev
  virtual void  v3(); // _ZN7S8472C22v3Ev
  virtual void  v4(); // _ZN7S8472C22v4Ev
  S8472C2(); // tgen
};
//SIG(-1 S8472C2) C1{ vd v1 v2 v3 v4 FC2{ m FC3{ m Fp Fi FC4{ m}} Fi} Fi Fp[3]}


 S8472C2 ::~S8472C2(){ note_dtor("S8472C2", this);}
void  S8472C2 ::v1(){vfunc_called(this, "_ZN7S8472C22v1Ev");}
void  S8472C2 ::v2(){vfunc_called(this, "_ZN7S8472C22v2Ev");}
void  S8472C2 ::v3(){vfunc_called(this, "_ZN7S8472C22v3Ev");}
void  S8472C2 ::v4(){vfunc_called(this, "_ZN7S8472C22v4Ev");}
S8472C2 ::S8472C2(){ note_ctor("S8472C2", this);} // tgen

static void Test_S8472C2()
{
  extern Class_Descriptor cd_S8472C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S8472C2, buf);
    S8472C2 *dp, &lv = *(dp=new (buf) S8472C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S8472C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8472C2)");
    check_field_offset(lv, s8472c2f0, ABISELECT(8,4), "S8472C2.s8472c2f0");
    check_field_offset(lv, s8472c2f1, ABISELECT(32,20), "S8472C2.s8472c2f1");
    check_field_offset(lv, s8472c2f2, ABISELECT(40,24), "S8472C2.s8472c2f2");
    test_class_info(&lv, &cd_S8472C2);
    dp->~S8472C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8472C2(Test_S8472C2, "S8472C2", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN7S8472C2C1Ev();
extern void _ZN7S8472C2D1Ev();
Name_Map name_map_S8472C2[] = {
  NSPAIR(_ZN7S8472C2C1Ev),
  NSPAIR(_ZN7S8472C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8472C2[];
extern void _ZN7S8472C2D1Ev();
extern void _ZN7S8472C2D0Ev();
extern void _ZN7S8472C22v1Ev();
extern void _ZN7S8472C22v2Ev();
extern void _ZN7S8472C22v3Ev();
extern void _ZN7S8472C22v4Ev();
static  VTBL_ENTRY vtc_S8472C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8472C2[0]),
  (VTBL_ENTRY)&_ZN7S8472C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8472C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8472C22v1Ev,
  (VTBL_ENTRY)&_ZN7S8472C22v2Ev,
  (VTBL_ENTRY)&_ZN7S8472C22v3Ev,
  (VTBL_ENTRY)&_ZN7S8472C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S8472C2[];
extern  VTBL_ENTRY _ZTV7S8472C2[];
Class_Descriptor cd_S8472C2 = {  "S8472C2", // class name
  0,0,//no base classes
  &(vtc_S8472C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI7S8472C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8472C2),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8472C1  : S8472C2 {
  ::S4145C7_nt s8472c1f0;
  ::S4145C7_nt s8472c1f1;
  ::S4145C7_nt s8472c1f2;
  ::S4145C8_nt s8472c1f3;
  ::S21311C6 s8472c1f4;
  void *s8472c1f5;
  virtual  ~S8472C1(); // _ZN7S8472C1D1Ev
  S8472C1(); // tgen
};
//SIG(1 S8472C1) C1{ BC2{ vd v1 v2 v3 v4 FC3{ m FC4{ m Fp Fi FC5{ m}} Fi} Fi Fp[3]} vd FC6{ vd m Fp[3]} FC6 FC6 FC7{ vd m Fp} FC8{ vd m Fi FC9{ BC10{ vd v7 v8 v9 v10 v11 v12 Fi[3]} vd v5 v6} FC11{ BC10 vd v13} FC12{ BC13{ vd v15 v16 v17 v18 v19 v20 Fi[3]} vd v14}} Fp}


 S8472C1 ::~S8472C1(){ note_dtor("S8472C1", this);}
S8472C1 ::S8472C1(){ note_ctor("S8472C1", this);} // tgen

static void Test_S8472C1()
{
  extern Class_Descriptor cd_S8472C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(35,39)];
    init_test(&cd_S8472C1, buf);
    S8472C1 *dp, &lv = *(dp=new (buf) S8472C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,152), "sizeof(S8472C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8472C1)");
    check_base_class_offset(lv, (S8472C2*), 0, "S8472C1");
    check_field_offset(lv, s8472c1f0, ABISELECT(64,36), "S8472C1.s8472c1f0");
    check_field_offset(lv, s8472c1f1, ABISELECT(96,52), "S8472C1.s8472c1f1");
    check_field_offset(lv, s8472c1f2, ABISELECT(128,68), "S8472C1.s8472c1f2");
    check_field_offset(lv, s8472c1f3, ABISELECT(160,84), "S8472C1.s8472c1f3");
    check_field_offset(lv, s8472c1f4, ABISELECT(176,92), "S8472C1.s8472c1f4");
    check_field_offset(lv, s8472c1f5, ABISELECT(264,148), "S8472C1.s8472c1f5");
    test_class_info(&lv, &cd_S8472C1);
    dp->~S8472C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8472C1(Test_S8472C1, "S8472C1", ABISELECT(272,152));

#else // __cplusplus

extern void _ZN7S8472C1C1Ev();
extern void _ZN7S8472C1D1Ev();
Name_Map name_map_S8472C1[] = {
  NSPAIR(_ZN7S8472C1C1Ev),
  NSPAIR(_ZN7S8472C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8472C2;
extern VTBL_ENTRY _ZTI7S8472C2[];
extern  VTBL_ENTRY _ZTV7S8472C2[];
static Base_Class bases_S8472C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8472C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8472C1[];
extern void _ZN7S8472C1D1Ev();
extern void _ZN7S8472C1D0Ev();
extern void _ZN7S8472C22v1Ev();
extern void _ZN7S8472C22v2Ev();
extern void _ZN7S8472C22v3Ev();
extern void _ZN7S8472C22v4Ev();
static  VTBL_ENTRY vtc_S8472C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8472C1[0]),
  (VTBL_ENTRY)&_ZN7S8472C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8472C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8472C22v1Ev,
  (VTBL_ENTRY)&_ZN7S8472C22v2Ev,
  (VTBL_ENTRY)&_ZN7S8472C22v3Ev,
  (VTBL_ENTRY)&_ZN7S8472C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S8472C1[];
extern  VTBL_ENTRY _ZTV7S8472C1[];
Class_Descriptor cd_S8472C1 = {  "S8472C1", // class name
  bases_S8472C1, 1,
  &(vtc_S8472C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(272,152), // object size
  NSPAIRA(_ZTI7S8472C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8472C1),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  S20592C8  : virtual S7883C3_nt , virtual S3216C8_nt , S4677C37 {
  int s20592c8f0;
  ~S20592C8(); // tgen
  S20592C8(); // tgen
};
//SIG(-1 S20592C8) C1{ VBC2{ vd m} VBC3{ m Fi} BC4{ m} Fi}


S20592C8 ::~S20592C8(){ note_dtor("S20592C8", this);} // tgen
S20592C8 ::S20592C8(){ note_ctor("S20592C8", this);} // tgen

static void Test_S20592C8()
{
  extern Class_Descriptor cd_S20592C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S20592C8, buf);
    S20592C8 *dp, &lv = *(dp=new (buf) S20592C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S20592C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20592C8)");
    check_base_class_offset(lv, (S7883C3_nt*), 0, "S20592C8");
    check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(12,8), "S20592C8");
    check_base_class_offset(lv, (S4677C37*), 0, "S20592C8");
    check_field_offset(lv, s20592c8f0, ABISELECT(8,4), "S20592C8.s20592c8f0");
    test_class_info(&lv, &cd_S20592C8);
    dp->~S20592C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20592C8(Test_S20592C8, "S20592C8", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S20592C8C1Ev();
extern void _ZN8S20592C8D1Ev();
Name_Map name_map_S20592C8[] = {
  NSPAIR(_ZN8S20592C8C1Ev),
  NSPAIR(_ZN8S20592C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
static Base_Class bases_S20592C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20592C8[];
extern void _ZN8S20592C8D1Ev();
extern void _ZN8S20592C8D0Ev();
static  VTBL_ENTRY vtc_S20592C8[] = {
  ABISELECT(12,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C8[0]),
  (VTBL_ENTRY)&_ZN8S20592C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20592C8D0Ev,
};
extern VTBL_ENTRY _ZTV8S20592C8[];
static  VTT_ENTRY vtt_S20592C8[] = {
  {&(_ZTV8S20592C8[5]),  5,7},
  {&(_ZTV8S20592C8[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S20592C8[];
extern  VTBL_ENTRY _ZTV8S20592C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C8[];
Class_Descriptor cd_S20592C8 = {  "S20592C8", // class name
  bases_S20592C8, 3,
  &(vtc_S20592C8[0]), // expected_vtbl_contents
  &(vtt_S20592C8[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S20592C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20592C8),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20592C8),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  S20592C7  : S20592C8 {
  int s20592c7f0;
  ~S20592C7(); // tgen
  S20592C7(); // tgen
};
//SIG(-1 S20592C7) C1{ BC2{ VBC3{ vd m} VBC4{ m Fi} BC5{ m} Fi} Fi}


S20592C7 ::~S20592C7(){ note_dtor("S20592C7", this);} // tgen
S20592C7 ::S20592C7(){ note_ctor("S20592C7", this);} // tgen

static void Test_S20592C7()
{
  extern Class_Descriptor cd_S20592C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20592C7, buf);
    S20592C7 *dp, &lv = *(dp=new (buf) S20592C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20592C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20592C7)");
    check_base_class_offset(lv, (S7883C3_nt*)(S20592C8*), 0, "S20592C7");
    check_base_class_offset(lv, (S3216C8_nt*)(S20592C8*), ABISELECT(16,12), "S20592C7");
    check_base_class_offset(lv, (S4677C37*)(S20592C8*), 0, "S20592C7");
    check_base_class_offset(lv, (S20592C8*), 0, "S20592C7");
    check_field_offset(lv, s20592c7f0, ABISELECT(12,8), "S20592C7.s20592c7f0");
    test_class_info(&lv, &cd_S20592C7);
    dp->~S20592C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20592C7(Test_S20592C7, "S20592C7", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S20592C7C1Ev();
extern void _ZN8S20592C7D1Ev();
Name_Map name_map_S20592C7[] = {
  NSPAIR(_ZN8S20592C7C1Ev),
  NSPAIR(_ZN8S20592C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20592C8;
extern VTBL_ENTRY _ZTI8S20592C8[];
extern  VTBL_ENTRY _ZTV8S20592C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C8[];
static Base_Class bases_S20592C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20592C8,    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 _ZTI8S20592C7[];
extern void _ZN8S20592C7D1Ev();
extern void _ZN8S20592C7D0Ev();
static  VTBL_ENTRY vtc_S20592C7[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C7[0]),
  (VTBL_ENTRY)&_ZN8S20592C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20592C7D0Ev,
};
extern VTBL_ENTRY _ZTV8S20592C7[];
extern void _ZN8S20592C8D1Ev();
extern void _ZN8S20592C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20592C8__8S20592C7[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C8[0]),
  (VTBL_ENTRY)&_ZN8S20592C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20592C8D0Ev,
};
static  VTT_ENTRY vtt_S20592C7[] = {
  {&(_ZTV8S20592C7[5]),  5,7},
  {&(_tg__ZTV8S20592C8__8S20592C7[5]),  5,7},
  {&(_tg__ZTV8S20592C8__8S20592C7[5]),  5,7},
  {&(_ZTV8S20592C7[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S20592C7[];
extern  VTBL_ENTRY _ZTV8S20592C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C7[];
Class_Descriptor cd_S20592C7 = {  "S20592C7", // class name
  bases_S20592C7, 4,
  &(vtc_S20592C7[0]), // expected_vtbl_contents
  &(vtt_S20592C7[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S20592C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20592C7),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20592C7),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20592C6  : virtual S20592C7 , S4677C37 {
  ~S20592C6(); // tgen
  S20592C6(); // tgen
};
//SIG(-1 S20592C6) C1{ VBC2{ BC3{ VBC4{ vd m} VBC5{ m Fi} BC6{ m} Fi} Fi} BC6}


S20592C6 ::~S20592C6(){ note_dtor("S20592C6", this);} // tgen
S20592C6 ::S20592C6(){ note_ctor("S20592C6", this);} // tgen

static void Test_S20592C6()
{
  extern Class_Descriptor cd_S20592C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20592C6, buf);
    S20592C6 *dp, &lv = *(dp=new (buf) S20592C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20592C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20592C6)");
    check_base_class_offset(lv, (S7883C3_nt*)(S20592C8*)(S20592C7*), 0, "S20592C6");
    check_base_class_offset(lv, (S3216C8_nt*)(S20592C8*)(S20592C7*), ABISELECT(24,16), "S20592C6");
    check_base_class_offset(lv, (S4677C37*)(S20592C8*)(S20592C7*), ABISELECT(8,4), "S20592C6");
    check_base_class_offset(lv, (S20592C8*)(S20592C7*), ABISELECT(8,4), "S20592C6");
    check_base_class_offset(lv, (S20592C7*), ABISELECT(8,4), "S20592C6");
    /*is_ambiguous_... S20592C6::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*), 0, "S20592C6");
    test_class_info(&lv, &cd_S20592C6);
    dp->~S20592C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20592C6(Test_S20592C6, "S20592C6", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S20592C6C1Ev();
extern void _ZN8S20592C6D1Ev();
Name_Map name_map_S20592C6[] = {
  NSPAIR(_ZN8S20592C6C1Ev),
  NSPAIR(_ZN8S20592C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20592C8;
extern VTBL_ENTRY _ZTI8S20592C8[];
extern  VTBL_ENTRY _ZTV8S20592C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C8[];
extern Class_Descriptor cd_S20592C7;
extern VTBL_ENTRY _ZTI8S20592C7[];
extern  VTBL_ENTRY _ZTV8S20592C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C7[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
static Base_Class bases_S20592C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20592C8,    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
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20592C7,    ABISELECT(8,4), //bcp->offset
    8, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20592C6[];
extern void _ZN8S20592C6D1Ev();
extern void _ZN8S20592C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev)();
extern void ABISELECT(_ZThn8_N8S20592C6D1Ev,_ZThn4_N8S20592C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev)();
extern void ABISELECT(_ZThn8_N8S20592C6D0Ev,_ZThn4_N8S20592C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20592C6[] = {
  ABISELECT(24,16),
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C6[0]),
  (VTBL_ENTRY)&_ZN8S20592C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20592C6D0Ev,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20592C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S20592C6[];
extern void ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev)();
extern void _ZN8S20592C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev)();
extern void _ZN8S20592C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__8S20592C6[] = {
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev)();
extern void _ZN8S20592C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev)();
extern void _ZN8S20592C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C88S20592C7__8S20592C6[] = {
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20592C88S20592C7__8S20592C6[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20592C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20592C7__8S20592C6[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20592C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev),
};
static  VTT_ENTRY vtt_S20592C6[] = {
  {&(_ZTV8S20592C6[6]),  6,15},
  {&(_ZTV8S20592C6[13]),  13,15},
  {&(_ZTV8S20592C6[6]),  6,15},
  {&(_tg__ZTV8S20592C7__8S20592C6[5]),  5,7},
  {&(_tg__ZTV8S20592C88S20592C7__8S20592C6[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20592C88S20592C7__8S20592C6[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20592C7__8S20592C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20592C6[];
extern  VTBL_ENTRY _ZTV8S20592C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C6[];
static VTBL_ENTRY alt_thunk_names119[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20592C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20592C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S20592C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S20592C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20592C6D0Ev,_ZThn4_N8S20592C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20592C6D1Ev,_ZThn4_N8S20592C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20592C6 = {  "S20592C6", // class name
  bases_S20592C6, 6,
  &(vtc_S20592C6[0]), // expected_vtbl_contents
  &(vtt_S20592C6[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S20592C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20592C6),15, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20592C6),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names119,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20592C5  : virtual S20592C6 {
  ::S3216C8_nt s20592c5f0;
  ~S20592C5(); // tgen
  S20592C5(); // tgen
};
//SIG(-1 S20592C5) C1{ VBC2{ VBC3{ BC4{ VBC5{ vd m} VBC6{ m Fi} BC7{ m} Fi} Fi} BC7} FC6}


S20592C5 ::~S20592C5(){ note_dtor("S20592C5", this);} // tgen
S20592C5 ::S20592C5(){ note_ctor("S20592C5", this);} // tgen

static void Test_S20592C5()
{
  extern Class_Descriptor cd_S20592C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S20592C5, buf);
    S20592C5 *dp, &lv = *(dp=new (buf) S20592C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S20592C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20592C5)");
    check_base_class_offset(lv, (S7883C3_nt*)(S20592C8*)(S20592C7*), 0, "S20592C5");
    check_base_class_offset(lv, (S3216C8_nt*)(S20592C8*)(S20592C7*), ABISELECT(32,20), "S20592C5");
    check_base_class_offset(lv, (S4677C37*)(S20592C8*)(S20592C7*), ABISELECT(16,8), "S20592C5");
    check_base_class_offset(lv, (S20592C8*)(S20592C7*), ABISELECT(16,8), "S20592C5");
    check_base_class_offset(lv, (S20592C7*)(S20592C6*), ABISELECT(16,8), "S20592C5");
    /*is_ambiguous_... S20592C6::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20592C6*), 0, "S20592C5");
    check_base_class_offset(lv, (S20592C6*), 0, "S20592C5");
    check_field_offset(lv, s20592c5f0, ABISELECT(8,4), "S20592C5.s20592c5f0");
    test_class_info(&lv, &cd_S20592C5);
    dp->~S20592C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20592C5(Test_S20592C5, "S20592C5", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S20592C5C1Ev();
extern void _ZN8S20592C5D1Ev();
Name_Map name_map_S20592C5[] = {
  NSPAIR(_ZN8S20592C5C1Ev),
  NSPAIR(_ZN8S20592C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20592C8;
extern VTBL_ENTRY _ZTI8S20592C8[];
extern  VTBL_ENTRY _ZTV8S20592C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C8[];
extern Class_Descriptor cd_S20592C7;
extern VTBL_ENTRY _ZTI8S20592C7[];
extern  VTBL_ENTRY _ZTV8S20592C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C7[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20592C6;
extern VTBL_ENTRY _ZTI8S20592C6[];
extern  VTBL_ENTRY _ZTV8S20592C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C6[];
static Base_Class bases_S20592C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_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
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20592C8,    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
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20592C7,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20592C6,    0, //bcp->offset
    -1, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20592C5[];
extern void _ZN8S20592C5D1Ev();
extern void _ZN8S20592C5D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S20592C5D1Ev,_ZThn8_N8S20592C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev)();
extern void ABISELECT(_ZThn16_N8S20592C5D0Ev,_ZThn8_N8S20592C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20592C5[] = {
  0,
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C5[0]),
  (VTBL_ENTRY)&_ZN8S20592C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20592C5D0Ev,
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20592C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S20592C5[];
extern void ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev)();
extern void _ZN8S20592C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev)();
extern void _ZN8S20592C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C6__8S20592C5[] = {
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S20592C6D1Ev,_ZThn8_N8S20592C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev)();
extern void ABISELECT(_ZThn16_N8S20592C6D0Ev,_ZThn8_N8S20592C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__8S20592C6__8S20592C5[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20592C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev)();
extern void _ZN8S20592C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev)();
extern void _ZN8S20592C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__8S20592C5[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev)();
extern void _ZN8S20592C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev)();
extern void _ZN8S20592C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C88S20592C7__8S20592C5[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20592C88S20592C7__8S20592C5[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20592C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20592C7__8S20592C5[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20592C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev),
};
static  VTT_ENTRY vtt_S20592C5[] = {
  {&(_ZTV8S20592C5[7]),  7,16},
  {&(_ZTV8S20592C5[7]),  7,16},
  {&(_ZTV8S20592C5[14]),  14,16},
  {&(_ZTV8S20592C5[7]),  7,16},
  {&(_tg__ZTV8S20592C6__8S20592C5[6]),  6,8},
  {&(_tg__ZTV8S20592C7__8S20592C6__8S20592C5[5]),  5,7},
  {&(_tg__ZTV8S20592C6__8S20592C5[6]),  6,8},
  {&(_tg__ZTV8S20592C7__8S20592C5[5]),  5,7},
  {&(_tg__ZTV8S20592C88S20592C7__8S20592C5[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20592C88S20592C7__8S20592C5[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20592C7__8S20592C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20592C5[];
extern  VTBL_ENTRY _ZTV8S20592C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C5[];
static VTBL_ENTRY alt_thunk_names120[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20592C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20592C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S20592C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S20592C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20592C6D0Ev,_ZThn8_N8S20592C6D0Ev),
  (VTBL_ENTRY)_ZN8S20592C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20592C6D1Ev,_ZThn8_N8S20592C6D1Ev),
  (VTBL_ENTRY)_ZN8S20592C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20592C5D0Ev,_ZThn8_N8S20592C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20592C5D1Ev,_ZThn8_N8S20592C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20592C5 = {  "S20592C5", // class name
  bases_S20592C5, 7,
  &(vtc_S20592C5[0]), // expected_vtbl_contents
  &(vtt_S20592C5[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S20592C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20592C5),16, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20592C5),11, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names120,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20592C4  : virtual S20592C5 {
  int s20592c4f0[3];
  virtual  ~S20592C4(); // _ZN8S20592C4D2Ev
  S20592C4(); // tgen
};
//SIG(-1 S20592C4) C1{ VBC2{ VBC3{ VBC4{ BC5{ VBC6{ vd m} VBC7{ m Fi} BC8{ m} Fi} Fi} BC8} FC7} vd Fi[3]}


 S20592C4 ::~S20592C4(){ note_dtor("S20592C4", this);}
S20592C4 ::S20592C4(){ note_ctor("S20592C4", this);} // tgen

static void Test_S20592C4()
{
  extern Class_Descriptor cd_S20592C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,11)];
    init_test(&cd_S20592C4, buf);
    S20592C4 *dp, &lv = *(dp=new (buf) S20592C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S20592C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20592C4)");
    check_base_class_offset(lv, (S7883C3_nt*)(S20592C8*)(S20592C7*), 0, "S20592C4");
    check_base_class_offset(lv, (S3216C8_nt*)(S20592C8*)(S20592C7*), ABISELECT(56,36), "S20592C4");
    check_base_class_offset(lv, (S4677C37*)(S20592C8*)(S20592C7*), ABISELECT(40,24), "S20592C4");
    check_base_class_offset(lv, (S20592C8*)(S20592C7*), ABISELECT(40,24), "S20592C4");
    check_base_class_offset(lv, (S20592C7*)(S20592C6*), ABISELECT(40,24), "S20592C4");
    /*is_ambiguous_... S20592C6::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20592C6*), 0, "S20592C4");
    check_base_class_offset(lv, (S20592C6*)(S20592C5*), 0, "S20592C4");
    check_base_class_offset(lv, (S20592C5*), ABISELECT(24,16), "S20592C4");
    check_field_offset(lv, s20592c4f0, ABISELECT(8,4), "S20592C4.s20592c4f0");
    test_class_info(&lv, &cd_S20592C4);
    dp->~S20592C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20592C4(Test_S20592C4, "S20592C4", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN8S20592C4C1Ev();
extern void _ZN8S20592C4D2Ev();
Name_Map name_map_S20592C4[] = {
  NSPAIR(_ZN8S20592C4C1Ev),
  NSPAIR(_ZN8S20592C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20592C8;
extern VTBL_ENTRY _ZTI8S20592C8[];
extern  VTBL_ENTRY _ZTV8S20592C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C8[];
extern Class_Descriptor cd_S20592C7;
extern VTBL_ENTRY _ZTI8S20592C7[];
extern  VTBL_ENTRY _ZTV8S20592C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C7[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20592C6;
extern VTBL_ENTRY _ZTI8S20592C6[];
extern  VTBL_ENTRY _ZTV8S20592C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C6[];
extern Class_Descriptor cd_S20592C5;
extern VTBL_ENTRY _ZTI8S20592C5[];
extern  VTBL_ENTRY _ZTV8S20592C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C5[];
static Base_Class bases_S20592C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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_S20592C8,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20592C7,    ABISELECT(40,24), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20592C6,    0, //bcp->offset
    -1, //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
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20592C5,    ABISELECT(24,16), //bcp->offset
    10, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20592C4[];
extern void _ZN8S20592C4D1Ev();
extern void _ZN8S20592C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20592C4D1Ev,_ZTv0_n12_N8S20592C4D1Ev)();
extern void ABISELECT(_ZThn24_N8S20592C4D1Ev,_ZThn16_N8S20592C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C4D0Ev,_ZTv0_n12_N8S20592C4D0Ev)();
extern void ABISELECT(_ZThn24_N8S20592C4D0Ev,_ZThn16_N8S20592C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C4D1Ev,_ZTv0_n12_N8S20592C4D1Ev)();
extern void ABISELECT(_ZThn40_N8S20592C4D1Ev,_ZThn24_N8S20592C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C4D0Ev,_ZTv0_n12_N8S20592C4D0Ev)();
extern void ABISELECT(_ZThn40_N8S20592C4D0Ev,_ZThn24_N8S20592C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20592C4[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C4[0]),
  (VTBL_ENTRY)&_ZN8S20592C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20592C4D0Ev,
  ABISELECT(-24,-16),
  ABISELECT(32,20),
  ABISELECT(-24,-16),
  ABISELECT(16,8),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20592C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C4D1Ev,_ZTv0_n12_N8S20592C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C4D0Ev,_ZTv0_n12_N8S20592C4D0Ev),
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20592C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C4D1Ev,_ZTv0_n12_N8S20592C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C4D0Ev,_ZTv0_n12_N8S20592C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S20592C4[];
extern void ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev)();
extern void _ZN8S20592C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev)();
extern void _ZN8S20592C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C5__8S20592C4[] = {
  ABISELECT(-24,-16),
  ABISELECT(32,20),
  ABISELECT(-24,-16),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20592C6__8S20592C5__8S20592C4[] = {
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S20592C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S20592C5D1Ev,_ZThn8_N8S20592C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev)();
extern void ABISELECT(_ZThn16_N8S20592C5D0Ev,_ZThn8_N8S20592C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__8S20592C5__8S20592C4[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20592C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev)();
extern void _ZN8S20592C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev)();
extern void _ZN8S20592C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C6__8S20592C4[] = {
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S20592C6D1Ev,_ZThn24_N8S20592C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S20592C6D0Ev,_ZThn24_N8S20592C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__8S20592C6__8S20592C4[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20592C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev)();
extern void _ZN8S20592C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev)();
extern void _ZN8S20592C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__8S20592C4[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev)();
extern void _ZN8S20592C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev)();
extern void _ZN8S20592C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C88S20592C7__8S20592C4[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20592C88S20592C7__8S20592C4[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S20592C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20592C7__8S20592C4[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S20592C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev),
};
static  VTT_ENTRY vtt_S20592C4[] = {
  {&(_ZTV8S20592C4[8]),  8,26},
  {&(_ZTV8S20592C4[17]),  17,26},
  {&(_ZTV8S20592C4[8]),  8,26},
  {&(_ZTV8S20592C4[24]),  24,26},
  {&(_ZTV8S20592C4[8]),  8,26},
  {&(_tg__ZTV8S20592C5__8S20592C4[7]),  7,9},
  {&(_tg__ZTV8S20592C6__8S20592C5__8S20592C4[6]),  6,8},
  {&(_tg__ZTV8S20592C7__8S20592C5__8S20592C4[5]),  5,7},
  {&(_tg__ZTV8S20592C6__8S20592C5__8S20592C4[6]),  6,8},
  {&(_tg__ZTV8S20592C6__8S20592C4[6]),  6,8},
  {&(_tg__ZTV8S20592C7__8S20592C6__8S20592C4[5]),  5,7},
  {&(_tg__ZTV8S20592C6__8S20592C4[6]),  6,8},
  {&(_tg__ZTV8S20592C7__8S20592C4[5]),  5,7},
  {&(_tg__ZTV8S20592C88S20592C7__8S20592C4[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20592C88S20592C7__8S20592C4[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20592C7__8S20592C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20592C4[];
extern  VTBL_ENTRY _ZTV8S20592C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C4[];
static VTBL_ENTRY alt_thunk_names121[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20592C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20592C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S20592C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S20592C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20592C6D0Ev,_ZThn24_N8S20592C6D0Ev),
  (VTBL_ENTRY)_ZN8S20592C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20592C6D1Ev,_ZThn24_N8S20592C6D1Ev),
  (VTBL_ENTRY)_ZN8S20592C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20592C5D0Ev,_ZThn8_N8S20592C5D0Ev),
  (VTBL_ENTRY)_ZN8S20592C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20592C5D1Ev,_ZThn8_N8S20592C5D1Ev),
  (VTBL_ENTRY)_ZN8S20592C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C4D0Ev,_ZTv0_n12_N8S20592C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20592C4D0Ev,_ZThn24_N8S20592C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20592C4D0Ev,_ZThn16_N8S20592C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C4D1Ev,_ZTv0_n12_N8S20592C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20592C4D1Ev,_ZThn24_N8S20592C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20592C4D1Ev,_ZThn16_N8S20592C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20592C4 = {  "S20592C4", // class name
  bases_S20592C4, 8,
  &(vtc_S20592C4[0]), // expected_vtbl_contents
  &(vtt_S20592C4[0]), // expected_vtt_contents
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI8S20592C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20592C4),26, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20592C4),16, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names121,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20592C3  : S20592C4 {
  virtual  ~S20592C3(); // _ZN8S20592C3D2Ev
  S20592C3(); // tgen
};
//SIG(-1 S20592C3) C1{ BC2{ VBC3{ VBC4{ VBC5{ BC6{ VBC7{ vd m} VBC8{ m Fi} BC9{ m} Fi} Fi} BC9} FC8} vd Fi[3]} vd}


 S20592C3 ::~S20592C3(){ note_dtor("S20592C3", this);}
S20592C3 ::S20592C3(){ note_ctor("S20592C3", this);} // tgen

static void Test_S20592C3()
{
  extern Class_Descriptor cd_S20592C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,11)];
    init_test(&cd_S20592C3, buf);
    S20592C3 *dp, &lv = *(dp=new (buf) S20592C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S20592C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20592C3)");
    check_base_class_offset(lv, (S7883C3_nt*)(S20592C8*)(S20592C7*), 0, "S20592C3");
    check_base_class_offset(lv, (S3216C8_nt*)(S20592C8*)(S20592C7*), ABISELECT(56,36), "S20592C3");
    check_base_class_offset(lv, (S4677C37*)(S20592C8*)(S20592C7*), ABISELECT(40,24), "S20592C3");
    check_base_class_offset(lv, (S20592C8*)(S20592C7*), ABISELECT(40,24), "S20592C3");
    check_base_class_offset(lv, (S20592C7*)(S20592C6*), ABISELECT(40,24), "S20592C3");
    /*is_ambiguous_... S20592C6::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20592C6*), 0, "S20592C3");
    check_base_class_offset(lv, (S20592C6*)(S20592C5*), 0, "S20592C3");
    check_base_class_offset(lv, (S20592C5*)(S20592C4*), ABISELECT(24,16), "S20592C3");
    check_base_class_offset(lv, (S20592C4*), 0, "S20592C3");
    test_class_info(&lv, &cd_S20592C3);
    dp->~S20592C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20592C3(Test_S20592C3, "S20592C3", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN8S20592C3C1Ev();
extern void _ZN8S20592C3D2Ev();
Name_Map name_map_S20592C3[] = {
  NSPAIR(_ZN8S20592C3C1Ev),
  NSPAIR(_ZN8S20592C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20592C8;
extern VTBL_ENTRY _ZTI8S20592C8[];
extern  VTBL_ENTRY _ZTV8S20592C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C8[];
extern Class_Descriptor cd_S20592C7;
extern VTBL_ENTRY _ZTI8S20592C7[];
extern  VTBL_ENTRY _ZTV8S20592C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C7[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20592C6;
extern VTBL_ENTRY _ZTI8S20592C6[];
extern  VTBL_ENTRY _ZTV8S20592C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C6[];
extern Class_Descriptor cd_S20592C5;
extern VTBL_ENTRY _ZTI8S20592C5[];
extern  VTBL_ENTRY _ZTV8S20592C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C5[];
extern Class_Descriptor cd_S20592C4;
extern VTBL_ENTRY _ZTI8S20592C4[];
extern  VTBL_ENTRY _ZTV8S20592C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C4[];
static Base_Class bases_S20592C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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_S20592C8,    ABISELECT(40,24), //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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20592C7,    ABISELECT(40,24), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20592C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20592C5,    ABISELECT(24,16), //bcp->offset
    10, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20592C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20592C3[];
extern void _ZN8S20592C3D1Ev();
extern void _ZN8S20592C3D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20592C3D1Ev,_ZTv0_n12_N8S20592C3D1Ev)();
extern void ABISELECT(_ZThn24_N8S20592C3D1Ev,_ZThn16_N8S20592C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C3D0Ev,_ZTv0_n12_N8S20592C3D0Ev)();
extern void ABISELECT(_ZThn24_N8S20592C3D0Ev,_ZThn16_N8S20592C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C3D1Ev,_ZTv0_n12_N8S20592C3D1Ev)();
extern void ABISELECT(_ZThn40_N8S20592C3D1Ev,_ZThn24_N8S20592C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C3D0Ev,_ZTv0_n12_N8S20592C3D0Ev)();
extern void ABISELECT(_ZThn40_N8S20592C3D0Ev,_ZThn24_N8S20592C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20592C3[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C3[0]),
  (VTBL_ENTRY)&_ZN8S20592C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20592C3D0Ev,
  ABISELECT(-24,-16),
  ABISELECT(32,20),
  ABISELECT(-24,-16),
  ABISELECT(16,8),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20592C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C3D1Ev,_ZTv0_n12_N8S20592C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C3D0Ev,_ZTv0_n12_N8S20592C3D0Ev),
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20592C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C3D1Ev,_ZTv0_n12_N8S20592C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C3D0Ev,_ZTv0_n12_N8S20592C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S20592C3[];
extern void _ZN8S20592C4D1Ev();
extern void _ZN8S20592C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20592C4__8S20592C3[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C4[0]),
  (VTBL_ENTRY)&_ZN8S20592C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20592C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20592C4D1Ev,_ZTv0_n12_N8S20592C4D1Ev)();
extern void ABISELECT(_ZThn24_N8S20592C4D1Ev,_ZThn16_N8S20592C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C4D0Ev,_ZTv0_n12_N8S20592C4D0Ev)();
extern void ABISELECT(_ZThn24_N8S20592C4D0Ev,_ZThn16_N8S20592C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C5__8S20592C4__8S20592C3[] = {
  ABISELECT(-24,-16),
  ABISELECT(32,20),
  ABISELECT(-24,-16),
  ABISELECT(16,8),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20592C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C4D1Ev,_ZTv0_n12_N8S20592C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C4D0Ev,_ZTv0_n12_N8S20592C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C4D1Ev,_ZTv0_n12_N8S20592C4D1Ev)();
extern void ABISELECT(_ZThn40_N8S20592C4D1Ev,_ZThn24_N8S20592C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C4D0Ev,_ZTv0_n12_N8S20592C4D0Ev)();
extern void ABISELECT(_ZThn40_N8S20592C4D0Ev,_ZThn24_N8S20592C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__8S20592C4__8S20592C3[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20592C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C4D1Ev,_ZTv0_n12_N8S20592C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C4D0Ev,_ZTv0_n12_N8S20592C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev)();
extern void _ZN8S20592C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev)();
extern void _ZN8S20592C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C5__8S20592C3[] = {
  ABISELECT(-24,-16),
  ABISELECT(32,20),
  ABISELECT(-24,-16),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20592C6__8S20592C5__8S20592C3[] = {
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S20592C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S20592C5D1Ev,_ZThn8_N8S20592C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev)();
extern void ABISELECT(_ZThn16_N8S20592C5D0Ev,_ZThn8_N8S20592C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__8S20592C5__8S20592C3[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20592C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev)();
extern void _ZN8S20592C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev)();
extern void _ZN8S20592C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C6__8S20592C3[] = {
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S20592C6D1Ev,_ZThn24_N8S20592C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S20592C6D0Ev,_ZThn24_N8S20592C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__8S20592C6__8S20592C3[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20592C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev)();
extern void _ZN8S20592C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev)();
extern void _ZN8S20592C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__8S20592C3[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev)();
extern void _ZN8S20592C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev)();
extern void _ZN8S20592C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C88S20592C7__8S20592C3[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20592C88S20592C7__8S20592C3[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S20592C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20592C7__8S20592C3[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S20592C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev),
};
static  VTT_ENTRY vtt_S20592C3[] = {
  {&(_ZTV8S20592C3[8]),  8,26},
  {&(_tg__ZTV8S20592C4__8S20592C3[8]),  8,10},
  {&(_tg__ZTV8S20592C5__8S20592C4__8S20592C3[7]),  7,9},
  {&(_tg__ZTV8S20592C4__8S20592C3[8]),  8,10},
  {&(_tg__ZTV8S20592C7__8S20592C4__8S20592C3[5]),  5,7},
  {&(_tg__ZTV8S20592C4__8S20592C3[8]),  8,10},
  {&(_ZTV8S20592C3[17]),  17,26},
  {&(_ZTV8S20592C3[8]),  8,26},
  {&(_ZTV8S20592C3[24]),  24,26},
  {&(_ZTV8S20592C3[8]),  8,26},
  {&(_tg__ZTV8S20592C5__8S20592C3[7]),  7,9},
  {&(_tg__ZTV8S20592C6__8S20592C5__8S20592C3[6]),  6,8},
  {&(_tg__ZTV8S20592C7__8S20592C5__8S20592C3[5]),  5,7},
  {&(_tg__ZTV8S20592C6__8S20592C5__8S20592C3[6]),  6,8},
  {&(_tg__ZTV8S20592C6__8S20592C3[6]),  6,8},
  {&(_tg__ZTV8S20592C7__8S20592C6__8S20592C3[5]),  5,7},
  {&(_tg__ZTV8S20592C6__8S20592C3[6]),  6,8},
  {&(_tg__ZTV8S20592C7__8S20592C3[5]),  5,7},
  {&(_tg__ZTV8S20592C88S20592C7__8S20592C3[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20592C88S20592C7__8S20592C3[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20592C7__8S20592C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20592C3[];
extern  VTBL_ENTRY _ZTV8S20592C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C3[];
static VTBL_ENTRY alt_thunk_names122[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20592C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20592C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S20592C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S20592C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20592C6D0Ev,_ZThn24_N8S20592C6D0Ev),
  (VTBL_ENTRY)_ZN8S20592C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20592C6D1Ev,_ZThn24_N8S20592C6D1Ev),
  (VTBL_ENTRY)_ZN8S20592C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20592C5D0Ev,_ZThn8_N8S20592C5D0Ev),
  (VTBL_ENTRY)_ZN8S20592C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20592C5D1Ev,_ZThn8_N8S20592C5D1Ev),
  (VTBL_ENTRY)_ZN8S20592C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C4D0Ev,_ZTv0_n12_N8S20592C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20592C4D0Ev,_ZThn24_N8S20592C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20592C4D0Ev,_ZThn16_N8S20592C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C4D1Ev,_ZTv0_n12_N8S20592C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20592C4D1Ev,_ZThn24_N8S20592C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20592C4D1Ev,_ZThn16_N8S20592C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C3D0Ev,_ZTv0_n12_N8S20592C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20592C3D0Ev,_ZThn24_N8S20592C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20592C3D0Ev,_ZThn16_N8S20592C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C3D1Ev,_ZTv0_n12_N8S20592C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20592C3D1Ev,_ZThn24_N8S20592C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20592C3D1Ev,_ZThn16_N8S20592C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20592C3 = {  "S20592C3", // class name
  bases_S20592C3, 9,
  &(vtc_S20592C3[0]), // expected_vtbl_contents
  &(vtt_S20592C3[0]), // expected_vtt_contents
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI8S20592C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20592C3),26, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20592C3),21, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names122,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20592C12  : virtual S20592C6 {
  void *s20592c12f0;
  ~S20592C12(); // tgen
  S20592C12(); // tgen
};
//SIG(-1 S20592C12) C1{ VBC2{ VBC3{ BC4{ VBC5{ vd m} VBC6{ m Fi} BC7{ m} Fi} Fi} BC7} Fp}


S20592C12 ::~S20592C12(){ note_dtor("S20592C12", this);} // tgen
S20592C12 ::S20592C12(){ note_ctor("S20592C12", this);} // tgen

static void Test_S20592C12()
{
  extern Class_Descriptor cd_S20592C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S20592C12, buf);
    S20592C12 *dp, &lv = *(dp=new (buf) S20592C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S20592C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20592C12)");
    check_base_class_offset(lv, (S7883C3_nt*)(S20592C8*)(S20592C7*), 0, "S20592C12");
    check_base_class_offset(lv, (S3216C8_nt*)(S20592C8*)(S20592C7*), ABISELECT(32,20), "S20592C12");
    check_base_class_offset(lv, (S4677C37*)(S20592C8*)(S20592C7*), ABISELECT(16,8), "S20592C12");
    check_base_class_offset(lv, (S20592C8*)(S20592C7*), ABISELECT(16,8), "S20592C12");
    check_base_class_offset(lv, (S20592C7*)(S20592C6*), ABISELECT(16,8), "S20592C12");
    /*is_ambiguous_... S20592C6::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20592C6*), 0, "S20592C12");
    check_base_class_offset(lv, (S20592C6*), 0, "S20592C12");
    check_field_offset(lv, s20592c12f0, ABISELECT(8,4), "S20592C12.s20592c12f0");
    test_class_info(&lv, &cd_S20592C12);
    dp->~S20592C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20592C12(Test_S20592C12, "S20592C12", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN9S20592C12C1Ev();
extern void _ZN9S20592C12D1Ev();
Name_Map name_map_S20592C12[] = {
  NSPAIR(_ZN9S20592C12C1Ev),
  NSPAIR(_ZN9S20592C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20592C8;
extern VTBL_ENTRY _ZTI8S20592C8[];
extern  VTBL_ENTRY _ZTV8S20592C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C8[];
extern Class_Descriptor cd_S20592C7;
extern VTBL_ENTRY _ZTI8S20592C7[];
extern  VTBL_ENTRY _ZTV8S20592C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C7[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20592C6;
extern VTBL_ENTRY _ZTI8S20592C6[];
extern  VTBL_ENTRY _ZTV8S20592C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C6[];
static Base_Class bases_S20592C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_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
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20592C8,    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
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20592C7,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20592C6,    0, //bcp->offset
    -1, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20592C12[];
extern void _ZN9S20592C12D1Ev();
extern void _ZN9S20592C12D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20592C12D1Ev,_ZTv0_n12_N9S20592C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S20592C12D1Ev,_ZThn8_N9S20592C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20592C12D0Ev,_ZTv0_n12_N9S20592C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S20592C12D0Ev,_ZThn8_N9S20592C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20592C12[] = {
  0,
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20592C12[0]),
  (VTBL_ENTRY)&_ZN9S20592C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20592C12D0Ev,
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20592C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C12D1Ev,_ZTv0_n12_N9S20592C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C12D0Ev,_ZTv0_n12_N9S20592C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S20592C12[];
extern void ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev)();
extern void _ZN8S20592C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev)();
extern void _ZN8S20592C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C6__9S20592C12[] = {
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S20592C6D1Ev,_ZThn8_N8S20592C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev)();
extern void ABISELECT(_ZThn16_N8S20592C6D0Ev,_ZThn8_N8S20592C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__8S20592C6__9S20592C12[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20592C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev)();
extern void _ZN8S20592C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev)();
extern void _ZN8S20592C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__9S20592C12[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev)();
extern void _ZN8S20592C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev)();
extern void _ZN8S20592C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C88S20592C7__9S20592C12[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20592C88S20592C7__9S20592C12[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20592C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20592C7__9S20592C12[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20592C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev),
};
static  VTT_ENTRY vtt_S20592C12[] = {
  {&(_ZTV9S20592C12[7]),  7,16},
  {&(_ZTV9S20592C12[7]),  7,16},
  {&(_ZTV9S20592C12[14]),  14,16},
  {&(_ZTV9S20592C12[7]),  7,16},
  {&(_tg__ZTV8S20592C6__9S20592C12[6]),  6,8},
  {&(_tg__ZTV8S20592C7__8S20592C6__9S20592C12[5]),  5,7},
  {&(_tg__ZTV8S20592C6__9S20592C12[6]),  6,8},
  {&(_tg__ZTV8S20592C7__9S20592C12[5]),  5,7},
  {&(_tg__ZTV8S20592C88S20592C7__9S20592C12[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20592C88S20592C7__9S20592C12[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20592C7__9S20592C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20592C12[];
extern  VTBL_ENTRY _ZTV9S20592C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20592C12[];
static VTBL_ENTRY alt_thunk_names123[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20592C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20592C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S20592C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S20592C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20592C6D0Ev,_ZThn8_N8S20592C6D0Ev),
  (VTBL_ENTRY)_ZN8S20592C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20592C6D1Ev,_ZThn8_N8S20592C6D1Ev),
  (VTBL_ENTRY)_ZN8S20592C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20592C12D0Ev,_ZTv0_n12_N9S20592C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20592C12D0Ev,_ZThn8_N9S20592C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20592C12D1Ev,_ZTv0_n12_N9S20592C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20592C12D1Ev,_ZThn8_N9S20592C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20592C12 = {  "S20592C12", // class name
  bases_S20592C12, 7,
  &(vtc_S20592C12[0]), // expected_vtbl_contents
  &(vtt_S20592C12[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI9S20592C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20592C12),16, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20592C12),11, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names123,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20592C13  : S20592C5 , S3216C8_nt {
  void *s20592c13f0;
  ~S20592C13(); // tgen
  S20592C13(); // tgen
};
//SIG(-1 S20592C13) C1{ BC2{ VBC3{ VBC4{ BC5{ VBC6{ vd m} VBC7{ m Fi} BC8{ m} Fi} Fi} BC8} FC7} BC7 Fp}


S20592C13 ::~S20592C13(){ note_dtor("S20592C13", this);} // tgen
S20592C13 ::S20592C13(){ note_ctor("S20592C13", this);} // tgen

static void Test_S20592C13()
{
  extern Class_Descriptor cd_S20592C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S20592C13, buf);
    S20592C13 *dp, &lv = *(dp=new (buf) S20592C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S20592C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20592C13)");
    check_base_class_offset(lv, (S7883C3_nt*)(S20592C8*)(S20592C7*), 0, "S20592C13");
    check_base_class_offset(lv, (S3216C8_nt*)(S20592C8*)(S20592C7*), ABISELECT(40,28), "S20592C13");
    check_base_class_offset(lv, (S4677C37*)(S20592C8*)(S20592C7*), ABISELECT(24,16), "S20592C13");
    check_base_class_offset(lv, (S20592C8*)(S20592C7*), ABISELECT(24,16), "S20592C13");
    check_base_class_offset(lv, (S20592C7*)(S20592C6*), ABISELECT(24,16), "S20592C13");
    /*is_ambiguous_... S20592C6::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20592C6*), 0, "S20592C13");
    check_base_class_offset(lv, (S20592C6*)(S20592C5*), 0, "S20592C13");
    check_base_class_offset(lv, (S20592C5*), 0, "S20592C13");
    /*is_ambiguous_... S20592C13::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(12,8), "S20592C13");
    check_field_offset(lv, s20592c13f0, ABISELECT(16,12), "S20592C13.s20592c13f0");
    test_class_info(&lv, &cd_S20592C13);
    dp->~S20592C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20592C13(Test_S20592C13, "S20592C13", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN9S20592C13C1Ev();
extern void _ZN9S20592C13D1Ev();
Name_Map name_map_S20592C13[] = {
  NSPAIR(_ZN9S20592C13C1Ev),
  NSPAIR(_ZN9S20592C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20592C8;
extern VTBL_ENTRY _ZTI8S20592C8[];
extern  VTBL_ENTRY _ZTV8S20592C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C8[];
extern Class_Descriptor cd_S20592C7;
extern VTBL_ENTRY _ZTI8S20592C7[];
extern  VTBL_ENTRY _ZTV8S20592C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C7[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20592C6;
extern VTBL_ENTRY _ZTI8S20592C6[];
extern  VTBL_ENTRY _ZTV8S20592C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C6[];
extern Class_Descriptor cd_S20592C5;
extern VTBL_ENTRY _ZTI8S20592C5[];
extern  VTBL_ENTRY _ZTV8S20592C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S20592C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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_S20592C8,    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
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20592C7,    ABISELECT(24,16), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20592C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20592C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20592C13[];
extern void _ZN9S20592C13D1Ev();
extern void _ZN9S20592C13D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20592C13D1Ev,_ZTv0_n12_N9S20592C13D1Ev)();
extern void ABISELECT(_ZThn24_N9S20592C13D1Ev,_ZThn16_N9S20592C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20592C13D0Ev,_ZTv0_n12_N9S20592C13D0Ev)();
extern void ABISELECT(_ZThn24_N9S20592C13D0Ev,_ZThn16_N9S20592C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20592C13[] = {
  0,
  ABISELECT(40,28),
  0,
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20592C13[0]),
  (VTBL_ENTRY)&_ZN9S20592C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20592C13D0Ev,
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20592C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C13D1Ev,_ZTv0_n12_N9S20592C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C13D0Ev,_ZTv0_n12_N9S20592C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S20592C13[];
extern void _ZN8S20592C5D1Ev();
extern void _ZN8S20592C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20592C5__9S20592C13[] = {
  0,
  ABISELECT(40,28),
  0,
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C5[0]),
  (VTBL_ENTRY)&_ZN8S20592C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20592C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev)();
extern void ABISELECT(_ZThn24_N8S20592C5D1Ev,_ZThn16_N8S20592C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev)();
extern void ABISELECT(_ZThn24_N8S20592C5D0Ev,_ZThn16_N8S20592C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__8S20592C5__9S20592C13[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20592C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev)();
extern void _ZN8S20592C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev)();
extern void _ZN8S20592C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C6__9S20592C13[] = {
  ABISELECT(40,28),
  0,
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev)();
extern void ABISELECT(_ZThn24_N8S20592C6D1Ev,_ZThn16_N8S20592C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev)();
extern void ABISELECT(_ZThn24_N8S20592C6D0Ev,_ZThn16_N8S20592C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__8S20592C6__9S20592C13[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20592C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev)();
extern void _ZN8S20592C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev)();
extern void _ZN8S20592C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__9S20592C13[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev)();
extern void _ZN8S20592C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev)();
extern void _ZN8S20592C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C88S20592C7__9S20592C13[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20592C88S20592C7__9S20592C13[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S20592C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20592C7__9S20592C13[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S20592C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev),
};
static  VTT_ENTRY vtt_S20592C13[] = {
  {&(_ZTV9S20592C13[7]),  7,16},
  {&(_tg__ZTV8S20592C5__9S20592C13[7]),  7,9},
  {&(_tg__ZTV8S20592C5__9S20592C13[7]),  7,9},
  {&(_tg__ZTV8S20592C7__8S20592C5__9S20592C13[5]),  5,7},
  {&(_tg__ZTV8S20592C5__9S20592C13[7]),  7,9},
  {&(_ZTV9S20592C13[7]),  7,16},
  {&(_ZTV9S20592C13[14]),  14,16},
  {&(_ZTV9S20592C13[7]),  7,16},
  {&(_tg__ZTV8S20592C6__9S20592C13[6]),  6,8},
  {&(_tg__ZTV8S20592C7__8S20592C6__9S20592C13[5]),  5,7},
  {&(_tg__ZTV8S20592C6__9S20592C13[6]),  6,8},
  {&(_tg__ZTV8S20592C7__9S20592C13[5]),  5,7},
  {&(_tg__ZTV8S20592C88S20592C7__9S20592C13[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20592C88S20592C7__9S20592C13[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20592C7__9S20592C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20592C13[];
extern  VTBL_ENTRY _ZTV9S20592C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20592C13[];
static VTBL_ENTRY alt_thunk_names124[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20592C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20592C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S20592C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S20592C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20592C6D0Ev,_ZThn16_N8S20592C6D0Ev),
  (VTBL_ENTRY)_ZN8S20592C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20592C6D1Ev,_ZThn16_N8S20592C6D1Ev),
  (VTBL_ENTRY)_ZN8S20592C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20592C5D0Ev,_ZThn16_N8S20592C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20592C5D1Ev,_ZThn16_N8S20592C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20592C13D0Ev,_ZTv0_n12_N9S20592C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20592C13D0Ev,_ZThn16_N9S20592C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20592C13D1Ev,_ZTv0_n12_N9S20592C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20592C13D1Ev,_ZThn16_N9S20592C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20592C13 = {  "S20592C13", // class name
  bases_S20592C13, 9,
  &(vtc_S20592C13[0]), // expected_vtbl_contents
  &(vtt_S20592C13[0]), // expected_vtt_contents
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI9S20592C13),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20592C13),16, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20592C13),15, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names124,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20592C2  : virtual S20592C3 , virtual S20592C12 , S20592C13 {
  virtual  ~S20592C2(); // _ZN8S20592C2D2Ev
  S20592C2(); // tgen
};
//SIG(-1 S20592C2) C1{ VBC2{ BC3{ VBC4{ VBC5{ VBC6{ BC7{ VBC8{ vd m} VBC9{ m Fi} BC10{ m} Fi} Fi} BC10} FC9} vd Fi[3]} vd} VBC11{ VBC5 Fp} BC12{ BC4 BC9 Fp} vd}


 S20592C2 ::~S20592C2(){ note_dtor("S20592C2", this);}
S20592C2 ::S20592C2(){ note_ctor("S20592C2", this);} // tgen

static void Test_S20592C2()
{
  extern Class_Descriptor cd_S20592C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,17)];
    init_test(&cd_S20592C2, buf);
    S20592C2 *dp, &lv = *(dp=new (buf) S20592C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,64), "sizeof(S20592C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20592C2)");
    check_base_class_offset(lv, (S7883C3_nt*)(S20592C8*)(S20592C7*), ABISELECT(24,16), "S20592C2");
    check_base_class_offset(lv, (S3216C8_nt*)(S20592C8*)(S20592C7*), ABISELECT(80,52), "S20592C2");
    check_base_class_offset(lv, (S4677C37*)(S20592C8*)(S20592C7*), ABISELECT(64,40), "S20592C2");
    check_base_class_offset(lv, (S20592C8*)(S20592C7*), ABISELECT(64,40), "S20592C2");
    check_base_class_offset(lv, (S20592C7*)(S20592C6*), ABISELECT(64,40), "S20592C2");
    /*is_ambiguous_... S20592C6::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20592C6*), ABISELECT(24,16), "S20592C2");
    /*is_ambiguous_... S20592C2::S20592C5 */ AMB_check_base_class_offset(lv, (S20592C6*)(S20592C5*), ABISELECT(24,16), "S20592C2");
    check_base_class_offset(lv, (S20592C6*)(S20592C12*), ABISELECT(24,16), "S20592C2");
    check_base_class_offset(lv, (S20592C6*)(S20592C5*)(S20592C13*), ABISELECT(24,16), "S20592C2");
    check_base_class_offset(lv, (S20592C5*)(S20592C4*)(S20592C3*), ABISELECT(48,32), "S20592C2");
    check_base_class_offset(lv, (S20592C4*)(S20592C3*), ABISELECT(24,16), "S20592C2");
    check_base_class_offset(lv, (S20592C3*), ABISELECT(24,16), "S20592C2");
    check_base_class_offset(lv, (S20592C12*), ABISELECT(88,56), "S20592C2");
    check_base_class_offset(lv, (S20592C5*)(S20592C13*), 0, "S20592C2");
    /*is_ambiguous_... S20592C13::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20592C13*), ABISELECT(12,8), "S20592C2");
    check_base_class_offset(lv, (S20592C13*), 0, "S20592C2");
    test_class_info(&lv, &cd_S20592C2);
    dp->~S20592C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20592C2(Test_S20592C2, "S20592C2", ABISELECT(104,64));

#else // __cplusplus

extern void _ZN8S20592C2C1Ev();
extern void _ZN8S20592C2D2Ev();
Name_Map name_map_S20592C2[] = {
  NSPAIR(_ZN8S20592C2C1Ev),
  NSPAIR(_ZN8S20592C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20592C8;
extern VTBL_ENTRY _ZTI8S20592C8[];
extern  VTBL_ENTRY _ZTV8S20592C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C8[];
extern Class_Descriptor cd_S20592C7;
extern VTBL_ENTRY _ZTI8S20592C7[];
extern  VTBL_ENTRY _ZTV8S20592C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C7[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20592C6;
extern VTBL_ENTRY _ZTI8S20592C6[];
extern  VTBL_ENTRY _ZTV8S20592C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C6[];
extern Class_Descriptor cd_S20592C5;
extern VTBL_ENTRY _ZTI8S20592C5[];
extern  VTBL_ENTRY _ZTV8S20592C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C5[];
extern Class_Descriptor cd_S20592C4;
extern VTBL_ENTRY _ZTI8S20592C4[];
extern  VTBL_ENTRY _ZTV8S20592C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C4[];
extern Class_Descriptor cd_S20592C3;
extern VTBL_ENTRY _ZTI8S20592C3[];
extern  VTBL_ENTRY _ZTV8S20592C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C3[];
extern Class_Descriptor cd_S20592C12;
extern VTBL_ENTRY _ZTI9S20592C12[];
extern  VTBL_ENTRY _ZTV9S20592C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20592C12[];
extern Class_Descriptor cd_S20592C5;
extern VTBL_ENTRY _ZTI8S20592C5[];
extern  VTBL_ENTRY _ZTV8S20592C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20592C13;
extern VTBL_ENTRY _ZTI9S20592C13[];
extern  VTBL_ENTRY _ZTV9S20592C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20592C13[];
static Base_Class bases_S20592C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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_S20592C8,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20592C7,    ABISELECT(64,40), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    6, //immediately_derived
  0, 0},
  {&cd_S20592C6,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20592C5,    ABISELECT(48,32), //bcp->offset
    22, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20592C4,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20592C3,    ABISELECT(24,16), //bcp->offset
    12, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20592C12,    ABISELECT(88,56), //bcp->offset
    38, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20592C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20592C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20592C2[];
extern void ABISELECT(_ZTv0_n24_N8S20592C2D1Ev,_ZTv0_n12_N8S20592C2D1Ev)();
extern void _ZN8S20592C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C2D0Ev,_ZTv0_n12_N8S20592C2D0Ev)();
extern void _ZN8S20592C2D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C2D1Ev,_ZTv0_n12_N8S20592C2D1Ev)();
extern void ABISELECT(_ZThn24_N8S20592C2D1Ev,_ZThn16_N8S20592C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C2D0Ev,_ZTv0_n12_N8S20592C2D0Ev)();
extern void ABISELECT(_ZThn24_N8S20592C2D0Ev,_ZThn16_N8S20592C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C2D1Ev,_ZTv0_n12_N8S20592C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S20592C2D1Ev,_ZThn32_N8S20592C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C2D0Ev,_ZTv0_n12_N8S20592C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S20592C2D0Ev,_ZThn32_N8S20592C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C2D1Ev,_ZTv0_n12_N8S20592C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S20592C2D1Ev,_ZThn40_N8S20592C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C2D0Ev,_ZTv0_n12_N8S20592C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S20592C2D0Ev,_ZThn40_N8S20592C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C2D1Ev,_ZTv0_n12_N8S20592C2D1Ev)();
extern void ABISELECT(_ZThn88_N8S20592C2D1Ev,_ZThn56_N8S20592C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C2D0Ev,_ZTv0_n12_N8S20592C2D0Ev)();
extern void ABISELECT(_ZThn88_N8S20592C2D0Ev,_ZThn56_N8S20592C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20592C2[] = {
  ABISELECT(88,56),
  ABISELECT(48,32),
  ABISELECT(24,16),
  ABISELECT(24,16),
  ABISELECT(80,52),
  ABISELECT(24,16),
  ABISELECT(64,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C2D1Ev,_ZTv0_n12_N8S20592C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C2D0Ev,_ZTv0_n12_N8S20592C2D0Ev),
  0,
  ABISELECT(24,16),
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20592C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C2D1Ev,_ZTv0_n12_N8S20592C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C2D0Ev,_ZTv0_n12_N8S20592C2D0Ev),
  ABISELECT(-24,-16),
  ABISELECT(32,20),
  ABISELECT(-24,-16),
  ABISELECT(16,8),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S20592C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C2D1Ev,_ZTv0_n12_N8S20592C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C2D0Ev,_ZTv0_n12_N8S20592C2D0Ev),
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S20592C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C2D1Ev,_ZTv0_n12_N8S20592C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C2D0Ev,_ZTv0_n12_N8S20592C2D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-8,-4),
  ABISELECT(-64,-40),
  ABISELECT(-24,-16),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI8S20592C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C2D1Ev,_ZTv0_n12_N8S20592C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C2D0Ev,_ZTv0_n12_N8S20592C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S20592C2[];
extern void ABISELECT(_ZTv0_n24_N9S20592C13D1Ev,_ZTv0_n12_N9S20592C13D1Ev)();
extern void _ZN9S20592C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20592C13D0Ev,_ZTv0_n12_N9S20592C13D0Ev)();
extern void _ZN9S20592C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20592C13__8S20592C2[] = {
  ABISELECT(24,16),
  ABISELECT(80,52),
  ABISELECT(24,16),
  ABISELECT(64,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20592C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C13D1Ev,_ZTv0_n12_N9S20592C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C13D0Ev,_ZTv0_n12_N9S20592C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev)();
extern void _ZN8S20592C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev)();
extern void _ZN8S20592C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C59S20592C13__A1__8S20592C2[] = {
  ABISELECT(24,16),
  ABISELECT(80,52),
  ABISELECT(24,16),
  ABISELECT(64,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev)();
extern void ABISELECT(_ZThn24_N8S20592C5D1Ev,_ZThn16_N8S20592C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev)();
extern void ABISELECT(_ZThn24_N8S20592C5D0Ev,_ZThn16_N8S20592C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C6__8S20592C59S20592C13__A1__8S20592C2[] = {
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20592C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev)();
extern void ABISELECT(_ZThn64_N8S20592C5D1Ev,_ZThn40_N8S20592C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev)();
extern void ABISELECT(_ZThn64_N8S20592C5D0Ev,_ZThn40_N8S20592C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__8S20592C59S20592C13__A1__8S20592C2[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S20592C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20592C13D1Ev,_ZTv0_n12_N9S20592C13D1Ev)();
extern void ABISELECT(_ZThn24_N9S20592C13D1Ev,_ZThn16_N9S20592C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20592C13D0Ev,_ZTv0_n12_N9S20592C13D0Ev)();
extern void ABISELECT(_ZThn24_N9S20592C13D0Ev,_ZThn16_N9S20592C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C6__9S20592C13__8S20592C2[] = {
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20592C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C13D1Ev,_ZTv0_n12_N9S20592C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C13D0Ev,_ZTv0_n12_N9S20592C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20592C13D1Ev,_ZTv0_n12_N9S20592C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20592C13D1Ev,_ZThn40_N9S20592C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20592C13D0Ev,_ZTv0_n12_N9S20592C13D0Ev)();
extern void ABISELECT(_ZThn64_N9S20592C13D0Ev,_ZThn40_N9S20592C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__9S20592C13__8S20592C2[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20592C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C13D1Ev,_ZTv0_n12_N9S20592C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C13D0Ev,_ZTv0_n12_N9S20592C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C3D1Ev,_ZTv0_n12_N8S20592C3D1Ev)();
extern void _ZN8S20592C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C3D0Ev,_ZTv0_n12_N8S20592C3D0Ev)();
extern void _ZN8S20592C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C3__8S20592C2[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C3D1Ev,_ZTv0_n12_N8S20592C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C3D0Ev,_ZTv0_n12_N8S20592C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C4D1Ev,_ZTv0_n12_N8S20592C4D1Ev)();
extern void _ZN8S20592C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C4D0Ev,_ZTv0_n12_N8S20592C4D0Ev)();
extern void _ZN8S20592C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C48S20592C3__8S20592C2[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C4D1Ev,_ZTv0_n12_N8S20592C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C4D0Ev,_ZTv0_n12_N8S20592C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C4D1Ev,_ZTv0_n12_N8S20592C4D1Ev)();
extern void ABISELECT(_ZThn24_N8S20592C4D1Ev,_ZThn16_N8S20592C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C4D0Ev,_ZTv0_n12_N8S20592C4D0Ev)();
extern void ABISELECT(_ZThn24_N8S20592C4D0Ev,_ZThn16_N8S20592C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C5__8S20592C48S20592C3__8S20592C2[] = {
  ABISELECT(-24,-16),
  ABISELECT(32,20),
  ABISELECT(-24,-16),
  ABISELECT(16,8),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20592C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C4D1Ev,_ZTv0_n12_N8S20592C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C4D0Ev,_ZTv0_n12_N8S20592C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C4D1Ev,_ZTv0_n12_N8S20592C4D1Ev)();
extern void ABISELECT(_ZThn40_N8S20592C4D1Ev,_ZThn24_N8S20592C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C4D0Ev,_ZTv0_n12_N8S20592C4D0Ev)();
extern void ABISELECT(_ZThn40_N8S20592C4D0Ev,_ZThn24_N8S20592C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__8S20592C48S20592C3__8S20592C2[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20592C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C4D1Ev,_ZTv0_n12_N8S20592C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C4D0Ev,_ZTv0_n12_N8S20592C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C3D1Ev,_ZTv0_n12_N8S20592C3D1Ev)();
extern void ABISELECT(_ZThn24_N8S20592C3D1Ev,_ZThn16_N8S20592C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C3D0Ev,_ZTv0_n12_N8S20592C3D0Ev)();
extern void ABISELECT(_ZThn24_N8S20592C3D0Ev,_ZThn16_N8S20592C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C5__8S20592C3__8S20592C2[] = {
  ABISELECT(-24,-16),
  ABISELECT(32,20),
  ABISELECT(-24,-16),
  ABISELECT(16,8),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20592C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C3D1Ev,_ZTv0_n12_N8S20592C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C3D0Ev,_ZTv0_n12_N8S20592C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C3D1Ev,_ZTv0_n12_N8S20592C3D1Ev)();
extern void ABISELECT(_ZThn40_N8S20592C3D1Ev,_ZThn24_N8S20592C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C3D0Ev,_ZTv0_n12_N8S20592C3D0Ev)();
extern void ABISELECT(_ZThn40_N8S20592C3D0Ev,_ZThn24_N8S20592C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__8S20592C3__8S20592C2[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20592C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C3D1Ev,_ZTv0_n12_N8S20592C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C3D0Ev,_ZTv0_n12_N8S20592C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev)();
extern void _ZN8S20592C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev)();
extern void _ZN8S20592C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C5__8S20592C2[] = {
  ABISELECT(-24,-16),
  ABISELECT(32,20),
  ABISELECT(-24,-16),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20592C6__8S20592C5__8S20592C2[] = {
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S20592C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S20592C5D1Ev,_ZThn8_N8S20592C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev)();
extern void ABISELECT(_ZThn16_N8S20592C5D0Ev,_ZThn8_N8S20592C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__8S20592C5__8S20592C2[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20592C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev)();
extern void _ZN8S20592C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev)();
extern void _ZN8S20592C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C6__8S20592C2[] = {
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S20592C6D1Ev,_ZThn24_N8S20592C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S20592C6D0Ev,_ZThn24_N8S20592C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__8S20592C6__8S20592C2[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20592C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev)();
extern void _ZN8S20592C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev)();
extern void _ZN8S20592C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__8S20592C2[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev)();
extern void _ZN8S20592C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev)();
extern void _ZN8S20592C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C88S20592C7__8S20592C2[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20592C88S20592C7__8S20592C2[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S20592C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20592C7__8S20592C2[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S20592C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20592C12D1Ev,_ZTv0_n12_N9S20592C12D1Ev)();
extern void _ZN9S20592C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20592C12D0Ev,_ZTv0_n12_N9S20592C12D0Ev)();
extern void _ZN9S20592C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20592C12__8S20592C2[] = {
  ABISELECT(-64,-40),
  ABISELECT(-8,-4),
  ABISELECT(-64,-40),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20592C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C12D1Ev,_ZTv0_n12_N9S20592C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C12D0Ev,_ZTv0_n12_N9S20592C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20592C12D1Ev,_ZTv0_n12_N9S20592C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20592C12D0Ev,_ZTv0_n12_N9S20592C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20592C6__9S20592C12__8S20592C2[] = {
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  ABISELECT(64,40),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI9S20592C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C12D1Ev,_ZTv0_n12_N9S20592C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C12D0Ev,_ZTv0_n12_N9S20592C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20592C12D1Ev,_ZTv0_n12_N9S20592C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20592C12D0Ev,_ZTv0_n12_N9S20592C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20592C7__9S20592C12__8S20592C2[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20592C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C12D1Ev,_ZTv0_n12_N9S20592C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C12D0Ev,_ZTv0_n12_N9S20592C12D0Ev),
};
static  VTT_ENTRY vtt_S20592C2[] = {
  {&(_ZTV8S20592C2[10]),  10,47},
  {&(_tg__ZTV9S20592C13__8S20592C2[7]),  7,9},
  {&(_tg__ZTV8S20592C59S20592C13__A1__8S20592C2[7]),  7,9},
  {&(_tg__ZTV8S20592C6__8S20592C59S20592C13__A1__8S20592C2[6]),  6,8},
  {&(_tg__ZTV8S20592C7__8S20592C59S20592C13__A1__8S20592C2[5]),  5,7},
  {&(_tg__ZTV8S20592C6__8S20592C59S20592C13__A1__8S20592C2[6]),  6,8},
  {&(_tg__ZTV8S20592C6__9S20592C13__8S20592C2[6]),  6,8},
  {&(_tg__ZTV8S20592C7__9S20592C13__8S20592C2[5]),  5,7},
  {&(_tg__ZTV8S20592C6__9S20592C13__8S20592C2[6]),  6,8},
  {&(_ZTV8S20592C2[20]),  20,47},
  {&(_ZTV8S20592C2[29]),  29,47},
  {&(_ZTV8S20592C2[20]),  20,47},
  {&(_ZTV8S20592C2[36]),  36,47},
  {&(_ZTV8S20592C2[20]),  20,47},
  {&(_ZTV8S20592C2[45]),  45,47},
  {&(_tg__ZTV8S20592C3__8S20592C2[8]),  8,10},
  {&(_tg__ZTV8S20592C48S20592C3__8S20592C2[8]),  8,10},
  {&(_tg__ZTV8S20592C5__8S20592C48S20592C3__8S20592C2[7]),  7,9},
  {&(_tg__ZTV8S20592C48S20592C3__8S20592C2[8]),  8,10},
  {&(_tg__ZTV8S20592C7__8S20592C48S20592C3__8S20592C2[5]),  5,7},
  {&(_tg__ZTV8S20592C48S20592C3__8S20592C2[8]),  8,10},
  {&(_tg__ZTV8S20592C5__8S20592C3__8S20592C2[7]),  7,9},
  {&(_tg__ZTV8S20592C3__8S20592C2[8]),  8,10},
  {&(_tg__ZTV8S20592C7__8S20592C3__8S20592C2[5]),  5,7},
  {&(_tg__ZTV8S20592C3__8S20592C2[8]),  8,10},
  {&(_tg__ZTV8S20592C5__8S20592C2[7]),  7,9},
  {&(_tg__ZTV8S20592C6__8S20592C5__8S20592C2[6]),  6,8},
  {&(_tg__ZTV8S20592C7__8S20592C5__8S20592C2[5]),  5,7},
  {&(_tg__ZTV8S20592C6__8S20592C5__8S20592C2[6]),  6,8},
  {&(_tg__ZTV8S20592C6__8S20592C2[6]),  6,8},
  {&(_tg__ZTV8S20592C7__8S20592C6__8S20592C2[5]),  5,7},
  {&(_tg__ZTV8S20592C6__8S20592C2[6]),  6,8},
  {&(_tg__ZTV8S20592C7__8S20592C2[5]),  5,7},
  {&(_tg__ZTV8S20592C88S20592C7__8S20592C2[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20592C88S20592C7__8S20592C2[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20592C7__8S20592C2[3]),  3,5},
  {&(_tg__ZTV9S20592C12__8S20592C2[7]),  7,9},
  {&(_tg__ZTV8S20592C6__9S20592C12__8S20592C2[6]),  6,8},
  {&(_tg__ZTV8S20592C7__9S20592C12__8S20592C2[5]),  5,7},
  {&(_tg__ZTV8S20592C6__9S20592C12__8S20592C2[6]),  6,8},
};
extern VTBL_ENTRY _ZTI8S20592C2[];
extern  VTBL_ENTRY _ZTV8S20592C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C2[];
static VTBL_ENTRY alt_thunk_names125[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20592C12D0Ev,_ZTv0_n12_N9S20592C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S20592C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20592C12D1Ev,_ZTv0_n12_N9S20592C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S20592C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20592C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20592C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S20592C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S20592C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20592C6D0Ev,_ZThn24_N8S20592C6D0Ev),
  (VTBL_ENTRY)_ZN8S20592C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20592C6D1Ev,_ZThn24_N8S20592C6D1Ev),
  (VTBL_ENTRY)_ZN8S20592C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C4D0Ev,_ZTv0_n12_N8S20592C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20592C4D0Ev,_ZThn24_N8S20592C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20592C4D0Ev,_ZThn16_N8S20592C4D0Ev),
  (VTBL_ENTRY)_ZN8S20592C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C4D1Ev,_ZTv0_n12_N8S20592C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20592C4D1Ev,_ZThn24_N8S20592C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20592C4D1Ev,_ZThn16_N8S20592C4D1Ev),
  (VTBL_ENTRY)_ZN8S20592C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C3D0Ev,_ZTv0_n12_N8S20592C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20592C3D0Ev,_ZThn24_N8S20592C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20592C3D0Ev,_ZThn16_N8S20592C3D0Ev),
  (VTBL_ENTRY)_ZN8S20592C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C3D1Ev,_ZTv0_n12_N8S20592C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20592C3D1Ev,_ZThn24_N8S20592C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20592C3D1Ev,_ZThn16_N8S20592C3D1Ev),
  (VTBL_ENTRY)_ZN8S20592C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20592C5D0Ev,_ZThn8_N8S20592C5D0Ev),
  (VTBL_ENTRY)_ZN8S20592C5D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20592C5D0Ev,_ZThn40_N8S20592C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20592C5D0Ev,_ZThn16_N8S20592C5D0Ev),
  (VTBL_ENTRY)_ZN8S20592C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20592C5D1Ev,_ZThn8_N8S20592C5D1Ev),
  (VTBL_ENTRY)_ZN8S20592C5D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20592C5D1Ev,_ZThn40_N8S20592C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20592C5D1Ev,_ZThn16_N8S20592C5D1Ev),
  (VTBL_ENTRY)_ZN8S20592C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20592C13D0Ev,_ZTv0_n12_N9S20592C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20592C13D0Ev,_ZThn40_N9S20592C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20592C13D0Ev,_ZThn16_N9S20592C13D0Ev),
  (VTBL_ENTRY)_ZN9S20592C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20592C13D1Ev,_ZTv0_n12_N9S20592C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20592C13D1Ev,_ZThn40_N9S20592C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20592C13D1Ev,_ZThn16_N9S20592C13D1Ev),
  (VTBL_ENTRY)_ZN9S20592C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C2D0Ev,_ZTv0_n12_N8S20592C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20592C2D0Ev,_ZThn56_N8S20592C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20592C2D0Ev,_ZThn40_N8S20592C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20592C2D0Ev,_ZThn32_N8S20592C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20592C2D0Ev,_ZThn16_N8S20592C2D0Ev),
  (VTBL_ENTRY)_ZN8S20592C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C2D1Ev,_ZTv0_n12_N8S20592C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20592C2D1Ev,_ZThn56_N8S20592C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20592C2D1Ev,_ZThn40_N8S20592C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20592C2D1Ev,_ZThn32_N8S20592C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20592C2D1Ev,_ZThn16_N8S20592C2D1Ev),
  (VTBL_ENTRY)_ZN8S20592C2D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20592C2 = {  "S20592C2", // class name
  bases_S20592C2, 14,
  &(vtc_S20592C2[0]), // expected_vtbl_contents
  &(vtt_S20592C2[0]), // expected_vtt_contents
  ABISELECT(104,64), // object size
  NSPAIRA(_ZTI8S20592C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20592C2),47, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20592C2),40, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names125,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20592C14  : S20592C7 {
  ~S20592C14(); // tgen
  S20592C14(); // tgen
};
//SIG(-1 S20592C14) C1{ BC2{ BC3{ VBC4{ vd m} VBC5{ m Fi} BC6{ m} Fi} Fi}}


S20592C14 ::~S20592C14(){ note_dtor("S20592C14", this);} // tgen
S20592C14 ::S20592C14(){ note_ctor("S20592C14", this);} // tgen

static void Test_S20592C14()
{
  extern Class_Descriptor cd_S20592C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20592C14, buf);
    S20592C14 *dp, &lv = *(dp=new (buf) S20592C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20592C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20592C14)");
    check_base_class_offset(lv, (S7883C3_nt*)(S20592C8*)(S20592C7*), 0, "S20592C14");
    check_base_class_offset(lv, (S3216C8_nt*)(S20592C8*)(S20592C7*), ABISELECT(16,12), "S20592C14");
    check_base_class_offset(lv, (S4677C37*)(S20592C8*)(S20592C7*), 0, "S20592C14");
    check_base_class_offset(lv, (S20592C8*)(S20592C7*), 0, "S20592C14");
    check_base_class_offset(lv, (S20592C7*), 0, "S20592C14");
    test_class_info(&lv, &cd_S20592C14);
    dp->~S20592C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20592C14(Test_S20592C14, "S20592C14", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN9S20592C14C1Ev();
extern void _ZN9S20592C14D1Ev();
Name_Map name_map_S20592C14[] = {
  NSPAIR(_ZN9S20592C14C1Ev),
  NSPAIR(_ZN9S20592C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20592C8;
extern VTBL_ENTRY _ZTI8S20592C8[];
extern  VTBL_ENTRY _ZTV8S20592C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C8[];
extern Class_Descriptor cd_S20592C7;
extern VTBL_ENTRY _ZTI8S20592C7[];
extern  VTBL_ENTRY _ZTV8S20592C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C7[];
static Base_Class bases_S20592C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20592C8,    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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20592C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20592C14[];
extern void _ZN9S20592C14D1Ev();
extern void _ZN9S20592C14D0Ev();
static  VTBL_ENTRY vtc_S20592C14[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20592C14[0]),
  (VTBL_ENTRY)&_ZN9S20592C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20592C14D0Ev,
};
extern VTBL_ENTRY _ZTV9S20592C14[];
extern void _ZN8S20592C7D1Ev();
extern void _ZN8S20592C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20592C7__9S20592C14[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C7[0]),
  (VTBL_ENTRY)&_ZN8S20592C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20592C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev)();
extern void _ZN8S20592C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev)();
extern void _ZN8S20592C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C88S20592C7__9S20592C14[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev),
};
static  VTT_ENTRY vtt_S20592C14[] = {
  {&(_ZTV9S20592C14[5]),  5,7},
  {&(_tg__ZTV8S20592C7__9S20592C14[5]),  5,7},
  {&(_tg__ZTV8S20592C88S20592C7__9S20592C14[5]),  5,7},
  {&(_tg__ZTV8S20592C88S20592C7__9S20592C14[5]),  5,7},
  {&(_tg__ZTV8S20592C7__9S20592C14[5]),  5,7},
  {&(_ZTV9S20592C14[5]),  5,7},
};
extern VTBL_ENTRY _ZTI9S20592C14[];
extern  VTBL_ENTRY _ZTV9S20592C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20592C14[];
static VTBL_ENTRY alt_thunk_names126[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20592C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20592C8D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20592C14 = {  "S20592C14", // class name
  bases_S20592C14, 5,
  &(vtc_S20592C14[0]), // expected_vtbl_contents
  &(vtt_S20592C14[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI9S20592C14),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20592C14),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20592C14),6, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names126,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20592C16  : virtual S7883C3_nt , S3216C8_nt , S20592C6 , virtual S4677C37 , S20592C8 {
  virtual  ~S20592C16(); // _ZN9S20592C16D2Ev
  S20592C16(); // tgen
};
//SIG(-1 S20592C16) C1{ VBC2{ vd m} BC3{ m Fi} BC4{ VBC5{ BC6{ VBC2 VBC3 BC7{ m} Fi} Fi} BC7} VBC7 BC6 vd}


 S20592C16 ::~S20592C16(){ note_dtor("S20592C16", this);}
S20592C16 ::S20592C16(){ note_ctor("S20592C16", this);} // tgen

static void Test_S20592C16()
{
  extern Class_Descriptor cd_S20592C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S20592C16, buf);
    S20592C16 *dp, &lv = *(dp=new (buf) S20592C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S20592C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20592C16)");
    check_base_class_offset(lv, (S7883C3_nt*), 0, "S20592C16");
    check_base_class_offset(lv, (S7883C3_nt*)(S20592C8*)(S20592C7*), 0, "S20592C16");
    /*is_ambiguous_... S20592C16::S20592C8 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20592C8*), 0, "S20592C16");
    /*is_ambiguous_... S20592C16::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(8,4), "S20592C16");
    check_base_class_offset(lv, (S3216C8_nt*)(S20592C8*)(S20592C7*), ABISELECT(48,28), "S20592C16");
    /*is_ambiguous_... S20592C16::S20592C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20592C8*), ABISELECT(48,28), "S20592C16");
    check_base_class_offset(lv, (S4677C37*)(S20592C8*)(S20592C7*), ABISELECT(32,16), "S20592C16");
    check_base_class_offset(lv, (S20592C8*)(S20592C7*), ABISELECT(32,16), "S20592C16");
    check_base_class_offset(lv, (S20592C7*)(S20592C6*), ABISELECT(32,16), "S20592C16");
    /*is_ambiguous_... S20592C6::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20592C6*), 0, "S20592C16");
    check_base_class_offset(lv, (S20592C6*), 0, "S20592C16");
    /*is_ambiguous_... S20592C16::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*), ABISELECT(52,32), "S20592C16");
    /*is_ambiguous_... S20592C16::S20592C8 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20592C8*), ABISELECT(16,8), "S20592C16");
    /*is_ambiguous_... S20592C16::S20592C8 */ AMB_check_base_class_offset(lv, (S20592C8*), ABISELECT(16,8), "S20592C16");
    test_class_info(&lv, &cd_S20592C16);
    dp->~S20592C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20592C16(Test_S20592C16, "S20592C16", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN9S20592C16C1Ev();
extern void _ZN9S20592C16D2Ev();
Name_Map name_map_S20592C16[] = {
  NSPAIR(_ZN9S20592C16C1Ev),
  NSPAIR(_ZN9S20592C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20592C8;
extern VTBL_ENTRY _ZTI8S20592C8[];
extern  VTBL_ENTRY _ZTV8S20592C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C8[];
extern Class_Descriptor cd_S20592C7;
extern VTBL_ENTRY _ZTI8S20592C7[];
extern  VTBL_ENTRY _ZTV8S20592C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C7[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20592C6;
extern VTBL_ENTRY _ZTI8S20592C6[];
extern  VTBL_ENTRY _ZTV8S20592C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20592C8;
extern VTBL_ENTRY _ZTI8S20592C8[];
extern  VTBL_ENTRY _ZTV8S20592C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C8[];
static Base_Class bases_S20592C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_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_S3216C8_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
    4, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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_S20592C8,    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
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20592C7,    ABISELECT(32,16), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20592C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4677C37,    ABISELECT(52,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_S4677C37,    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
    10, //immediately_derived
  0, 0},
  {&cd_S20592C8,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20592C16[];
extern void _ZN9S20592C16D1Ev();
extern void _ZN9S20592C16D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20592C16D1Ev,_ZTv0_n12_N9S20592C16D1Ev)();
extern void ABISELECT(_ZThn16_N9S20592C16D1Ev,_ZThn8_N9S20592C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20592C16D0Ev,_ZTv0_n12_N9S20592C16D0Ev)();
extern void ABISELECT(_ZThn16_N9S20592C16D0Ev,_ZThn8_N9S20592C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20592C16D1Ev,_ZTv0_n12_N9S20592C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S20592C16D1Ev,_ZThn16_N9S20592C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20592C16D0Ev,_ZTv0_n12_N9S20592C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S20592C16D0Ev,_ZThn16_N9S20592C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20592C16[] = {
  ABISELECT(52,32),
  ABISELECT(48,28),
  0,
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20592C16[0]),
  (VTBL_ENTRY)&_ZN9S20592C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20592C16D0Ev,
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20592C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C16D1Ev,_ZTv0_n12_N9S20592C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C16D0Ev,_ZTv0_n12_N9S20592C16D0Ev),
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20592C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C16D1Ev,_ZTv0_n12_N9S20592C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C16D0Ev,_ZTv0_n12_N9S20592C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S20592C16[];
extern void ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev)();
extern void _ZN8S20592C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev)();
extern void _ZN8S20592C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C6__9S20592C16[] = {
  ABISELECT(48,28),
  0,
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev)();
extern void ABISELECT(_ZThn32_N8S20592C6D1Ev,_ZThn16_N8S20592C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev)();
extern void ABISELECT(_ZThn32_N8S20592C6D0Ev,_ZThn16_N8S20592C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__8S20592C6__9S20592C16[] = {
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20592C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev)();
extern void _ZN8S20592C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev)();
extern void _ZN8S20592C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C8__A1__9S20592C16[] = {
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20592C8__A1__9S20592C16[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20592C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev)();
extern void _ZN8S20592C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev)();
extern void _ZN8S20592C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__9S20592C16[] = {
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev)();
extern void _ZN8S20592C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev)();
extern void _ZN8S20592C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C88S20592C7__9S20592C16[] = {
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20592C88S20592C7__9S20592C16[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20592C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20592C7__9S20592C16[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20592C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev),
};
static  VTT_ENTRY vtt_S20592C16[] = {
  {&(_ZTV9S20592C16[7]),  7,23},
  {&(_tg__ZTV8S20592C6__9S20592C16[6]),  6,8},
  {&(_tg__ZTV8S20592C7__8S20592C6__9S20592C16[5]),  5,7},
  {&(_tg__ZTV8S20592C6__9S20592C16[6]),  6,8},
  {&(_tg__ZTV8S20592C8__A1__9S20592C16[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20592C8__A1__9S20592C16[3]),  3,5},
  {&(_ZTV9S20592C16[7]),  7,23},
  {&(_ZTV9S20592C16[21]),  21,23},
  {&(_ZTV9S20592C16[14]),  14,23},
  {&(_tg__ZTV8S20592C7__9S20592C16[5]),  5,7},
  {&(_tg__ZTV8S20592C88S20592C7__9S20592C16[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20592C88S20592C7__9S20592C16[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20592C7__9S20592C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20592C16[];
extern  VTBL_ENTRY _ZTV9S20592C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20592C16[];
static VTBL_ENTRY alt_thunk_names127[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S20592C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S20592C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20592C8D0Ev,
  (VTBL_ENTRY)_ZN8S20592C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20592C8D1Ev,
  (VTBL_ENTRY)_ZN8S20592C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20592C6D0Ev,_ZThn16_N8S20592C6D0Ev),
  (VTBL_ENTRY)_ZN8S20592C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20592C6D1Ev,_ZThn16_N8S20592C6D1Ev),
  (VTBL_ENTRY)_ZN8S20592C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20592C16D0Ev,_ZTv0_n12_N9S20592C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20592C16D0Ev,_ZThn16_N9S20592C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20592C16D0Ev,_ZThn8_N9S20592C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20592C16D1Ev,_ZTv0_n12_N9S20592C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20592C16D1Ev,_ZThn16_N9S20592C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20592C16D1Ev,_ZThn8_N9S20592C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20592C16 = {  "S20592C16", // class name
  bases_S20592C16, 11,
  &(vtc_S20592C16[0]), // expected_vtbl_contents
  &(vtt_S20592C16[0]), // expected_vtt_contents
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI9S20592C16),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20592C16),23, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20592C16),13, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names127,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20592C15  : virtual S20592C16 {
  virtual  ~S20592C15(); // _ZN9S20592C15D2Ev
  S20592C15(); // tgen
};
//SIG(-1 S20592C15) C1{ VBC2{ VBC3{ vd m} BC4{ m Fi} BC5{ VBC6{ BC7{ VBC3 VBC4 BC8{ m} Fi} Fi} BC8} VBC8 BC7 vd} vd}


 S20592C15 ::~S20592C15(){ note_dtor("S20592C15", this);}
S20592C15 ::S20592C15(){ note_ctor("S20592C15", this);} // tgen

static void Test_S20592C15()
{
  extern Class_Descriptor cd_S20592C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S20592C15, buf);
    S20592C15 *dp, &lv = *(dp=new (buf) S20592C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S20592C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20592C15)");
    check_base_class_offset(lv, (S7883C3_nt*)(S20592C16*), 0, "S20592C15");
    check_base_class_offset(lv, (S7883C3_nt*)(S20592C8*)(S20592C7*), 0, "S20592C15");
    /*is_ambiguous_... S20592C16::S20592C8 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20592C8*)(S20592C16*), 0, "S20592C15");
    /*is_ambiguous_... S20592C16::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20592C16*), ABISELECT(16,8), "S20592C15");
    check_base_class_offset(lv, (S3216C8_nt*)(S20592C8*)(S20592C7*), ABISELECT(56,32), "S20592C15");
    /*is_ambiguous_... S20592C16::S20592C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20592C8*)(S20592C16*), ABISELECT(56,32), "S20592C15");
    check_base_class_offset(lv, (S4677C37*)(S20592C8*)(S20592C7*), ABISELECT(40,20), "S20592C15");
    check_base_class_offset(lv, (S20592C8*)(S20592C7*), ABISELECT(40,20), "S20592C15");
    check_base_class_offset(lv, (S20592C7*)(S20592C6*)(S20592C16*), ABISELECT(40,20), "S20592C15");
    /*is_ambiguous_... S20592C6::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20592C6*)(S20592C16*), ABISELECT(8,4), "S20592C15");
    check_base_class_offset(lv, (S20592C6*)(S20592C16*), ABISELECT(8,4), "S20592C15");
    /*is_ambiguous_... S20592C16::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20592C16*), 0, "S20592C15");
    /*is_ambiguous_... S20592C16::S20592C8 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20592C8*)(S20592C16*), ABISELECT(24,12), "S20592C15");
    /*is_ambiguous_... S20592C16::S20592C8 */ AMB_check_base_class_offset(lv, (S20592C8*)(S20592C16*), ABISELECT(24,12), "S20592C15");
    check_base_class_offset(lv, (S20592C16*), ABISELECT(8,4), "S20592C15");
    test_class_info(&lv, &cd_S20592C15);
    dp->~S20592C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20592C15(Test_S20592C15, "S20592C15", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN9S20592C15C1Ev();
extern void _ZN9S20592C15D2Ev();
Name_Map name_map_S20592C15[] = {
  NSPAIR(_ZN9S20592C15C1Ev),
  NSPAIR(_ZN9S20592C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20592C8;
extern VTBL_ENTRY _ZTI8S20592C8[];
extern  VTBL_ENTRY _ZTV8S20592C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C8[];
extern Class_Descriptor cd_S20592C7;
extern VTBL_ENTRY _ZTI8S20592C7[];
extern  VTBL_ENTRY _ZTV8S20592C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C7[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20592C6;
extern VTBL_ENTRY _ZTI8S20592C6[];
extern  VTBL_ENTRY _ZTV8S20592C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20592C8;
extern VTBL_ENTRY _ZTI8S20592C8[];
extern  VTBL_ENTRY _ZTV8S20592C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C8[];
extern Class_Descriptor cd_S20592C16;
extern VTBL_ENTRY _ZTI9S20592C16[];
extern  VTBL_ENTRY _ZTV9S20592C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20592C16[];
static Base_Class bases_S20592C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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_S20592C8,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //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
    5, //immediately_derived
  0, 0},
  {&cd_S20592C7,    ABISELECT(40,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20592C6,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4677C37,    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_S20592C8,    ABISELECT(24,12), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20592C16,    ABISELECT(8,4), //bcp->offset
    10, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20592C15[];
extern void _ZN9S20592C15D1Ev();
extern void _ZN9S20592C15D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20592C15D1Ev,_ZTv0_n12_N9S20592C15D1Ev)();
extern void ABISELECT(_ZThn8_N9S20592C15D1Ev,_ZThn4_N9S20592C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20592C15D0Ev,_ZTv0_n12_N9S20592C15D0Ev)();
extern void ABISELECT(_ZThn8_N9S20592C15D0Ev,_ZThn4_N9S20592C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20592C15D1Ev,_ZTv0_n12_N9S20592C15D1Ev)();
extern void ABISELECT(_ZThn24_N9S20592C15D1Ev,_ZThn12_N9S20592C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20592C15D0Ev,_ZTv0_n12_N9S20592C15D0Ev)();
extern void ABISELECT(_ZThn24_N9S20592C15D0Ev,_ZThn12_N9S20592C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20592C15D1Ev,_ZTv0_n12_N9S20592C15D1Ev)();
extern void ABISELECT(_ZThn40_N9S20592C15D1Ev,_ZThn20_N9S20592C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20592C15D0Ev,_ZTv0_n12_N9S20592C15D0Ev)();
extern void ABISELECT(_ZThn40_N9S20592C15D0Ev,_ZThn20_N9S20592C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20592C15[] = {
  0,
  ABISELECT(56,32),
  ABISELECT(40,20),
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20592C15[0]),
  (VTBL_ENTRY)&_ZN9S20592C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20592C15D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20592C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C15D1Ev,_ZTv0_n12_N9S20592C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C15D0Ev,_ZTv0_n12_N9S20592C15D0Ev),
  ABISELECT(32,20),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20592C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C15D1Ev,_ZTv0_n12_N9S20592C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C15D0Ev,_ZTv0_n12_N9S20592C15D0Ev),
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20592C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C15D1Ev,_ZTv0_n12_N9S20592C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C15D0Ev,_ZTv0_n12_N9S20592C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S20592C15[];
extern void ABISELECT(_ZTv0_n24_N9S20592C16D1Ev,_ZTv0_n12_N9S20592C16D1Ev)();
extern void _ZN9S20592C16D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20592C16D0Ev,_ZTv0_n12_N9S20592C16D0Ev)();
extern void _ZN9S20592C16D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20592C16__9S20592C15[] = {
  ABISELECT(-8,-4),
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20592C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C16D1Ev,_ZTv0_n12_N9S20592C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C16D0Ev,_ZTv0_n12_N9S20592C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev)();
extern void _ZN8S20592C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev)();
extern void _ZN8S20592C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C69S20592C16__9S20592C15[] = {
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev)();
extern void ABISELECT(_ZThn32_N8S20592C6D1Ev,_ZThn16_N8S20592C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev)();
extern void ABISELECT(_ZThn32_N8S20592C6D0Ev,_ZThn16_N8S20592C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__8S20592C69S20592C16__9S20592C15[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20592C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20592C69S20592C16__9S20592C15[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20592C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev)();
extern void _ZN8S20592C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev)();
extern void _ZN8S20592C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C89S20592C16__A1__9S20592C15[] = {
  ABISELECT(32,20),
  ABISELECT(-24,-12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20592C89S20592C16__A1__9S20592C15[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S20592C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20592C16D1Ev,_ZTv0_n12_N9S20592C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20592C16D0Ev,_ZTv0_n12_N9S20592C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20592C16__9S20592C15[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S20592C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C16D1Ev,_ZTv0_n12_N9S20592C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C16D0Ev,_ZTv0_n12_N9S20592C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20592C16D1Ev,_ZTv0_n12_N9S20592C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S20592C16D1Ev,_ZThn16_N9S20592C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20592C16D0Ev,_ZTv0_n12_N9S20592C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S20592C16D0Ev,_ZThn16_N9S20592C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__9S20592C16__9S20592C15[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20592C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C16D1Ev,_ZTv0_n12_N9S20592C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C16D0Ev,_ZTv0_n12_N9S20592C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20592C16D1Ev,_ZTv0_n12_N9S20592C16D1Ev)();
extern void ABISELECT(_ZThn16_N9S20592C16D1Ev,_ZThn8_N9S20592C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20592C16D0Ev,_ZTv0_n12_N9S20592C16D0Ev)();
extern void ABISELECT(_ZThn16_N9S20592C16D0Ev,_ZThn8_N9S20592C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C8__A1__9S20592C16__9S20592C15[] = {
  ABISELECT(32,20),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20592C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C16D1Ev,_ZTv0_n12_N9S20592C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C16D0Ev,_ZTv0_n12_N9S20592C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev)();
extern void _ZN8S20592C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev)();
extern void _ZN8S20592C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__9S20592C15[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev)();
extern void _ZN8S20592C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev)();
extern void _ZN8S20592C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C88S20592C7__9S20592C15[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20592C88S20592C7__9S20592C15[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S20592C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20592C7__9S20592C15[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S20592C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev),
};
static  VTT_ENTRY vtt_S20592C15[] = {
  {&(_ZTV9S20592C15[8]),  8,33},
  {&(_ZTV9S20592C15[17]),  17,33},
  {&(_ZTV9S20592C15[8]),  8,33},
  {&(_ZTV9S20592C15[31]),  31,33},
  {&(_ZTV9S20592C15[24]),  24,33},
  {&(_tg__ZTV9S20592C16__9S20592C15[7]),  7,9},
  {&(_tg__ZTV8S20592C69S20592C16__9S20592C15[6]),  6,8},
  {&(_tg__ZTV8S20592C7__8S20592C69S20592C16__9S20592C15[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20592C69S20592C16__9S20592C15[3]),  3,5},
  {&(_tg__ZTV8S20592C89S20592C16__A1__9S20592C15[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20592C89S20592C16__A1__9S20592C15[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20592C16__9S20592C15[3]),  3,5},
  {&(_tg__ZTV8S20592C7__9S20592C16__9S20592C15[5]),  5,7},
  {&(_tg__ZTV8S20592C8__A1__9S20592C16__9S20592C15[5]),  5,7},
  {&(_tg__ZTV8S20592C7__9S20592C15[5]),  5,7},
  {&(_tg__ZTV8S20592C88S20592C7__9S20592C15[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20592C88S20592C7__9S20592C15[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20592C7__9S20592C15[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20592C15[];
extern  VTBL_ENTRY _ZTV9S20592C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20592C15[];
static VTBL_ENTRY alt_thunk_names128[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S20592C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S20592C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20592C8D0Ev,
  (VTBL_ENTRY)_ZN8S20592C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20592C8D1Ev,
  (VTBL_ENTRY)_ZN8S20592C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20592C6D0Ev,_ZThn16_N8S20592C6D0Ev),
  (VTBL_ENTRY)_ZN8S20592C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20592C6D1Ev,_ZThn16_N8S20592C6D1Ev),
  (VTBL_ENTRY)_ZN8S20592C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20592C16D0Ev,_ZTv0_n12_N9S20592C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20592C16D0Ev,_ZThn8_N9S20592C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20592C16D0Ev,_ZThn16_N9S20592C16D0Ev),
  (VTBL_ENTRY)_ZN9S20592C16D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20592C16D1Ev,_ZTv0_n12_N9S20592C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20592C16D1Ev,_ZThn8_N9S20592C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20592C16D1Ev,_ZThn16_N9S20592C16D1Ev),
  (VTBL_ENTRY)_ZN9S20592C16D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20592C15D0Ev,_ZTv0_n12_N9S20592C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20592C15D0Ev,_ZThn20_N9S20592C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20592C15D0Ev,_ZThn12_N9S20592C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20592C15D0Ev,_ZThn4_N9S20592C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20592C15D1Ev,_ZTv0_n12_N9S20592C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20592C15D1Ev,_ZThn20_N9S20592C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20592C15D1Ev,_ZThn12_N9S20592C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20592C15D1Ev,_ZThn4_N9S20592C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20592C15 = {  "S20592C15", // class name
  bases_S20592C15, 12,
  &(vtc_S20592C15[0]), // expected_vtbl_contents
  &(vtt_S20592C15[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI9S20592C15),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20592C15),33, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20592C15),18, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names128,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20592C1  : virtual S20592C2 , virtual S20592C14 , virtual S20592C15 {
  virtual  ~S20592C1(); // _ZN8S20592C1D2Ev
  S20592C1(); // tgen
};
//SIG(1 S20592C1) C1{ VBC2{ VBC3{ BC4{ VBC5{ VBC6{ VBC7{ BC8{ VBC9{ vd m} VBC10{ m Fi} BC11{ m} Fi} Fi} BC11} FC10} vd Fi[3]} vd} VBC12{ VBC6 Fp} BC13{ BC5 BC10 Fp} vd} VBC14{ BC7} VBC15{ VBC16{ VBC9 BC10 BC6 VBC11 BC8 vd} vd} vd}


 S20592C1 ::~S20592C1(){ note_dtor("S20592C1", this);}
S20592C1 ::S20592C1(){ note_ctor("S20592C1", this);} // tgen

static void Test_S20592C1()
{
  extern Class_Descriptor cd_S20592C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,25)];
    init_test(&cd_S20592C1, buf);
    S20592C1 *dp, &lv = *(dp=new (buf) S20592C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,96), "sizeof(S20592C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20592C1)");
    /*is_ambiguous_... S20592C1::S20592C7 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20592C8*)(S20592C7*), ABISELECT(32,20), "S20592C1");
    check_base_class_offset(lv, (S7883C3_nt*)(S20592C8*)(S20592C7*)(S20592C14*), ABISELECT(32,20), "S20592C1");
    check_base_class_offset(lv, (S7883C3_nt*)(S20592C16*), ABISELECT(32,20), "S20592C1");
    /*is_ambiguous_... S20592C16::S20592C8 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S20592C8*)(S20592C16*), ABISELECT(32,20), "S20592C1");
    /*is_ambiguous_... S20592C1::S20592C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20592C8*)(S20592C7*), ABISELECT(88,56), "S20592C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S20592C8*)(S20592C7*)(S20592C14*), ABISELECT(88,56), "S20592C1");
    /*is_ambiguous_... S20592C16::S20592C8 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20592C8*)(S20592C16*), ABISELECT(88,56), "S20592C1");
    /*is_ambiguous_... S20592C1::S20592C7 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20592C8*)(S20592C7*), ABISELECT(72,44), "S20592C1");
    /*is_ambiguous_... S20592C1::S20592C7 */ AMB_check_base_class_offset(lv, (S20592C8*)(S20592C7*), ABISELECT(72,44), "S20592C1");
    /*is_ambiguous_... S20592C1::S20592C6 */ AMB_check_base_class_offset(lv, (S20592C7*)(S20592C6*), ABISELECT(72,44), "S20592C1");
    check_base_class_offset(lv, (S20592C7*)(S20592C6*)(S20592C16*), ABISELECT(72,44), "S20592C1");
    /*is_ambiguous_... S20592C1::S20592C6 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20592C6*), ABISELECT(32,20), "S20592C1");
    /*is_ambiguous_... S20592C1::S20592C5 */ AMB_check_base_class_offset(lv, (S20592C6*)(S20592C5*), ABISELECT(32,20), "S20592C1");
    check_base_class_offset(lv, (S20592C6*)(S20592C12*), ABISELECT(32,20), "S20592C1");
    check_base_class_offset(lv, (S20592C6*)(S20592C5*)(S20592C13*)(S20592C2*), ABISELECT(32,20), "S20592C1");
    check_base_class_offset(lv, (S20592C5*)(S20592C4*)(S20592C3*), ABISELECT(56,36), "S20592C1");
    check_base_class_offset(lv, (S20592C4*)(S20592C3*), ABISELECT(32,20), "S20592C1");
    check_base_class_offset(lv, (S20592C3*)(S20592C2*), ABISELECT(32,20), "S20592C1");
    check_base_class_offset(lv, (S20592C12*)(S20592C2*), ABISELECT(96,60), "S20592C1");
    check_base_class_offset(lv, (S20592C5*)(S20592C13*)(S20592C2*), ABISELECT(8,4), "S20592C1");
    /*is_ambiguous_... S20592C13::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20592C13*)(S20592C2*), ABISELECT(20,12), "S20592C1");
    check_base_class_offset(lv, (S20592C13*)(S20592C2*), ABISELECT(8,4), "S20592C1");
    check_base_class_offset(lv, (S20592C2*), ABISELECT(8,4), "S20592C1");
    check_base_class_offset(lv, (S4677C37*)(S20592C8*)(S20592C7*)(S20592C14*), ABISELECT(112,68), "S20592C1");
    check_base_class_offset(lv, (S20592C8*)(S20592C7*)(S20592C14*), ABISELECT(112,68), "S20592C1");
    check_base_class_offset(lv, (S20592C7*)(S20592C14*), ABISELECT(112,68), "S20592C1");
    check_base_class_offset(lv, (S20592C14*), ABISELECT(112,68), "S20592C1");
    /*is_ambiguous_... S20592C16::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S20592C16*), ABISELECT(136,84), "S20592C1");
    /*is_ambiguous_... S20592C6::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20592C6*)(S20592C16*), ABISELECT(128,80), "S20592C1");
    check_base_class_offset(lv, (S20592C6*)(S20592C16*), ABISELECT(128,80), "S20592C1");
    /*is_ambiguous_... S20592C16::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20592C16*), 0, "S20592C1");
    /*is_ambiguous_... S20592C16::S20592C8 */ AMB_check_base_class_offset(lv, (S4677C37*)(S20592C8*)(S20592C16*), ABISELECT(144,88), "S20592C1");
    /*is_ambiguous_... S20592C16::S20592C8 */ AMB_check_base_class_offset(lv, (S20592C8*)(S20592C16*), ABISELECT(144,88), "S20592C1");
    check_base_class_offset(lv, (S20592C16*)(S20592C15*), ABISELECT(128,80), "S20592C1");
    check_base_class_offset(lv, (S20592C15*), 0, "S20592C1");
    test_class_info(&lv, &cd_S20592C1);
    dp->~S20592C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20592C1(Test_S20592C1, "S20592C1", ABISELECT(160,96));

#else // __cplusplus

extern void _ZN8S20592C1C1Ev();
extern void _ZN8S20592C1D2Ev();
Name_Map name_map_S20592C1[] = {
  NSPAIR(_ZN8S20592C1C1Ev),
  NSPAIR(_ZN8S20592C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20592C8;
extern VTBL_ENTRY _ZTI8S20592C8[];
extern  VTBL_ENTRY _ZTV8S20592C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C8[];
extern Class_Descriptor cd_S20592C7;
extern VTBL_ENTRY _ZTI8S20592C7[];
extern  VTBL_ENTRY _ZTV8S20592C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C7[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20592C6;
extern VTBL_ENTRY _ZTI8S20592C6[];
extern  VTBL_ENTRY _ZTV8S20592C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C6[];
extern Class_Descriptor cd_S20592C5;
extern VTBL_ENTRY _ZTI8S20592C5[];
extern  VTBL_ENTRY _ZTV8S20592C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C5[];
extern Class_Descriptor cd_S20592C4;
extern VTBL_ENTRY _ZTI8S20592C4[];
extern  VTBL_ENTRY _ZTV8S20592C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C4[];
extern Class_Descriptor cd_S20592C3;
extern VTBL_ENTRY _ZTI8S20592C3[];
extern  VTBL_ENTRY _ZTV8S20592C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C3[];
extern Class_Descriptor cd_S20592C12;
extern VTBL_ENTRY _ZTI9S20592C12[];
extern  VTBL_ENTRY _ZTV9S20592C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20592C12[];
extern Class_Descriptor cd_S20592C5;
extern VTBL_ENTRY _ZTI8S20592C5[];
extern  VTBL_ENTRY _ZTV8S20592C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C5[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S20592C13;
extern VTBL_ENTRY _ZTI9S20592C13[];
extern  VTBL_ENTRY _ZTV9S20592C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20592C13[];
extern Class_Descriptor cd_S20592C2;
extern VTBL_ENTRY _ZTI8S20592C2[];
extern  VTBL_ENTRY _ZTV8S20592C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C2[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20592C8;
extern VTBL_ENTRY _ZTI8S20592C8[];
extern  VTBL_ENTRY _ZTV8S20592C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C8[];
extern Class_Descriptor cd_S20592C7;
extern VTBL_ENTRY _ZTI8S20592C7[];
extern  VTBL_ENTRY _ZTV8S20592C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C7[];
extern Class_Descriptor cd_S20592C14;
extern VTBL_ENTRY _ZTI9S20592C14[];
extern  VTBL_ENTRY _ZTV9S20592C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20592C14[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20592C6;
extern VTBL_ENTRY _ZTI8S20592C6[];
extern  VTBL_ENTRY _ZTV8S20592C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C6[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20592C8;
extern VTBL_ENTRY _ZTI8S20592C8[];
extern  VTBL_ENTRY _ZTV8S20592C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C8[];
extern Class_Descriptor cd_S20592C16;
extern VTBL_ENTRY _ZTI9S20592C16[];
extern  VTBL_ENTRY _ZTV9S20592C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20592C16[];
extern Class_Descriptor cd_S20592C15;
extern VTBL_ENTRY _ZTI9S20592C15[];
extern  VTBL_ENTRY _ZTV9S20592C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20592C15[];
static Base_Class bases_S20592C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(88,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    3, //immediately_derived
  0, 0},
  {&cd_S20592C8,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20592C7,    ABISELECT(72,44), //bcp->offset
    48, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    6, //immediately_derived
  0, 0},
  {&cd_S20592C6,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20592C5,    ABISELECT(56,36), //bcp->offset
    39, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20592C4,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20592C3,    ABISELECT(32,20), //bcp->offset
    29, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20592C12,    ABISELECT(96,60), //bcp->offset
    55, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20592C5,    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
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3216C8_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
    13, //immediately_derived
  0, 0},
  {&cd_S20592C13,    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
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20592C2,    ABISELECT(8,4), //bcp->offset
    17, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20592C8,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20592C7,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20592C14,    ABISELECT(112,68), //bcp->offset
    64, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(136,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(128,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20592C6,    ABISELECT(128,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S4677C37,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20592C8,    ABISELECT(144,88), //bcp->offset
    80, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20592C16,    ABISELECT(128,80), //bcp->offset
    71, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S20592C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20592C1[];
extern void ABISELECT(_ZTv0_n24_N8S20592C1D1Ev,_ZTv0_n12_N8S20592C1D1Ev)();
extern void _ZN8S20592C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C1D0Ev,_ZTv0_n12_N8S20592C1D0Ev)();
extern void _ZN8S20592C1D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C1D1Ev,_ZTv0_n12_N8S20592C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S20592C1D1Ev,_ZThn4_N8S20592C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C1D0Ev,_ZTv0_n12_N8S20592C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S20592C1D0Ev,_ZThn4_N8S20592C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C1D1Ev,_ZTv0_n12_N8S20592C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S20592C1D1Ev,_ZThn20_N8S20592C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C1D0Ev,_ZTv0_n12_N8S20592C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S20592C1D0Ev,_ZThn20_N8S20592C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C1D1Ev,_ZTv0_n12_N8S20592C1D1Ev)();
extern void ABISELECT(_ZThn56_N8S20592C1D1Ev,_ZThn36_N8S20592C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C1D0Ev,_ZTv0_n12_N8S20592C1D0Ev)();
extern void ABISELECT(_ZThn56_N8S20592C1D0Ev,_ZThn36_N8S20592C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C1D1Ev,_ZTv0_n12_N8S20592C1D1Ev)();
extern void ABISELECT(_ZThn72_N8S20592C1D1Ev,_ZThn44_N8S20592C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C1D0Ev,_ZTv0_n12_N8S20592C1D0Ev)();
extern void ABISELECT(_ZThn72_N8S20592C1D0Ev,_ZThn44_N8S20592C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C1D1Ev,_ZTv0_n12_N8S20592C1D1Ev)();
extern void ABISELECT(_ZThn96_N8S20592C1D1Ev,_ZThn60_N8S20592C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C1D0Ev,_ZTv0_n12_N8S20592C1D0Ev)();
extern void ABISELECT(_ZThn96_N8S20592C1D0Ev,_ZThn60_N8S20592C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C1D1Ev,_ZTv0_n12_N8S20592C1D1Ev)();
extern void ABISELECT(_ZThn112_N8S20592C1D1Ev,_ZThn68_N8S20592C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C1D0Ev,_ZTv0_n12_N8S20592C1D0Ev)();
extern void ABISELECT(_ZThn112_N8S20592C1D0Ev,_ZThn68_N8S20592C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C1D1Ev,_ZTv0_n12_N8S20592C1D1Ev)();
extern void ABISELECT(_ZThn128_N8S20592C1D1Ev,_ZThn80_N8S20592C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C1D0Ev,_ZTv0_n12_N8S20592C1D0Ev)();
extern void ABISELECT(_ZThn128_N8S20592C1D0Ev,_ZThn80_N8S20592C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C1D1Ev,_ZTv0_n12_N8S20592C1D1Ev)();
extern void ABISELECT(_ZThn144_N8S20592C1D1Ev,_ZThn88_N8S20592C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C1D0Ev,_ZTv0_n12_N8S20592C1D0Ev)();
extern void ABISELECT(_ZThn144_N8S20592C1D0Ev,_ZThn88_N8S20592C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20592C1[] = {
  0,
  ABISELECT(112,68),
  ABISELECT(96,60),
  ABISELECT(32,20),
  ABISELECT(56,36),
  ABISELECT(32,20),
  ABISELECT(8,4),
  0,
  ABISELECT(88,56),
  ABISELECT(72,44),
  ABISELECT(32,20),
  ABISELECT(128,80),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C1D1Ev,_ZTv0_n12_N8S20592C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C1D0Ev,_ZTv0_n12_N8S20592C1D0Ev),
  ABISELECT(88,56),
  ABISELECT(48,32),
  ABISELECT(24,16),
  ABISELECT(24,16),
  ABISELECT(80,52),
  ABISELECT(24,16),
  ABISELECT(64,40),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20592C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C1D1Ev,_ZTv0_n12_N8S20592C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C1D0Ev,_ZTv0_n12_N8S20592C1D0Ev),
  0,
  ABISELECT(24,16),
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20592C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C1D1Ev,_ZTv0_n12_N8S20592C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C1D0Ev,_ZTv0_n12_N8S20592C1D0Ev),
  ABISELECT(-24,-16),
  ABISELECT(32,20),
  ABISELECT(-24,-16),
  ABISELECT(16,8),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S20592C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C1D1Ev,_ZTv0_n12_N8S20592C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C1D0Ev,_ZTv0_n12_N8S20592C1D0Ev),
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S20592C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C1D1Ev,_ZTv0_n12_N8S20592C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C1D0Ev,_ZTv0_n12_N8S20592C1D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-8,-4),
  ABISELECT(-64,-40),
  ABISELECT(-24,-16),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S20592C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C1D1Ev,_ZTv0_n12_N8S20592C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C1D0Ev,_ZTv0_n12_N8S20592C1D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-80,-48),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S20592C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C1D1Ev,_ZTv0_n12_N8S20592C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C1D0Ev,_ZTv0_n12_N8S20592C1D0Ev),
  ABISELECT(-128,-80),
  ABISELECT(-40,-24),
  ABISELECT(-96,-60),
  ABISELECT(-56,-36),
  ABISELECT(-128,-80),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S20592C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C1D1Ev,_ZTv0_n12_N8S20592C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C1D0Ev,_ZTv0_n12_N8S20592C1D0Ev),
  ABISELECT(-56,-32),
  ABISELECT(-112,-68),
  ABISELECT(-144,-88),
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI8S20592C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C1D1Ev,_ZTv0_n12_N8S20592C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C1D0Ev,_ZTv0_n12_N8S20592C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S20592C1[];
extern void ABISELECT(_ZTv0_n24_N8S20592C2D1Ev,_ZTv0_n12_N8S20592C2D1Ev)();
extern void _ZN8S20592C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C2D0Ev,_ZTv0_n12_N8S20592C2D0Ev)();
extern void _ZN8S20592C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C2__8S20592C1[] = {
  ABISELECT(88,56),
  ABISELECT(48,32),
  ABISELECT(24,16),
  ABISELECT(24,16),
  ABISELECT(80,52),
  ABISELECT(24,16),
  ABISELECT(64,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C2D1Ev,_ZTv0_n12_N8S20592C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C2D0Ev,_ZTv0_n12_N8S20592C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20592C13D1Ev,_ZTv0_n12_N9S20592C13D1Ev)();
extern void _ZN9S20592C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20592C13D0Ev,_ZTv0_n12_N9S20592C13D0Ev)();
extern void _ZN9S20592C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20592C138S20592C2__8S20592C1[] = {
  ABISELECT(24,16),
  ABISELECT(80,52),
  ABISELECT(24,16),
  ABISELECT(64,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20592C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C13D1Ev,_ZTv0_n12_N9S20592C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C13D0Ev,_ZTv0_n12_N9S20592C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev)();
extern void _ZN8S20592C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev)();
extern void _ZN8S20592C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C59S20592C138S20592C2__A1__8S20592C1[] = {
  ABISELECT(24,16),
  ABISELECT(80,52),
  ABISELECT(24,16),
  ABISELECT(64,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev)();
extern void ABISELECT(_ZThn24_N8S20592C5D1Ev,_ZThn16_N8S20592C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev)();
extern void ABISELECT(_ZThn24_N8S20592C5D0Ev,_ZThn16_N8S20592C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C6__8S20592C59S20592C138S20592C2__A1__8S20592C1[] = {
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20592C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev)();
extern void ABISELECT(_ZThn64_N8S20592C5D1Ev,_ZThn40_N8S20592C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev)();
extern void ABISELECT(_ZThn64_N8S20592C5D0Ev,_ZThn40_N8S20592C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__8S20592C59S20592C138S20592C2__A1__8S20592C1[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S20592C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20592C13D1Ev,_ZTv0_n12_N9S20592C13D1Ev)();
extern void ABISELECT(_ZThn24_N9S20592C13D1Ev,_ZThn16_N9S20592C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20592C13D0Ev,_ZTv0_n12_N9S20592C13D0Ev)();
extern void ABISELECT(_ZThn24_N9S20592C13D0Ev,_ZThn16_N9S20592C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C6__9S20592C138S20592C2__8S20592C1[] = {
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20592C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C13D1Ev,_ZTv0_n12_N9S20592C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C13D0Ev,_ZTv0_n12_N9S20592C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20592C13D1Ev,_ZTv0_n12_N9S20592C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20592C13D1Ev,_ZThn40_N9S20592C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20592C13D0Ev,_ZTv0_n12_N9S20592C13D0Ev)();
extern void ABISELECT(_ZThn64_N9S20592C13D0Ev,_ZThn40_N9S20592C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__9S20592C138S20592C2__8S20592C1[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20592C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C13D1Ev,_ZTv0_n12_N9S20592C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C13D0Ev,_ZTv0_n12_N9S20592C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C2D1Ev,_ZTv0_n12_N8S20592C2D1Ev)();
extern void ABISELECT(_ZThn24_N8S20592C2D1Ev,_ZThn16_N8S20592C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C2D0Ev,_ZTv0_n12_N8S20592C2D0Ev)();
extern void ABISELECT(_ZThn24_N8S20592C2D0Ev,_ZThn16_N8S20592C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C3__8S20592C2__8S20592C1[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20592C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C2D1Ev,_ZTv0_n12_N8S20592C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C2D0Ev,_ZTv0_n12_N8S20592C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C2D1Ev,_ZTv0_n12_N8S20592C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S20592C2D1Ev,_ZThn32_N8S20592C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C2D0Ev,_ZTv0_n12_N8S20592C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S20592C2D0Ev,_ZThn32_N8S20592C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C5__8S20592C2__8S20592C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(32,20),
  ABISELECT(-24,-16),
  ABISELECT(16,8),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S20592C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C2D1Ev,_ZTv0_n12_N8S20592C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C2D0Ev,_ZTv0_n12_N8S20592C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C2D1Ev,_ZTv0_n12_N8S20592C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S20592C2D1Ev,_ZThn40_N8S20592C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C2D0Ev,_ZTv0_n12_N8S20592C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S20592C2D0Ev,_ZThn40_N8S20592C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__8S20592C2__8S20592C1[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S20592C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C2D1Ev,_ZTv0_n12_N8S20592C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C2D0Ev,_ZTv0_n12_N8S20592C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C2D1Ev,_ZTv0_n12_N8S20592C2D1Ev)();
extern void ABISELECT(_ZThn88_N8S20592C2D1Ev,_ZThn56_N8S20592C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C2D0Ev,_ZTv0_n12_N8S20592C2D0Ev)();
extern void ABISELECT(_ZThn88_N8S20592C2D0Ev,_ZThn56_N8S20592C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20592C12__8S20592C2__8S20592C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-8,-4),
  ABISELECT(-64,-40),
  ABISELECT(-24,-16),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI8S20592C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C2D1Ev,_ZTv0_n12_N8S20592C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C2D0Ev,_ZTv0_n12_N8S20592C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C3D1Ev,_ZTv0_n12_N8S20592C3D1Ev)();
extern void _ZN8S20592C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C3D0Ev,_ZTv0_n12_N8S20592C3D0Ev)();
extern void _ZN8S20592C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C3__8S20592C1[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C3D1Ev,_ZTv0_n12_N8S20592C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C3D0Ev,_ZTv0_n12_N8S20592C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C4D1Ev,_ZTv0_n12_N8S20592C4D1Ev)();
extern void _ZN8S20592C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C4D0Ev,_ZTv0_n12_N8S20592C4D0Ev)();
extern void _ZN8S20592C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C48S20592C3__8S20592C1[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C4D1Ev,_ZTv0_n12_N8S20592C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C4D0Ev,_ZTv0_n12_N8S20592C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C4D1Ev,_ZTv0_n12_N8S20592C4D1Ev)();
extern void ABISELECT(_ZThn24_N8S20592C4D1Ev,_ZThn16_N8S20592C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C4D0Ev,_ZTv0_n12_N8S20592C4D0Ev)();
extern void ABISELECT(_ZThn24_N8S20592C4D0Ev,_ZThn16_N8S20592C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C5__8S20592C48S20592C3__8S20592C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(32,20),
  ABISELECT(-24,-16),
  ABISELECT(16,8),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20592C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C4D1Ev,_ZTv0_n12_N8S20592C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C4D0Ev,_ZTv0_n12_N8S20592C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C4D1Ev,_ZTv0_n12_N8S20592C4D1Ev)();
extern void ABISELECT(_ZThn40_N8S20592C4D1Ev,_ZThn24_N8S20592C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C4D0Ev,_ZTv0_n12_N8S20592C4D0Ev)();
extern void ABISELECT(_ZThn40_N8S20592C4D0Ev,_ZThn24_N8S20592C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__8S20592C48S20592C3__8S20592C1[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20592C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C4D1Ev,_ZTv0_n12_N8S20592C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C4D0Ev,_ZTv0_n12_N8S20592C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C3D1Ev,_ZTv0_n12_N8S20592C3D1Ev)();
extern void ABISELECT(_ZThn24_N8S20592C3D1Ev,_ZThn16_N8S20592C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C3D0Ev,_ZTv0_n12_N8S20592C3D0Ev)();
extern void ABISELECT(_ZThn24_N8S20592C3D0Ev,_ZThn16_N8S20592C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C5__8S20592C3__8S20592C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(32,20),
  ABISELECT(-24,-16),
  ABISELECT(16,8),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20592C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C3D1Ev,_ZTv0_n12_N8S20592C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C3D0Ev,_ZTv0_n12_N8S20592C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C3D1Ev,_ZTv0_n12_N8S20592C3D1Ev)();
extern void ABISELECT(_ZThn40_N8S20592C3D1Ev,_ZThn24_N8S20592C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C3D0Ev,_ZTv0_n12_N8S20592C3D0Ev)();
extern void ABISELECT(_ZThn40_N8S20592C3D0Ev,_ZThn24_N8S20592C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__8S20592C3__8S20592C1[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20592C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C3D1Ev,_ZTv0_n12_N8S20592C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C3D0Ev,_ZTv0_n12_N8S20592C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev)();
extern void _ZN8S20592C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev)();
extern void _ZN8S20592C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C5__8S20592C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(32,20),
  ABISELECT(-24,-16),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20592C6__8S20592C5__8S20592C1[] = {
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S20592C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S20592C5D1Ev,_ZThn8_N8S20592C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev)();
extern void ABISELECT(_ZThn16_N8S20592C5D0Ev,_ZThn8_N8S20592C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__8S20592C5__8S20592C1[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20592C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev)();
extern void _ZN8S20592C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev)();
extern void _ZN8S20592C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C6__8S20592C1[] = {
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S20592C6D1Ev,_ZThn24_N8S20592C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S20592C6D0Ev,_ZThn24_N8S20592C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__8S20592C6__8S20592C1[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20592C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev)();
extern void _ZN8S20592C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev)();
extern void _ZN8S20592C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__8S20592C1[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev)();
extern void _ZN8S20592C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev)();
extern void _ZN8S20592C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C88S20592C7__8S20592C1[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20592C88S20592C7__8S20592C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S20592C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20592C7__8S20592C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S20592C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20592C12D1Ev,_ZTv0_n12_N9S20592C12D1Ev)();
extern void _ZN9S20592C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20592C12D0Ev,_ZTv0_n12_N9S20592C12D0Ev)();
extern void _ZN9S20592C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20592C12__8S20592C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-8,-4),
  ABISELECT(-64,-40),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20592C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C12D1Ev,_ZTv0_n12_N9S20592C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C12D0Ev,_ZTv0_n12_N9S20592C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20592C12D1Ev,_ZTv0_n12_N9S20592C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20592C12D0Ev,_ZTv0_n12_N9S20592C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20592C6__9S20592C12__8S20592C1[] = {
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  ABISELECT(64,40),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI9S20592C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C12D1Ev,_ZTv0_n12_N9S20592C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C12D0Ev,_ZTv0_n12_N9S20592C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20592C12D1Ev,_ZTv0_n12_N9S20592C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20592C12D0Ev,_ZTv0_n12_N9S20592C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20592C7__9S20592C12__8S20592C1[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20592C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C12D1Ev,_ZTv0_n12_N9S20592C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C12D0Ev,_ZTv0_n12_N9S20592C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20592C14D1Ev,_ZTv0_n12_N9S20592C14D1Ev)();
extern void _ZN9S20592C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20592C14D0Ev,_ZTv0_n12_N9S20592C14D0Ev)();
extern void _ZN9S20592C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20592C14__8S20592C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-80,-48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20592C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C14D1Ev,_ZTv0_n12_N9S20592C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C14D0Ev,_ZTv0_n12_N9S20592C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev)();
extern void _ZN8S20592C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev)();
extern void _ZN8S20592C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C79S20592C14__A1__8S20592C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-80,-48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev)();
extern void _ZN8S20592C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev)();
extern void _ZN8S20592C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C88S20592C79S20592C14__A1__8S20592C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-80,-48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20592C88S20592C79S20592C14__A1__8S20592C1[] = {
  ABISELECT(80,48),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S20592C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20592C79S20592C14__A1__8S20592C1[] = {
  ABISELECT(80,48),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S20592C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20592C14D1Ev,_ZTv0_n12_N9S20592C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20592C14D0Ev,_ZTv0_n12_N9S20592C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20592C14__8S20592C1[] = {
  ABISELECT(80,48),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI9S20592C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C14D1Ev,_ZTv0_n12_N9S20592C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C14D0Ev,_ZTv0_n12_N9S20592C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20592C15D1Ev,_ZTv0_n12_N9S20592C15D1Ev)();
extern void _ZN9S20592C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20592C15D0Ev,_ZTv0_n12_N9S20592C15D0Ev)();
extern void _ZN9S20592C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20592C15__8S20592C1[] = {
  0,
  ABISELECT(88,56),
  ABISELECT(72,44),
  ABISELECT(32,20),
  ABISELECT(128,80),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20592C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C15D1Ev,_ZTv0_n12_N9S20592C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C15D0Ev,_ZTv0_n12_N9S20592C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20592C15D1Ev,_ZTv0_n12_N9S20592C15D1Ev)();
extern void ABISELECT(_ZThn128_N9S20592C15D1Ev,_ZThn80_N9S20592C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20592C15D0Ev,_ZTv0_n12_N9S20592C15D0Ev)();
extern void ABISELECT(_ZThn128_N9S20592C15D0Ev,_ZThn80_N9S20592C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20592C16__9S20592C15__8S20592C1[] = {
  ABISELECT(-128,-80),
  ABISELECT(-40,-24),
  ABISELECT(-96,-60),
  ABISELECT(-56,-36),
  ABISELECT(-128,-80),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI9S20592C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C15D1Ev,_ZTv0_n12_N9S20592C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C15D0Ev,_ZTv0_n12_N9S20592C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20592C15D1Ev,_ZTv0_n12_N9S20592C15D1Ev)();
extern void ABISELECT(_ZThn32_N9S20592C15D1Ev,_ZThn20_N9S20592C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20592C15D0Ev,_ZTv0_n12_N9S20592C15D0Ev)();
extern void ABISELECT(_ZThn32_N9S20592C15D0Ev,_ZThn20_N9S20592C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20592C15__8S20592C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20592C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C15D1Ev,_ZTv0_n12_N9S20592C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C15D0Ev,_ZTv0_n12_N9S20592C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20592C15D1Ev,_ZTv0_n12_N9S20592C15D1Ev)();
extern void ABISELECT(_ZThn72_N9S20592C15D1Ev,_ZThn44_N9S20592C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20592C15D0Ev,_ZTv0_n12_N9S20592C15D0Ev)();
extern void ABISELECT(_ZThn72_N9S20592C15D0Ev,_ZThn44_N9S20592C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C7__9S20592C15__8S20592C1[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S20592C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C15D1Ev,_ZTv0_n12_N9S20592C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C15D0Ev,_ZTv0_n12_N9S20592C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20592C15D1Ev,_ZTv0_n12_N9S20592C15D1Ev)();
extern void ABISELECT(_ZThn144_N9S20592C15D1Ev,_ZThn88_N9S20592C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20592C15D0Ev,_ZTv0_n12_N9S20592C15D0Ev)();
extern void ABISELECT(_ZThn144_N9S20592C15D0Ev,_ZThn88_N9S20592C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C89S20592C16__A1__9S20592C15__8S20592C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-112,-68),
  ABISELECT(-144,-88),
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI9S20592C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C15D1Ev,_ZTv0_n12_N9S20592C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C15D0Ev,_ZTv0_n12_N9S20592C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20592C16D1Ev,_ZTv0_n12_N9S20592C16D1Ev)();
extern void _ZN9S20592C16D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20592C16D0Ev,_ZTv0_n12_N9S20592C16D0Ev)();
extern void _ZN9S20592C16D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20592C16__8S20592C1[] = {
  ABISELECT(-128,-80),
  ABISELECT(-40,-24),
  ABISELECT(-96,-60),
  ABISELECT(-56,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20592C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C16D1Ev,_ZTv0_n12_N9S20592C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C16D0Ev,_ZTv0_n12_N9S20592C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev)();
extern void _ZN8S20592C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev)();
extern void _ZN8S20592C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C69S20592C16__A1__8S20592C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-96,-60),
  ABISELECT(-56,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20592C7__8S20592C69S20592C16__A1__8S20592C1[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(56,36),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI8S20592C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20592C69S20592C16__A1__8S20592C1[] = {
  ABISELECT(96,60),
  ABISELECT(96,60),
  (VTBL_ENTRY)&(_ZTI8S20592C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev)();
extern void _ZN8S20592C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev)();
extern void _ZN8S20592C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C89S20592C16__A2__8S20592C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-112,-68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20592C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S20592C89S20592C16__A2__8S20592C1[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI8S20592C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20592C16D1Ev,_ZTv0_n12_N9S20592C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20592C16D0Ev,_ZTv0_n12_N9S20592C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S20592C16__8S20592C1[] = {
  ABISELECT(96,60),
  ABISELECT(96,60),
  (VTBL_ENTRY)&(_ZTI9S20592C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C16D1Ev,_ZTv0_n12_N9S20592C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C16D0Ev,_ZTv0_n12_N9S20592C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20592C16D1Ev,_ZTv0_n12_N9S20592C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20592C16D0Ev,_ZTv0_n12_N9S20592C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20592C7__9S20592C16__8S20592C1[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(56,36),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI9S20592C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C16D1Ev,_ZTv0_n12_N9S20592C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C16D0Ev,_ZTv0_n12_N9S20592C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20592C16D1Ev,_ZTv0_n12_N9S20592C16D1Ev)();
extern void ABISELECT(_ZThn16_N9S20592C16D1Ev,_ZThn8_N9S20592C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20592C16D0Ev,_ZTv0_n12_N9S20592C16D0Ev)();
extern void ABISELECT(_ZThn16_N9S20592C16D0Ev,_ZThn8_N9S20592C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20592C8__A1__9S20592C16__8S20592C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-112,-68),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20592C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C16D1Ev,_ZTv0_n12_N9S20592C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20592C16D0Ev,_ZTv0_n12_N9S20592C16D0Ev),
};
static  VTT_ENTRY vtt_S20592C1[] = {
  {&(_ZTV8S20592C1[15]),  15,87},
  {&(_ZTV8S20592C1[27]),  27,87},
  {&(_ZTV8S20592C1[37]),  37,87},
  {&(_ZTV8S20592C1[46]),  46,87},
  {&(_ZTV8S20592C1[37]),  37,87},
  {&(_ZTV8S20592C1[53]),  53,87},
  {&(_ZTV8S20592C1[37]),  37,87},
  {&(_ZTV8S20592C1[62]),  62,87},
  {&(_ZTV8S20592C1[69]),  69,87},
  {&(_ZTV8S20592C1[15]),  15,87},
  {&(_ZTV8S20592C1[78]),  78,87},
  {&(_ZTV8S20592C1[85]),  85,87},
  {&(_tg__ZTV8S20592C2__8S20592C1[10]),  10,12},
  {&(_tg__ZTV9S20592C138S20592C2__8S20592C1[7]),  7,9},
  {&(_tg__ZTV8S20592C59S20592C138S20592C2__A1__8S20592C1[7]),  7,9},
  {&(_tg__ZTV8S20592C6__8S20592C59S20592C138S20592C2__A1__8S20592C1[6]),  6,8},
  {&(_tg__ZTV8S20592C7__8S20592C59S20592C138S20592C2__A1__8S20592C1[5]),  5,7},
  {&(_tg__ZTV8S20592C6__8S20592C59S20592C138S20592C2__A1__8S20592C1[6]),  6,8},
  {&(_tg__ZTV8S20592C6__9S20592C138S20592C2__8S20592C1[6]),  6,8},
  {&(_tg__ZTV8S20592C7__9S20592C138S20592C2__8S20592C1[5]),  5,7},
  {&(_tg__ZTV8S20592C6__9S20592C138S20592C2__8S20592C1[6]),  6,8},
  {&(_tg__ZTV8S20592C3__8S20592C2__8S20592C1[8]),  8,10},
  {&(_tg__ZTV8S20592C5__8S20592C2__8S20592C1[7]),  7,9},
  {&(_tg__ZTV8S20592C3__8S20592C2__8S20592C1[8]),  8,10},
  {&(_tg__ZTV8S20592C7__8S20592C2__8S20592C1[5]),  5,7},
  {&(_tg__ZTV8S20592C3__8S20592C2__8S20592C1[8]),  8,10},
  {&(_tg__ZTV9S20592C12__8S20592C2__8S20592C1[7]),  7,9},
  {&(_tg__ZTV8S20592C3__8S20592C1[8]),  8,10},
  {&(_tg__ZTV8S20592C48S20592C3__8S20592C1[8]),  8,10},
  {&(_tg__ZTV8S20592C5__8S20592C48S20592C3__8S20592C1[7]),  7,9},
  {&(_tg__ZTV8S20592C48S20592C3__8S20592C1[8]),  8,10},
  {&(_tg__ZTV8S20592C7__8S20592C48S20592C3__8S20592C1[5]),  5,7},
  {&(_tg__ZTV8S20592C48S20592C3__8S20592C1[8]),  8,10},
  {&(_tg__ZTV8S20592C5__8S20592C3__8S20592C1[7]),  7,9},
  {&(_tg__ZTV8S20592C3__8S20592C1[8]),  8,10},
  {&(_tg__ZTV8S20592C7__8S20592C3__8S20592C1[5]),  5,7},
  {&(_tg__ZTV8S20592C3__8S20592C1[8]),  8,10},
  {&(_tg__ZTV8S20592C5__8S20592C1[7]),  7,9},
  {&(_tg__ZTV8S20592C6__8S20592C5__8S20592C1[6]),  6,8},
  {&(_tg__ZTV8S20592C7__8S20592C5__8S20592C1[5]),  5,7},
  {&(_tg__ZTV8S20592C6__8S20592C5__8S20592C1[6]),  6,8},
  {&(_tg__ZTV8S20592C6__8S20592C1[6]),  6,8},
  {&(_tg__ZTV8S20592C7__8S20592C6__8S20592C1[5]),  5,7},
  {&(_tg__ZTV8S20592C6__8S20592C1[6]),  6,8},
  {&(_tg__ZTV8S20592C7__8S20592C1[5]),  5,7},
  {&(_tg__ZTV8S20592C88S20592C7__8S20592C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20592C88S20592C7__8S20592C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20592C7__8S20592C1[3]),  3,5},
  {&(_tg__ZTV9S20592C12__8S20592C1[7]),  7,9},
  {&(_tg__ZTV8S20592C6__9S20592C12__8S20592C1[6]),  6,8},
  {&(_tg__ZTV8S20592C7__9S20592C12__8S20592C1[5]),  5,7},
  {&(_tg__ZTV8S20592C6__9S20592C12__8S20592C1[6]),  6,8},
  {&(_tg__ZTV9S20592C14__8S20592C1[5]),  5,7},
  {&(_tg__ZTV8S20592C79S20592C14__A1__8S20592C1[5]),  5,7},
  {&(_tg__ZTV8S20592C88S20592C79S20592C14__A1__8S20592C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20592C88S20592C79S20592C14__A1__8S20592C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S20592C79S20592C14__A1__8S20592C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20592C14__8S20592C1[3]),  3,5},
  {&(_tg__ZTV9S20592C15__8S20592C1[8]),  8,10},
  {&(_tg__ZTV9S20592C16__9S20592C15__8S20592C1[7]),  7,9},
  {&(_tg__ZTV10S7883C3_nt__9S20592C15__8S20592C1[3]),  3,5},
  {&(_tg__ZTV8S20592C7__9S20592C15__8S20592C1[5]),  5,7},
  {&(_tg__ZTV8S20592C89S20592C16__A1__9S20592C15__8S20592C1[5]),  5,7},
  {&(_tg__ZTV9S20592C16__8S20592C1[7]),  7,9},
  {&(_tg__ZTV8S20592C69S20592C16__A1__8S20592C1[6]),  6,8},
  {&(_tg__ZTV8S20592C7__8S20592C69S20592C16__A1__8S20592C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20592C69S20592C16__A1__8S20592C1[3]),  3,5},
  {&(_tg__ZTV8S20592C89S20592C16__A2__8S20592C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S20592C89S20592C16__A2__8S20592C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S20592C16__8S20592C1[3]),  3,5},
  {&(_tg__ZTV8S20592C7__9S20592C16__8S20592C1[5]),  5,7},
  {&(_tg__ZTV8S20592C8__A1__9S20592C16__8S20592C1[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S20592C1[];
extern  VTBL_ENTRY _ZTV8S20592C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20592C1[];
static VTBL_ENTRY alt_thunk_names129[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20592C16D0Ev,_ZTv0_n12_N9S20592C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20592C16D0Ev,_ZThn8_N9S20592C16D0Ev),
  (VTBL_ENTRY)_ZN9S20592C16D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20592C16D1Ev,_ZTv0_n12_N9S20592C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20592C16D1Ev,_ZThn8_N9S20592C16D1Ev),
  (VTBL_ENTRY)_ZN9S20592C16D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20592C15D0Ev,_ZTv0_n12_N9S20592C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S20592C15D0Ev,_ZThn88_N9S20592C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20592C15D0Ev,_ZThn44_N9S20592C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20592C15D0Ev,_ZThn20_N9S20592C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20592C15D0Ev,_ZThn80_N9S20592C15D0Ev),
  (VTBL_ENTRY)_ZN9S20592C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20592C15D1Ev,_ZTv0_n12_N9S20592C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S20592C15D1Ev,_ZThn88_N9S20592C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20592C15D1Ev,_ZThn44_N9S20592C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20592C15D1Ev,_ZThn20_N9S20592C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20592C15D1Ev,_ZThn80_N9S20592C15D1Ev),
  (VTBL_ENTRY)_ZN9S20592C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20592C14D0Ev,_ZTv0_n12_N9S20592C14D0Ev), // 
  (VTBL_ENTRY)_ZN9S20592C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20592C14D1Ev,_ZTv0_n12_N9S20592C14D1Ev), // 
  (VTBL_ENTRY)_ZN9S20592C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20592C12D0Ev,_ZTv0_n12_N9S20592C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S20592C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20592C12D1Ev,_ZTv0_n12_N9S20592C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S20592C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C8D0Ev,_ZTv0_n12_N8S20592C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20592C8D0Ev,
  (VTBL_ENTRY)_ZN8S20592C8D0Ev,
  (VTBL_ENTRY)_ZN8S20592C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C8D1Ev,_ZTv0_n12_N8S20592C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20592C8D1Ev,
  (VTBL_ENTRY)_ZN8S20592C8D1Ev,
  (VTBL_ENTRY)_ZN8S20592C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C7D0Ev,_ZTv0_n12_N8S20592C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S20592C7D0Ev,
  (VTBL_ENTRY)_ZN8S20592C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C7D1Ev,_ZTv0_n12_N8S20592C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S20592C7D1Ev,
  (VTBL_ENTRY)_ZN8S20592C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C6D0Ev,_ZTv0_n12_N8S20592C6D0Ev), // 
  (VTBL_ENTRY)_ZN8S20592C6D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20592C6D0Ev,_ZThn24_N8S20592C6D0Ev),
  (VTBL_ENTRY)_ZN8S20592C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C6D1Ev,_ZTv0_n12_N8S20592C6D1Ev), // 
  (VTBL_ENTRY)_ZN8S20592C6D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20592C6D1Ev,_ZThn24_N8S20592C6D1Ev),
  (VTBL_ENTRY)_ZN8S20592C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C4D0Ev,_ZTv0_n12_N8S20592C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20592C4D0Ev,_ZThn24_N8S20592C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20592C4D0Ev,_ZThn16_N8S20592C4D0Ev),
  (VTBL_ENTRY)_ZN8S20592C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C4D1Ev,_ZTv0_n12_N8S20592C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20592C4D1Ev,_ZThn24_N8S20592C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20592C4D1Ev,_ZThn16_N8S20592C4D1Ev),
  (VTBL_ENTRY)_ZN8S20592C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C3D0Ev,_ZTv0_n12_N8S20592C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20592C3D0Ev,_ZThn24_N8S20592C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20592C3D0Ev,_ZThn16_N8S20592C3D0Ev),
  (VTBL_ENTRY)_ZN8S20592C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C3D1Ev,_ZTv0_n12_N8S20592C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20592C3D1Ev,_ZThn24_N8S20592C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20592C3D1Ev,_ZThn16_N8S20592C3D1Ev),
  (VTBL_ENTRY)_ZN8S20592C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C5D0Ev,_ZTv0_n12_N8S20592C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20592C5D0Ev,_ZThn8_N8S20592C5D0Ev),
  (VTBL_ENTRY)_ZN8S20592C5D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20592C5D0Ev,_ZThn40_N8S20592C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20592C5D0Ev,_ZThn16_N8S20592C5D0Ev),
  (VTBL_ENTRY)_ZN8S20592C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C5D1Ev,_ZTv0_n12_N8S20592C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20592C5D1Ev,_ZThn8_N8S20592C5D1Ev),
  (VTBL_ENTRY)_ZN8S20592C5D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20592C5D1Ev,_ZThn40_N8S20592C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20592C5D1Ev,_ZThn16_N8S20592C5D1Ev),
  (VTBL_ENTRY)_ZN8S20592C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20592C13D0Ev,_ZTv0_n12_N9S20592C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20592C13D0Ev,_ZThn40_N9S20592C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20592C13D0Ev,_ZThn16_N9S20592C13D0Ev),
  (VTBL_ENTRY)_ZN9S20592C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20592C13D1Ev,_ZTv0_n12_N9S20592C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20592C13D1Ev,_ZThn40_N9S20592C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20592C13D1Ev,_ZThn16_N9S20592C13D1Ev),
  (VTBL_ENTRY)_ZN9S20592C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C2D0Ev,_ZTv0_n12_N8S20592C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20592C2D0Ev,_ZThn56_N8S20592C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20592C2D0Ev,_ZThn40_N8S20592C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20592C2D0Ev,_ZThn32_N8S20592C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20592C2D0Ev,_ZThn16_N8S20592C2D0Ev),
  (VTBL_ENTRY)_ZN8S20592C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C2D1Ev,_ZTv0_n12_N8S20592C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20592C2D1Ev,_ZThn56_N8S20592C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20592C2D1Ev,_ZThn40_N8S20592C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20592C2D1Ev,_ZThn32_N8S20592C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20592C2D1Ev,_ZThn16_N8S20592C2D1Ev),
  (VTBL_ENTRY)_ZN8S20592C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C1D0Ev,_ZTv0_n12_N8S20592C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20592C1D0Ev,_ZThn88_N8S20592C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20592C1D0Ev,_ZThn80_N8S20592C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20592C1D0Ev,_ZThn68_N8S20592C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20592C1D0Ev,_ZThn60_N8S20592C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20592C1D0Ev,_ZThn44_N8S20592C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20592C1D0Ev,_ZThn36_N8S20592C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20592C1D0Ev,_ZThn20_N8S20592C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20592C1D0Ev,_ZThn4_N8S20592C1D0Ev),
  (VTBL_ENTRY)_ZN8S20592C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20592C1D1Ev,_ZTv0_n12_N8S20592C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20592C1D1Ev,_ZThn88_N8S20592C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20592C1D1Ev,_ZThn80_N8S20592C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20592C1D1Ev,_ZThn68_N8S20592C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20592C1D1Ev,_ZThn60_N8S20592C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20592C1D1Ev,_ZThn44_N8S20592C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20592C1D1Ev,_ZThn36_N8S20592C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20592C1D1Ev,_ZThn20_N8S20592C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20592C1D1Ev,_ZThn4_N8S20592C1D1Ev),
  (VTBL_ENTRY)_ZN8S20592C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20592C1 = {  "S20592C1", // class name
  bases_S20592C1, 27,
  &(vtc_S20592C1[0]), // expected_vtbl_contents
  &(vtt_S20592C1[0]), // expected_vtt_contents
  ABISELECT(160,96), // object size
  NSPAIRA(_ZTI8S20592C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20592C1),87, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20592C1),72, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names129,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5241C3  {
  ::S16701C3 s5241c3f0;
  virtual  ~S5241C3(); // _ZN7S5241C3D1Ev
  virtual void  v5(); // _ZN7S5241C32v5Ev
  virtual void  v6(); // _ZN7S5241C32v6Ev
  virtual void  v7(); // _ZN7S5241C32v7Ev
  virtual void  v8(); // _ZN7S5241C32v8Ev
  virtual void  v9(); // _ZN7S5241C32v9Ev
  S5241C3(); // tgen
};
//SIG(-1 S5241C3) C1{ vd v1 v2 v3 v4 v5 FC2{ m FC3{ m Fp}}}


 S5241C3 ::~S5241C3(){ note_dtor("S5241C3", this);}
void  S5241C3 ::v5(){vfunc_called(this, "_ZN7S5241C32v5Ev");}
void  S5241C3 ::v6(){vfunc_called(this, "_ZN7S5241C32v6Ev");}
void  S5241C3 ::v7(){vfunc_called(this, "_ZN7S5241C32v7Ev");}
void  S5241C3 ::v8(){vfunc_called(this, "_ZN7S5241C32v8Ev");}
void  S5241C3 ::v9(){vfunc_called(this, "_ZN7S5241C32v9Ev");}
S5241C3 ::S5241C3(){ note_ctor("S5241C3", this);} // tgen

static void Test_S5241C3()
{
  extern Class_Descriptor cd_S5241C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S5241C3, buf);
    S5241C3 *dp, &lv = *(dp=new (buf) S5241C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S5241C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5241C3)");
    check_field_offset(lv, s5241c3f0, ABISELECT(8,4), "S5241C3.s5241c3f0");
    test_class_info(&lv, &cd_S5241C3);
    dp->~S5241C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5241C3(Test_S5241C3, "S5241C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S5241C3C1Ev();
extern void _ZN7S5241C3D1Ev();
Name_Map name_map_S5241C3[] = {
  NSPAIR(_ZN7S5241C3C1Ev),
  NSPAIR(_ZN7S5241C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5241C3[];
extern void _ZN7S5241C3D1Ev();
extern void _ZN7S5241C3D0Ev();
extern void _ZN7S5241C32v5Ev();
extern void _ZN7S5241C32v6Ev();
extern void _ZN7S5241C32v7Ev();
extern void _ZN7S5241C32v8Ev();
extern void _ZN7S5241C32v9Ev();
static  VTBL_ENTRY vtc_S5241C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5241C3[0]),
  (VTBL_ENTRY)&_ZN7S5241C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5241C3D0Ev,
  (VTBL_ENTRY)&_ZN7S5241C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5241C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5241C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5241C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5241C32v9Ev,
};
extern VTBL_ENTRY _ZTI7S5241C3[];
extern  VTBL_ENTRY _ZTV7S5241C3[];
Class_Descriptor cd_S5241C3 = {  "S5241C3", // class name
  0,0,//no base classes
  &(vtc_S5241C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S5241C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5241C3),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5241C2  : S5241C3 {
  void *s5241c2f0[2];
  virtual  ~S5241C2(); // _ZN7S5241C2D1Ev
  virtual void  v10(); // _ZN7S5241C23v10Ev
  S5241C2(); // tgen
};
//SIG(-1 S5241C2) C1{ BC2{ vd v2 v3 v4 v5 v6 FC3{ m FC4{ m Fp}}} vd v1 Fp[2]}


 S5241C2 ::~S5241C2(){ note_dtor("S5241C2", this);}
void  S5241C2 ::v10(){vfunc_called(this, "_ZN7S5241C23v10Ev");}
S5241C2 ::S5241C2(){ note_ctor("S5241C2", this);} // tgen

static void Test_S5241C2()
{
  extern Class_Descriptor cd_S5241C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S5241C2, buf);
    S5241C2 *dp, &lv = *(dp=new (buf) S5241C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S5241C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5241C2)");
    check_base_class_offset(lv, (S5241C3*), 0, "S5241C2");
    check_field_offset(lv, s5241c2f0, ABISELECT(16,8), "S5241C2.s5241c2f0");
    test_class_info(&lv, &cd_S5241C2);
    dp->~S5241C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5241C2(Test_S5241C2, "S5241C2", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S5241C2C1Ev();
extern void _ZN7S5241C2D1Ev();
Name_Map name_map_S5241C2[] = {
  NSPAIR(_ZN7S5241C2C1Ev),
  NSPAIR(_ZN7S5241C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5241C3;
extern VTBL_ENTRY _ZTI7S5241C3[];
extern  VTBL_ENTRY _ZTV7S5241C3[];
static Base_Class bases_S5241C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5241C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5241C2[];
extern void _ZN7S5241C2D1Ev();
extern void _ZN7S5241C2D0Ev();
extern void _ZN7S5241C32v5Ev();
extern void _ZN7S5241C32v6Ev();
extern void _ZN7S5241C32v7Ev();
extern void _ZN7S5241C32v8Ev();
extern void _ZN7S5241C32v9Ev();
extern void _ZN7S5241C23v10Ev();
static  VTBL_ENTRY vtc_S5241C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5241C2[0]),
  (VTBL_ENTRY)&_ZN7S5241C2D1Ev,
  (VTBL_ENTRY)&_ZN7S5241C2D0Ev,
  (VTBL_ENTRY)&_ZN7S5241C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5241C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5241C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5241C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5241C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5241C23v10Ev,
};
extern VTBL_ENTRY _ZTI7S5241C2[];
extern  VTBL_ENTRY _ZTV7S5241C2[];
Class_Descriptor cd_S5241C2 = {  "S5241C2", // class name
  bases_S5241C2, 1,
  &(vtc_S5241C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S5241C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5241C2),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  S5241C6  {
  virtual  ~S5241C6(); // _ZN7S5241C6D1Ev
  virtual void  v11(); // _ZN7S5241C63v11Ev
  virtual void  v12(); // _ZN7S5241C63v12Ev
  S5241C6(); // tgen
};
//SIG(-1 S5241C6) C1{ vd v1 v2}


 S5241C6 ::~S5241C6(){ note_dtor("S5241C6", this);}
void  S5241C6 ::v11(){vfunc_called(this, "_ZN7S5241C63v11Ev");}
void  S5241C6 ::v12(){vfunc_called(this, "_ZN7S5241C63v12Ev");}
S5241C6 ::S5241C6(){ note_ctor("S5241C6", this);} // tgen

static void Test_S5241C6()
{
  extern Class_Descriptor cd_S5241C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S5241C6, buf);
    S5241C6 *dp, &lv = *(dp=new (buf) S5241C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S5241C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5241C6)");
    test_class_info(&lv, &cd_S5241C6);
    dp->~S5241C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5241C6(Test_S5241C6, "S5241C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S5241C6C1Ev();
extern void _ZN7S5241C6D1Ev();
Name_Map name_map_S5241C6[] = {
  NSPAIR(_ZN7S5241C6C1Ev),
  NSPAIR(_ZN7S5241C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5241C6[];
extern void _ZN7S5241C6D1Ev();
extern void _ZN7S5241C6D0Ev();
extern void _ZN7S5241C63v11Ev();
extern void _ZN7S5241C63v12Ev();
static  VTBL_ENTRY vtc_S5241C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5241C6[0]),
  (VTBL_ENTRY)&_ZN7S5241C6D1Ev,
  (VTBL_ENTRY)&_ZN7S5241C6D0Ev,
  (VTBL_ENTRY)&_ZN7S5241C63v11Ev,
  (VTBL_ENTRY)&_ZN7S5241C63v12Ev,
};
extern VTBL_ENTRY _ZTI7S5241C6[];
extern  VTBL_ENTRY _ZTV7S5241C6[];
Class_Descriptor cd_S5241C6 = {  "S5241C6", // class name
  0,0,//no base classes
  &(vtc_S5241C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S5241C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5241C6),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  S5241C10  {
  ::S16701C4_nt s5241c10f0;
  ::S1021C13_nt s5241c10f1;
  void  mf5241c10(); // _ZN8S5241C109mf5241c10Ev
};
//SIG(-1 S5241C10) C1{ m FC2{ m Fp} FC3{ m Fp}}


void  S5241C10 ::mf5241c10(){}

static void Test_S5241C10()
{
  {
    init_simple_test("S5241C10");
    S5241C10 lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S5241C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5241C10)");
    check_field_offset(lv, s5241c10f0, 0, "S5241C10.s5241c10f0");
    check_field_offset(lv, s5241c10f1, ABISELECT(8,4), "S5241C10.s5241c10f1");
  }
}
static Arrange_To_Call_Me vS5241C10(Test_S5241C10, "S5241C10", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5241C1  : S5241C2 , S5241C6 {
  void *s5241c1f0[3];
  ::S133C15_nt s5241c1f1;
  ::S5241C10 s5241c1f2;
  ::S133C12 s5241c1f3;
  char s5241c1f4;
  virtual  ~S5241C1(); // _ZN7S5241C1D1Ev
  virtual void  v1(); // _ZN7S5241C12v1Ev
  virtual void  v2(); // _ZN7S5241C12v2Ev
  virtual void  v3(); // _ZN7S5241C12v3Ev
  virtual void  v4(); // _ZN7S5241C12v4Ev
  S5241C1(); // tgen
};
//SIG(1 S5241C1) C1{ BC2{ BC3{ vd v5 v6 v7 v8 v9 FC4{ m FC5{ m Fp}}} vd v10 Fp[2]} BC6{ vd v11 v12} vd v1 v2 v3 v4 Fp[3] FC7{ m Fi FC8{ BC9{ m Fp Fi}}} FC10{ m FC5 FC11{ m Fp}} FC12{ m FC13{ m Fp Fi[4]}} Fc}


 S5241C1 ::~S5241C1(){ note_dtor("S5241C1", this);}
void  S5241C1 ::v1(){vfunc_called(this, "_ZN7S5241C12v1Ev");}
void  S5241C1 ::v2(){vfunc_called(this, "_ZN7S5241C12v2Ev");}
void  S5241C1 ::v3(){vfunc_called(this, "_ZN7S5241C12v3Ev");}
void  S5241C1 ::v4(){vfunc_called(this, "_ZN7S5241C12v4Ev");}
S5241C1 ::S5241C1(){ note_ctor("S5241C1", this);} // tgen

static void Test_S5241C1()
{
  extern Class_Descriptor cd_S5241C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,20)];
    init_test(&cd_S5241C1, buf);
    S5241C1 *dp, &lv = *(dp=new (buf) S5241C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,76), "sizeof(S5241C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5241C1)");
    check_base_class_offset(lv, (S5241C3*)(S5241C2*), 0, "S5241C1");
    check_base_class_offset(lv, (S5241C2*), 0, "S5241C1");
    check_base_class_offset(lv, (S5241C6*), ABISELECT(32,16), "S5241C1");
    check_field_offset(lv, s5241c1f0, ABISELECT(40,20), "S5241C1.s5241c1f0");
    check_field_offset(lv, s5241c1f1, ABISELECT(64,32), "S5241C1.s5241c1f1");
    check_field_offset(lv, s5241c1f2, ABISELECT(88,44), "S5241C1.s5241c1f2");
    check_field_offset(lv, s5241c1f3, ABISELECT(104,52), "S5241C1.s5241c1f3");
    check_field_offset(lv, s5241c1f4, ABISELECT(128,72), "S5241C1.s5241c1f4");
    test_class_info(&lv, &cd_S5241C1);
    dp->~S5241C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5241C1(Test_S5241C1, "S5241C1", ABISELECT(136,76));

#else // __cplusplus

extern void _ZN7S5241C1C1Ev();
extern void _ZN7S5241C1D1Ev();
Name_Map name_map_S5241C1[] = {
  NSPAIR(_ZN7S5241C1C1Ev),
  NSPAIR(_ZN7S5241C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5241C3;
extern VTBL_ENTRY _ZTI7S5241C3[];
extern  VTBL_ENTRY _ZTV7S5241C3[];
extern Class_Descriptor cd_S5241C2;
extern VTBL_ENTRY _ZTI7S5241C2[];
extern  VTBL_ENTRY _ZTV7S5241C2[];
extern Class_Descriptor cd_S5241C6;
extern VTBL_ENTRY _ZTI7S5241C6[];
extern  VTBL_ENTRY _ZTV7S5241C6[];
static Base_Class bases_S5241C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5241C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5241C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S5241C6,    ABISELECT(32,16), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5241C1[];
extern void _ZN7S5241C1D1Ev();
extern void _ZN7S5241C1D0Ev();
extern void _ZN7S5241C32v5Ev();
extern void _ZN7S5241C32v6Ev();
extern void _ZN7S5241C32v7Ev();
extern void _ZN7S5241C32v8Ev();
extern void _ZN7S5241C32v9Ev();
extern void _ZN7S5241C23v10Ev();
extern void _ZN7S5241C12v1Ev();
extern void _ZN7S5241C12v2Ev();
extern void _ZN7S5241C12v3Ev();
extern void _ZN7S5241C12v4Ev();
extern void ABISELECT(_ZThn32_N7S5241C1D1Ev,_ZThn16_N7S5241C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S5241C1D0Ev,_ZThn16_N7S5241C1D0Ev)();
extern void _ZN7S5241C63v11Ev();
extern void _ZN7S5241C63v12Ev();
static  VTBL_ENTRY vtc_S5241C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5241C1[0]),
  (VTBL_ENTRY)&_ZN7S5241C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5241C1D0Ev,
  (VTBL_ENTRY)&_ZN7S5241C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5241C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5241C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5241C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5241C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5241C23v10Ev,
  (VTBL_ENTRY)&_ZN7S5241C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5241C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5241C12v3Ev,
  (VTBL_ENTRY)&_ZN7S5241C12v4Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S5241C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S5241C1D1Ev,_ZThn16_N7S5241C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S5241C1D0Ev,_ZThn16_N7S5241C1D0Ev),
  (VTBL_ENTRY)&_ZN7S5241C63v11Ev,
  (VTBL_ENTRY)&_ZN7S5241C63v12Ev,
};
extern VTBL_ENTRY _ZTI7S5241C1[];
extern  VTBL_ENTRY _ZTV7S5241C1[];
Class_Descriptor cd_S5241C1 = {  "S5241C1", // class name
  bases_S5241C1, 3,
  &(vtc_S5241C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,76), // object size
  NSPAIRA(_ZTI7S5241C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S5241C1),20, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19596C3  : virtual S7883C3_nt , virtual S3216C8_nt , S4677C37 {
  int s19596c3f0;
  ~S19596C3(); // tgen
  S19596C3(); // tgen
};
//SIG(-1 S19596C3) C1{ VBC2{ vd m} VBC3{ m Fi} BC4{ m} Fi}


S19596C3 ::~S19596C3(){ note_dtor("S19596C3", this);} // tgen
S19596C3 ::S19596C3(){ note_ctor("S19596C3", this);} // tgen

static void Test_S19596C3()
{
  extern Class_Descriptor cd_S19596C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S19596C3, buf);
    S19596C3 *dp, &lv = *(dp=new (buf) S19596C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S19596C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19596C3)");
    check_base_class_offset(lv, (S7883C3_nt*), 0, "S19596C3");
    check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(12,8), "S19596C3");
    check_base_class_offset(lv, (S4677C37*), 0, "S19596C3");
    check_field_offset(lv, s19596c3f0, ABISELECT(8,4), "S19596C3.s19596c3f0");
    test_class_info(&lv, &cd_S19596C3);
    dp->~S19596C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19596C3(Test_S19596C3, "S19596C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S19596C3C1Ev();
extern void _ZN8S19596C3D1Ev();
Name_Map name_map_S19596C3[] = {
  NSPAIR(_ZN8S19596C3C1Ev),
  NSPAIR(_ZN8S19596C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
static Base_Class bases_S19596C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19596C3[];
extern void _ZN8S19596C3D1Ev();
extern void _ZN8S19596C3D0Ev();
static  VTBL_ENTRY vtc_S19596C3[] = {
  ABISELECT(12,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C3[0]),
  (VTBL_ENTRY)&_ZN8S19596C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19596C3D0Ev,
};
extern VTBL_ENTRY _ZTV8S19596C3[];
static  VTT_ENTRY vtt_S19596C3[] = {
  {&(_ZTV8S19596C3[5]),  5,7},
  {&(_ZTV8S19596C3[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S19596C3[];
extern  VTBL_ENTRY _ZTV8S19596C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C3[];
Class_Descriptor cd_S19596C3 = {  "S19596C3", // class name
  bases_S19596C3, 3,
  &(vtc_S19596C3[0]), // expected_vtbl_contents
  &(vtt_S19596C3[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S19596C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19596C3),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19596C3),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  S19596C2  : S19596C3 {
  int s19596c2f0;
  ~S19596C2(); // tgen
  S19596C2(); // tgen
};
//SIG(-1 S19596C2) C1{ BC2{ VBC3{ vd m} VBC4{ m Fi} BC5{ m} Fi} Fi}


S19596C2 ::~S19596C2(){ note_dtor("S19596C2", this);} // tgen
S19596C2 ::S19596C2(){ note_ctor("S19596C2", this);} // tgen

static void Test_S19596C2()
{
  extern Class_Descriptor cd_S19596C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19596C2, buf);
    S19596C2 *dp, &lv = *(dp=new (buf) S19596C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19596C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19596C2)");
    check_base_class_offset(lv, (S7883C3_nt*)(S19596C3*), 0, "S19596C2");
    check_base_class_offset(lv, (S3216C8_nt*)(S19596C3*), ABISELECT(16,12), "S19596C2");
    check_base_class_offset(lv, (S4677C37*)(S19596C3*), 0, "S19596C2");
    check_base_class_offset(lv, (S19596C3*), 0, "S19596C2");
    check_field_offset(lv, s19596c2f0, ABISELECT(12,8), "S19596C2.s19596c2f0");
    test_class_info(&lv, &cd_S19596C2);
    dp->~S19596C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19596C2(Test_S19596C2, "S19596C2", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S19596C2C1Ev();
extern void _ZN8S19596C2D1Ev();
Name_Map name_map_S19596C2[] = {
  NSPAIR(_ZN8S19596C2C1Ev),
  NSPAIR(_ZN8S19596C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19596C3;
extern VTBL_ENTRY _ZTI8S19596C3[];
extern  VTBL_ENTRY _ZTV8S19596C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C3[];
static Base_Class bases_S19596C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19596C3,    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 _ZTI8S19596C2[];
extern void _ZN8S19596C2D1Ev();
extern void _ZN8S19596C2D0Ev();
static  VTBL_ENTRY vtc_S19596C2[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C2[0]),
  (VTBL_ENTRY)&_ZN8S19596C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19596C2D0Ev,
};
extern VTBL_ENTRY _ZTV8S19596C2[];
extern void _ZN8S19596C3D1Ev();
extern void _ZN8S19596C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19596C3__8S19596C2[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C3[0]),
  (VTBL_ENTRY)&_ZN8S19596C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19596C3D0Ev,
};
static  VTT_ENTRY vtt_S19596C2[] = {
  {&(_ZTV8S19596C2[5]),  5,7},
  {&(_tg__ZTV8S19596C3__8S19596C2[5]),  5,7},
  {&(_tg__ZTV8S19596C3__8S19596C2[5]),  5,7},
  {&(_ZTV8S19596C2[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S19596C2[];
extern  VTBL_ENTRY _ZTV8S19596C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C2[];
Class_Descriptor cd_S19596C2 = {  "S19596C2", // class name
  bases_S19596C2, 4,
  &(vtc_S19596C2[0]), // expected_vtbl_contents
  &(vtt_S19596C2[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S19596C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19596C2),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19596C2),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19596C9  : virtual S19596C2 , S4677C37 {
  ~S19596C9(); // tgen
  S19596C9(); // tgen
};
//SIG(-1 S19596C9) C1{ VBC2{ BC3{ VBC4{ vd m} VBC5{ m Fi} BC6{ m} Fi} Fi} BC6}


S19596C9 ::~S19596C9(){ note_dtor("S19596C9", this);} // tgen
S19596C9 ::S19596C9(){ note_ctor("S19596C9", this);} // tgen

static void Test_S19596C9()
{
  extern Class_Descriptor cd_S19596C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19596C9, buf);
    S19596C9 *dp, &lv = *(dp=new (buf) S19596C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19596C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19596C9)");
    check_base_class_offset(lv, (S7883C3_nt*)(S19596C3*)(S19596C2*), 0, "S19596C9");
    check_base_class_offset(lv, (S3216C8_nt*)(S19596C3*)(S19596C2*), ABISELECT(24,16), "S19596C9");
    check_base_class_offset(lv, (S4677C37*)(S19596C3*)(S19596C2*), ABISELECT(8,4), "S19596C9");
    check_base_class_offset(lv, (S19596C3*)(S19596C2*), ABISELECT(8,4), "S19596C9");
    check_base_class_offset(lv, (S19596C2*), ABISELECT(8,4), "S19596C9");
    /*is_ambiguous_... S19596C9::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*), 0, "S19596C9");
    test_class_info(&lv, &cd_S19596C9);
    dp->~S19596C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19596C9(Test_S19596C9, "S19596C9", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S19596C9C1Ev();
extern void _ZN8S19596C9D1Ev();
Name_Map name_map_S19596C9[] = {
  NSPAIR(_ZN8S19596C9C1Ev),
  NSPAIR(_ZN8S19596C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19596C3;
extern VTBL_ENTRY _ZTI8S19596C3[];
extern  VTBL_ENTRY _ZTV8S19596C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C3[];
extern Class_Descriptor cd_S19596C2;
extern VTBL_ENTRY _ZTI8S19596C2[];
extern  VTBL_ENTRY _ZTV8S19596C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C2[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
static Base_Class bases_S19596C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19596C3,    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
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19596C2,    ABISELECT(8,4), //bcp->offset
    8, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19596C9[];
extern void _ZN8S19596C9D1Ev();
extern void _ZN8S19596C9D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19596C9D1Ev,_ZTv0_n12_N8S19596C9D1Ev)();
extern void ABISELECT(_ZThn8_N8S19596C9D1Ev,_ZThn4_N8S19596C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C9D0Ev,_ZTv0_n12_N8S19596C9D0Ev)();
extern void ABISELECT(_ZThn8_N8S19596C9D0Ev,_ZThn4_N8S19596C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19596C9[] = {
  ABISELECT(24,16),
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C9[0]),
  (VTBL_ENTRY)&_ZN8S19596C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19596C9D0Ev,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19596C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C9D1Ev,_ZTv0_n12_N8S19596C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C9D0Ev,_ZTv0_n12_N8S19596C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19596C9[];
extern void ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev)();
extern void _ZN8S19596C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev)();
extern void _ZN8S19596C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C2__8S19596C9[] = {
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev)();
extern void _ZN8S19596C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev)();
extern void _ZN8S19596C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C38S19596C2__8S19596C9[] = {
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S19596C38S19596C2__8S19596C9[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19596C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S19596C2__8S19596C9[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19596C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev),
};
static  VTT_ENTRY vtt_S19596C9[] = {
  {&(_ZTV8S19596C9[6]),  6,15},
  {&(_ZTV8S19596C9[13]),  13,15},
  {&(_ZTV8S19596C9[6]),  6,15},
  {&(_tg__ZTV8S19596C2__8S19596C9[5]),  5,7},
  {&(_tg__ZTV8S19596C38S19596C2__8S19596C9[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S19596C38S19596C2__8S19596C9[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S19596C2__8S19596C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19596C9[];
extern  VTBL_ENTRY _ZTV8S19596C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C9[];
static VTBL_ENTRY alt_thunk_names130[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S19596C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S19596C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev), // 
  (VTBL_ENTRY)_ZN8S19596C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev), // 
  (VTBL_ENTRY)_ZN8S19596C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C9D0Ev,_ZTv0_n12_N8S19596C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19596C9D0Ev,_ZThn4_N8S19596C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C9D1Ev,_ZTv0_n12_N8S19596C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19596C9D1Ev,_ZThn4_N8S19596C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19596C9 = {  "S19596C9", // class name
  bases_S19596C9, 6,
  &(vtc_S19596C9[0]), // expected_vtbl_contents
  &(vtt_S19596C9[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S19596C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19596C9),15, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19596C9),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names130,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19596C8  : virtual S19596C9 {
  ::S3216C8_nt s19596c8f0;
  ~S19596C8(); // tgen
  S19596C8(); // tgen
};
//SIG(-1 S19596C8) C1{ VBC2{ VBC3{ BC4{ VBC5{ vd m} VBC6{ m Fi} BC7{ m} Fi} Fi} BC7} FC6}


S19596C8 ::~S19596C8(){ note_dtor("S19596C8", this);} // tgen
S19596C8 ::S19596C8(){ note_ctor("S19596C8", this);} // tgen

static void Test_S19596C8()
{
  extern Class_Descriptor cd_S19596C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S19596C8, buf);
    S19596C8 *dp, &lv = *(dp=new (buf) S19596C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S19596C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19596C8)");
    check_base_class_offset(lv, (S7883C3_nt*)(S19596C3*)(S19596C2*), 0, "S19596C8");
    check_base_class_offset(lv, (S3216C8_nt*)(S19596C3*)(S19596C2*), ABISELECT(32,20), "S19596C8");
    check_base_class_offset(lv, (S4677C37*)(S19596C3*)(S19596C2*), ABISELECT(16,8), "S19596C8");
    check_base_class_offset(lv, (S19596C3*)(S19596C2*), ABISELECT(16,8), "S19596C8");
    check_base_class_offset(lv, (S19596C2*)(S19596C9*), ABISELECT(16,8), "S19596C8");
    /*is_ambiguous_... S19596C9::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S19596C9*), 0, "S19596C8");
    check_base_class_offset(lv, (S19596C9*), 0, "S19596C8");
    check_field_offset(lv, s19596c8f0, ABISELECT(8,4), "S19596C8.s19596c8f0");
    test_class_info(&lv, &cd_S19596C8);
    dp->~S19596C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19596C8(Test_S19596C8, "S19596C8", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S19596C8C1Ev();
extern void _ZN8S19596C8D1Ev();
Name_Map name_map_S19596C8[] = {
  NSPAIR(_ZN8S19596C8C1Ev),
  NSPAIR(_ZN8S19596C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19596C3;
extern VTBL_ENTRY _ZTI8S19596C3[];
extern  VTBL_ENTRY _ZTV8S19596C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C3[];
extern Class_Descriptor cd_S19596C2;
extern VTBL_ENTRY _ZTI8S19596C2[];
extern  VTBL_ENTRY _ZTV8S19596C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C2[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19596C9;
extern VTBL_ENTRY _ZTI8S19596C9[];
extern  VTBL_ENTRY _ZTV8S19596C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C9[];
static Base_Class bases_S19596C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_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
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19596C3,    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
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19596C2,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19596C9,    0, //bcp->offset
    -1, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19596C8[];
extern void _ZN8S19596C8D1Ev();
extern void _ZN8S19596C8D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19596C8D1Ev,_ZTv0_n12_N8S19596C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19596C8D1Ev,_ZThn8_N8S19596C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C8D0Ev,_ZTv0_n12_N8S19596C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S19596C8D0Ev,_ZThn8_N8S19596C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19596C8[] = {
  0,
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C8[0]),
  (VTBL_ENTRY)&_ZN8S19596C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19596C8D0Ev,
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19596C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C8D1Ev,_ZTv0_n12_N8S19596C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C8D0Ev,_ZTv0_n12_N8S19596C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19596C8[];
extern void ABISELECT(_ZTv0_n24_N8S19596C9D1Ev,_ZTv0_n12_N8S19596C9D1Ev)();
extern void _ZN8S19596C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C9D0Ev,_ZTv0_n12_N8S19596C9D0Ev)();
extern void _ZN8S19596C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C9__8S19596C8[] = {
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C9D1Ev,_ZTv0_n12_N8S19596C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C9D0Ev,_ZTv0_n12_N8S19596C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C9D1Ev,_ZTv0_n12_N8S19596C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19596C9D1Ev,_ZThn8_N8S19596C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C9D0Ev,_ZTv0_n12_N8S19596C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S19596C9D0Ev,_ZThn8_N8S19596C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C2__8S19596C9__8S19596C8[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19596C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C9D1Ev,_ZTv0_n12_N8S19596C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C9D0Ev,_ZTv0_n12_N8S19596C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev)();
extern void _ZN8S19596C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev)();
extern void _ZN8S19596C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C2__8S19596C8[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev)();
extern void _ZN8S19596C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev)();
extern void _ZN8S19596C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C38S19596C2__8S19596C8[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S19596C38S19596C2__8S19596C8[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19596C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S19596C2__8S19596C8[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19596C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev),
};
static  VTT_ENTRY vtt_S19596C8[] = {
  {&(_ZTV8S19596C8[7]),  7,16},
  {&(_ZTV8S19596C8[7]),  7,16},
  {&(_ZTV8S19596C8[14]),  14,16},
  {&(_ZTV8S19596C8[7]),  7,16},
  {&(_tg__ZTV8S19596C9__8S19596C8[6]),  6,8},
  {&(_tg__ZTV8S19596C2__8S19596C9__8S19596C8[5]),  5,7},
  {&(_tg__ZTV8S19596C9__8S19596C8[6]),  6,8},
  {&(_tg__ZTV8S19596C2__8S19596C8[5]),  5,7},
  {&(_tg__ZTV8S19596C38S19596C2__8S19596C8[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S19596C38S19596C2__8S19596C8[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S19596C2__8S19596C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19596C8[];
extern  VTBL_ENTRY _ZTV8S19596C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C8[];
static VTBL_ENTRY alt_thunk_names131[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S19596C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S19596C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev), // 
  (VTBL_ENTRY)_ZN8S19596C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev), // 
  (VTBL_ENTRY)_ZN8S19596C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C9D0Ev,_ZTv0_n12_N8S19596C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19596C9D0Ev,_ZThn8_N8S19596C9D0Ev),
  (VTBL_ENTRY)_ZN8S19596C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C9D1Ev,_ZTv0_n12_N8S19596C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19596C9D1Ev,_ZThn8_N8S19596C9D1Ev),
  (VTBL_ENTRY)_ZN8S19596C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C8D0Ev,_ZTv0_n12_N8S19596C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19596C8D0Ev,_ZThn8_N8S19596C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C8D1Ev,_ZTv0_n12_N8S19596C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19596C8D1Ev,_ZThn8_N8S19596C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19596C8 = {  "S19596C8", // class name
  bases_S19596C8, 7,
  &(vtc_S19596C8[0]), // expected_vtbl_contents
  &(vtt_S19596C8[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S19596C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19596C8),16, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19596C8),11, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names131,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19596C7  : S19596C8 , S3216C8_nt {
  void *s19596c7f0;
  ~S19596C7(); // tgen
  S19596C7(); // tgen
};
//SIG(-1 S19596C7) C1{ BC2{ VBC3{ VBC4{ BC5{ VBC6{ vd m} VBC7{ m Fi} BC8{ m} Fi} Fi} BC8} FC7} BC7 Fp}


S19596C7 ::~S19596C7(){ note_dtor("S19596C7", this);} // tgen
S19596C7 ::S19596C7(){ note_ctor("S19596C7", this);} // tgen

static void Test_S19596C7()
{
  extern Class_Descriptor cd_S19596C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S19596C7, buf);
    S19596C7 *dp, &lv = *(dp=new (buf) S19596C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S19596C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19596C7)");
    check_base_class_offset(lv, (S7883C3_nt*)(S19596C3*)(S19596C2*), 0, "S19596C7");
    check_base_class_offset(lv, (S3216C8_nt*)(S19596C3*)(S19596C2*), ABISELECT(40,28), "S19596C7");
    check_base_class_offset(lv, (S4677C37*)(S19596C3*)(S19596C2*), ABISELECT(24,16), "S19596C7");
    check_base_class_offset(lv, (S19596C3*)(S19596C2*), ABISELECT(24,16), "S19596C7");
    check_base_class_offset(lv, (S19596C2*)(S19596C9*), ABISELECT(24,16), "S19596C7");
    /*is_ambiguous_... S19596C9::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S19596C9*), 0, "S19596C7");
    check_base_class_offset(lv, (S19596C9*)(S19596C8*), 0, "S19596C7");
    check_base_class_offset(lv, (S19596C8*), 0, "S19596C7");
    /*is_ambiguous_... S19596C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(12,8), "S19596C7");
    check_field_offset(lv, s19596c7f0, ABISELECT(16,12), "S19596C7.s19596c7f0");
    test_class_info(&lv, &cd_S19596C7);
    dp->~S19596C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19596C7(Test_S19596C7, "S19596C7", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN8S19596C7C1Ev();
extern void _ZN8S19596C7D1Ev();
Name_Map name_map_S19596C7[] = {
  NSPAIR(_ZN8S19596C7C1Ev),
  NSPAIR(_ZN8S19596C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19596C3;
extern VTBL_ENTRY _ZTI8S19596C3[];
extern  VTBL_ENTRY _ZTV8S19596C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C3[];
extern Class_Descriptor cd_S19596C2;
extern VTBL_ENTRY _ZTI8S19596C2[];
extern  VTBL_ENTRY _ZTV8S19596C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C2[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19596C9;
extern VTBL_ENTRY _ZTI8S19596C9[];
extern  VTBL_ENTRY _ZTV8S19596C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C9[];
extern Class_Descriptor cd_S19596C8;
extern VTBL_ENTRY _ZTI8S19596C8[];
extern  VTBL_ENTRY _ZTV8S19596C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S19596C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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_S19596C3,    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
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19596C2,    ABISELECT(24,16), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19596C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19596C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3216C8_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19596C7[];
extern void _ZN8S19596C7D1Ev();
extern void _ZN8S19596C7D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19596C7D1Ev,_ZTv0_n12_N8S19596C7D1Ev)();
extern void ABISELECT(_ZThn24_N8S19596C7D1Ev,_ZThn16_N8S19596C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C7D0Ev,_ZTv0_n12_N8S19596C7D0Ev)();
extern void ABISELECT(_ZThn24_N8S19596C7D0Ev,_ZThn16_N8S19596C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19596C7[] = {
  0,
  ABISELECT(40,28),
  0,
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C7[0]),
  (VTBL_ENTRY)&_ZN8S19596C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19596C7D0Ev,
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19596C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C7D1Ev,_ZTv0_n12_N8S19596C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C7D0Ev,_ZTv0_n12_N8S19596C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S19596C7[];
extern void _ZN8S19596C8D1Ev();
extern void _ZN8S19596C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19596C8__8S19596C7[] = {
  0,
  ABISELECT(40,28),
  0,
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C8[0]),
  (VTBL_ENTRY)&_ZN8S19596C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19596C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19596C8D1Ev,_ZTv0_n12_N8S19596C8D1Ev)();
extern void ABISELECT(_ZThn24_N8S19596C8D1Ev,_ZThn16_N8S19596C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C8D0Ev,_ZTv0_n12_N8S19596C8D0Ev)();
extern void ABISELECT(_ZThn24_N8S19596C8D0Ev,_ZThn16_N8S19596C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C2__8S19596C8__8S19596C7[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19596C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C8D1Ev,_ZTv0_n12_N8S19596C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C8D0Ev,_ZTv0_n12_N8S19596C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C9D1Ev,_ZTv0_n12_N8S19596C9D1Ev)();
extern void _ZN8S19596C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C9D0Ev,_ZTv0_n12_N8S19596C9D0Ev)();
extern void _ZN8S19596C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C9__8S19596C7[] = {
  ABISELECT(40,28),
  0,
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C9D1Ev,_ZTv0_n12_N8S19596C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C9D0Ev,_ZTv0_n12_N8S19596C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C9D1Ev,_ZTv0_n12_N8S19596C9D1Ev)();
extern void ABISELECT(_ZThn24_N8S19596C9D1Ev,_ZThn16_N8S19596C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C9D0Ev,_ZTv0_n12_N8S19596C9D0Ev)();
extern void ABISELECT(_ZThn24_N8S19596C9D0Ev,_ZThn16_N8S19596C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C2__8S19596C9__8S19596C7[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19596C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C9D1Ev,_ZTv0_n12_N8S19596C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C9D0Ev,_ZTv0_n12_N8S19596C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev)();
extern void _ZN8S19596C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev)();
extern void _ZN8S19596C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C2__8S19596C7[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev)();
extern void _ZN8S19596C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev)();
extern void _ZN8S19596C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C38S19596C2__8S19596C7[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S19596C38S19596C2__8S19596C7[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S19596C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S19596C2__8S19596C7[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S19596C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev),
};
static  VTT_ENTRY vtt_S19596C7[] = {
  {&(_ZTV8S19596C7[7]),  7,16},
  {&(_tg__ZTV8S19596C8__8S19596C7[7]),  7,9},
  {&(_tg__ZTV8S19596C8__8S19596C7[7]),  7,9},
  {&(_tg__ZTV8S19596C2__8S19596C8__8S19596C7[5]),  5,7},
  {&(_tg__ZTV8S19596C8__8S19596C7[7]),  7,9},
  {&(_ZTV8S19596C7[7]),  7,16},
  {&(_ZTV8S19596C7[14]),  14,16},
  {&(_ZTV8S19596C7[7]),  7,16},
  {&(_tg__ZTV8S19596C9__8S19596C7[6]),  6,8},
  {&(_tg__ZTV8S19596C2__8S19596C9__8S19596C7[5]),  5,7},
  {&(_tg__ZTV8S19596C9__8S19596C7[6]),  6,8},
  {&(_tg__ZTV8S19596C2__8S19596C7[5]),  5,7},
  {&(_tg__ZTV8S19596C38S19596C2__8S19596C7[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S19596C38S19596C2__8S19596C7[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S19596C2__8S19596C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19596C7[];
extern  VTBL_ENTRY _ZTV8S19596C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C7[];
static VTBL_ENTRY alt_thunk_names132[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S19596C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S19596C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev), // 
  (VTBL_ENTRY)_ZN8S19596C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev), // 
  (VTBL_ENTRY)_ZN8S19596C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C9D0Ev,_ZTv0_n12_N8S19596C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19596C9D0Ev,_ZThn16_N8S19596C9D0Ev),
  (VTBL_ENTRY)_ZN8S19596C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C9D1Ev,_ZTv0_n12_N8S19596C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19596C9D1Ev,_ZThn16_N8S19596C9D1Ev),
  (VTBL_ENTRY)_ZN8S19596C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C8D0Ev,_ZTv0_n12_N8S19596C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19596C8D0Ev,_ZThn16_N8S19596C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C8D1Ev,_ZTv0_n12_N8S19596C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19596C8D1Ev,_ZThn16_N8S19596C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C7D0Ev,_ZTv0_n12_N8S19596C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19596C7D0Ev,_ZThn16_N8S19596C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C7D1Ev,_ZTv0_n12_N8S19596C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19596C7D1Ev,_ZThn16_N8S19596C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19596C7 = {  "S19596C7", // class name
  bases_S19596C7, 9,
  &(vtc_S19596C7[0]), // expected_vtbl_contents
  &(vtt_S19596C7[0]), // expected_vtt_contents
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI8S19596C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19596C7),16, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19596C7),15, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names132,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19596C10  : virtual S3216C8_nt {
  virtual  ~S19596C10(); // _ZN9S19596C10D2Ev
  S19596C10(); // tgen
};
//SIG(-1 S19596C10) C1{ VBC2{ m Fi} vd}


 S19596C10 ::~S19596C10(){ note_dtor("S19596C10", this);}
S19596C10 ::S19596C10(){ note_ctor("S19596C10", this);} // tgen

static void Test_S19596C10()
{
  extern Class_Descriptor cd_S19596C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19596C10, buf);
    S19596C10 *dp, &lv = *(dp=new (buf) S19596C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19596C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19596C10)");
    check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(8,4), "S19596C10");
    test_class_info(&lv, &cd_S19596C10);
    dp->~S19596C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19596C10(Test_S19596C10, "S19596C10", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19596C10C1Ev();
extern void _ZN9S19596C10D2Ev();
Name_Map name_map_S19596C10[] = {
  NSPAIR(_ZN9S19596C10C1Ev),
  NSPAIR(_ZN9S19596C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S19596C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19596C10[];
extern void _ZN9S19596C10D1Ev();
extern void _ZN9S19596C10D0Ev();
static  VTBL_ENTRY vtc_S19596C10[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19596C10[0]),
  (VTBL_ENTRY)&_ZN9S19596C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19596C10D0Ev,
};
extern VTBL_ENTRY _ZTV9S19596C10[];
static  VTT_ENTRY vtt_S19596C10[] = {
  {&(_ZTV9S19596C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19596C10[];
extern  VTBL_ENTRY _ZTV9S19596C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19596C10[];
Class_Descriptor cd_S19596C10 = {  "S19596C10", // class name
  bases_S19596C10, 1,
  &(vtc_S19596C10[0]), // expected_vtbl_contents
  &(vtt_S19596C10[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19596C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19596C10),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19596C10),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  S19596C12  : virtual S7883C3_nt {
  ~S19596C12(); // tgen
  S19596C12(); // tgen
};
//SIG(-1 S19596C12) C1{ VBC2{ vd m}}


S19596C12 ::~S19596C12(){ note_dtor("S19596C12", this);} // tgen
S19596C12 ::S19596C12(){ note_ctor("S19596C12", this);} // tgen

static void Test_S19596C12()
{
  extern Class_Descriptor cd_S19596C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19596C12, buf);
    S19596C12 *dp, &lv = *(dp=new (buf) S19596C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19596C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19596C12)");
    check_base_class_offset(lv, (S7883C3_nt*), 0, "S19596C12");
    test_class_info(&lv, &cd_S19596C12);
    dp->~S19596C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19596C12(Test_S19596C12, "S19596C12", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN9S19596C12C1Ev();
extern void _ZN9S19596C12D1Ev();
Name_Map name_map_S19596C12[] = {
  NSPAIR(_ZN9S19596C12C1Ev),
  NSPAIR(_ZN9S19596C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
static Base_Class bases_S19596C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19596C12[];
extern void _ZN9S19596C12D1Ev();
extern void _ZN9S19596C12D0Ev();
static  VTBL_ENTRY vtc_S19596C12[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19596C12[0]),
  (VTBL_ENTRY)&_ZN9S19596C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19596C12D0Ev,
};
extern VTBL_ENTRY _ZTV9S19596C12[];
static  VTT_ENTRY vtt_S19596C12[] = {
  {&(_ZTV9S19596C12[4]),  4,6},
  {&(_ZTV9S19596C12[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S19596C12[];
extern  VTBL_ENTRY _ZTV9S19596C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19596C12[];
Class_Descriptor cd_S19596C12 = {  "S19596C12", // class name
  bases_S19596C12, 1,
  &(vtc_S19596C12[0]), // expected_vtbl_contents
  &(vtt_S19596C12[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S19596C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19596C12),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19596C12),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  S19596C11  : virtual S19596C12 {
  int s19596c11f0;
  ~S19596C11(); // tgen
  S19596C11(); // tgen
};
//SIG(-1 S19596C11) C1{ VBC2{ VBC3{ vd m}} Fi}


S19596C11 ::~S19596C11(){ note_dtor("S19596C11", this);} // tgen
S19596C11 ::S19596C11(){ note_ctor("S19596C11", this);} // tgen

static void Test_S19596C11()
{
  extern Class_Descriptor cd_S19596C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19596C11, buf);
    S19596C11 *dp, &lv = *(dp=new (buf) S19596C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19596C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19596C11)");
    check_base_class_offset(lv, (S7883C3_nt*)(S19596C12*), 0, "S19596C11");
    check_base_class_offset(lv, (S19596C12*), 0, "S19596C11");
    check_field_offset(lv, s19596c11f0, ABISELECT(8,4), "S19596C11.s19596c11f0");
    test_class_info(&lv, &cd_S19596C11);
    dp->~S19596C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19596C11(Test_S19596C11, "S19596C11", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19596C11C1Ev();
extern void _ZN9S19596C11D1Ev();
Name_Map name_map_S19596C11[] = {
  NSPAIR(_ZN9S19596C11C1Ev),
  NSPAIR(_ZN9S19596C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S19596C12;
extern VTBL_ENTRY _ZTI9S19596C12[];
extern  VTBL_ENTRY _ZTV9S19596C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19596C12[];
static Base_Class bases_S19596C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19596C12,    0, //bcp->offset
    -1, //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 _ZTI9S19596C11[];
extern void _ZN9S19596C11D1Ev();
extern void _ZN9S19596C11D0Ev();
static  VTBL_ENTRY vtc_S19596C11[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19596C11[0]),
  (VTBL_ENTRY)&_ZN9S19596C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19596C11D0Ev,
};
extern VTBL_ENTRY _ZTV9S19596C11[];
extern void ABISELECT(_ZTv0_n24_N9S19596C12D1Ev,_ZTv0_n12_N9S19596C12D1Ev)();
extern void _ZN9S19596C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19596C12D0Ev,_ZTv0_n12_N9S19596C12D0Ev)();
extern void _ZN9S19596C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19596C12__9S19596C11[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19596C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C12D1Ev,_ZTv0_n12_N9S19596C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C12D0Ev,_ZTv0_n12_N9S19596C12D0Ev),
};
static  VTT_ENTRY vtt_S19596C11[] = {
  {&(_ZTV9S19596C11[5]),  5,7},
  {&(_ZTV9S19596C11[5]),  5,7},
  {&(_ZTV9S19596C11[5]),  5,7},
  {&(_tg__ZTV9S19596C12__9S19596C11[4]),  4,6},
  {&(_tg__ZTV9S19596C12__9S19596C11[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S19596C11[];
extern  VTBL_ENTRY _ZTV9S19596C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19596C11[];
static VTBL_ENTRY alt_thunk_names133[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19596C12D0Ev,_ZTv0_n12_N9S19596C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S19596C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19596C12D1Ev,_ZTv0_n12_N9S19596C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S19596C12D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19596C11 = {  "S19596C11", // class name
  bases_S19596C11, 2,
  &(vtc_S19596C11[0]), // expected_vtbl_contents
  &(vtt_S19596C11[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19596C11),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19596C11),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19596C11),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names133,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19596C14  : S19596C2 {
  ~S19596C14(); // tgen
  S19596C14(); // tgen
};
//SIG(-1 S19596C14) C1{ BC2{ BC3{ VBC4{ vd m} VBC5{ m Fi} BC6{ m} Fi} Fi}}


S19596C14 ::~S19596C14(){ note_dtor("S19596C14", this);} // tgen
S19596C14 ::S19596C14(){ note_ctor("S19596C14", this);} // tgen

static void Test_S19596C14()
{
  extern Class_Descriptor cd_S19596C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19596C14, buf);
    S19596C14 *dp, &lv = *(dp=new (buf) S19596C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19596C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19596C14)");
    check_base_class_offset(lv, (S7883C3_nt*)(S19596C3*)(S19596C2*), 0, "S19596C14");
    check_base_class_offset(lv, (S3216C8_nt*)(S19596C3*)(S19596C2*), ABISELECT(16,12), "S19596C14");
    check_base_class_offset(lv, (S4677C37*)(S19596C3*)(S19596C2*), 0, "S19596C14");
    check_base_class_offset(lv, (S19596C3*)(S19596C2*), 0, "S19596C14");
    check_base_class_offset(lv, (S19596C2*), 0, "S19596C14");
    test_class_info(&lv, &cd_S19596C14);
    dp->~S19596C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19596C14(Test_S19596C14, "S19596C14", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN9S19596C14C1Ev();
extern void _ZN9S19596C14D1Ev();
Name_Map name_map_S19596C14[] = {
  NSPAIR(_ZN9S19596C14C1Ev),
  NSPAIR(_ZN9S19596C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19596C3;
extern VTBL_ENTRY _ZTI8S19596C3[];
extern  VTBL_ENTRY _ZTV8S19596C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C3[];
extern Class_Descriptor cd_S19596C2;
extern VTBL_ENTRY _ZTI8S19596C2[];
extern  VTBL_ENTRY _ZTV8S19596C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C2[];
static Base_Class bases_S19596C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19596C3,    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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19596C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19596C14[];
extern void _ZN9S19596C14D1Ev();
extern void _ZN9S19596C14D0Ev();
static  VTBL_ENTRY vtc_S19596C14[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19596C14[0]),
  (VTBL_ENTRY)&_ZN9S19596C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19596C14D0Ev,
};
extern VTBL_ENTRY _ZTV9S19596C14[];
extern void _ZN8S19596C2D1Ev();
extern void _ZN8S19596C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19596C2__9S19596C14[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C2[0]),
  (VTBL_ENTRY)&_ZN8S19596C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19596C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev)();
extern void _ZN8S19596C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev)();
extern void _ZN8S19596C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C38S19596C2__9S19596C14[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev),
};
static  VTT_ENTRY vtt_S19596C14[] = {
  {&(_ZTV9S19596C14[5]),  5,7},
  {&(_tg__ZTV8S19596C2__9S19596C14[5]),  5,7},
  {&(_tg__ZTV8S19596C38S19596C2__9S19596C14[5]),  5,7},
  {&(_tg__ZTV8S19596C38S19596C2__9S19596C14[5]),  5,7},
  {&(_tg__ZTV8S19596C2__9S19596C14[5]),  5,7},
  {&(_ZTV9S19596C14[5]),  5,7},
};
extern VTBL_ENTRY _ZTI9S19596C14[];
extern  VTBL_ENTRY _ZTV9S19596C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19596C14[];
static VTBL_ENTRY alt_thunk_names134[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S19596C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S19596C3D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19596C14 = {  "S19596C14", // class name
  bases_S19596C14, 5,
  &(vtc_S19596C14[0]), // expected_vtbl_contents
  &(vtt_S19596C14[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI9S19596C14),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19596C14),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19596C14),6, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names134,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19596C15  : virtual S3216C8_nt , virtual S19596C8 , virtual S19596C10 , virtual S4677C37 , S19596C3 {
  int s19596c15f0;
  void *s19596c15f1;
  virtual  ~S19596C15(); // _ZN9S19596C15D2Ev
  S19596C15(); // tgen
};
//SIG(-1 S19596C15) C1{ VBC2{ m Fi} VBC3{ VBC4{ VBC5{ BC6{ VBC7{ vd m} VBC2 BC8{ m} Fi} Fi} BC8} FC2} VBC9{ VBC2 vd} VBC8 BC6 vd Fi Fp}


 S19596C15 ::~S19596C15(){ note_dtor("S19596C15", this);}
S19596C15 ::S19596C15(){ note_ctor("S19596C15", this);} // tgen

static void Test_S19596C15()
{
  extern Class_Descriptor cd_S19596C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S19596C15, buf);
    S19596C15 *dp, &lv = *(dp=new (buf) S19596C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S19596C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19596C15)");
    check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(24,16), "S19596C15");
    check_base_class_offset(lv, (S3216C8_nt*)(S19596C3*)(S19596C2*), ABISELECT(24,16), "S19596C15");
    check_base_class_offset(lv, (S3216C8_nt*)(S19596C10*), ABISELECT(24,16), "S19596C15");
    /*is_ambiguous_... S19596C15::S19596C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19596C3*), ABISELECT(24,16), "S19596C15");
    check_base_class_offset(lv, (S7883C3_nt*)(S19596C3*)(S19596C2*), ABISELECT(32,20), "S19596C15");
    /*is_ambiguous_... S19596C15::S19596C3 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S19596C3*), ABISELECT(32,20), "S19596C15");
    check_base_class_offset(lv, (S4677C37*)(S19596C3*)(S19596C2*), ABISELECT(48,28), "S19596C15");
    check_base_class_offset(lv, (S19596C3*)(S19596C2*), ABISELECT(48,28), "S19596C15");
    check_base_class_offset(lv, (S19596C2*)(S19596C9*), ABISELECT(48,28), "S19596C15");
    /*is_ambiguous_... S19596C9::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S19596C9*), ABISELECT(32,20), "S19596C15");
    check_base_class_offset(lv, (S19596C9*)(S19596C8*), ABISELECT(32,20), "S19596C15");
    check_base_class_offset(lv, (S19596C8*), ABISELECT(32,20), "S19596C15");
    check_base_class_offset(lv, (S19596C10*), ABISELECT(64,40), "S19596C15");
    /*is_ambiguous_... S19596C15::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*), ABISELECT(72,44), "S19596C15");
    /*is_ambiguous_... S19596C15::S19596C3 */ AMB_check_base_class_offset(lv, (S4677C37*)(S19596C3*), 0, "S19596C15");
    /*is_ambiguous_... S19596C15::S19596C3 */ AMB_check_base_class_offset(lv, (S19596C3*), 0, "S19596C15");
    check_field_offset(lv, s19596c15f0, ABISELECT(12,8), "S19596C15.s19596c15f0");
    check_field_offset(lv, s19596c15f1, ABISELECT(16,12), "S19596C15.s19596c15f1");
    test_class_info(&lv, &cd_S19596C15);
    dp->~S19596C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19596C15(Test_S19596C15, "S19596C15", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN9S19596C15C1Ev();
extern void _ZN9S19596C15D2Ev();
Name_Map name_map_S19596C15[] = {
  NSPAIR(_ZN9S19596C15C1Ev),
  NSPAIR(_ZN9S19596C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19596C3;
extern VTBL_ENTRY _ZTI8S19596C3[];
extern  VTBL_ENTRY _ZTV8S19596C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C3[];
extern Class_Descriptor cd_S19596C2;
extern VTBL_ENTRY _ZTI8S19596C2[];
extern  VTBL_ENTRY _ZTV8S19596C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C2[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19596C9;
extern VTBL_ENTRY _ZTI8S19596C9[];
extern  VTBL_ENTRY _ZTV8S19596C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C9[];
extern Class_Descriptor cd_S19596C8;
extern VTBL_ENTRY _ZTI8S19596C8[];
extern  VTBL_ENTRY _ZTV8S19596C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C8[];
extern Class_Descriptor cd_S19596C10;
extern VTBL_ENTRY _ZTI9S19596C10[];
extern  VTBL_ENTRY _ZTV9S19596C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19596C10[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19596C3;
extern VTBL_ENTRY _ZTI8S19596C3[];
extern  VTBL_ENTRY _ZTV8S19596C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C3[];
static Base_Class bases_S19596C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7883C3_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19596C3,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19596C2,    ABISELECT(48,28), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    6, //immediately_derived
  0, 0},
  {&cd_S19596C9,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19596C8,    ABISELECT(32,20), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19596C10,    ABISELECT(64,40), //bcp->offset
    28, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19596C3,    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},
  {0}};
extern VTBL_ENTRY _ZTI9S19596C15[];
extern void ABISELECT(_ZTv0_n24_N9S19596C15D1Ev,_ZTv0_n12_N9S19596C15D1Ev)();
extern void _ZN9S19596C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19596C15D0Ev,_ZTv0_n12_N9S19596C15D0Ev)();
extern void _ZN9S19596C15D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19596C15D1Ev,_ZTv0_n12_N9S19596C15D1Ev)();
extern void ABISELECT(_ZThn32_N9S19596C15D1Ev,_ZThn20_N9S19596C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19596C15D0Ev,_ZTv0_n12_N9S19596C15D0Ev)();
extern void ABISELECT(_ZThn32_N9S19596C15D0Ev,_ZThn20_N9S19596C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19596C15D1Ev,_ZTv0_n12_N9S19596C15D1Ev)();
extern void ABISELECT(_ZThn48_N9S19596C15D1Ev,_ZThn28_N9S19596C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19596C15D0Ev,_ZTv0_n12_N9S19596C15D0Ev)();
extern void ABISELECT(_ZThn48_N9S19596C15D0Ev,_ZThn28_N9S19596C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19596C15D1Ev,_ZTv0_n16_N9S19596C15D1Ev)();
extern void ABISELECT(_ZThn64_N9S19596C15D1Ev,_ZThn40_N9S19596C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19596C15D0Ev,_ZTv0_n16_N9S19596C15D0Ev)();
extern void ABISELECT(_ZThn64_N9S19596C15D0Ev,_ZThn40_N9S19596C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19596C15[] = {
  ABISELECT(72,44),
  ABISELECT(64,40),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(32,20),
  ABISELECT(24,16),
  ABISELECT(32,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19596C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C15D1Ev,_ZTv0_n12_N9S19596C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C15D0Ev,_ZTv0_n12_N9S19596C15D0Ev),
  0,
  ABISELECT(-8,-4),
  0,
  ABISELECT(16,8),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19596C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C15D1Ev,_ZTv0_n12_N9S19596C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C15D0Ev,_ZTv0_n12_N9S19596C15D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19596C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C15D1Ev,_ZTv0_n12_N9S19596C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C15D0Ev,_ZTv0_n12_N9S19596C15D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19596C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19596C15D1Ev,_ZTv0_n16_N9S19596C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19596C15D0Ev,_ZTv0_n16_N9S19596C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S19596C15[];
extern void ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev)();
extern void _ZN8S19596C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev)();
extern void _ZN8S19596C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C3__A1__9S19596C15[] = {
  ABISELECT(24,16),
  ABISELECT(32,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev)();
extern void ABISELECT(_ZThn32_N8S19596C3D1Ev,_ZThn20_N8S19596C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev)();
extern void ABISELECT(_ZThn32_N8S19596C3D0Ev,_ZThn20_N8S19596C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S19596C3__A1__9S19596C15[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19596C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C8D1Ev,_ZTv0_n12_N8S19596C8D1Ev)();
extern void _ZN8S19596C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C8D0Ev,_ZTv0_n12_N8S19596C8D0Ev)();
extern void _ZN8S19596C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C8__9S19596C15[] = {
  0,
  ABISELECT(-8,-4),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C8D1Ev,_ZTv0_n12_N8S19596C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C8D0Ev,_ZTv0_n12_N8S19596C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C8D1Ev,_ZTv0_n12_N8S19596C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19596C8D1Ev,_ZThn8_N8S19596C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C8D0Ev,_ZTv0_n12_N8S19596C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S19596C8D0Ev,_ZThn8_N8S19596C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C2__8S19596C8__9S19596C15[] = {
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19596C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C8D1Ev,_ZTv0_n12_N8S19596C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C8D0Ev,_ZTv0_n12_N8S19596C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C9D1Ev,_ZTv0_n12_N8S19596C9D1Ev)();
extern void _ZN8S19596C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C9D0Ev,_ZTv0_n12_N8S19596C9D0Ev)();
extern void _ZN8S19596C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C9__9S19596C15[] = {
  ABISELECT(-8,-4),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C9D1Ev,_ZTv0_n12_N8S19596C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C9D0Ev,_ZTv0_n12_N8S19596C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C9D1Ev,_ZTv0_n12_N8S19596C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19596C9D1Ev,_ZThn8_N8S19596C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C9D0Ev,_ZTv0_n12_N8S19596C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S19596C9D0Ev,_ZThn8_N8S19596C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C2__8S19596C9__9S19596C15[] = {
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19596C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C9D1Ev,_ZTv0_n12_N8S19596C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C9D0Ev,_ZTv0_n12_N8S19596C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev)();
extern void _ZN8S19596C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev)();
extern void _ZN8S19596C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C2__9S19596C15[] = {
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev)();
extern void _ZN8S19596C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev)();
extern void _ZN8S19596C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C38S19596C2__9S19596C15[] = {
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S19596C38S19596C2__9S19596C15[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19596C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S19596C2__9S19596C15[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19596C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev),
};
extern void _ZN9S19596C10D1Ev();
extern void _ZN9S19596C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19596C10__9S19596C15[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19596C10[0]),
  (VTBL_ENTRY)&_ZN9S19596C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19596C10D0Ev,
};
static  VTT_ENTRY vtt_S19596C15[] = {
  {&(_ZTV9S19596C15[10]),  10,34},
  {&(_tg__ZTV8S19596C3__A1__9S19596C15[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S19596C3__A1__9S19596C15[3]),  3,5},
  {&(_ZTV9S19596C15[19]),  19,34},
  {&(_ZTV9S19596C15[19]),  19,34},
  {&(_ZTV9S19596C15[26]),  26,34},
  {&(_ZTV9S19596C15[19]),  19,34},
  {&(_ZTV9S19596C15[32]),  32,34},
  {&(_tg__ZTV8S19596C8__9S19596C15[7]),  7,9},
  {&(_tg__ZTV8S19596C8__9S19596C15[7]),  7,9},
  {&(_tg__ZTV8S19596C2__8S19596C8__9S19596C15[5]),  5,7},
  {&(_tg__ZTV8S19596C8__9S19596C15[7]),  7,9},
  {&(_tg__ZTV8S19596C9__9S19596C15[6]),  6,8},
  {&(_tg__ZTV8S19596C2__8S19596C9__9S19596C15[5]),  5,7},
  {&(_tg__ZTV8S19596C9__9S19596C15[6]),  6,8},
  {&(_tg__ZTV8S19596C2__9S19596C15[5]),  5,7},
  {&(_tg__ZTV8S19596C38S19596C2__9S19596C15[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S19596C38S19596C2__9S19596C15[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S19596C2__9S19596C15[3]),  3,5},
  {&(_tg__ZTV9S19596C10__9S19596C15[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19596C15[];
extern  VTBL_ENTRY _ZTV9S19596C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19596C15[];
static VTBL_ENTRY alt_thunk_names135[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev), // 
  (VTBL_ENTRY)_ZN8S19596C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev), // 
  (VTBL_ENTRY)_ZN8S19596C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C9D0Ev,_ZTv0_n12_N8S19596C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19596C9D0Ev,_ZThn8_N8S19596C9D0Ev),
  (VTBL_ENTRY)_ZN8S19596C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C9D1Ev,_ZTv0_n12_N8S19596C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19596C9D1Ev,_ZThn8_N8S19596C9D1Ev),
  (VTBL_ENTRY)_ZN8S19596C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C8D0Ev,_ZTv0_n12_N8S19596C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19596C8D0Ev,_ZThn8_N8S19596C8D0Ev),
  (VTBL_ENTRY)_ZN8S19596C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C8D1Ev,_ZTv0_n12_N8S19596C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19596C8D1Ev,_ZThn8_N8S19596C8D1Ev),
  (VTBL_ENTRY)_ZN8S19596C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S19596C3D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19596C3D0Ev,_ZThn20_N8S19596C3D0Ev),
  (VTBL_ENTRY)_ZN8S19596C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S19596C3D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19596C3D1Ev,_ZThn20_N8S19596C3D1Ev),
  (VTBL_ENTRY)_ZN8S19596C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19596C15D0Ev,_ZTv0_n16_N9S19596C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19596C15D0Ev,_ZThn40_N9S19596C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19596C15D1Ev,_ZTv0_n16_N9S19596C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19596C15D1Ev,_ZThn40_N9S19596C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19596C15D0Ev,_ZTv0_n12_N9S19596C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19596C15D0Ev,_ZThn28_N9S19596C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19596C15D0Ev,_ZThn20_N9S19596C15D0Ev),
  (VTBL_ENTRY)_ZN9S19596C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19596C15D1Ev,_ZTv0_n12_N9S19596C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19596C15D1Ev,_ZThn28_N9S19596C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19596C15D1Ev,_ZThn20_N9S19596C15D1Ev),
  (VTBL_ENTRY)_ZN9S19596C15D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19596C15 = {  "S19596C15", // class name
  bases_S19596C15, 12,
  &(vtc_S19596C15[0]), // expected_vtbl_contents
  &(vtt_S19596C15[0]), // expected_vtt_contents
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI9S19596C15),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19596C15),34, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19596C15),20, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names135,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19596C13  : S19596C14 , virtual S19596C15 {
  int s19596c13f0;
  virtual  ~S19596C13(); // _ZN9S19596C13D2Ev
  S19596C13(); // tgen
};
//SIG(-1 S19596C13) C1{ BC2{ BC3{ BC4{ VBC5{ vd m} VBC6{ m Fi} BC7{ m} Fi} Fi}} VBC8{ VBC6 VBC9{ VBC10{ VBC3 BC7} FC6} VBC11{ VBC6 vd} VBC7 BC4 vd Fi Fp} vd Fi}


 S19596C13 ::~S19596C13(){ note_dtor("S19596C13", this);}
S19596C13 ::S19596C13(){ note_ctor("S19596C13", this);} // tgen

static void Test_S19596C13()
{
  extern Class_Descriptor cd_S19596C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,17)];
    init_test(&cd_S19596C13, buf);
    S19596C13 *dp, &lv = *(dp=new (buf) S19596C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,64), "sizeof(S19596C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19596C13)");
    check_base_class_offset(lv, (S7883C3_nt*)(S19596C3*)(S19596C2*)(S19596C14*), 0, "S19596C13");
    /*is_ambiguous_... S19596C13::S19596C2 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S19596C3*)(S19596C2*), 0, "S19596C13");
    /*is_ambiguous_... S19596C15::S19596C3 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S19596C3*)(S19596C15*), 0, "S19596C13");
    check_base_class_offset(lv, (S3216C8_nt*)(S19596C3*)(S19596C2*)(S19596C14*), ABISELECT(20,16), "S19596C13");
    check_base_class_offset(lv, (S3216C8_nt*)(S19596C15*), ABISELECT(20,16), "S19596C13");
    /*is_ambiguous_... S19596C13::S19596C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19596C3*)(S19596C2*), ABISELECT(20,16), "S19596C13");
    check_base_class_offset(lv, (S3216C8_nt*)(S19596C10*), ABISELECT(20,16), "S19596C13");
    /*is_ambiguous_... S19596C15::S19596C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19596C3*)(S19596C15*), ABISELECT(20,16), "S19596C13");
    check_base_class_offset(lv, (S4677C37*)(S19596C3*)(S19596C2*)(S19596C14*), 0, "S19596C13");
    check_base_class_offset(lv, (S19596C3*)(S19596C2*)(S19596C14*), 0, "S19596C13");
    check_base_class_offset(lv, (S19596C2*)(S19596C14*), 0, "S19596C13");
    check_base_class_offset(lv, (S19596C14*), 0, "S19596C13");
    /*is_ambiguous_... S19596C13::S19596C2 */ AMB_check_base_class_offset(lv, (S4677C37*)(S19596C3*)(S19596C2*), ABISELECT(64,44), "S19596C13");
    /*is_ambiguous_... S19596C13::S19596C2 */ AMB_check_base_class_offset(lv, (S19596C3*)(S19596C2*), ABISELECT(64,44), "S19596C13");
    check_base_class_offset(lv, (S19596C2*)(S19596C9*), ABISELECT(64,44), "S19596C13");
    /*is_ambiguous_... S19596C9::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S19596C9*), ABISELECT(48,36), "S19596C13");
    check_base_class_offset(lv, (S19596C9*)(S19596C8*), ABISELECT(48,36), "S19596C13");
    check_base_class_offset(lv, (S19596C8*)(S19596C15*), ABISELECT(48,36), "S19596C13");
    check_base_class_offset(lv, (S19596C10*)(S19596C15*), ABISELECT(80,56), "S19596C13");
    /*is_ambiguous_... S19596C15::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S19596C15*), ABISELECT(88,60), "S19596C13");
    /*is_ambiguous_... S19596C15::S19596C3 */ AMB_check_base_class_offset(lv, (S4677C37*)(S19596C3*)(S19596C15*), ABISELECT(24,20), "S19596C13");
    /*is_ambiguous_... S19596C15::S19596C3 */ AMB_check_base_class_offset(lv, (S19596C3*)(S19596C15*), ABISELECT(24,20), "S19596C13");
    check_base_class_offset(lv, (S19596C15*), ABISELECT(24,20), "S19596C13");
    check_field_offset(lv, s19596c13f0, ABISELECT(16,12), "S19596C13.s19596c13f0");
    test_class_info(&lv, &cd_S19596C13);
    dp->~S19596C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19596C13(Test_S19596C13, "S19596C13", ABISELECT(96,64));

#else // __cplusplus

extern void _ZN9S19596C13C1Ev();
extern void _ZN9S19596C13D2Ev();
Name_Map name_map_S19596C13[] = {
  NSPAIR(_ZN9S19596C13C1Ev),
  NSPAIR(_ZN9S19596C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19596C3;
extern VTBL_ENTRY _ZTI8S19596C3[];
extern  VTBL_ENTRY _ZTV8S19596C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C3[];
extern Class_Descriptor cd_S19596C2;
extern VTBL_ENTRY _ZTI8S19596C2[];
extern  VTBL_ENTRY _ZTV8S19596C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C2[];
extern Class_Descriptor cd_S19596C14;
extern VTBL_ENTRY _ZTI9S19596C14[];
extern  VTBL_ENTRY _ZTV9S19596C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19596C14[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19596C3;
extern VTBL_ENTRY _ZTI8S19596C3[];
extern  VTBL_ENTRY _ZTV8S19596C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C3[];
extern Class_Descriptor cd_S19596C2;
extern VTBL_ENTRY _ZTI8S19596C2[];
extern  VTBL_ENTRY _ZTV8S19596C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C2[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19596C9;
extern VTBL_ENTRY _ZTI8S19596C9[];
extern  VTBL_ENTRY _ZTV8S19596C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C9[];
extern Class_Descriptor cd_S19596C8;
extern VTBL_ENTRY _ZTI8S19596C8[];
extern  VTBL_ENTRY _ZTV8S19596C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C8[];
extern Class_Descriptor cd_S19596C10;
extern VTBL_ENTRY _ZTI9S19596C10[];
extern  VTBL_ENTRY _ZTV9S19596C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19596C10[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19596C3;
extern VTBL_ENTRY _ZTI8S19596C3[];
extern  VTBL_ENTRY _ZTV8S19596C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C3[];
extern Class_Descriptor cd_S19596C15;
extern VTBL_ENTRY _ZTI9S19596C15[];
extern  VTBL_ENTRY _ZTV9S19596C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19596C15[];
static Base_Class bases_S19596C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(20,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19596C3,    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
    9, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19596C2,    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
    10, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19596C14,    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_S4677C37,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19596C3,    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
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19596C2,    ABISELECT(64,44), //bcp->offset
    34, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19596C9,    ABISELECT(48,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19596C8,    ABISELECT(48,36), //bcp->offset
    25, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19596C10,    ABISELECT(80,56), //bcp->offset
    41, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    16, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(24,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
    15, //immediately_derived
  0, 0},
  {&cd_S19596C3,    ABISELECT(24,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19596C15,    ABISELECT(24,20), //bcp->offset
    13, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19596C13[];
extern void _ZN9S19596C13D1Ev();
extern void _ZN9S19596C13D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19596C13D1Ev,_ZTv0_n12_N9S19596C13D1Ev)();
extern void ABISELECT(_ZThn24_N9S19596C13D1Ev,_ZThn20_N9S19596C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19596C13D0Ev,_ZTv0_n12_N9S19596C13D0Ev)();
extern void ABISELECT(_ZThn24_N9S19596C13D0Ev,_ZThn20_N9S19596C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19596C13D1Ev,_ZTv0_n12_N9S19596C13D1Ev)();
extern void ABISELECT(_ZThn48_N9S19596C13D1Ev,_ZThn36_N9S19596C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19596C13D0Ev,_ZTv0_n12_N9S19596C13D0Ev)();
extern void ABISELECT(_ZThn48_N9S19596C13D0Ev,_ZThn36_N9S19596C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19596C13D1Ev,_ZTv0_n12_N9S19596C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S19596C13D1Ev,_ZThn44_N9S19596C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19596C13D0Ev,_ZTv0_n12_N9S19596C13D0Ev)();
extern void ABISELECT(_ZThn64_N9S19596C13D0Ev,_ZThn44_N9S19596C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19596C13D1Ev,_ZTv0_n16_N9S19596C13D1Ev)();
extern void ABISELECT(_ZThn80_N9S19596C13D1Ev,_ZThn56_N9S19596C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19596C13D0Ev,_ZTv0_n16_N9S19596C13D0Ev)();
extern void ABISELECT(_ZThn80_N9S19596C13D0Ev,_ZThn56_N9S19596C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19596C13[] = {
  ABISELECT(88,60),
  ABISELECT(80,56),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(24,20),
  ABISELECT(20,16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19596C13[0]),
  (VTBL_ENTRY)&_ZN9S19596C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19596C13D0Ev,
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(24,16),
  -4,
  ABISELECT(-24,-20),
  ABISELECT(-24,-20),
  ABISELECT(-24,-20),
  (VTBL_ENTRY)&(_ZTI9S19596C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C13D1Ev,_ZTv0_n12_N9S19596C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C13D0Ev,_ZTv0_n12_N9S19596C13D0Ev),
  0,
  ABISELECT(-28,-20),
  ABISELECT(-48,-36),
  ABISELECT(16,8),
  ABISELECT(-48,-36),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI9S19596C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C13D1Ev,_ZTv0_n12_N9S19596C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C13D0Ev,_ZTv0_n12_N9S19596C13D0Ev),
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S19596C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C13D1Ev,_ZTv0_n12_N9S19596C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C13D0Ev,_ZTv0_n12_N9S19596C13D0Ev),
  ABISELECT(-80,-56),
  ABISELECT(-60,-40),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S19596C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19596C13D1Ev,_ZTv0_n16_N9S19596C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19596C13D0Ev,_ZTv0_n16_N9S19596C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S19596C13[];
extern void _ZN9S19596C14D1Ev();
extern void _ZN9S19596C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19596C14__9S19596C13[] = {
  ABISELECT(20,16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19596C14[0]),
  (VTBL_ENTRY)&_ZN9S19596C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19596C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev)();
extern void _ZN8S19596C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev)();
extern void _ZN8S19596C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C29S19596C14__9S19596C13[] = {
  ABISELECT(20,16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev)();
extern void _ZN8S19596C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev)();
extern void _ZN8S19596C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C38S19596C29S19596C14__9S19596C13[] = {
  ABISELECT(20,16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19596C15D1Ev,_ZTv0_n12_N9S19596C15D1Ev)();
extern void _ZN9S19596C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19596C15D0Ev,_ZTv0_n12_N9S19596C15D0Ev)();
extern void _ZN9S19596C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19596C15__9S19596C13[] = {
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(24,16),
  -4,
  ABISELECT(-24,-20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19596C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C15D1Ev,_ZTv0_n12_N9S19596C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C15D0Ev,_ZTv0_n12_N9S19596C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev)();
extern void _ZN8S19596C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev)();
extern void _ZN8S19596C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C39S19596C15__A2__9S19596C13[] = {
  -4,
  ABISELECT(-24,-20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S19596C39S19596C15__A2__9S19596C13[] = {
  ABISELECT(24,20),
  ABISELECT(24,20),
  (VTBL_ENTRY)&(_ZTI8S19596C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19596C15D1Ev,_ZTv0_n12_N9S19596C15D1Ev)();
extern void ABISELECT(_ZThn24_N9S19596C15D1Ev,_ZThn16_N9S19596C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19596C15D0Ev,_ZTv0_n12_N9S19596C15D0Ev)();
extern void ABISELECT(_ZThn24_N9S19596C15D0Ev,_ZThn16_N9S19596C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C8__9S19596C15__9S19596C13[] = {
  0,
  ABISELECT(-28,-20),
  ABISELECT(-48,-36),
  ABISELECT(16,8),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S19596C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C15D1Ev,_ZTv0_n12_N9S19596C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C15D0Ev,_ZTv0_n12_N9S19596C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19596C15D1Ev,_ZTv0_n12_N9S19596C15D1Ev)();
extern void ABISELECT(_ZThn40_N9S19596C15D1Ev,_ZThn24_N9S19596C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19596C15D0Ev,_ZTv0_n12_N9S19596C15D0Ev)();
extern void ABISELECT(_ZThn40_N9S19596C15D0Ev,_ZThn24_N9S19596C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C2__9S19596C15__9S19596C13[] = {
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S19596C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C15D1Ev,_ZTv0_n12_N9S19596C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C15D0Ev,_ZTv0_n12_N9S19596C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19596C15D1Ev,_ZTv0_n12_N9S19596C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19596C15D0Ev,_ZTv0_n12_N9S19596C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S19596C15__9S19596C13[] = {
  ABISELECT(24,20),
  ABISELECT(24,20),
  (VTBL_ENTRY)&(_ZTI9S19596C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C15D1Ev,_ZTv0_n12_N9S19596C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C15D0Ev,_ZTv0_n12_N9S19596C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19596C15D1Ev,_ZTv0_n16_N9S19596C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S19596C15D1Ev,_ZThn36_N9S19596C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19596C15D0Ev,_ZTv0_n16_N9S19596C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S19596C15D0Ev,_ZThn36_N9S19596C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19596C10__9S19596C15__9S19596C13[] = {
  ABISELECT(-56,-36),
  ABISELECT(-60,-40),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S19596C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19596C15D1Ev,_ZTv0_n16_N9S19596C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19596C15D0Ev,_ZTv0_n16_N9S19596C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C8D1Ev,_ZTv0_n12_N8S19596C8D1Ev)();
extern void _ZN8S19596C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C8D0Ev,_ZTv0_n12_N8S19596C8D0Ev)();
extern void _ZN8S19596C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C8__9S19596C13[] = {
  0,
  ABISELECT(-28,-20),
  ABISELECT(-48,-36),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C8D1Ev,_ZTv0_n12_N8S19596C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C8D0Ev,_ZTv0_n12_N8S19596C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C8D1Ev,_ZTv0_n12_N8S19596C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19596C8D1Ev,_ZThn8_N8S19596C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C8D0Ev,_ZTv0_n12_N8S19596C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S19596C8D0Ev,_ZThn8_N8S19596C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C2__8S19596C8__9S19596C13[] = {
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19596C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C8D1Ev,_ZTv0_n12_N8S19596C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C8D0Ev,_ZTv0_n12_N8S19596C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C8D1Ev,_ZTv0_n12_N8S19596C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19596C8D0Ev,_ZTv0_n12_N8S19596C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S19596C8__9S19596C13[] = {
  ABISELECT(48,36),
  ABISELECT(48,36),
  (VTBL_ENTRY)&(_ZTI8S19596C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C8D1Ev,_ZTv0_n12_N8S19596C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C8D0Ev,_ZTv0_n12_N8S19596C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C9D1Ev,_ZTv0_n12_N8S19596C9D1Ev)();
extern void _ZN8S19596C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C9D0Ev,_ZTv0_n12_N8S19596C9D0Ev)();
extern void _ZN8S19596C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C9__9S19596C13[] = {
  ABISELECT(-28,-20),
  ABISELECT(-48,-36),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C9D1Ev,_ZTv0_n12_N8S19596C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C9D0Ev,_ZTv0_n12_N8S19596C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C9D1Ev,_ZTv0_n12_N8S19596C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19596C9D1Ev,_ZThn8_N8S19596C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C9D0Ev,_ZTv0_n12_N8S19596C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S19596C9D0Ev,_ZThn8_N8S19596C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C2__8S19596C9__9S19596C13[] = {
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19596C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C9D1Ev,_ZTv0_n12_N8S19596C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C9D0Ev,_ZTv0_n12_N8S19596C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C9D1Ev,_ZTv0_n12_N8S19596C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19596C9D0Ev,_ZTv0_n12_N8S19596C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S19596C9__9S19596C13[] = {
  ABISELECT(48,36),
  ABISELECT(48,36),
  (VTBL_ENTRY)&(_ZTI8S19596C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C9D1Ev,_ZTv0_n12_N8S19596C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C9D0Ev,_ZTv0_n12_N8S19596C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev)();
extern void _ZN8S19596C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev)();
extern void _ZN8S19596C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C2__A1__9S19596C13[] = {
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev)();
extern void _ZN8S19596C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev)();
extern void _ZN8S19596C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C38S19596C2__A1__9S19596C13[] = {
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S19596C38S19596C2__A1__9S19596C13[] = {
  ABISELECT(64,44),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S19596C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S19596C2__A1__9S19596C13[] = {
  ABISELECT(64,44),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S19596C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev),
};
extern void _ZN9S19596C10D1Ev();
extern void _ZN9S19596C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19596C10__9S19596C13[] = {
  ABISELECT(-60,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19596C10[0]),
  (VTBL_ENTRY)&_ZN9S19596C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19596C10D0Ev,
};
static  VTT_ENTRY vtt_S19596C13[] = {
  {&(_ZTV9S19596C13[11]),  11,47},
  {&(_tg__ZTV9S19596C14__9S19596C13[5]),  5,7},
  {&(_tg__ZTV8S19596C29S19596C14__9S19596C13[5]),  5,7},
  {&(_tg__ZTV8S19596C38S19596C29S19596C14__9S19596C13[5]),  5,7},
  {&(_tg__ZTV8S19596C38S19596C29S19596C14__9S19596C13[5]),  5,7},
  {&(_tg__ZTV8S19596C29S19596C14__9S19596C13[5]),  5,7},
  {&(_tg__ZTV9S19596C14__9S19596C13[5]),  5,7},
  {&(_ZTV9S19596C13[11]),  11,47},
  {&(_ZTV9S19596C13[23]),  23,47},
  {&(_ZTV9S19596C13[32]),  32,47},
  {&(_ZTV9S19596C13[32]),  32,47},
  {&(_ZTV9S19596C13[39]),  39,47},
  {&(_ZTV9S19596C13[45]),  45,47},
  {&(_tg__ZTV9S19596C15__9S19596C13[10]),  10,12},
  {&(_tg__ZTV8S19596C39S19596C15__A2__9S19596C13[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S19596C39S19596C15__A2__9S19596C13[3]),  3,5},
  {&(_tg__ZTV8S19596C8__9S19596C15__9S19596C13[7]),  7,9},
  {&(_tg__ZTV8S19596C8__9S19596C15__9S19596C13[7]),  7,9},
  {&(_tg__ZTV8S19596C2__9S19596C15__9S19596C13[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__9S19596C15__9S19596C13[3]),  3,5},
  {&(_tg__ZTV9S19596C10__9S19596C15__9S19596C13[4]),  4,6},
  {&(_tg__ZTV8S19596C8__9S19596C13[7]),  7,9},
  {&(_tg__ZTV8S19596C8__9S19596C13[7]),  7,9},
  {&(_tg__ZTV8S19596C2__8S19596C8__9S19596C13[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S19596C8__9S19596C13[3]),  3,5},
  {&(_tg__ZTV8S19596C9__9S19596C13[6]),  6,8},
  {&(_tg__ZTV8S19596C2__8S19596C9__9S19596C13[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S19596C9__9S19596C13[3]),  3,5},
  {&(_tg__ZTV8S19596C2__A1__9S19596C13[5]),  5,7},
  {&(_tg__ZTV8S19596C38S19596C2__A1__9S19596C13[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S19596C38S19596C2__A1__9S19596C13[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S19596C2__A1__9S19596C13[3]),  3,5},
  {&(_tg__ZTV9S19596C10__9S19596C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19596C13[];
extern  VTBL_ENTRY _ZTV9S19596C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19596C13[];
static VTBL_ENTRY alt_thunk_names136[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C9D0Ev,_ZTv0_n12_N8S19596C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19596C9D0Ev,_ZThn8_N8S19596C9D0Ev),
  (VTBL_ENTRY)_ZN8S19596C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C9D1Ev,_ZTv0_n12_N8S19596C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19596C9D1Ev,_ZThn8_N8S19596C9D1Ev),
  (VTBL_ENTRY)_ZN8S19596C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C8D0Ev,_ZTv0_n12_N8S19596C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19596C8D0Ev,_ZThn8_N8S19596C8D0Ev),
  (VTBL_ENTRY)_ZN8S19596C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C8D1Ev,_ZTv0_n12_N8S19596C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19596C8D1Ev,_ZThn8_N8S19596C8D1Ev),
  (VTBL_ENTRY)_ZN8S19596C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19596C15D0Ev,_ZTv0_n16_N9S19596C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19596C15D0Ev,_ZThn36_N9S19596C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19596C15D1Ev,_ZTv0_n16_N9S19596C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19596C15D1Ev,_ZThn36_N9S19596C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19596C15D0Ev,_ZTv0_n12_N9S19596C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19596C15D0Ev,_ZThn24_N9S19596C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19596C15D0Ev,_ZThn16_N9S19596C15D0Ev),
  (VTBL_ENTRY)_ZN9S19596C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19596C15D1Ev,_ZTv0_n12_N9S19596C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19596C15D1Ev,_ZThn24_N9S19596C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19596C15D1Ev,_ZThn16_N9S19596C15D1Ev),
  (VTBL_ENTRY)_ZN9S19596C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S19596C3D0Ev,
  (VTBL_ENTRY)_ZN8S19596C3D0Ev,
  (VTBL_ENTRY)_ZN8S19596C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S19596C3D1Ev,
  (VTBL_ENTRY)_ZN8S19596C3D1Ev,
  (VTBL_ENTRY)_ZN8S19596C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev), // 
  (VTBL_ENTRY)_ZN8S19596C2D0Ev,
  (VTBL_ENTRY)_ZN8S19596C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev), // 
  (VTBL_ENTRY)_ZN8S19596C2D1Ev,
  (VTBL_ENTRY)_ZN8S19596C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19596C13D0Ev,_ZTv0_n16_N9S19596C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19596C13D0Ev,_ZThn56_N9S19596C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19596C13D1Ev,_ZTv0_n16_N9S19596C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19596C13D1Ev,_ZThn56_N9S19596C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19596C13D0Ev,_ZTv0_n12_N9S19596C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19596C13D0Ev,_ZThn44_N9S19596C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19596C13D0Ev,_ZThn36_N9S19596C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19596C13D0Ev,_ZThn20_N9S19596C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19596C13D1Ev,_ZTv0_n12_N9S19596C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19596C13D1Ev,_ZThn44_N9S19596C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19596C13D1Ev,_ZThn36_N9S19596C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19596C13D1Ev,_ZThn20_N9S19596C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19596C13 = {  "S19596C13", // class name
  bases_S19596C13, 17,
  &(vtc_S19596C13[0]), // expected_vtbl_contents
  &(vtt_S19596C13[0]), // expected_vtt_contents
  ABISELECT(96,64), // object size
  NSPAIRA(_ZTI9S19596C13),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19596C13),47, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19596C13),33, //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  S19596C1  : virtual S19596C2 , virtual S19596C7 , S19596C10 , S19596C11 , virtual S19596C13 {
  virtual  ~S19596C1(); // _ZN8S19596C1D2Ev
  S19596C1(); // tgen
};
//SIG(1 S19596C1) C1{ VBC2{ BC3{ VBC4{ vd m} VBC5{ m Fi} BC6{ m} Fi} Fi} VBC7{ BC8{ VBC9{ VBC2 BC6} FC5} BC5 Fp} BC10{ VBC5 vd} BC11{ VBC12{ VBC4} Fi} VBC13{ BC14{ BC2} VBC15{ VBC5 VBC8 VBC10 VBC6 BC3 vd Fi Fp} vd Fi} vd}


 S19596C1 ::~S19596C1(){ note_dtor("S19596C1", this);}
S19596C1 ::S19596C1(){ note_ctor("S19596C1", this);} // tgen

static void Test_S19596C1()
{
  extern Class_Descriptor cd_S19596C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,23)];
    init_test(&cd_S19596C1, buf);
    S19596C1 *dp, &lv = *(dp=new (buf) S19596C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,88), "sizeof(S19596C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19596C1)");
    /*is_ambiguous_... S19596C1::S19596C2 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S19596C3*)(S19596C2*), ABISELECT(24,12), "S19596C1");
    check_base_class_offset(lv, (S7883C3_nt*)(S19596C12*), ABISELECT(24,12), "S19596C1");
    check_base_class_offset(lv, (S7883C3_nt*)(S19596C3*)(S19596C2*)(S19596C14*)(S19596C13*), ABISELECT(24,12), "S19596C1");
    /*is_ambiguous_... S19596C15::S19596C3 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S19596C3*)(S19596C15*), ABISELECT(24,12), "S19596C1");
    /*is_ambiguous_... S19596C1::S19596C2 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19596C3*)(S19596C2*), ABISELECT(40,24), "S19596C1");
    /*is_ambiguous_... S19596C1::S19596C10 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19596C10*), ABISELECT(40,24), "S19596C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S19596C3*)(S19596C2*)(S19596C14*)(S19596C13*), ABISELECT(40,24), "S19596C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S19596C15*), ABISELECT(40,24), "S19596C1");
    /*is_ambiguous_... S19596C1::S19596C10 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19596C10*), ABISELECT(40,24), "S19596C1");
    /*is_ambiguous_... S19596C15::S19596C3 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19596C3*)(S19596C15*), ABISELECT(40,24), "S19596C1");
    /*is_ambiguous_... S19596C1::S19596C2 */ AMB_check_base_class_offset(lv, (S4677C37*)(S19596C3*)(S19596C2*), ABISELECT(24,12), "S19596C1");
    /*is_ambiguous_... S19596C1::S19596C2 */ AMB_check_base_class_offset(lv, (S19596C3*)(S19596C2*), ABISELECT(24,12), "S19596C1");
    /*is_ambiguous_... S19596C1::S19596C2 */ AMB_check_base_class_offset(lv, (S19596C2*), ABISELECT(24,12), "S19596C1");
    check_base_class_offset(lv, (S19596C2*)(S19596C9*), ABISELECT(24,12), "S19596C1");
    /*is_ambiguous_... S19596C9::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S19596C9*), ABISELECT(48,28), "S19596C1");
    check_base_class_offset(lv, (S19596C9*)(S19596C8*)(S19596C7*), ABISELECT(48,28), "S19596C1");
    /*is_ambiguous_... S19596C1::S19596C8 */ AMB_check_base_class_offset(lv, (S19596C9*)(S19596C8*), ABISELECT(48,28), "S19596C1");
    check_base_class_offset(lv, (S19596C8*)(S19596C7*), ABISELECT(48,28), "S19596C1");
    /*is_ambiguous_... S19596C7::S3216C8_nt */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19596C7*), ABISELECT(60,36), "S19596C1");
    check_base_class_offset(lv, (S19596C7*), ABISELECT(48,28), "S19596C1");
    /*is_ambiguous_... S19596C1::S19596C10 */ AMB_check_base_class_offset(lv, (S19596C10*), 0, "S19596C1");
    check_base_class_offset(lv, (S19596C12*)(S19596C11*), ABISELECT(8,4), "S19596C1");
    check_base_class_offset(lv, (S19596C11*), ABISELECT(8,4), "S19596C1");
    check_base_class_offset(lv, (S4677C37*)(S19596C3*)(S19596C2*)(S19596C14*)(S19596C13*), ABISELECT(72,44), "S19596C1");
    check_base_class_offset(lv, (S19596C3*)(S19596C2*)(S19596C14*)(S19596C13*), ABISELECT(72,44), "S19596C1");
    check_base_class_offset(lv, (S19596C2*)(S19596C14*)(S19596C13*), ABISELECT(72,44), "S19596C1");
    check_base_class_offset(lv, (S19596C14*)(S19596C13*), ABISELECT(72,44), "S19596C1");
    check_base_class_offset(lv, (S19596C8*)(S19596C15*), ABISELECT(120,76), "S19596C1");
    check_base_class_offset(lv, (S19596C10*)(S19596C15*), ABISELECT(136,84), "S19596C1");
    /*is_ambiguous_... S19596C15::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S19596C15*), 0, "S19596C1");
    /*is_ambiguous_... S19596C15::S19596C3 */ AMB_check_base_class_offset(lv, (S4677C37*)(S19596C3*)(S19596C15*), ABISELECT(96,60), "S19596C1");
    /*is_ambiguous_... S19596C15::S19596C3 */ AMB_check_base_class_offset(lv, (S19596C3*)(S19596C15*), ABISELECT(96,60), "S19596C1");
    check_base_class_offset(lv, (S19596C15*)(S19596C13*), ABISELECT(96,60), "S19596C1");
    check_base_class_offset(lv, (S19596C13*), ABISELECT(72,44), "S19596C1");
    test_class_info(&lv, &cd_S19596C1);
    dp->~S19596C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19596C1(Test_S19596C1, "S19596C1", ABISELECT(144,88));

#else // __cplusplus

extern void _ZN8S19596C1C1Ev();
extern void _ZN8S19596C1D2Ev();
Name_Map name_map_S19596C1[] = {
  NSPAIR(_ZN8S19596C1C1Ev),
  NSPAIR(_ZN8S19596C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19596C3;
extern VTBL_ENTRY _ZTI8S19596C3[];
extern  VTBL_ENTRY _ZTV8S19596C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C3[];
extern Class_Descriptor cd_S19596C2;
extern VTBL_ENTRY _ZTI8S19596C2[];
extern  VTBL_ENTRY _ZTV8S19596C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C2[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19596C9;
extern VTBL_ENTRY _ZTI8S19596C9[];
extern  VTBL_ENTRY _ZTV8S19596C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C9[];
extern Class_Descriptor cd_S19596C8;
extern VTBL_ENTRY _ZTI8S19596C8[];
extern  VTBL_ENTRY _ZTV8S19596C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C8[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S19596C7;
extern VTBL_ENTRY _ZTI8S19596C7[];
extern  VTBL_ENTRY _ZTV8S19596C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C7[];
extern Class_Descriptor cd_S19596C10;
extern VTBL_ENTRY _ZTI9S19596C10[];
extern  VTBL_ENTRY _ZTV9S19596C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19596C10[];
extern Class_Descriptor cd_S19596C12;
extern VTBL_ENTRY _ZTI9S19596C12[];
extern  VTBL_ENTRY _ZTV9S19596C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19596C12[];
extern Class_Descriptor cd_S19596C11;
extern VTBL_ENTRY _ZTI9S19596C11[];
extern  VTBL_ENTRY _ZTV9S19596C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19596C11[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19596C3;
extern VTBL_ENTRY _ZTI8S19596C3[];
extern  VTBL_ENTRY _ZTV8S19596C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C3[];
extern Class_Descriptor cd_S19596C2;
extern VTBL_ENTRY _ZTI8S19596C2[];
extern  VTBL_ENTRY _ZTV8S19596C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C2[];
extern Class_Descriptor cd_S19596C14;
extern VTBL_ENTRY _ZTI9S19596C14[];
extern  VTBL_ENTRY _ZTV9S19596C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19596C14[];
extern Class_Descriptor cd_S19596C8;
extern VTBL_ENTRY _ZTI8S19596C8[];
extern  VTBL_ENTRY _ZTV8S19596C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C8[];
extern Class_Descriptor cd_S19596C10;
extern VTBL_ENTRY _ZTI9S19596C10[];
extern  VTBL_ENTRY _ZTV9S19596C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19596C10[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19596C3;
extern VTBL_ENTRY _ZTI8S19596C3[];
extern  VTBL_ENTRY _ZTV8S19596C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C3[];
extern Class_Descriptor cd_S19596C15;
extern VTBL_ENTRY _ZTI9S19596C15[];
extern  VTBL_ENTRY _ZTV9S19596C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19596C15[];
extern Class_Descriptor cd_S19596C13;
extern VTBL_ENTRY _ZTI9S19596C13[];
extern  VTBL_ENTRY _ZTV9S19596C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19596C13[];
static Base_Class bases_S19596C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    3, //immediately_derived
  0, 0},
  {&cd_S19596C3,    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
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19596C2,    ABISELECT(24,12), //bcp->offset
    22, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19596C9,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19596C8,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3216C8_nt,    ABISELECT(60,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19596C7,    ABISELECT(48,28), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19596C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19596C12,    ABISELECT(8,4), //bcp->offset
    -1, //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
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19596C11,    ABISELECT(8,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4677C37,    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, 0},
  {&cd_S19596C3,    ABISELECT(72,44), //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
    12, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19596C2,    ABISELECT(72,44), //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
    13, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19596C14,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19596C8,    ABISELECT(120,76), //bcp->offset
    63, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19596C10,    ABISELECT(136,84), //bcp->offset
    72, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    21, //immediately_derived
  0, 0},
  {&cd_S19596C3,    ABISELECT(96,60), //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
    10, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19596C15,    ABISELECT(96,60), //bcp->offset
    51, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19596C13,    ABISELECT(72,44), //bcp->offset
    38, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19596C1[];
extern void _ZN8S19596C1D1Ev();
extern void _ZN8S19596C1D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19596C1D1Ev,_ZTv0_n12_N8S19596C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S19596C1D1Ev,_ZThn4_N8S19596C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C1D0Ev,_ZTv0_n12_N8S19596C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S19596C1D0Ev,_ZThn4_N8S19596C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C1D1Ev,_ZTv0_n12_N8S19596C1D1Ev)();
extern void ABISELECT(_ZThn24_N8S19596C1D1Ev,_ZThn12_N8S19596C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C1D0Ev,_ZTv0_n12_N8S19596C1D0Ev)();
extern void ABISELECT(_ZThn24_N8S19596C1D0Ev,_ZThn12_N8S19596C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C1D1Ev,_ZTv0_n12_N8S19596C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S19596C1D1Ev,_ZThn28_N8S19596C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C1D0Ev,_ZTv0_n12_N8S19596C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S19596C1D0Ev,_ZThn28_N8S19596C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C1D1Ev,_ZTv0_n12_N8S19596C1D1Ev)();
extern void ABISELECT(_ZThn72_N8S19596C1D1Ev,_ZThn44_N8S19596C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C1D0Ev,_ZTv0_n12_N8S19596C1D0Ev)();
extern void ABISELECT(_ZThn72_N8S19596C1D0Ev,_ZThn44_N8S19596C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C1D1Ev,_ZTv0_n12_N8S19596C1D1Ev)();
extern void ABISELECT(_ZThn96_N8S19596C1D1Ev,_ZThn60_N8S19596C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C1D0Ev,_ZTv0_n12_N8S19596C1D0Ev)();
extern void ABISELECT(_ZThn96_N8S19596C1D0Ev,_ZThn60_N8S19596C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C1D1Ev,_ZTv0_n12_N8S19596C1D1Ev)();
extern void ABISELECT(_ZThn120_N8S19596C1D1Ev,_ZThn76_N8S19596C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C1D0Ev,_ZTv0_n12_N8S19596C1D0Ev)();
extern void ABISELECT(_ZThn120_N8S19596C1D0Ev,_ZThn76_N8S19596C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19596C1D1Ev,_ZTv0_n16_N8S19596C1D1Ev)();
extern void ABISELECT(_ZThn136_N8S19596C1D1Ev,_ZThn84_N8S19596C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19596C1D0Ev,_ZTv0_n16_N8S19596C1D0Ev)();
extern void ABISELECT(_ZThn136_N8S19596C1D0Ev,_ZThn84_N8S19596C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19596C1[] = {
  0,
  ABISELECT(136,84),
  ABISELECT(120,76),
  ABISELECT(96,60),
  ABISELECT(72,44),
  ABISELECT(8,4),
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C1[0]),
  (VTBL_ENTRY)&_ZN8S19596C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19596C1D0Ev,
  0,
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19596C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C1D1Ev,_ZTv0_n12_N8S19596C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C1D0Ev,_ZTv0_n12_N8S19596C1D0Ev),
  ABISELECT(16,12),
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19596C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C1D1Ev,_ZTv0_n12_N8S19596C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C1D0Ev,_ZTv0_n12_N8S19596C1D0Ev),
  0,
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19596C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C1D1Ev,_ZTv0_n12_N8S19596C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C1D0Ev,_ZTv0_n12_N8S19596C1D0Ev),
  ABISELECT(-72,-44),
  ABISELECT(64,40),
  ABISELECT(-48,-32),
  ABISELECT(-24,-16),
  ABISELECT(48,32),
  ABISELECT(24,16),
  ABISELECT(-32,-20),
  ABISELECT(-48,-32),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S19596C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C1D1Ev,_ZTv0_n12_N8S19596C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C1D0Ev,_ZTv0_n12_N8S19596C1D0Ev),
  ABISELECT(-96,-60),
  ABISELECT(40,24),
  ABISELECT(-72,-48),
  ABISELECT(-48,-32),
  ABISELECT(24,16),
  ABISELECT(-56,-36),
  ABISELECT(-72,-48),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S19596C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C1D1Ev,_ZTv0_n12_N8S19596C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C1D0Ev,_ZTv0_n12_N8S19596C1D0Ev),
  ABISELECT(-72,-48),
  ABISELECT(-80,-52),
  ABISELECT(-96,-64),
  ABISELECT(-96,-64),
  ABISELECT(-120,-76),
  ABISELECT(-120,-76),
  (VTBL_ENTRY)&(_ZTI8S19596C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C1D1Ev,_ZTv0_n12_N8S19596C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C1D0Ev,_ZTv0_n12_N8S19596C1D0Ev),
  ABISELECT(-136,-84),
  ABISELECT(-96,-60),
  ABISELECT(-136,-84),
  (VTBL_ENTRY)&(_ZTI8S19596C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19596C1D1Ev,_ZTv0_n16_N8S19596C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19596C1D0Ev,_ZTv0_n16_N8S19596C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19596C1[];
extern void _ZN9S19596C10D1Ev();
extern void _ZN9S19596C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19596C10__A__8S19596C1[] = {
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19596C10[0]),
  (VTBL_ENTRY)&_ZN9S19596C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19596C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19596C11D1Ev,_ZTv0_n12_N9S19596C11D1Ev)();
extern void _ZN9S19596C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19596C11D0Ev,_ZTv0_n12_N9S19596C11D0Ev)();
extern void _ZN9S19596C11D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19596C11__8S19596C1[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19596C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C11D1Ev,_ZTv0_n12_N9S19596C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C11D0Ev,_ZTv0_n12_N9S19596C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19596C11D1Ev,_ZTv0_n12_N9S19596C11D1Ev)();
extern void ABISELECT(_ZThn16_N9S19596C11D1Ev,_ZThn8_N9S19596C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19596C11D0Ev,_ZTv0_n12_N9S19596C11D0Ev)();
extern void ABISELECT(_ZThn16_N9S19596C11D0Ev,_ZThn8_N9S19596C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S19596C11__8S19596C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19596C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C11D1Ev,_ZTv0_n12_N9S19596C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C11D0Ev,_ZTv0_n12_N9S19596C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev)();
extern void _ZN8S19596C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev)();
extern void _ZN8S19596C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C2__8S19596C1[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev)();
extern void _ZN8S19596C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev)();
extern void _ZN8S19596C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C38S19596C2__8S19596C1[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C7D1Ev,_ZTv0_n12_N8S19596C7D1Ev)();
extern void _ZN8S19596C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C7D0Ev,_ZTv0_n12_N8S19596C7D0Ev)();
extern void _ZN8S19596C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C7__8S19596C1[] = {
  0,
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C7D1Ev,_ZTv0_n12_N8S19596C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C7D0Ev,_ZTv0_n12_N8S19596C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C8D1Ev,_ZTv0_n12_N8S19596C8D1Ev)();
extern void _ZN8S19596C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C8D0Ev,_ZTv0_n12_N8S19596C8D0Ev)();
extern void _ZN8S19596C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C88S19596C7__8S19596C1[] = {
  0,
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C8D1Ev,_ZTv0_n12_N8S19596C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C8D0Ev,_ZTv0_n12_N8S19596C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C8D1Ev,_ZTv0_n12_N8S19596C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19596C8D0Ev,_ZTv0_n12_N8S19596C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19596C2__8S19596C88S19596C7__8S19596C1[] = {
  ABISELECT(16,12),
  0,
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S19596C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C8D1Ev,_ZTv0_n12_N8S19596C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C8D0Ev,_ZTv0_n12_N8S19596C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C7D1Ev,_ZTv0_n12_N8S19596C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19596C7D0Ev,_ZTv0_n12_N8S19596C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19596C2__8S19596C7__8S19596C1[] = {
  ABISELECT(16,12),
  0,
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S19596C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C7D1Ev,_ZTv0_n12_N8S19596C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C7D0Ev,_ZTv0_n12_N8S19596C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C9D1Ev,_ZTv0_n12_N8S19596C9D1Ev)();
extern void _ZN8S19596C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C9D0Ev,_ZTv0_n12_N8S19596C9D0Ev)();
extern void _ZN8S19596C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C9__8S19596C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C9D1Ev,_ZTv0_n12_N8S19596C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C9D0Ev,_ZTv0_n12_N8S19596C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C9D1Ev,_ZTv0_n12_N8S19596C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19596C9D0Ev,_ZTv0_n12_N8S19596C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19596C2__8S19596C9__8S19596C1[] = {
  ABISELECT(16,12),
  0,
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S19596C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C9D1Ev,_ZTv0_n12_N8S19596C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C9D0Ev,_ZTv0_n12_N8S19596C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19596C12D1Ev,_ZTv0_n12_N9S19596C12D1Ev)();
extern void _ZN9S19596C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19596C12D0Ev,_ZTv0_n12_N9S19596C12D0Ev)();
extern void _ZN9S19596C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19596C12__8S19596C1[] = {
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19596C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C12D1Ev,_ZTv0_n12_N9S19596C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C12D0Ev,_ZTv0_n12_N9S19596C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19596C12D1Ev,_ZTv0_n12_N9S19596C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S19596C12D1Ev,_ZThn8_N9S19596C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19596C12D0Ev,_ZTv0_n12_N9S19596C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S19596C12D0Ev,_ZThn8_N9S19596C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S19596C12__8S19596C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19596C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C12D1Ev,_ZTv0_n12_N9S19596C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C12D0Ev,_ZTv0_n12_N9S19596C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19596C13D1Ev,_ZTv0_n12_N9S19596C13D1Ev)();
extern void _ZN9S19596C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19596C13D0Ev,_ZTv0_n12_N9S19596C13D0Ev)();
extern void _ZN9S19596C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19596C13__8S19596C1[] = {
  ABISELECT(-72,-44),
  ABISELECT(64,40),
  ABISELECT(-48,-32),
  ABISELECT(-24,-16),
  ABISELECT(48,32),
  ABISELECT(24,16),
  ABISELECT(-32,-20),
  ABISELECT(-48,-32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19596C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C13D1Ev,_ZTv0_n12_N9S19596C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C13D0Ev,_ZTv0_n12_N9S19596C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19596C14D1Ev,_ZTv0_n12_N9S19596C14D1Ev)();
extern void _ZN9S19596C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19596C14D0Ev,_ZTv0_n12_N9S19596C14D0Ev)();
extern void _ZN9S19596C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19596C149S19596C13__8S19596C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(-48,-32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19596C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C14D1Ev,_ZTv0_n12_N9S19596C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C14D0Ev,_ZTv0_n12_N9S19596C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev)();
extern void _ZN8S19596C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev)();
extern void _ZN8S19596C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C29S19596C149S19596C13__A1__8S19596C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(-48,-32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev)();
extern void _ZN8S19596C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev)();
extern void _ZN8S19596C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C38S19596C29S19596C149S19596C13__A1__8S19596C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(-48,-32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S19596C38S19596C29S19596C149S19596C13__A1__8S19596C1[] = {
  ABISELECT(48,32),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI8S19596C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S19596C29S19596C149S19596C13__A1__8S19596C1[] = {
  ABISELECT(48,32),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI8S19596C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19596C14D1Ev,_ZTv0_n12_N9S19596C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19596C14D0Ev,_ZTv0_n12_N9S19596C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S19596C149S19596C13__8S19596C1[] = {
  ABISELECT(48,32),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S19596C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C14D1Ev,_ZTv0_n12_N9S19596C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C14D0Ev,_ZTv0_n12_N9S19596C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19596C13D1Ev,_ZTv0_n12_N9S19596C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19596C13D0Ev,_ZTv0_n12_N9S19596C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19596C2__A1__9S19596C13__8S19596C1[] = {
  ABISELECT(16,12),
  0,
  ABISELECT(48,32),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S19596C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C13D1Ev,_ZTv0_n12_N9S19596C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C13D0Ev,_ZTv0_n12_N9S19596C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19596C13D1Ev,_ZTv0_n12_N9S19596C13D1Ev)();
extern void ABISELECT(_ZThn24_N9S19596C13D1Ev,_ZThn16_N9S19596C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19596C13D0Ev,_ZTv0_n12_N9S19596C13D0Ev)();
extern void ABISELECT(_ZThn24_N9S19596C13D0Ev,_ZThn16_N9S19596C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19596C15__9S19596C13__8S19596C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(40,24),
  ABISELECT(-72,-48),
  ABISELECT(-48,-32),
  ABISELECT(24,16),
  ABISELECT(-56,-36),
  ABISELECT(-72,-48),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S19596C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C13D1Ev,_ZTv0_n12_N9S19596C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C13D0Ev,_ZTv0_n12_N9S19596C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19596C13D1Ev,_ZTv0_n12_N9S19596C13D1Ev)();
extern void ABISELECT(_ZThn48_N9S19596C13D1Ev,_ZThn32_N9S19596C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19596C13D0Ev,_ZTv0_n12_N9S19596C13D0Ev)();
extern void ABISELECT(_ZThn48_N9S19596C13D0Ev,_ZThn32_N9S19596C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C8__9S19596C13__8S19596C1[] = {
  ABISELECT(-72,-48),
  ABISELECT(-80,-52),
  ABISELECT(-96,-64),
  ABISELECT(-96,-64),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S19596C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C13D1Ev,_ZTv0_n12_N9S19596C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C13D0Ev,_ZTv0_n12_N9S19596C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19596C13D1Ev,_ZTv0_n12_N9S19596C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19596C13D0Ev,_ZTv0_n12_N9S19596C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19596C9__9S19596C13__8S19596C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S19596C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C13D1Ev,_ZTv0_n12_N9S19596C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C13D0Ev,_ZTv0_n12_N9S19596C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19596C13D1Ev,_ZTv0_n16_N9S19596C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S19596C13D1Ev,_ZThn40_N9S19596C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19596C13D0Ev,_ZTv0_n16_N9S19596C13D0Ev)();
extern void ABISELECT(_ZThn64_N9S19596C13D0Ev,_ZThn40_N9S19596C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19596C10__9S19596C13__8S19596C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-96,-60),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19596C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19596C13D1Ev,_ZTv0_n16_N9S19596C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19596C13D0Ev,_ZTv0_n16_N9S19596C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19596C15D1Ev,_ZTv0_n12_N9S19596C15D1Ev)();
extern void _ZN9S19596C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19596C15D0Ev,_ZTv0_n12_N9S19596C15D0Ev)();
extern void _ZN9S19596C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19596C15__8S19596C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(40,24),
  ABISELECT(-72,-48),
  ABISELECT(-48,-32),
  ABISELECT(24,16),
  ABISELECT(-56,-36),
  ABISELECT(-72,-48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19596C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C15D1Ev,_ZTv0_n12_N9S19596C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C15D0Ev,_ZTv0_n12_N9S19596C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev)();
extern void _ZN8S19596C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev)();
extern void _ZN8S19596C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C39S19596C15__A2__8S19596C1[] = {
  ABISELECT(-56,-36),
  ABISELECT(-72,-48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S19596C39S19596C15__A2__8S19596C1[] = {
  ABISELECT(72,48),
  ABISELECT(72,48),
  (VTBL_ENTRY)&(_ZTI8S19596C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19596C15D1Ev,_ZTv0_n12_N9S19596C15D1Ev)();
extern void ABISELECT(_ZThn24_N9S19596C15D1Ev,_ZThn16_N9S19596C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19596C15D0Ev,_ZTv0_n12_N9S19596C15D0Ev)();
extern void ABISELECT(_ZThn24_N9S19596C15D0Ev,_ZThn16_N9S19596C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C8__9S19596C15__8S19596C1[] = {
  ABISELECT(-72,-48),
  ABISELECT(-80,-52),
  ABISELECT(-96,-64),
  ABISELECT(-96,-64),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S19596C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C15D1Ev,_ZTv0_n12_N9S19596C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C15D0Ev,_ZTv0_n12_N9S19596C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19596C15D1Ev,_ZTv0_n12_N9S19596C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19596C15D0Ev,_ZTv0_n12_N9S19596C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19596C9__9S19596C15__8S19596C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(48,32),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S19596C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C15D1Ev,_ZTv0_n12_N9S19596C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C15D0Ev,_ZTv0_n12_N9S19596C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19596C15D1Ev,_ZTv0_n12_N9S19596C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19596C15D0Ev,_ZTv0_n12_N9S19596C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19596C2__9S19596C15__8S19596C1[] = {
  ABISELECT(16,12),
  0,
  ABISELECT(72,48),
  ABISELECT(72,48),
  (VTBL_ENTRY)&(_ZTI9S19596C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C15D1Ev,_ZTv0_n12_N9S19596C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19596C15D0Ev,_ZTv0_n12_N9S19596C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19596C15D1Ev,_ZTv0_n16_N9S19596C15D1Ev)();
extern void ABISELECT(_ZThn40_N9S19596C15D1Ev,_ZThn24_N9S19596C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19596C15D0Ev,_ZTv0_n16_N9S19596C15D0Ev)();
extern void ABISELECT(_ZThn40_N9S19596C15D0Ev,_ZThn24_N9S19596C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19596C10__9S19596C15__8S19596C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-96,-60),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S19596C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19596C15D1Ev,_ZTv0_n16_N9S19596C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19596C15D0Ev,_ZTv0_n16_N9S19596C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C8D1Ev,_ZTv0_n12_N8S19596C8D1Ev)();
extern void _ZN8S19596C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19596C8D0Ev,_ZTv0_n12_N8S19596C8D0Ev)();
extern void _ZN8S19596C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19596C8__A1__8S19596C1[] = {
  ABISELECT(-72,-48),
  ABISELECT(-80,-52),
  ABISELECT(-96,-64),
  ABISELECT(-96,-64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19596C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C8D1Ev,_ZTv0_n12_N8S19596C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C8D0Ev,_ZTv0_n12_N8S19596C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C8D1Ev,_ZTv0_n12_N8S19596C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19596C8D0Ev,_ZTv0_n12_N8S19596C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19596C9__8S19596C8__A1__8S19596C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(72,48),
  ABISELECT(72,48),
  (VTBL_ENTRY)&(_ZTI8S19596C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C8D1Ev,_ZTv0_n12_N8S19596C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C8D0Ev,_ZTv0_n12_N8S19596C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19596C8D1Ev,_ZTv0_n12_N8S19596C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19596C8D0Ev,_ZTv0_n12_N8S19596C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19596C2__8S19596C8__A1__8S19596C1[] = {
  ABISELECT(16,12),
  0,
  ABISELECT(96,64),
  ABISELECT(96,64),
  (VTBL_ENTRY)&(_ZTI8S19596C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C8D1Ev,_ZTv0_n12_N8S19596C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19596C8D0Ev,_ZTv0_n12_N8S19596C8D0Ev),
};
extern void _ZN9S19596C10D1Ev();
extern void _ZN9S19596C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19596C10__A1__8S19596C1[] = {
  ABISELECT(-96,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19596C10[0]),
  (VTBL_ENTRY)&_ZN9S19596C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19596C10D0Ev,
};
static  VTT_ENTRY vtt_S19596C1[] = {
  {&(_ZTV8S19596C1[13]),  13,78},
  {&(_tg__ZTV9S19596C10__A__8S19596C1[3]),  3,5},
  {&(_tg__ZTV9S19596C11__8S19596C1[5]),  5,7},
  {&(_tg__ZTV9S19596C11__8S19596C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__9S19596C11__8S19596C1[3]),  3,5},
  {&(_ZTV8S19596C1[27]),  27,78},
  {&(_ZTV8S19596C1[27]),  27,78},
  {&(_ZTV8S19596C1[36]),  36,78},
  {&(_ZTV8S19596C1[36]),  36,78},
  {&(_ZTV8S19596C1[20]),  20,78},
  {&(_ZTV8S19596C1[20]),  20,78},
  {&(_ZTV8S19596C1[49]),  49,78},
  {&(_ZTV8S19596C1[61]),  61,78},
  {&(_ZTV8S19596C1[70]),  70,78},
  {&(_ZTV8S19596C1[76]),  76,78},
  {&(_tg__ZTV8S19596C2__8S19596C1[5]),  5,7},
  {&(_tg__ZTV8S19596C38S19596C2__8S19596C1[5]),  5,7},
  {&(_tg__ZTV8S19596C38S19596C2__8S19596C1[5]),  5,7},
  {&(_tg__ZTV8S19596C2__8S19596C1[5]),  5,7},
  {&(_tg__ZTV8S19596C7__8S19596C1[7]),  7,9},
  {&(_tg__ZTV8S19596C88S19596C7__8S19596C1[7]),  7,9},
  {&(_tg__ZTV8S19596C88S19596C7__8S19596C1[7]),  7,9},
  {&(_tg__ZTV8S19596C2__8S19596C88S19596C7__8S19596C1[5]),  5,7},
  {&(_tg__ZTV8S19596C2__8S19596C88S19596C7__8S19596C1[5]),  5,7},
  {&(_tg__ZTV8S19596C7__8S19596C1[7]),  7,9},
  {&(_tg__ZTV8S19596C2__8S19596C7__8S19596C1[5]),  5,7},
  {&(_tg__ZTV8S19596C2__8S19596C7__8S19596C1[5]),  5,7},
  {&(_tg__ZTV8S19596C9__8S19596C1[6]),  6,8},
  {&(_tg__ZTV8S19596C2__8S19596C9__8S19596C1[5]),  5,7},
  {&(_tg__ZTV8S19596C2__8S19596C9__8S19596C1[5]),  5,7},
  {&(_tg__ZTV9S19596C12__8S19596C1[4]),  4,6},
  {&(_tg__ZTV10S7883C3_nt__9S19596C12__8S19596C1[3]),  3,5},
  {&(_tg__ZTV9S19596C13__8S19596C1[11]),  11,13},
  {&(_tg__ZTV9S19596C149S19596C13__8S19596C1[5]),  5,7},
  {&(_tg__ZTV8S19596C29S19596C149S19596C13__A1__8S19596C1[5]),  5,7},
  {&(_tg__ZTV8S19596C38S19596C29S19596C149S19596C13__A1__8S19596C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S19596C38S19596C29S19596C149S19596C13__A1__8S19596C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S19596C29S19596C149S19596C13__A1__8S19596C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__9S19596C149S19596C13__8S19596C1[3]),  3,5},
  {&(_tg__ZTV8S19596C2__A1__9S19596C13__8S19596C1[5]),  5,7},
  {&(_tg__ZTV9S19596C15__9S19596C13__8S19596C1[10]),  10,12},
  {&(_tg__ZTV8S19596C8__9S19596C13__8S19596C1[7]),  7,9},
  {&(_tg__ZTV8S19596C9__9S19596C13__8S19596C1[6]),  6,8},
  {&(_tg__ZTV8S19596C2__A1__9S19596C13__8S19596C1[5]),  5,7},
  {&(_tg__ZTV9S19596C10__9S19596C13__8S19596C1[4]),  4,6},
  {&(_tg__ZTV9S19596C15__8S19596C1[10]),  10,12},
  {&(_tg__ZTV8S19596C39S19596C15__A2__8S19596C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S19596C39S19596C15__A2__8S19596C1[3]),  3,5},
  {&(_tg__ZTV8S19596C8__9S19596C15__8S19596C1[7]),  7,9},
  {&(_tg__ZTV8S19596C9__9S19596C15__8S19596C1[6]),  6,8},
  {&(_tg__ZTV8S19596C2__9S19596C15__8S19596C1[5]),  5,7},
  {&(_tg__ZTV8S19596C2__9S19596C15__8S19596C1[5]),  5,7},
  {&(_tg__ZTV9S19596C10__9S19596C15__8S19596C1[4]),  4,6},
  {&(_tg__ZTV8S19596C8__A1__8S19596C1[7]),  7,9},
  {&(_tg__ZTV8S19596C9__8S19596C8__A1__8S19596C1[6]),  6,8},
  {&(_tg__ZTV8S19596C2__8S19596C8__A1__8S19596C1[5]),  5,7},
  {&(_tg__ZTV8S19596C2__8S19596C8__A1__8S19596C1[5]),  5,7},
  {&(_tg__ZTV9S19596C10__A1__8S19596C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19596C1[];
extern  VTBL_ENTRY _ZTV8S19596C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19596C1[];
static VTBL_ENTRY alt_thunk_names137[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19596C15D0Ev,_ZTv0_n16_N9S19596C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19596C15D0Ev,_ZThn24_N9S19596C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19596C15D1Ev,_ZTv0_n16_N9S19596C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19596C15D1Ev,_ZThn24_N9S19596C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19596C15D0Ev,_ZTv0_n12_N9S19596C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19596C15D0Ev,_ZThn16_N9S19596C15D0Ev),
  (VTBL_ENTRY)_ZN9S19596C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19596C15D1Ev,_ZTv0_n12_N9S19596C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19596C15D1Ev,_ZThn16_N9S19596C15D1Ev),
  (VTBL_ENTRY)_ZN9S19596C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19596C13D0Ev,_ZTv0_n16_N9S19596C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19596C13D0Ev,_ZThn40_N9S19596C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19596C13D1Ev,_ZTv0_n16_N9S19596C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19596C13D1Ev,_ZThn40_N9S19596C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19596C14D0Ev,_ZTv0_n12_N9S19596C14D0Ev), // 
  (VTBL_ENTRY)_ZN9S19596C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19596C14D1Ev,_ZTv0_n12_N9S19596C14D1Ev), // 
  (VTBL_ENTRY)_ZN9S19596C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19596C13D0Ev,_ZTv0_n12_N9S19596C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19596C13D0Ev,_ZThn32_N9S19596C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19596C13D0Ev,_ZThn16_N9S19596C13D0Ev),
  (VTBL_ENTRY)_ZN9S19596C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19596C13D1Ev,_ZTv0_n12_N9S19596C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19596C13D1Ev,_ZThn32_N9S19596C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19596C13D1Ev,_ZThn16_N9S19596C13D1Ev),
  (VTBL_ENTRY)_ZN9S19596C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19596C12D0Ev,_ZTv0_n12_N9S19596C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19596C12D0Ev,_ZThn8_N9S19596C12D0Ev),
  (VTBL_ENTRY)_ZN9S19596C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19596C12D1Ev,_ZTv0_n12_N9S19596C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19596C12D1Ev,_ZThn8_N9S19596C12D1Ev),
  (VTBL_ENTRY)_ZN9S19596C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C9D0Ev,_ZTv0_n12_N8S19596C9D0Ev), // 
  (VTBL_ENTRY)_ZN8S19596C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C9D1Ev,_ZTv0_n12_N8S19596C9D1Ev), // 
  (VTBL_ENTRY)_ZN8S19596C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C8D0Ev,_ZTv0_n12_N8S19596C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S19596C8D0Ev,
  (VTBL_ENTRY)_ZN8S19596C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C8D1Ev,_ZTv0_n12_N8S19596C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S19596C8D1Ev,
  (VTBL_ENTRY)_ZN8S19596C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C7D0Ev,_ZTv0_n12_N8S19596C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19596C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C7D1Ev,_ZTv0_n12_N8S19596C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19596C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C3D0Ev,_ZTv0_n12_N8S19596C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S19596C3D0Ev,
  (VTBL_ENTRY)_ZN8S19596C3D0Ev,
  (VTBL_ENTRY)_ZN8S19596C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C3D1Ev,_ZTv0_n12_N8S19596C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S19596C3D1Ev,
  (VTBL_ENTRY)_ZN8S19596C3D1Ev,
  (VTBL_ENTRY)_ZN8S19596C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C2D0Ev,_ZTv0_n12_N8S19596C2D0Ev), // 
  (VTBL_ENTRY)_ZN8S19596C2D0Ev,
  (VTBL_ENTRY)_ZN8S19596C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C2D1Ev,_ZTv0_n12_N8S19596C2D1Ev), // 
  (VTBL_ENTRY)_ZN8S19596C2D1Ev,
  (VTBL_ENTRY)_ZN8S19596C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19596C11D0Ev,_ZTv0_n12_N9S19596C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19596C11D0Ev,_ZThn8_N9S19596C11D0Ev),
  (VTBL_ENTRY)_ZN9S19596C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19596C11D1Ev,_ZTv0_n12_N9S19596C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19596C11D1Ev,_ZThn8_N9S19596C11D1Ev),
  (VTBL_ENTRY)_ZN9S19596C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19596C1D0Ev,_ZTv0_n16_N8S19596C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19596C1D0Ev,_ZThn84_N8S19596C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19596C1D1Ev,_ZTv0_n16_N8S19596C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19596C1D1Ev,_ZThn84_N8S19596C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C1D0Ev,_ZTv0_n12_N8S19596C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19596C1D0Ev,_ZThn76_N8S19596C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19596C1D0Ev,_ZThn60_N8S19596C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19596C1D0Ev,_ZThn44_N8S19596C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19596C1D0Ev,_ZThn28_N8S19596C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19596C1D0Ev,_ZThn12_N8S19596C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19596C1D0Ev,_ZThn4_N8S19596C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19596C1D1Ev,_ZTv0_n12_N8S19596C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19596C1D1Ev,_ZThn76_N8S19596C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19596C1D1Ev,_ZThn60_N8S19596C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19596C1D1Ev,_ZThn44_N8S19596C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19596C1D1Ev,_ZThn28_N8S19596C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19596C1D1Ev,_ZThn12_N8S19596C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19596C1D1Ev,_ZThn4_N8S19596C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19596C1 = {  "S19596C1", // class name
  bases_S19596C1, 24,
  &(vtc_S19596C1[0]), // expected_vtbl_contents
  &(vtt_S19596C1[0]), // expected_vtt_contents
  ABISELECT(144,88), // object size
  NSPAIRA(_ZTI8S19596C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19596C1),78, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19596C1),58, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names137,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21026C5  : S7246C4 {
};
//SIG(-1 S21026C5) C1{ BC2{ m Fi[10]}}



static void Test_S21026C5()
{
  extern Class_Descriptor cd_S21026C5;
  void *lvp;
  {
    int buf[11];
    init_test(&cd_S21026C5, buf);
    S21026C5 &lv = *(new (buf) S21026C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), 40, "sizeof(S21026C5)");
    check2(__alignof__(lv), 4, "__alignof__(S21026C5)");
    check_base_class_offset(lv, (S7246C4*), 0, "S21026C5");
    test_class_info(&lv, &cd_S21026C5);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21026C5(Test_S21026C5, "S21026C5", 40);

#else // __cplusplus

extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
static Base_Class bases_S21026C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21026C5[];
Class_Descriptor cd_S21026C5 = {  "S21026C5", // class name
  bases_S21026C5, 1,
  0, // no vftv
  0, //no vtt
  40, // object size
  NSPAIRA(_ZTI8S21026C5),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  S21026C8  : S7246C4 {
  int s21026c8f0;
};
//SIG(-1 S21026C8) C1{ BC2{ m Fi[10]} Fi}



static void Test_S21026C8()
{
  extern Class_Descriptor cd_S21026C8;
  void *lvp;
  {
    int buf[12];
    init_test(&cd_S21026C8, buf);
    S21026C8 &lv = *(new (buf) S21026C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), 44, "sizeof(S21026C8)");
    check2(__alignof__(lv), 4, "__alignof__(S21026C8)");
    check_base_class_offset(lv, (S7246C4*), 0, "S21026C8");
    check_field_offset(lv, s21026c8f0, 40, "S21026C8.s21026c8f0");
    test_class_info(&lv, &cd_S21026C8);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21026C8(Test_S21026C8, "S21026C8", 44);

#else // __cplusplus

extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
static Base_Class bases_S21026C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21026C8[];
Class_Descriptor cd_S21026C8 = {  "S21026C8", // class name
  bases_S21026C8, 1,
  0, // no vftv
  0, //no vtt
  44, // object size
  NSPAIRA(_ZTI8S21026C8),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  S21026C7  : S21026C8 {
  ::S21026C8 s21026c7f0;
};
//SIG(-1 S21026C7) C1{ BC2{ BC3{ m Fi[10]} Fi} FC2}



static void Test_S21026C7()
{
  extern Class_Descriptor cd_S21026C7;
  void *lvp;
  {
    int buf[23];
    init_test(&cd_S21026C7, buf);
    S21026C7 &lv = *(new (buf) S21026C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), 88, "sizeof(S21026C7)");
    check2(__alignof__(lv), 4, "__alignof__(S21026C7)");
    check_base_class_offset(lv, (S7246C4*)(S21026C8*), 0, "S21026C7");
    check_base_class_offset(lv, (S21026C8*), 0, "S21026C7");
    check_field_offset(lv, s21026c7f0, 44, "S21026C7.s21026c7f0");
    test_class_info(&lv, &cd_S21026C7);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21026C7(Test_S21026C7, "S21026C7", 88);

#else // __cplusplus

extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S21026C8;
extern VTBL_ENTRY _ZTI8S21026C8[];
static Base_Class bases_S21026C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S21026C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21026C7[];
Class_Descriptor cd_S21026C7 = {  "S21026C7", // class name
  bases_S21026C7, 2,
  0, // no vftv
  0, //no vtt
  88, // object size
  NSPAIRA(_ZTI8S21026C7),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21026C9  : virtual S21026C8 , virtual S21026C5 , virtual S21026C7 , S7246C4 {
  void *s21026c9f0;
  virtual  ~S21026C9(); // _ZN8S21026C9D2Ev
  S21026C9(); // tgen
};
//SIG(-1 S21026C9) C1{ VBC2{ BC3{ m Fi[10]} Fi} VBC4{ BC3} VBC5{ BC2 FC2} BC3 vd Fp}


 S21026C9 ::~S21026C9(){ note_dtor("S21026C9", this);}
S21026C9 ::S21026C9(){ note_ctor("S21026C9", this);} // tgen

static void Test_S21026C9()
{
  extern Class_Descriptor cd_S21026C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,56)];
    init_test(&cd_S21026C9, buf);
    S21026C9 *dp, &lv = *(dp=new (buf) S21026C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,220), "sizeof(S21026C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21026C9)");
    /*is_ambiguous_... S21026C9::S21026C8 */ AMB_check_base_class_offset(lv, (S7246C4*)(S21026C8*), ABISELECT(56,48), "S21026C9");
    /*is_ambiguous_... S21026C9::S21026C8 */ AMB_check_base_class_offset(lv, (S21026C8*), ABISELECT(56,48), "S21026C9");
    check_base_class_offset(lv, (S7246C4*)(S21026C5*), ABISELECT(100,92), "S21026C9");
    check_base_class_offset(lv, (S21026C5*), ABISELECT(100,92), "S21026C9");
    check_base_class_offset(lv, (S7246C4*)(S21026C8*)(S21026C7*), ABISELECT(140,132), "S21026C9");
    check_base_class_offset(lv, (S21026C8*)(S21026C7*), ABISELECT(140,132), "S21026C9");
    check_base_class_offset(lv, (S21026C7*), ABISELECT(140,132), "S21026C9");
    /*is_ambiguous_... S21026C9::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*), ABISELECT(8,4), "S21026C9");
    check_field_offset(lv, s21026c9f0, ABISELECT(48,44), "S21026C9.s21026c9f0");
    test_class_info(&lv, &cd_S21026C9);
    dp->~S21026C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21026C9(Test_S21026C9, "S21026C9", ABISELECT(232,220));

#else // __cplusplus

extern void _ZN8S21026C9C1Ev();
extern void _ZN8S21026C9D2Ev();
Name_Map name_map_S21026C9[] = {
  NSPAIR(_ZN8S21026C9C1Ev),
  NSPAIR(_ZN8S21026C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S21026C8;
extern VTBL_ENTRY _ZTI8S21026C8[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S21026C5;
extern VTBL_ENTRY _ZTI8S21026C5[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S21026C8;
extern VTBL_ENTRY _ZTI8S21026C8[];
extern Class_Descriptor cd_S21026C7;
extern VTBL_ENTRY _ZTI8S21026C7[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
static Base_Class bases_S21026C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S21026C8,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(100,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
    3, //immediately_derived
  0, 0},
  {&cd_S21026C5,    ABISELECT(100,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(140,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
    5, //immediately_derived
  0, 0},
  {&cd_S21026C8,    ABISELECT(140,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
    6, //immediately_derived
  0, 0},
  {&cd_S21026C7,    ABISELECT(140,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},
  {&cd_S7246C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21026C9[];
extern void _ZN8S21026C9D1Ev();
extern void _ZN8S21026C9D0Ev();
static  VTBL_ENTRY vtc_S21026C9[] = {
  ABISELECT(140,132),
  ABISELECT(100,92),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S21026C9[0]),
  (VTBL_ENTRY)&_ZN8S21026C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21026C9D0Ev,
};
extern VTBL_ENTRY _ZTV8S21026C9[];
static  VTT_ENTRY vtt_S21026C9[] = {
  {&(_ZTV8S21026C9[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S21026C9[];
extern  VTBL_ENTRY _ZTV8S21026C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21026C9[];
Class_Descriptor cd_S21026C9 = {  "S21026C9", // class name
  bases_S21026C9, 8,
  &(vtc_S21026C9[0]), // expected_vtbl_contents
  &(vtt_S21026C9[0]), // expected_vtt_contents
  ABISELECT(232,220), // object size
  NSPAIRA(_ZTI8S21026C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21026C9),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21026C9),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  S21026C3  : virtual S4677C37 , virtual S21026C5 , virtual S21026C7 , virtual S21026C9 {
  int s21026c3f0;
  ~S21026C3(); // tgen
  S21026C3(); // tgen
};
//SIG(-1 S21026C3) C1{ VBC2{ m} VBC3{ BC4{ m Fi[10]}} VBC5{ BC6{ BC4 Fi} FC6} VBC7{ VBC6 VBC3 VBC5 BC4 vd Fp} Fi}


S21026C3 ::~S21026C3(){ note_dtor("S21026C3", this);} // tgen
S21026C3 ::S21026C3(){ note_ctor("S21026C3", this);} // tgen

static void Test_S21026C3()
{
  extern Class_Descriptor cd_S21026C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(32,58)];
    init_test(&cd_S21026C3, buf);
    S21026C3 *dp, &lv = *(dp=new (buf) S21026C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(248,228), "sizeof(S21026C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21026C3)");
    check_base_class_offset(lv, (S4677C37*), 0, "S21026C3");
    check_base_class_offset(lv, (S7246C4*)(S21026C5*), ABISELECT(12,8), "S21026C3");
    check_base_class_offset(lv, (S21026C5*), ABISELECT(12,8), "S21026C3");
    check_base_class_offset(lv, (S21026C5*)(S21026C9*), ABISELECT(12,8), "S21026C3");
    check_base_class_offset(lv, (S7246C4*)(S21026C8*)(S21026C7*), ABISELECT(52,48), "S21026C3");
    check_base_class_offset(lv, (S21026C8*)(S21026C7*), ABISELECT(52,48), "S21026C3");
    check_base_class_offset(lv, (S21026C7*), ABISELECT(52,48), "S21026C3");
    check_base_class_offset(lv, (S21026C7*)(S21026C9*), ABISELECT(52,48), "S21026C3");
    /*is_ambiguous_... S21026C3::S21026C8 */ AMB_check_base_class_offset(lv, (S7246C4*)(S21026C8*), ABISELECT(200,184), "S21026C3");
    /*is_ambiguous_... S21026C9::S21026C8 */ AMB_check_base_class_offset(lv, (S21026C8*)(S21026C9*), ABISELECT(200,184), "S21026C3");
    /*is_ambiguous_... S21026C9::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*)(S21026C9*), ABISELECT(152,140), "S21026C3");
    check_base_class_offset(lv, (S21026C9*), ABISELECT(144,136), "S21026C3");
    check_field_offset(lv, s21026c3f0, ABISELECT(8,4), "S21026C3.s21026c3f0");
    test_class_info(&lv, &cd_S21026C3);
    dp->~S21026C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21026C3(Test_S21026C3, "S21026C3", ABISELECT(248,228));

#else // __cplusplus

extern void _ZN8S21026C3C1Ev();
extern void _ZN8S21026C3D1Ev();
Name_Map name_map_S21026C3[] = {
  NSPAIR(_ZN8S21026C3C1Ev),
  NSPAIR(_ZN8S21026C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S21026C5;
extern VTBL_ENTRY _ZTI8S21026C5[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S21026C8;
extern VTBL_ENTRY _ZTI8S21026C8[];
extern Class_Descriptor cd_S21026C7;
extern VTBL_ENTRY _ZTI8S21026C7[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S21026C8;
extern VTBL_ENTRY _ZTI8S21026C8[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S21026C9;
extern VTBL_ENTRY _ZTI8S21026C9[];
extern  VTBL_ENTRY _ZTV8S21026C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21026C9[];
static Base_Class bases_S21026C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    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
    2, //immediately_derived
  0, 0},
  {&cd_S21026C5,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(52,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_S21026C8,    ABISELECT(52,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
    5, //immediately_derived
  0, 0},
  {&cd_S21026C7,    ABISELECT(52,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(200,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
    7, //immediately_derived
  0, 0},
  {&cd_S21026C8,    ABISELECT(200,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
    9, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(152,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
    9, //immediately_derived
  0, 0},
  {&cd_S21026C9,    ABISELECT(144,136), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //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 _ZTI8S21026C3[];
extern void _ZN8S21026C3D1Ev();
extern void _ZN8S21026C3D0Ev();
extern void ABISELECT(_ZTv0_n48_N8S21026C3D1Ev,_ZTv0_n24_N8S21026C3D1Ev)();
extern void ABISELECT(_ZThn144_N8S21026C3D1Ev,_ZThn136_N8S21026C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21026C3D0Ev,_ZTv0_n24_N8S21026C3D0Ev)();
extern void ABISELECT(_ZThn144_N8S21026C3D0Ev,_ZThn136_N8S21026C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21026C3[] = {
  ABISELECT(200,184),
  ABISELECT(144,136),
  ABISELECT(52,48),
  ABISELECT(12,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21026C3[0]),
  (VTBL_ENTRY)&_ZN8S21026C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21026C3D0Ev,
  ABISELECT(-144,-136),
  ABISELECT(-92,-88),
  ABISELECT(-132,-128),
  ABISELECT(56,48),
  ABISELECT(-144,-136),
  (VTBL_ENTRY)&(_ZTI8S21026C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21026C3D1Ev,_ZTv0_n24_N8S21026C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21026C3D0Ev,_ZTv0_n24_N8S21026C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S21026C3[];
extern void _ZN8S21026C9D1Ev();
extern void _ZN8S21026C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21026C9__8S21026C3[] = {
  ABISELECT(-92,-88),
  ABISELECT(-132,-128),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S21026C9[0]),
  (VTBL_ENTRY)&_ZN8S21026C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21026C9D0Ev,
};
static  VTT_ENTRY vtt_S21026C3[] = {
  {&(_ZTV8S21026C3[7]),  7,17},
  {&(_ZTV8S21026C3[15]),  15,17},
  {&(_tg__ZTV8S21026C9__8S21026C3[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S21026C3[];
extern  VTBL_ENTRY _ZTV8S21026C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21026C3[];
static VTBL_ENTRY alt_thunk_names138[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21026C3D0Ev,_ZTv0_n24_N8S21026C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21026C3D0Ev,_ZThn136_N8S21026C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21026C3D1Ev,_ZTv0_n24_N8S21026C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21026C3D1Ev,_ZThn136_N8S21026C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21026C3 = {  "S21026C3", // class name
  bases_S21026C3, 10,
  &(vtc_S21026C3[0]), // expected_vtbl_contents
  &(vtt_S21026C3[0]), // expected_vtt_contents
  ABISELECT(248,228), // object size
  NSPAIRA(_ZTI8S21026C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21026C3),17, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21026C3),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names138,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21026C14  : virtual S7246C4 {
  virtual  ~S21026C14(); // _ZN9S21026C14D2Ev
  S21026C14(); // tgen
};
//SIG(-1 S21026C14) C1{ VBC2{ m Fi[10]} vd}


 S21026C14 ::~S21026C14(){ note_dtor("S21026C14", this);}
S21026C14 ::S21026C14(){ note_ctor("S21026C14", this);} // tgen

static void Test_S21026C14()
{
  extern Class_Descriptor cd_S21026C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S21026C14, buf);
    S21026C14 *dp, &lv = *(dp=new (buf) S21026C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S21026C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21026C14)");
    check_base_class_offset(lv, (S7246C4*), ABISELECT(8,4), "S21026C14");
    test_class_info(&lv, &cd_S21026C14);
    dp->~S21026C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21026C14(Test_S21026C14, "S21026C14", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN9S21026C14C1Ev();
extern void _ZN9S21026C14D2Ev();
Name_Map name_map_S21026C14[] = {
  NSPAIR(_ZN9S21026C14C1Ev),
  NSPAIR(_ZN9S21026C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
static Base_Class bases_S21026C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S21026C14[];
extern void _ZN9S21026C14D1Ev();
extern void _ZN9S21026C14D0Ev();
static  VTBL_ENTRY vtc_S21026C14[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S21026C14[0]),
  (VTBL_ENTRY)&_ZN9S21026C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21026C14D0Ev,
};
extern VTBL_ENTRY _ZTV9S21026C14[];
static  VTT_ENTRY vtt_S21026C14[] = {
  {&(_ZTV9S21026C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21026C14[];
extern  VTBL_ENTRY _ZTV9S21026C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21026C14[];
Class_Descriptor cd_S21026C14 = {  "S21026C14", // class name
  bases_S21026C14, 1,
  &(vtc_S21026C14[0]), // expected_vtbl_contents
  &(vtt_S21026C14[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI9S21026C14),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S21026C14),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21026C14),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  S21026C13  : virtual S7246C4 , virtual S21026C14 {
  virtual  ~S21026C13(); // _ZN9S21026C13D2Ev
  S21026C13(); // tgen
};
//SIG(-1 S21026C13) C1{ VBC2{ m Fi[10]} VBC3{ VBC2 vd} vd}


 S21026C13 ::~S21026C13(){ note_dtor("S21026C13", this);}
S21026C13 ::S21026C13(){ note_ctor("S21026C13", this);} // tgen

static void Test_S21026C13()
{
  extern Class_Descriptor cd_S21026C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S21026C13, buf);
    S21026C13 *dp, &lv = *(dp=new (buf) S21026C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S21026C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21026C13)");
    check_base_class_offset(lv, (S7246C4*), ABISELECT(8,4), "S21026C13");
    check_base_class_offset(lv, (S7246C4*)(S21026C14*), ABISELECT(8,4), "S21026C13");
    check_base_class_offset(lv, (S21026C14*), 0, "S21026C13");
    test_class_info(&lv, &cd_S21026C13);
    dp->~S21026C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21026C13(Test_S21026C13, "S21026C13", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN9S21026C13C1Ev();
extern void _ZN9S21026C13D2Ev();
Name_Map name_map_S21026C13[] = {
  NSPAIR(_ZN9S21026C13C1Ev),
  NSPAIR(_ZN9S21026C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S21026C14;
extern VTBL_ENTRY _ZTI9S21026C14[];
extern  VTBL_ENTRY _ZTV9S21026C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21026C14[];
static Base_Class bases_S21026C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21026C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21026C13[];
extern void _ZN9S21026C13D1Ev();
extern void _ZN9S21026C13D0Ev();
static  VTBL_ENTRY vtc_S21026C13[] = {
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S21026C13[0]),
  (VTBL_ENTRY)&_ZN9S21026C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21026C13D0Ev,
};
extern VTBL_ENTRY _ZTV9S21026C13[];
extern void _ZN9S21026C14D1Ev();
extern void _ZN9S21026C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21026C14__9S21026C13[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S21026C14[0]),
  (VTBL_ENTRY)&_ZN9S21026C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21026C14D0Ev,
};
static  VTT_ENTRY vtt_S21026C13[] = {
  {&(_ZTV9S21026C13[5]),  5,7},
  {&(_ZTV9S21026C13[5]),  5,7},
  {&(_tg__ZTV9S21026C14__9S21026C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21026C13[];
extern  VTBL_ENTRY _ZTV9S21026C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21026C13[];
Class_Descriptor cd_S21026C13 = {  "S21026C13", // class name
  bases_S21026C13, 2,
  &(vtc_S21026C13[0]), // expected_vtbl_contents
  &(vtt_S21026C13[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI9S21026C13),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21026C13),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21026C13),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  S21026C12  : S7246C4 , S21026C5 , virtual S21026C13 , S21026C8 {
  ~S21026C12(); // tgen
  S21026C12(); // tgen
};
//SIG(-1 S21026C12) C1{ BC2{ m Fi[10]} BC3{ BC2} VBC4{ VBC2 VBC5{ VBC2 vd} vd} BC6{ BC2 Fi}}


S21026C12 ::~S21026C12(){ note_dtor("S21026C12", this);} // tgen
S21026C12 ::S21026C12(){ note_ctor("S21026C12", this);} // tgen

static void Test_S21026C12()
{
  extern Class_Descriptor cd_S21026C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,43)];
    init_test(&cd_S21026C12, buf);
    S21026C12 *dp, &lv = *(dp=new (buf) S21026C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,168), "sizeof(S21026C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21026C12)");
    /*is_ambiguous_... S21026C12::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*), ABISELECT(8,4), "S21026C12");
    check_base_class_offset(lv, (S7246C4*)(S21026C5*), ABISELECT(48,44), "S21026C12");
    check_base_class_offset(lv, (S21026C5*), ABISELECT(48,44), "S21026C12");
    check_base_class_offset(lv, (S7246C4*)(S21026C13*), ABISELECT(132,128), "S21026C12");
    check_base_class_offset(lv, (S7246C4*)(S21026C14*), ABISELECT(132,128), "S21026C12");
    check_base_class_offset(lv, (S21026C14*)(S21026C13*), 0, "S21026C12");
    check_base_class_offset(lv, (S21026C13*), 0, "S21026C12");
    check_base_class_offset(lv, (S7246C4*)(S21026C8*), ABISELECT(88,84), "S21026C12");
    check_base_class_offset(lv, (S21026C8*), ABISELECT(88,84), "S21026C12");
    test_class_info(&lv, &cd_S21026C12);
    dp->~S21026C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21026C12(Test_S21026C12, "S21026C12", ABISELECT(176,168));

#else // __cplusplus

extern void _ZN9S21026C12C1Ev();
extern void _ZN9S21026C12D1Ev();
Name_Map name_map_S21026C12[] = {
  NSPAIR(_ZN9S21026C12C1Ev),
  NSPAIR(_ZN9S21026C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S21026C5;
extern VTBL_ENTRY _ZTI8S21026C5[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S21026C14;
extern VTBL_ENTRY _ZTI9S21026C14[];
extern  VTBL_ENTRY _ZTV9S21026C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21026C14[];
extern Class_Descriptor cd_S21026C13;
extern VTBL_ENTRY _ZTI9S21026C13[];
extern  VTBL_ENTRY _ZTV9S21026C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21026C13[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S21026C8;
extern VTBL_ENTRY _ZTI8S21026C8[];
static Base_Class bases_S21026C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7246C4,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21026C5,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7246C4,    ABISELECT(132,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
    4, //immediately_derived
  0, 1},
  {&cd_S21026C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //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_S21026C13,    0, //bcp->offset
    -1, //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},
  {&cd_S7246C4,    ABISELECT(88,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
    7, //immediately_derived
  0, 0},
  {&cd_S21026C8,    ABISELECT(88,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21026C12[];
extern void _ZN9S21026C12D1Ev();
extern void _ZN9S21026C12D0Ev();
static  VTBL_ENTRY vtc_S21026C12[] = {
  0,
  0,
  0,
  ABISELECT(132,128),
  0,
  (VTBL_ENTRY)&(_ZTI9S21026C12[0]),
  (VTBL_ENTRY)&_ZN9S21026C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21026C12D0Ev,
};
extern VTBL_ENTRY _ZTV9S21026C12[];
extern void ABISELECT(_ZTv0_n32_N9S21026C13D1Ev,_ZTv0_n16_N9S21026C13D1Ev)();
extern void _ZN9S21026C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21026C13D0Ev,_ZTv0_n16_N9S21026C13D0Ev)();
extern void _ZN9S21026C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21026C13__9S21026C12[] = {
  0,
  0,
  ABISELECT(132,128),
  0,
  (VTBL_ENTRY)&(_ZTI9S21026C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C13D1Ev,_ZTv0_n16_N9S21026C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C13D0Ev,_ZTv0_n16_N9S21026C13D0Ev),
};
extern void _ZN9S21026C14D1Ev();
extern void _ZN9S21026C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21026C14__9S21026C12[] = {
  ABISELECT(132,128),
  0,
  (VTBL_ENTRY)&(_ZTI9S21026C14[0]),
  (VTBL_ENTRY)&_ZN9S21026C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21026C14D0Ev,
};
static  VTT_ENTRY vtt_S21026C12[] = {
  {&(_ZTV9S21026C12[6]),  6,8},
  {&(_ZTV9S21026C12[6]),  6,8},
  {&(_ZTV9S21026C12[6]),  6,8},
  {&(_tg__ZTV9S21026C13__9S21026C12[5]),  5,7},
  {&(_tg__ZTV9S21026C13__9S21026C12[5]),  5,7},
  {&(_tg__ZTV9S21026C14__9S21026C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21026C12[];
extern  VTBL_ENTRY _ZTV9S21026C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21026C12[];
static VTBL_ENTRY alt_thunk_names139[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21026C13D0Ev,_ZTv0_n16_N9S21026C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S21026C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21026C13D1Ev,_ZTv0_n16_N9S21026C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S21026C13D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21026C12 = {  "S21026C12", // class name
  bases_S21026C12, 8,
  &(vtc_S21026C12[0]), // expected_vtbl_contents
  &(vtt_S21026C12[0]), // expected_vtt_contents
  ABISELECT(176,168), // object size
  NSPAIRA(_ZTI9S21026C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21026C12),8, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21026C12),6, //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  S21026C11  : virtual S21026C12 , virtual S21026C7 {
  long double s21026c11f0;
  ~S21026C11(); // tgen
  S21026C11(); // tgen
};
//SIG(-1 S21026C11) C1{ VBC2{ BC3{ m Fi[10]} BC4{ BC3} VBC5{ VBC3 VBC6{ VBC3 vd} vd} BC7{ BC3 Fi}} VBC8{ BC7 FC7} FD}


S21026C11 ::~S21026C11(){ note_dtor("S21026C11", this);} // tgen
S21026C11 ::S21026C11(){ note_ctor("S21026C11", this);} // tgen

static void Test_S21026C11()
{
  extern Class_Descriptor cd_S21026C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(20,69)];
    init_test(&cd_S21026C11, buf);
    S21026C11 *dp, &lv = *(dp=new (buf) S21026C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,272), "sizeof(S21026C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21026C11)");
    /*is_ambiguous_... S21026C12::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*)(S21026C12*), ABISELECT(40,20), "S21026C11");
    check_base_class_offset(lv, (S7246C4*)(S21026C5*)(S21026C12*), ABISELECT(80,60), "S21026C11");
    check_base_class_offset(lv, (S21026C5*)(S21026C12*), ABISELECT(80,60), "S21026C11");
    check_base_class_offset(lv, (S7246C4*)(S21026C13*), ABISELECT(164,144), "S21026C11");
    check_base_class_offset(lv, (S7246C4*)(S21026C14*), ABISELECT(164,144), "S21026C11");
    check_base_class_offset(lv, (S21026C14*)(S21026C13*), 0, "S21026C11");
    check_base_class_offset(lv, (S21026C13*)(S21026C12*), 0, "S21026C11");
    check_base_class_offset(lv, (S7246C4*)(S21026C8*)(S21026C12*), ABISELECT(120,100), "S21026C11");
    check_base_class_offset(lv, (S21026C8*)(S21026C12*), ABISELECT(120,100), "S21026C11");
    check_base_class_offset(lv, (S21026C12*), ABISELECT(32,16), "S21026C11");
    check_base_class_offset(lv, (S7246C4*)(S21026C8*)(S21026C7*), ABISELECT(204,184), "S21026C11");
    check_base_class_offset(lv, (S21026C8*)(S21026C7*), ABISELECT(204,184), "S21026C11");
    check_base_class_offset(lv, (S21026C7*), ABISELECT(204,184), "S21026C11");
    check_field_offset(lv, s21026c11f0, ABISELECT(16,4), "S21026C11.s21026c11f0");
    test_class_info(&lv, &cd_S21026C11);
    dp->~S21026C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21026C11(Test_S21026C11, "S21026C11", ABISELECT(304,272));

#else // __cplusplus

extern void _ZN9S21026C11C1Ev();
extern void _ZN9S21026C11D1Ev();
Name_Map name_map_S21026C11[] = {
  NSPAIR(_ZN9S21026C11C1Ev),
  NSPAIR(_ZN9S21026C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S21026C5;
extern VTBL_ENTRY _ZTI8S21026C5[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S21026C14;
extern VTBL_ENTRY _ZTI9S21026C14[];
extern  VTBL_ENTRY _ZTV9S21026C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21026C14[];
extern Class_Descriptor cd_S21026C13;
extern VTBL_ENTRY _ZTI9S21026C13[];
extern  VTBL_ENTRY _ZTV9S21026C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21026C13[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S21026C8;
extern VTBL_ENTRY _ZTI8S21026C8[];
extern Class_Descriptor cd_S21026C12;
extern VTBL_ENTRY _ZTI9S21026C12[];
extern  VTBL_ENTRY _ZTV9S21026C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21026C12[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S21026C8;
extern VTBL_ENTRY _ZTI8S21026C8[];
extern Class_Descriptor cd_S21026C7;
extern VTBL_ENTRY _ZTI8S21026C7[];
static Base_Class bases_S21026C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7246C4,    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
    2, //immediately_derived
  0, 0},
  {&cd_S21026C5,    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
    8, //immediately_derived
  0, 0},
  {&cd_S7246C4,    ABISELECT(164,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
    4, //immediately_derived
  0, 1},
  {&cd_S21026C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21026C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(120,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
    7, //immediately_derived
  0, 0},
  {&cd_S21026C8,    ABISELECT(120,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21026C12,    ABISELECT(32,16), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(204,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21026C8,    ABISELECT(204,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21026C7,    ABISELECT(204,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
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21026C11[];
extern void _ZN9S21026C11D1Ev();
extern void _ZN9S21026C11D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S21026C11D1Ev,_ZTv0_n16_N9S21026C11D1Ev)();
extern void ABISELECT(_ZThn32_N9S21026C11D1Ev,_ZThn16_N9S21026C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21026C11D0Ev,_ZTv0_n16_N9S21026C11D0Ev)();
extern void ABISELECT(_ZThn32_N9S21026C11D0Ev,_ZThn16_N9S21026C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21026C11[] = {
  ABISELECT(204,184),
  0,
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(164,144),
  0,
  (VTBL_ENTRY)&(_ZTI9S21026C11[0]),
  (VTBL_ENTRY)&_ZN9S21026C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21026C11D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(132,128),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21026C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C11D1Ev,_ZTv0_n16_N9S21026C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C11D0Ev,_ZTv0_n16_N9S21026C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S21026C11[];
extern void ABISELECT(_ZTv0_n32_N9S21026C12D1Ev,_ZTv0_n16_N9S21026C12D1Ev)();
extern void _ZN9S21026C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21026C12D0Ev,_ZTv0_n16_N9S21026C12D0Ev)();
extern void _ZN9S21026C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21026C12__9S21026C11[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  ABISELECT(132,128),
  0,
  (VTBL_ENTRY)&(_ZTI9S21026C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C12D1Ev,_ZTv0_n16_N9S21026C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C12D0Ev,_ZTv0_n16_N9S21026C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21026C12D1Ev,_ZTv0_n16_N9S21026C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21026C12D0Ev,_ZTv0_n16_N9S21026C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21026C13__9S21026C12__9S21026C11[] = {
  0,
  ABISELECT(32,16),
  ABISELECT(164,144),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S21026C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C12D1Ev,_ZTv0_n16_N9S21026C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C12D0Ev,_ZTv0_n16_N9S21026C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21026C13D1Ev,_ZTv0_n16_N9S21026C13D1Ev)();
extern void _ZN9S21026C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21026C13D0Ev,_ZTv0_n16_N9S21026C13D0Ev)();
extern void _ZN9S21026C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21026C13__9S21026C11[] = {
  0,
  0,
  ABISELECT(164,144),
  0,
  (VTBL_ENTRY)&(_ZTI9S21026C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C13D1Ev,_ZTv0_n16_N9S21026C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C13D0Ev,_ZTv0_n16_N9S21026C13D0Ev),
};
extern void _ZN9S21026C14D1Ev();
extern void _ZN9S21026C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21026C14__9S21026C11[] = {
  ABISELECT(164,144),
  0,
  (VTBL_ENTRY)&(_ZTI9S21026C14[0]),
  (VTBL_ENTRY)&_ZN9S21026C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21026C14D0Ev,
};
static  VTT_ENTRY vtt_S21026C11[] = {
  {&(_ZTV9S21026C11[8]),  8,18},
  {&(_ZTV9S21026C11[16]),  16,18},
  {&(_ZTV9S21026C11[8]),  8,18},
  {&(_ZTV9S21026C11[8]),  8,18},
  {&(_tg__ZTV9S21026C12__9S21026C11[6]),  6,8},
  {&(_tg__ZTV9S21026C13__9S21026C12__9S21026C11[5]),  5,7},
  {&(_tg__ZTV9S21026C13__9S21026C12__9S21026C11[5]),  5,7},
  {&(_tg__ZTV9S21026C13__9S21026C11[5]),  5,7},
  {&(_tg__ZTV9S21026C13__9S21026C11[5]),  5,7},
  {&(_tg__ZTV9S21026C14__9S21026C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21026C11[];
extern  VTBL_ENTRY _ZTV9S21026C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21026C11[];
static VTBL_ENTRY alt_thunk_names140[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21026C13D0Ev,_ZTv0_n16_N9S21026C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S21026C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21026C13D1Ev,_ZTv0_n16_N9S21026C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S21026C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21026C12D0Ev,_ZTv0_n16_N9S21026C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S21026C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21026C12D1Ev,_ZTv0_n16_N9S21026C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S21026C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21026C11D0Ev,_ZTv0_n16_N9S21026C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21026C11D0Ev,_ZThn16_N9S21026C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21026C11D1Ev,_ZTv0_n16_N9S21026C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21026C11D1Ev,_ZThn16_N9S21026C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21026C11 = {  "S21026C11", // class name
  bases_S21026C11, 12,
  &(vtc_S21026C11[0]), // expected_vtbl_contents
  &(vtt_S21026C11[0]), // expected_vtt_contents
  ABISELECT(304,272), // object size
  NSPAIRA(_ZTI9S21026C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21026C11),18, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21026C11),10, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names140,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21026C2  : virtual S21026C3 , virtual S4677C27 , S21026C8 , virtual S21026C11 {
  int s21026c2f0;
  virtual  ~S21026C2(); // _ZN8S21026C2D2Ev
  S21026C2(); // tgen
};
//SIG(-1 S21026C2) C1{ VBC2{ VBC3{ m} VBC4{ BC5{ m Fi[10]}} VBC6{ BC7{ BC5 Fi} FC7} VBC8{ VBC7 VBC4 VBC6 BC5 vd Fp} Fi} VBC9{ m} BC7 VBC10{ VBC11{ BC5 BC4 VBC12{ VBC5 VBC13{ VBC5 vd} vd} BC7} VBC6 FD} vd Fi}


 S21026C2 ::~S21026C2(){ note_dtor("S21026C2", this);}
S21026C2 ::S21026C2(){ note_ctor("S21026C2", this);} // tgen

static void Test_S21026C2()
{
  extern Class_Descriptor cd_S21026C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(33,117)];
    init_test(&cd_S21026C2, buf);
    S21026C2 *dp, &lv = *(dp=new (buf) S21026C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(512,464), "sizeof(S21026C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21026C2)");
    check_base_class_offset(lv, (S4677C37*)(S21026C3*), 0, "S21026C2");
    /*is_ambiguous_... S21026C2::S21026C5 */ AMB_check_base_class_offset(lv, (S7246C4*)(S21026C5*), ABISELECT(68,60), "S21026C2");
    check_base_class_offset(lv, (S21026C5*)(S21026C3*), ABISELECT(68,60), "S21026C2");
    check_base_class_offset(lv, (S21026C5*)(S21026C9*), ABISELECT(68,60), "S21026C2");
    check_base_class_offset(lv, (S7246C4*)(S21026C8*)(S21026C7*), ABISELECT(108,100), "S21026C2");
    check_base_class_offset(lv, (S21026C8*)(S21026C7*), ABISELECT(108,100), "S21026C2");
    check_base_class_offset(lv, (S21026C7*)(S21026C3*), ABISELECT(108,100), "S21026C2");
    check_base_class_offset(lv, (S21026C7*)(S21026C9*), ABISELECT(108,100), "S21026C2");
    check_base_class_offset(lv, (S21026C7*)(S21026C11*), ABISELECT(108,100), "S21026C2");
    /*is_ambiguous_... S21026C2::S21026C8 */ AMB_check_base_class_offset(lv, (S7246C4*)(S21026C8*), ABISELECT(256,236), "S21026C2");
    /*is_ambiguous_... S21026C9::S21026C8 */ AMB_check_base_class_offset(lv, (S21026C8*)(S21026C9*), ABISELECT(256,236), "S21026C2");
    /*is_ambiguous_... S21026C9::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*)(S21026C9*), ABISELECT(208,192), "S21026C2");
    check_base_class_offset(lv, (S21026C9*)(S21026C3*), ABISELECT(200,188), "S21026C2");
    check_base_class_offset(lv, (S21026C3*), ABISELECT(56,52), "S21026C2");
    check_base_class_offset(lv, (S4677C27*), 0, "S21026C2");
    /*is_ambiguous_... S21026C2::S21026C8 */ AMB_check_base_class_offset(lv, (S7246C4*)(S21026C8*), ABISELECT(8,4), "S21026C2");
    /*is_ambiguous_... S21026C2::S21026C8 */ AMB_check_base_class_offset(lv, (S21026C8*), ABISELECT(8,4), "S21026C2");
    /*is_ambiguous_... S21026C12::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*)(S21026C12*), ABISELECT(344,300), "S21026C2");
    check_base_class_offset(lv, (S7246C4*)(S21026C5*)(S21026C12*), ABISELECT(384,340), "S21026C2");
    check_base_class_offset(lv, (S21026C5*)(S21026C12*), ABISELECT(384,340), "S21026C2");
    check_base_class_offset(lv, (S7246C4*)(S21026C13*), ABISELECT(468,424), "S21026C2");
    check_base_class_offset(lv, (S7246C4*)(S21026C14*), ABISELECT(468,424), "S21026C2");
    check_base_class_offset(lv, (S21026C14*)(S21026C13*), 0, "S21026C2");
    check_base_class_offset(lv, (S21026C13*)(S21026C12*), 0, "S21026C2");
    check_base_class_offset(lv, (S7246C4*)(S21026C8*)(S21026C12*), ABISELECT(424,380), "S21026C2");
    check_base_class_offset(lv, (S21026C8*)(S21026C12*), ABISELECT(424,380), "S21026C2");
    check_base_class_offset(lv, (S21026C12*)(S21026C11*), ABISELECT(336,296), "S21026C2");
    check_base_class_offset(lv, (S21026C11*), ABISELECT(304,280), "S21026C2");
    check_field_offset(lv, s21026c2f0, ABISELECT(52,48), "S21026C2.s21026c2f0");
    test_class_info(&lv, &cd_S21026C2);
    dp->~S21026C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21026C2(Test_S21026C2, "S21026C2", ABISELECT(512,464));

#else // __cplusplus

extern void _ZN8S21026C2C1Ev();
extern void _ZN8S21026C2D2Ev();
Name_Map name_map_S21026C2[] = {
  NSPAIR(_ZN8S21026C2C1Ev),
  NSPAIR(_ZN8S21026C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S21026C5;
extern VTBL_ENTRY _ZTI8S21026C5[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S21026C8;
extern VTBL_ENTRY _ZTI8S21026C8[];
extern Class_Descriptor cd_S21026C7;
extern VTBL_ENTRY _ZTI8S21026C7[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S21026C8;
extern VTBL_ENTRY _ZTI8S21026C8[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S21026C9;
extern VTBL_ENTRY _ZTI8S21026C9[];
extern  VTBL_ENTRY _ZTV8S21026C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21026C9[];
extern Class_Descriptor cd_S21026C3;
extern VTBL_ENTRY _ZTI8S21026C3[];
extern  VTBL_ENTRY _ZTV8S21026C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21026C3[];
extern Class_Descriptor cd_S4677C27;
extern VTBL_ENTRY _ZTI8S4677C27[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S21026C8;
extern VTBL_ENTRY _ZTI8S21026C8[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S21026C5;
extern VTBL_ENTRY _ZTI8S21026C5[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S21026C14;
extern VTBL_ENTRY _ZTI9S21026C14[];
extern  VTBL_ENTRY _ZTV9S21026C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21026C14[];
extern Class_Descriptor cd_S21026C13;
extern VTBL_ENTRY _ZTI9S21026C13[];
extern  VTBL_ENTRY _ZTV9S21026C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21026C13[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S21026C8;
extern VTBL_ENTRY _ZTI8S21026C8[];
extern Class_Descriptor cd_S21026C12;
extern VTBL_ENTRY _ZTI9S21026C12[];
extern  VTBL_ENTRY _ZTV9S21026C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21026C12[];
extern Class_Descriptor cd_S21026C11;
extern VTBL_ENTRY _ZTI9S21026C11[];
extern  VTBL_ENTRY _ZTV9S21026C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21026C11[];
static Base_Class bases_S21026C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7246C4,    ABISELECT(68,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
    2, //immediately_derived
  0, 0},
  {&cd_S21026C5,    ABISELECT(68,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(108,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_S21026C8,    ABISELECT(108,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
    5, //immediately_derived
  0, 0},
  {&cd_S21026C7,    ABISELECT(108,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(256,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21026C8,    ABISELECT(256,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(208,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21026C9,    ABISELECT(200,188), //bcp->offset
    27, //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
    1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21026C3,    ABISELECT(56,52), //bcp->offset
    17, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21026C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7246C4,    ABISELECT(344,300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7246C4,    ABISELECT(384,340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21026C5,    ABISELECT(384,340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7246C4,    ABISELECT(468,424), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S21026C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S21026C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(424,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21026C8,    ABISELECT(424,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S21026C12,    ABISELECT(336,296), //bcp->offset
    45, //bcp->virtual_function_table_offset
    6, //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
    23, //immediately_derived
  0, 1},
  {&cd_S21026C11,    ABISELECT(304,280), //bcp->offset
    35, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21026C2[];
extern void _ZN8S21026C2D1Ev();
extern void _ZN8S21026C2D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S21026C2D1Ev,_ZTv0_n32_N8S21026C2D1Ev)();
extern void ABISELECT(_ZThn56_N8S21026C2D1Ev,_ZThn52_N8S21026C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21026C2D0Ev,_ZTv0_n32_N8S21026C2D0Ev)();
extern void ABISELECT(_ZThn56_N8S21026C2D0Ev,_ZThn52_N8S21026C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21026C2D1Ev,_ZTv0_n24_N8S21026C2D1Ev)();
extern void ABISELECT(_ZThn200_N8S21026C2D1Ev,_ZThn188_N8S21026C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21026C2D0Ev,_ZTv0_n24_N8S21026C2D0Ev)();
extern void ABISELECT(_ZThn200_N8S21026C2D0Ev,_ZThn188_N8S21026C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21026C2D1Ev,_ZTv0_n16_N8S21026C2D1Ev)();
extern void ABISELECT(_ZThn304_N8S21026C2D1Ev,_ZThn280_N8S21026C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21026C2D0Ev,_ZTv0_n16_N8S21026C2D0Ev)();
extern void ABISELECT(_ZThn304_N8S21026C2D0Ev,_ZThn280_N8S21026C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21026C2D1Ev,_ZTv0_n16_N8S21026C2D1Ev)();
extern void ABISELECT(_ZThn336_N8S21026C2D1Ev,_ZThn296_N8S21026C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21026C2D0Ev,_ZTv0_n16_N8S21026C2D0Ev)();
extern void ABISELECT(_ZThn336_N8S21026C2D0Ev,_ZThn296_N8S21026C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21026C2[] = {
  0,
  ABISELECT(336,296),
  ABISELECT(304,280),
  0,
  ABISELECT(256,236),
  ABISELECT(200,188),
  ABISELECT(108,100),
  ABISELECT(68,60),
  0,
  ABISELECT(56,52),
  0,
  0,
  ABISELECT(468,424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21026C2[0]),
  (VTBL_ENTRY)&_ZN8S21026C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21026C2D0Ev,
  ABISELECT(-56,-52),
  ABISELECT(200,184),
  ABISELECT(144,136),
  ABISELECT(52,48),
  ABISELECT(12,8),
  ABISELECT(-56,-52),
  ABISELECT(-56,-52),
  (VTBL_ENTRY)&(_ZTI8S21026C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21026C2D1Ev,_ZTv0_n32_N8S21026C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21026C2D0Ev,_ZTv0_n32_N8S21026C2D0Ev),
  ABISELECT(-200,-188),
  ABISELECT(-92,-88),
  ABISELECT(-132,-128),
  ABISELECT(56,48),
  ABISELECT(-200,-188),
  (VTBL_ENTRY)&(_ZTI8S21026C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21026C2D1Ev,_ZTv0_n24_N8S21026C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21026C2D0Ev,_ZTv0_n24_N8S21026C2D0Ev),
  ABISELECT(-196,-180),
  ABISELECT(-304,-280),
  ABISELECT(32,16),
  ABISELECT(-304,-280),
  ABISELECT(-304,-280),
  ABISELECT(164,144),
  ABISELECT(-304,-280),
  (VTBL_ENTRY)&(_ZTI8S21026C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21026C2D1Ev,_ZTv0_n16_N8S21026C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21026C2D0Ev,_ZTv0_n16_N8S21026C2D0Ev),
  ABISELECT(-336,-296),
  ABISELECT(-336,-296),
  ABISELECT(-336,-296),
  ABISELECT(132,128),
  ABISELECT(-336,-296),
  (VTBL_ENTRY)&(_ZTI8S21026C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21026C2D1Ev,_ZTv0_n16_N8S21026C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21026C2D0Ev,_ZTv0_n16_N8S21026C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S21026C2[];
extern void _ZN8S21026C3D1Ev();
extern void _ZN8S21026C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21026C3__8S21026C2[] = {
  ABISELECT(200,184),
  ABISELECT(144,136),
  ABISELECT(52,48),
  ABISELECT(12,8),
  ABISELECT(-56,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S21026C3[0]),
  (VTBL_ENTRY)&_ZN8S21026C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21026C3D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S21026C3D1Ev,_ZTv0_n24_N8S21026C3D1Ev)();
extern void ABISELECT(_ZThn144_N8S21026C3D1Ev,_ZThn136_N8S21026C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21026C3D0Ev,_ZTv0_n24_N8S21026C3D0Ev)();
extern void ABISELECT(_ZThn144_N8S21026C3D0Ev,_ZThn136_N8S21026C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21026C9__8S21026C3__8S21026C2[] = {
  ABISELECT(-144,-136),
  ABISELECT(-92,-88),
  ABISELECT(-132,-128),
  ABISELECT(56,48),
  ABISELECT(-144,-136),
  (VTBL_ENTRY)&(_ZTI8S21026C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21026C3D1Ev,_ZTv0_n24_N8S21026C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21026C3D0Ev,_ZTv0_n24_N8S21026C3D0Ev),
};
extern void _ZN8S21026C9D1Ev();
extern void _ZN8S21026C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21026C9__8S21026C2[] = {
  ABISELECT(-92,-88),
  ABISELECT(-132,-128),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S21026C9[0]),
  (VTBL_ENTRY)&_ZN8S21026C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21026C9D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21026C11D1Ev,_ZTv0_n16_N9S21026C11D1Ev)();
extern void _ZN9S21026C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21026C11D0Ev,_ZTv0_n16_N9S21026C11D0Ev)();
extern void _ZN9S21026C11D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21026C11__8S21026C2[] = {
  ABISELECT(-196,-180),
  ABISELECT(-304,-280),
  ABISELECT(32,16),
  ABISELECT(-304,-280),
  0,
  ABISELECT(164,144),
  0,
  (VTBL_ENTRY)&(_ZTI9S21026C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C11D1Ev,_ZTv0_n16_N9S21026C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C11D0Ev,_ZTv0_n16_N9S21026C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21026C11D1Ev,_ZTv0_n16_N9S21026C11D1Ev)();
extern void ABISELECT(_ZThn32_N9S21026C11D1Ev,_ZThn16_N9S21026C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21026C11D0Ev,_ZTv0_n16_N9S21026C11D0Ev)();
extern void ABISELECT(_ZThn32_N9S21026C11D0Ev,_ZThn16_N9S21026C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21026C12__9S21026C11__8S21026C2[] = {
  ABISELECT(-336,-296),
  ABISELECT(-336,-296),
  ABISELECT(-32,-16),
  ABISELECT(132,128),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21026C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C11D1Ev,_ZTv0_n16_N9S21026C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C11D0Ev,_ZTv0_n16_N9S21026C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21026C11D1Ev,_ZTv0_n16_N9S21026C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21026C11D0Ev,_ZTv0_n16_N9S21026C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21026C13__9S21026C11__8S21026C2[] = {
  0,
  ABISELECT(304,280),
  ABISELECT(468,424),
  ABISELECT(304,280),
  (VTBL_ENTRY)&(_ZTI9S21026C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C11D1Ev,_ZTv0_n16_N9S21026C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C11D0Ev,_ZTv0_n16_N9S21026C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21026C12D1Ev,_ZTv0_n16_N9S21026C12D1Ev)();
extern void _ZN9S21026C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21026C12D0Ev,_ZTv0_n16_N9S21026C12D0Ev)();
extern void _ZN9S21026C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21026C12__8S21026C2[] = {
  ABISELECT(-336,-296),
  ABISELECT(-336,-296),
  0,
  ABISELECT(132,128),
  0,
  (VTBL_ENTRY)&(_ZTI9S21026C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C12D1Ev,_ZTv0_n16_N9S21026C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C12D0Ev,_ZTv0_n16_N9S21026C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21026C12D1Ev,_ZTv0_n16_N9S21026C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21026C12D0Ev,_ZTv0_n16_N9S21026C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21026C13__9S21026C12__8S21026C2[] = {
  0,
  ABISELECT(336,296),
  ABISELECT(468,424),
  ABISELECT(336,296),
  (VTBL_ENTRY)&(_ZTI9S21026C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C12D1Ev,_ZTv0_n16_N9S21026C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C12D0Ev,_ZTv0_n16_N9S21026C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21026C13D1Ev,_ZTv0_n16_N9S21026C13D1Ev)();
extern void _ZN9S21026C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21026C13D0Ev,_ZTv0_n16_N9S21026C13D0Ev)();
extern void _ZN9S21026C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21026C13__8S21026C2[] = {
  0,
  0,
  ABISELECT(468,424),
  0,
  (VTBL_ENTRY)&(_ZTI9S21026C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C13D1Ev,_ZTv0_n16_N9S21026C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C13D0Ev,_ZTv0_n16_N9S21026C13D0Ev),
};
extern void _ZN9S21026C14D1Ev();
extern void _ZN9S21026C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21026C14__8S21026C2[] = {
  ABISELECT(468,424),
  0,
  (VTBL_ENTRY)&(_ZTI9S21026C14[0]),
  (VTBL_ENTRY)&_ZN9S21026C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21026C14D0Ev,
};
static  VTT_ENTRY vtt_S21026C2[] = {
  {&(_ZTV8S21026C2[15]),  15,53},
  {&(_ZTV8S21026C2[25]),  25,53},
  {&(_ZTV8S21026C2[33]),  33,53},
  {&(_ZTV8S21026C2[43]),  43,53},
  {&(_ZTV8S21026C2[51]),  51,53},
  {&(_ZTV8S21026C2[15]),  15,53},
  {&(_ZTV8S21026C2[15]),  15,53},
  {&(_tg__ZTV8S21026C3__8S21026C2[7]),  7,9},
  {&(_tg__ZTV8S21026C9__8S21026C3__8S21026C2[6]),  6,8},
  {&(_tg__ZTV8S21026C9__8S21026C2[5]),  5,7},
  {&(_tg__ZTV9S21026C11__8S21026C2[8]),  8,10},
  {&(_tg__ZTV9S21026C12__9S21026C11__8S21026C2[6]),  6,8},
  {&(_tg__ZTV9S21026C13__9S21026C11__8S21026C2[5]),  5,7},
  {&(_tg__ZTV9S21026C13__9S21026C11__8S21026C2[5]),  5,7},
  {&(_tg__ZTV9S21026C12__8S21026C2[6]),  6,8},
  {&(_tg__ZTV9S21026C13__9S21026C12__8S21026C2[5]),  5,7},
  {&(_tg__ZTV9S21026C13__9S21026C12__8S21026C2[5]),  5,7},
  {&(_tg__ZTV9S21026C13__8S21026C2[5]),  5,7},
  {&(_tg__ZTV9S21026C13__8S21026C2[5]),  5,7},
  {&(_tg__ZTV9S21026C14__8S21026C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21026C2[];
extern  VTBL_ENTRY _ZTV8S21026C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21026C2[];
static VTBL_ENTRY alt_thunk_names141[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21026C13D0Ev,_ZTv0_n16_N9S21026C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S21026C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21026C13D1Ev,_ZTv0_n16_N9S21026C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S21026C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21026C12D0Ev,_ZTv0_n16_N9S21026C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S21026C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21026C12D1Ev,_ZTv0_n16_N9S21026C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S21026C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21026C11D0Ev,_ZTv0_n16_N9S21026C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21026C11D0Ev,_ZThn16_N9S21026C11D0Ev),
  (VTBL_ENTRY)_ZN9S21026C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21026C11D1Ev,_ZTv0_n16_N9S21026C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21026C11D1Ev,_ZThn16_N9S21026C11D1Ev),
  (VTBL_ENTRY)_ZN9S21026C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21026C3D0Ev,_ZTv0_n24_N8S21026C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21026C3D0Ev,_ZThn136_N8S21026C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21026C3D1Ev,_ZTv0_n24_N8S21026C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21026C3D1Ev,_ZThn136_N8S21026C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21026C2D0Ev,_ZTv0_n16_N8S21026C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21026C2D0Ev,_ZThn296_N8S21026C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S21026C2D0Ev,_ZThn280_N8S21026C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21026C2D1Ev,_ZTv0_n16_N8S21026C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21026C2D1Ev,_ZThn296_N8S21026C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S21026C2D1Ev,_ZThn280_N8S21026C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21026C2D0Ev,_ZTv0_n24_N8S21026C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S21026C2D0Ev,_ZThn188_N8S21026C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21026C2D1Ev,_ZTv0_n24_N8S21026C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S21026C2D1Ev,_ZThn188_N8S21026C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21026C2D0Ev,_ZTv0_n32_N8S21026C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21026C2D0Ev,_ZThn52_N8S21026C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21026C2D1Ev,_ZTv0_n32_N8S21026C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21026C2D1Ev,_ZThn52_N8S21026C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21026C2 = {  "S21026C2", // class name
  bases_S21026C2, 24,
  &(vtc_S21026C2[0]), // expected_vtbl_contents
  &(vtt_S21026C2[0]), // expected_vtt_contents
  ABISELECT(512,464), // object size
  NSPAIRA(_ZTI8S21026C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21026C2),53, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21026C2),20, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names141,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21026C1  : virtual S21026C2 {
  void *s21026c1f0;
  ~S21026C1(); // tgen
  S21026C1(); // tgen
};
//SIG(1 S21026C1) C1{ VBC2{ VBC3{ VBC4{ m} VBC5{ BC6{ m Fi[10]}} VBC7{ BC8{ BC6 Fi} FC8} VBC9{ VBC8 VBC5 VBC7 BC6 vd Fp} Fi} VBC10{ m} BC8 VBC11{ VBC12{ BC6 BC5 VBC13{ VBC6 VBC14{ VBC6 vd} vd} BC8} VBC7 FD} vd Fi} Fp}


S21026C1 ::~S21026C1(){ note_dtor("S21026C1", this);} // tgen
S21026C1 ::S21026C1(){ note_ctor("S21026C1", this);} // tgen

static void Test_S21026C1()
{
  extern Class_Descriptor cd_S21026C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(34,119)];
    init_test(&cd_S21026C1, buf);
    S21026C1 *dp, &lv = *(dp=new (buf) S21026C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(528,472), "sizeof(S21026C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21026C1)");
    check_base_class_offset(lv, (S4677C37*)(S21026C3*), 0, "S21026C1");
    /*is_ambiguous_... S21026C1::S21026C5 */ AMB_check_base_class_offset(lv, (S7246C4*)(S21026C5*), ABISELECT(84,68), "S21026C1");
    check_base_class_offset(lv, (S21026C5*)(S21026C3*), ABISELECT(84,68), "S21026C1");
    check_base_class_offset(lv, (S21026C5*)(S21026C9*), ABISELECT(84,68), "S21026C1");
    check_base_class_offset(lv, (S7246C4*)(S21026C8*)(S21026C7*), ABISELECT(124,108), "S21026C1");
    check_base_class_offset(lv, (S21026C8*)(S21026C7*), ABISELECT(124,108), "S21026C1");
    check_base_class_offset(lv, (S21026C7*)(S21026C3*), ABISELECT(124,108), "S21026C1");
    check_base_class_offset(lv, (S21026C7*)(S21026C9*), ABISELECT(124,108), "S21026C1");
    check_base_class_offset(lv, (S21026C7*)(S21026C11*), ABISELECT(124,108), "S21026C1");
    /*is_ambiguous_... S21026C1::S21026C8 */ AMB_check_base_class_offset(lv, (S7246C4*)(S21026C8*), ABISELECT(272,244), "S21026C1");
    /*is_ambiguous_... S21026C9::S21026C8 */ AMB_check_base_class_offset(lv, (S21026C8*)(S21026C9*), ABISELECT(272,244), "S21026C1");
    /*is_ambiguous_... S21026C9::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*)(S21026C9*), ABISELECT(224,200), "S21026C1");
    check_base_class_offset(lv, (S21026C9*)(S21026C3*), ABISELECT(216,196), "S21026C1");
    check_base_class_offset(lv, (S21026C3*)(S21026C2*), ABISELECT(72,60), "S21026C1");
    check_base_class_offset(lv, (S4677C27*)(S21026C2*), 0, "S21026C1");
    /*is_ambiguous_... S21026C2::S21026C8 */ AMB_check_base_class_offset(lv, (S7246C4*)(S21026C8*)(S21026C2*), ABISELECT(24,12), "S21026C1");
    /*is_ambiguous_... S21026C2::S21026C8 */ AMB_check_base_class_offset(lv, (S21026C8*)(S21026C2*), ABISELECT(24,12), "S21026C1");
    /*is_ambiguous_... S21026C12::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*)(S21026C12*), ABISELECT(360,308), "S21026C1");
    check_base_class_offset(lv, (S7246C4*)(S21026C5*)(S21026C12*), ABISELECT(400,348), "S21026C1");
    check_base_class_offset(lv, (S21026C5*)(S21026C12*), ABISELECT(400,348), "S21026C1");
    check_base_class_offset(lv, (S7246C4*)(S21026C13*), ABISELECT(484,432), "S21026C1");
    check_base_class_offset(lv, (S7246C4*)(S21026C14*), ABISELECT(484,432), "S21026C1");
    check_base_class_offset(lv, (S21026C14*)(S21026C13*), 0, "S21026C1");
    check_base_class_offset(lv, (S21026C13*)(S21026C12*), 0, "S21026C1");
    check_base_class_offset(lv, (S7246C4*)(S21026C8*)(S21026C12*), ABISELECT(440,388), "S21026C1");
    check_base_class_offset(lv, (S21026C8*)(S21026C12*), ABISELECT(440,388), "S21026C1");
    check_base_class_offset(lv, (S21026C12*)(S21026C11*), ABISELECT(352,304), "S21026C1");
    check_base_class_offset(lv, (S21026C11*)(S21026C2*), ABISELECT(320,288), "S21026C1");
    check_base_class_offset(lv, (S21026C2*), ABISELECT(16,8), "S21026C1");
    check_field_offset(lv, s21026c1f0, ABISELECT(8,4), "S21026C1.s21026c1f0");
    test_class_info(&lv, &cd_S21026C1);
    dp->~S21026C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21026C1(Test_S21026C1, "S21026C1", ABISELECT(528,472));

#else // __cplusplus

extern void _ZN8S21026C1C1Ev();
extern void _ZN8S21026C1D1Ev();
Name_Map name_map_S21026C1[] = {
  NSPAIR(_ZN8S21026C1C1Ev),
  NSPAIR(_ZN8S21026C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S21026C5;
extern VTBL_ENTRY _ZTI8S21026C5[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S21026C8;
extern VTBL_ENTRY _ZTI8S21026C8[];
extern Class_Descriptor cd_S21026C7;
extern VTBL_ENTRY _ZTI8S21026C7[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S21026C8;
extern VTBL_ENTRY _ZTI8S21026C8[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S21026C9;
extern VTBL_ENTRY _ZTI8S21026C9[];
extern  VTBL_ENTRY _ZTV8S21026C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21026C9[];
extern Class_Descriptor cd_S21026C3;
extern VTBL_ENTRY _ZTI8S21026C3[];
extern  VTBL_ENTRY _ZTV8S21026C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21026C3[];
extern Class_Descriptor cd_S4677C27;
extern VTBL_ENTRY _ZTI8S4677C27[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S21026C8;
extern VTBL_ENTRY _ZTI8S21026C8[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S21026C5;
extern VTBL_ENTRY _ZTI8S21026C5[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S21026C14;
extern VTBL_ENTRY _ZTI9S21026C14[];
extern  VTBL_ENTRY _ZTV9S21026C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21026C14[];
extern Class_Descriptor cd_S21026C13;
extern VTBL_ENTRY _ZTI9S21026C13[];
extern  VTBL_ENTRY _ZTV9S21026C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21026C13[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S21026C8;
extern VTBL_ENTRY _ZTI8S21026C8[];
extern Class_Descriptor cd_S21026C12;
extern VTBL_ENTRY _ZTI9S21026C12[];
extern  VTBL_ENTRY _ZTV9S21026C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21026C12[];
extern Class_Descriptor cd_S21026C11;
extern VTBL_ENTRY _ZTI9S21026C11[];
extern  VTBL_ENTRY _ZTV9S21026C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21026C11[];
extern Class_Descriptor cd_S21026C2;
extern VTBL_ENTRY _ZTI8S21026C2[];
extern  VTBL_ENTRY _ZTV8S21026C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21026C2[];
static Base_Class bases_S21026C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7246C4,    ABISELECT(84,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21026C5,    ABISELECT(84,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
    9, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(124,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
    4, //immediately_derived
  0, 0},
  {&cd_S21026C8,    ABISELECT(124,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21026C7,    ABISELECT(124,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
    9, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(272,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21026C8,    ABISELECT(272,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(224,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21026C9,    ABISELECT(216,196), //bcp->offset
    45, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21026C3,    ABISELECT(72,60), //bcp->offset
    35, //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
    2, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S4677C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S7246C4,    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_S21026C8,    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
    24, //immediately_derived
  0, 0},
  {&cd_S7246C4,    ABISELECT(360,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
    22, //immediately_derived
  0, 0},
  {&cd_S7246C4,    ABISELECT(400,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21026C5,    ABISELECT(400,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7246C4,    ABISELECT(484,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
    -1, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S21026C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S21026C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(440,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21026C8,    ABISELECT(440,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S21026C12,    ABISELECT(352,304), //bcp->offset
    63, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S21026C11,    ABISELECT(320,288), //bcp->offset
    53, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S21026C2,    ABISELECT(16,8), //bcp->offset
    18, //bcp->virtual_function_table_offset
    15, //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},
  {0}};
extern VTBL_ENTRY _ZTI8S21026C1[];
extern void _ZN8S21026C1D1Ev();
extern void _ZN8S21026C1D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S21026C1D1Ev,_ZTv0_n16_N8S21026C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S21026C1D1Ev,_ZThn8_N8S21026C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21026C1D0Ev,_ZTv0_n16_N8S21026C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S21026C1D0Ev,_ZThn8_N8S21026C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21026C1D1Ev,_ZTv0_n32_N8S21026C1D1Ev)();
extern void ABISELECT(_ZThn72_N8S21026C1D1Ev,_ZThn60_N8S21026C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21026C1D0Ev,_ZTv0_n32_N8S21026C1D0Ev)();
extern void ABISELECT(_ZThn72_N8S21026C1D0Ev,_ZThn60_N8S21026C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21026C1D1Ev,_ZTv0_n24_N8S21026C1D1Ev)();
extern void ABISELECT(_ZThn216_N8S21026C1D1Ev,_ZThn196_N8S21026C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21026C1D0Ev,_ZTv0_n24_N8S21026C1D0Ev)();
extern void ABISELECT(_ZThn216_N8S21026C1D0Ev,_ZThn196_N8S21026C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21026C1D1Ev,_ZTv0_n16_N8S21026C1D1Ev)();
extern void ABISELECT(_ZThn320_N8S21026C1D1Ev,_ZThn288_N8S21026C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21026C1D0Ev,_ZTv0_n16_N8S21026C1D0Ev)();
extern void ABISELECT(_ZThn320_N8S21026C1D0Ev,_ZThn288_N8S21026C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21026C1D1Ev,_ZTv0_n16_N8S21026C1D1Ev)();
extern void ABISELECT(_ZThn352_N8S21026C1D1Ev,_ZThn304_N8S21026C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21026C1D0Ev,_ZTv0_n16_N8S21026C1D0Ev)();
extern void ABISELECT(_ZThn352_N8S21026C1D0Ev,_ZThn304_N8S21026C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21026C1[] = {
  0,
  ABISELECT(352,304),
  ABISELECT(320,288),
  0,
  ABISELECT(272,244),
  ABISELECT(216,196),
  ABISELECT(124,108),
  ABISELECT(84,68),
  0,
  ABISELECT(72,60),
  ABISELECT(16,8),
  0,
  0,
  ABISELECT(484,432),
  0,
  (VTBL_ENTRY)&(_ZTI8S21026C1[0]),
  (VTBL_ENTRY)&_ZN8S21026C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21026C1D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(336,296),
  ABISELECT(304,280),
  ABISELECT(-16,-8),
  ABISELECT(256,236),
  ABISELECT(200,188),
  ABISELECT(108,100),
  ABISELECT(68,60),
  ABISELECT(-16,-8),
  ABISELECT(56,52),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(468,424),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21026C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21026C1D1Ev,_ZTv0_n16_N8S21026C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21026C1D0Ev,_ZTv0_n16_N8S21026C1D0Ev),
  ABISELECT(-72,-60),
  ABISELECT(200,184),
  ABISELECT(144,136),
  ABISELECT(52,48),
  ABISELECT(12,8),
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI8S21026C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21026C1D1Ev,_ZTv0_n32_N8S21026C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21026C1D0Ev,_ZTv0_n32_N8S21026C1D0Ev),
  ABISELECT(-216,-196),
  ABISELECT(-92,-88),
  ABISELECT(-132,-128),
  ABISELECT(56,48),
  ABISELECT(-216,-196),
  (VTBL_ENTRY)&(_ZTI8S21026C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21026C1D1Ev,_ZTv0_n24_N8S21026C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21026C1D0Ev,_ZTv0_n24_N8S21026C1D0Ev),
  ABISELECT(-196,-180),
  ABISELECT(-320,-288),
  ABISELECT(32,16),
  ABISELECT(-320,-288),
  ABISELECT(-320,-288),
  ABISELECT(164,144),
  ABISELECT(-320,-288),
  (VTBL_ENTRY)&(_ZTI8S21026C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21026C1D1Ev,_ZTv0_n16_N8S21026C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21026C1D0Ev,_ZTv0_n16_N8S21026C1D0Ev),
  ABISELECT(-352,-304),
  ABISELECT(-352,-304),
  ABISELECT(-352,-304),
  ABISELECT(132,128),
  ABISELECT(-352,-304),
  (VTBL_ENTRY)&(_ZTI8S21026C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21026C1D1Ev,_ZTv0_n16_N8S21026C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21026C1D0Ev,_ZTv0_n16_N8S21026C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21026C1[];
extern void ABISELECT(_ZTv0_n32_N8S21026C2D1Ev,_ZTv0_n16_N8S21026C2D1Ev)();
extern void _ZN8S21026C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21026C2D0Ev,_ZTv0_n16_N8S21026C2D0Ev)();
extern void _ZN8S21026C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21026C2__8S21026C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(336,296),
  ABISELECT(304,280),
  ABISELECT(-16,-8),
  ABISELECT(256,236),
  ABISELECT(200,188),
  ABISELECT(108,100),
  ABISELECT(68,60),
  ABISELECT(-16,-8),
  ABISELECT(56,52),
  ABISELECT(-16,-8),
  0,
  ABISELECT(468,424),
  0,
  (VTBL_ENTRY)&(_ZTI8S21026C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21026C2D1Ev,_ZTv0_n16_N8S21026C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21026C2D0Ev,_ZTv0_n16_N8S21026C2D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S21026C2D1Ev,_ZTv0_n32_N8S21026C2D1Ev)();
extern void ABISELECT(_ZThn56_N8S21026C2D1Ev,_ZThn52_N8S21026C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21026C2D0Ev,_ZTv0_n32_N8S21026C2D0Ev)();
extern void ABISELECT(_ZThn56_N8S21026C2D0Ev,_ZThn52_N8S21026C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21026C3__8S21026C2__8S21026C1[] = {
  ABISELECT(-56,-52),
  ABISELECT(200,184),
  ABISELECT(144,136),
  ABISELECT(52,48),
  ABISELECT(12,8),
  ABISELECT(-72,-60),
  ABISELECT(-56,-52),
  (VTBL_ENTRY)&(_ZTI8S21026C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21026C2D1Ev,_ZTv0_n32_N8S21026C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21026C2D0Ev,_ZTv0_n32_N8S21026C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S21026C2D1Ev,_ZTv0_n24_N8S21026C2D1Ev)();
extern void ABISELECT(_ZThn200_N8S21026C2D1Ev,_ZThn188_N8S21026C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21026C2D0Ev,_ZTv0_n24_N8S21026C2D0Ev)();
extern void ABISELECT(_ZThn200_N8S21026C2D0Ev,_ZThn188_N8S21026C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21026C9__8S21026C2__8S21026C1[] = {
  ABISELECT(-200,-188),
  ABISELECT(-92,-88),
  ABISELECT(-132,-128),
  ABISELECT(56,48),
  ABISELECT(-200,-188),
  (VTBL_ENTRY)&(_ZTI8S21026C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21026C2D1Ev,_ZTv0_n24_N8S21026C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21026C2D0Ev,_ZTv0_n24_N8S21026C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21026C2D1Ev,_ZTv0_n16_N8S21026C2D1Ev)();
extern void ABISELECT(_ZThn304_N8S21026C2D1Ev,_ZThn280_N8S21026C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21026C2D0Ev,_ZTv0_n16_N8S21026C2D0Ev)();
extern void ABISELECT(_ZThn304_N8S21026C2D0Ev,_ZThn280_N8S21026C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21026C11__8S21026C2__8S21026C1[] = {
  ABISELECT(-196,-180),
  ABISELECT(-320,-288),
  ABISELECT(32,16),
  ABISELECT(-320,-288),
  ABISELECT(-304,-280),
  ABISELECT(164,144),
  ABISELECT(-304,-280),
  (VTBL_ENTRY)&(_ZTI8S21026C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21026C2D1Ev,_ZTv0_n16_N8S21026C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21026C2D0Ev,_ZTv0_n16_N8S21026C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21026C2D1Ev,_ZTv0_n16_N8S21026C2D1Ev)();
extern void ABISELECT(_ZThn336_N8S21026C2D1Ev,_ZThn296_N8S21026C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21026C2D0Ev,_ZTv0_n16_N8S21026C2D0Ev)();
extern void ABISELECT(_ZThn336_N8S21026C2D0Ev,_ZThn296_N8S21026C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21026C12__8S21026C2__8S21026C1[] = {
  ABISELECT(-352,-304),
  ABISELECT(-352,-304),
  ABISELECT(-336,-296),
  ABISELECT(132,128),
  ABISELECT(-336,-296),
  (VTBL_ENTRY)&(_ZTI8S21026C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21026C2D1Ev,_ZTv0_n16_N8S21026C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21026C2D0Ev,_ZTv0_n16_N8S21026C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21026C2D1Ev,_ZTv0_n16_N8S21026C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21026C2D0Ev,_ZTv0_n16_N8S21026C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21026C13__8S21026C2__8S21026C1[] = {
  0,
  ABISELECT(16,8),
  ABISELECT(484,432),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S21026C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21026C2D1Ev,_ZTv0_n16_N8S21026C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21026C2D0Ev,_ZTv0_n16_N8S21026C2D0Ev),
};
extern void _ZN8S21026C3D1Ev();
extern void _ZN8S21026C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21026C3__8S21026C1[] = {
  ABISELECT(200,184),
  ABISELECT(144,136),
  ABISELECT(52,48),
  ABISELECT(12,8),
  ABISELECT(-72,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S21026C3[0]),
  (VTBL_ENTRY)&_ZN8S21026C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21026C3D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S21026C3D1Ev,_ZTv0_n24_N8S21026C3D1Ev)();
extern void ABISELECT(_ZThn144_N8S21026C3D1Ev,_ZThn136_N8S21026C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21026C3D0Ev,_ZTv0_n24_N8S21026C3D0Ev)();
extern void ABISELECT(_ZThn144_N8S21026C3D0Ev,_ZThn136_N8S21026C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21026C9__8S21026C3__8S21026C1[] = {
  ABISELECT(-144,-136),
  ABISELECT(-92,-88),
  ABISELECT(-132,-128),
  ABISELECT(56,48),
  ABISELECT(-144,-136),
  (VTBL_ENTRY)&(_ZTI8S21026C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21026C3D1Ev,_ZTv0_n24_N8S21026C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21026C3D0Ev,_ZTv0_n24_N8S21026C3D0Ev),
};
extern void _ZN8S21026C9D1Ev();
extern void _ZN8S21026C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21026C9__8S21026C1[] = {
  ABISELECT(-92,-88),
  ABISELECT(-132,-128),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S21026C9[0]),
  (VTBL_ENTRY)&_ZN8S21026C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21026C9D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21026C11D1Ev,_ZTv0_n16_N9S21026C11D1Ev)();
extern void _ZN9S21026C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21026C11D0Ev,_ZTv0_n16_N9S21026C11D0Ev)();
extern void _ZN9S21026C11D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21026C11__8S21026C1[] = {
  ABISELECT(-196,-180),
  ABISELECT(-320,-288),
  ABISELECT(32,16),
  ABISELECT(-320,-288),
  0,
  ABISELECT(164,144),
  0,
  (VTBL_ENTRY)&(_ZTI9S21026C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C11D1Ev,_ZTv0_n16_N9S21026C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C11D0Ev,_ZTv0_n16_N9S21026C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21026C11D1Ev,_ZTv0_n16_N9S21026C11D1Ev)();
extern void ABISELECT(_ZThn32_N9S21026C11D1Ev,_ZThn16_N9S21026C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21026C11D0Ev,_ZTv0_n16_N9S21026C11D0Ev)();
extern void ABISELECT(_ZThn32_N9S21026C11D0Ev,_ZThn16_N9S21026C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21026C12__9S21026C11__8S21026C1[] = {
  ABISELECT(-352,-304),
  ABISELECT(-352,-304),
  ABISELECT(-32,-16),
  ABISELECT(132,128),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21026C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C11D1Ev,_ZTv0_n16_N9S21026C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C11D0Ev,_ZTv0_n16_N9S21026C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21026C11D1Ev,_ZTv0_n16_N9S21026C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21026C11D0Ev,_ZTv0_n16_N9S21026C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21026C13__9S21026C11__8S21026C1[] = {
  0,
  ABISELECT(320,288),
  ABISELECT(484,432),
  ABISELECT(320,288),
  (VTBL_ENTRY)&(_ZTI9S21026C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C11D1Ev,_ZTv0_n16_N9S21026C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C11D0Ev,_ZTv0_n16_N9S21026C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21026C12D1Ev,_ZTv0_n16_N9S21026C12D1Ev)();
extern void _ZN9S21026C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21026C12D0Ev,_ZTv0_n16_N9S21026C12D0Ev)();
extern void _ZN9S21026C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21026C12__8S21026C1[] = {
  ABISELECT(-352,-304),
  ABISELECT(-352,-304),
  0,
  ABISELECT(132,128),
  0,
  (VTBL_ENTRY)&(_ZTI9S21026C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C12D1Ev,_ZTv0_n16_N9S21026C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C12D0Ev,_ZTv0_n16_N9S21026C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21026C12D1Ev,_ZTv0_n16_N9S21026C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21026C12D0Ev,_ZTv0_n16_N9S21026C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21026C13__9S21026C12__8S21026C1[] = {
  0,
  ABISELECT(352,304),
  ABISELECT(484,432),
  ABISELECT(352,304),
  (VTBL_ENTRY)&(_ZTI9S21026C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C12D1Ev,_ZTv0_n16_N9S21026C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C12D0Ev,_ZTv0_n16_N9S21026C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21026C13D1Ev,_ZTv0_n16_N9S21026C13D1Ev)();
extern void _ZN9S21026C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21026C13D0Ev,_ZTv0_n16_N9S21026C13D0Ev)();
extern void _ZN9S21026C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21026C13__8S21026C1[] = {
  0,
  0,
  ABISELECT(484,432),
  0,
  (VTBL_ENTRY)&(_ZTI9S21026C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C13D1Ev,_ZTv0_n16_N9S21026C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21026C13D0Ev,_ZTv0_n16_N9S21026C13D0Ev),
};
extern void _ZN9S21026C14D1Ev();
extern void _ZN9S21026C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21026C14__8S21026C1[] = {
  ABISELECT(484,432),
  0,
  (VTBL_ENTRY)&(_ZTI9S21026C14[0]),
  (VTBL_ENTRY)&_ZN9S21026C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21026C14D0Ev,
};
static  VTT_ENTRY vtt_S21026C1[] = {
  {&(_ZTV8S21026C1[16]),  16,71},
  {&(_ZTV8S21026C1[33]),  33,71},
  {&(_ZTV8S21026C1[43]),  43,71},
  {&(_ZTV8S21026C1[51]),  51,71},
  {&(_ZTV8S21026C1[61]),  61,71},
  {&(_ZTV8S21026C1[69]),  69,71},
  {&(_ZTV8S21026C1[16]),  16,71},
  {&(_ZTV8S21026C1[16]),  16,71},
  {&(_tg__ZTV8S21026C2__8S21026C1[15]),  15,17},
  {&(_tg__ZTV8S21026C3__8S21026C2__8S21026C1[8]),  8,10},
  {&(_tg__ZTV8S21026C9__8S21026C2__8S21026C1[6]),  6,8},
  {&(_tg__ZTV9S21026C11__8S21026C2__8S21026C1[8]),  8,10},
  {&(_tg__ZTV9S21026C12__8S21026C2__8S21026C1[6]),  6,8},
  {&(_tg__ZTV9S21026C13__8S21026C2__8S21026C1[5]),  5,7},
  {&(_tg__ZTV9S21026C13__8S21026C2__8S21026C1[5]),  5,7},
  {&(_tg__ZTV8S21026C3__8S21026C1[7]),  7,9},
  {&(_tg__ZTV8S21026C9__8S21026C3__8S21026C1[6]),  6,8},
  {&(_tg__ZTV8S21026C9__8S21026C1[5]),  5,7},
  {&(_tg__ZTV9S21026C11__8S21026C1[8]),  8,10},
  {&(_tg__ZTV9S21026C12__9S21026C11__8S21026C1[6]),  6,8},
  {&(_tg__ZTV9S21026C13__9S21026C11__8S21026C1[5]),  5,7},
  {&(_tg__ZTV9S21026C13__9S21026C11__8S21026C1[5]),  5,7},
  {&(_tg__ZTV9S21026C12__8S21026C1[6]),  6,8},
  {&(_tg__ZTV9S21026C13__9S21026C12__8S21026C1[5]),  5,7},
  {&(_tg__ZTV9S21026C13__9S21026C12__8S21026C1[5]),  5,7},
  {&(_tg__ZTV9S21026C13__8S21026C1[5]),  5,7},
  {&(_tg__ZTV9S21026C13__8S21026C1[5]),  5,7},
  {&(_tg__ZTV9S21026C14__8S21026C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21026C1[];
extern  VTBL_ENTRY _ZTV8S21026C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21026C1[];
static VTBL_ENTRY alt_thunk_names142[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21026C13D0Ev,_ZTv0_n16_N9S21026C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S21026C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21026C13D1Ev,_ZTv0_n16_N9S21026C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S21026C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21026C12D0Ev,_ZTv0_n16_N9S21026C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S21026C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21026C12D1Ev,_ZTv0_n16_N9S21026C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S21026C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21026C11D0Ev,_ZTv0_n16_N9S21026C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21026C11D0Ev,_ZThn16_N9S21026C11D0Ev),
  (VTBL_ENTRY)_ZN9S21026C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21026C11D1Ev,_ZTv0_n16_N9S21026C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21026C11D1Ev,_ZThn16_N9S21026C11D1Ev),
  (VTBL_ENTRY)_ZN9S21026C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21026C3D0Ev,_ZTv0_n24_N8S21026C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21026C3D0Ev,_ZThn136_N8S21026C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21026C3D1Ev,_ZTv0_n24_N8S21026C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21026C3D1Ev,_ZThn136_N8S21026C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21026C2D0Ev,_ZTv0_n24_N8S21026C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S21026C2D0Ev,_ZThn188_N8S21026C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21026C2D1Ev,_ZTv0_n24_N8S21026C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S21026C2D1Ev,_ZThn188_N8S21026C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21026C2D0Ev,_ZTv0_n32_N8S21026C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21026C2D0Ev,_ZThn52_N8S21026C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21026C2D1Ev,_ZTv0_n32_N8S21026C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21026C2D1Ev,_ZThn52_N8S21026C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21026C2D0Ev,_ZTv0_n16_N8S21026C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21026C2D0Ev,_ZThn296_N8S21026C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S21026C2D0Ev,_ZThn280_N8S21026C2D0Ev),
  (VTBL_ENTRY)_ZN8S21026C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21026C2D1Ev,_ZTv0_n16_N8S21026C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21026C2D1Ev,_ZThn296_N8S21026C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S21026C2D1Ev,_ZThn280_N8S21026C2D1Ev),
  (VTBL_ENTRY)_ZN8S21026C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21026C1D0Ev,_ZTv0_n24_N8S21026C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S21026C1D0Ev,_ZThn196_N8S21026C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21026C1D1Ev,_ZTv0_n24_N8S21026C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S21026C1D1Ev,_ZThn196_N8S21026C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21026C1D0Ev,_ZTv0_n32_N8S21026C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21026C1D0Ev,_ZThn60_N8S21026C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21026C1D1Ev,_ZTv0_n32_N8S21026C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21026C1D1Ev,_ZThn60_N8S21026C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21026C1D0Ev,_ZTv0_n16_N8S21026C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21026C1D0Ev,_ZThn304_N8S21026C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S21026C1D0Ev,_ZThn288_N8S21026C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21026C1D0Ev,_ZThn8_N8S21026C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21026C1D1Ev,_ZTv0_n16_N8S21026C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21026C1D1Ev,_ZThn304_N8S21026C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S21026C1D1Ev,_ZThn288_N8S21026C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21026C1D1Ev,_ZThn8_N8S21026C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21026C1 = {  "S21026C1", // class name
  bases_S21026C1, 25,
  &(vtc_S21026C1[0]), // expected_vtbl_contents
  &(vtt_S21026C1[0]), // expected_vtt_contents
  ABISELECT(528,472), // object size
  NSPAIRA(_ZTI8S21026C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21026C1),71, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21026C1),28, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names142,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17446C2_nt  {
  int s17446c2f0[4];
  void  mf17446c2(); // _ZN11S17446C2_nt9mf17446c2Ev
};
//SIG(-1 S17446C2_nt) C1{ m Fi[4]}


void  S17446C2_nt ::mf17446c2(){}

//skip512 S17446C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17446C4_nt  {
  void *s17446c4f0[2];
  void  mf17446c4(); // _ZN11S17446C4_nt9mf17446c4Ev
};
//SIG(-1 S17446C4_nt) C1{ m Fp[2]}


void  S17446C4_nt ::mf17446c4(){}

//skip512 S17446C4_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17446C5_nt  {
  long s17446c5f0;
};
//SIG(-1 S17446C5_nt) C1{ Fl}



//skip512 S17446C5_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17446C1  {
  void *s17446c1f0;
  char s17446c1f1;
  int s17446c1f2[2];
  ::S17446C2_nt s17446c1f3;
  int s17446c1f4;
  ::S6638C16_nt s17446c1f5;
  ::S6638C16_nt s17446c1f6;
  ::S6638C16_nt s17446c1f7;
  ::S17446C4_nt s17446c1f8;
  ::S17446C5_nt s17446c1f9;
  ::S17446C5_nt s17446c1f10;
  ::S17446C5_nt s17446c1f11;
  ::S17446C5_nt s17446c1f12;
  ::S17446C5_nt s17446c1f13;
  ::S17446C4_nt s17446c1f14;
  ::S7944C12_nt s17446c1f15;
  ::S7944C12_nt s17446c1f16;
  int s17446c1f17;
  char s17446c1f18[4];
  int s17446c1f19[6];
  ::S17446C4_nt s17446c1f20;
  ::S7944C12_nt s17446c1f21;
  char s17446c1f22;
  __tsi64 s17446c1f23;
  int s17446c1f24;
  char s17446c1f25;
  void  mf17446c1(); // _ZN8S17446C19mf17446c1Ev
};
//SIG(1 S17446C1) C1{ m Fp Fc Fi[2] FC2{ m Fi[4]} Fi FC3{ m Fp[2]} FC3 FC3 FC4{ m Fp[2]} FC5{ Fl} FC5 FC5 FC5 FC5 FC4 FC6{ m FC7{ Fl[4]}} FC6 Fi Fc[4] Fi[6] FC4 FC6 Fc FL Fi Fc}


void  S17446C1 ::mf17446c1(){}

static void Test_S17446C1()
{
  {
    init_simple_test("S17446C1");
    S17446C1 lv;
    check2(sizeof(lv), ABISELECT(328,204), "sizeof(S17446C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17446C1)");
    check_field_offset(lv, s17446c1f0, 0, "S17446C1.s17446c1f0");
    check_field_offset(lv, s17446c1f1, ABISELECT(8,4), "S17446C1.s17446c1f1");
    check_field_offset(lv, s17446c1f2, ABISELECT(12,8), "S17446C1.s17446c1f2");
    check_field_offset(lv, s17446c1f3, ABISELECT(20,16), "S17446C1.s17446c1f3");
    check_field_offset(lv, s17446c1f4, ABISELECT(36,32), "S17446C1.s17446c1f4");
    check_field_offset(lv, s17446c1f5, ABISELECT(40,36), "S17446C1.s17446c1f5");
    check_field_offset(lv, s17446c1f6, ABISELECT(56,44), "S17446C1.s17446c1f6");
    check_field_offset(lv, s17446c1f7, ABISELECT(72,52), "S17446C1.s17446c1f7");
    check_field_offset(lv, s17446c1f8, ABISELECT(88,60), "S17446C1.s17446c1f8");
    check_field_offset(lv, s17446c1f9, ABISELECT(104,68), "S17446C1.s17446c1f9");
    check_field_offset(lv, s17446c1f10, ABISELECT(112,72), "S17446C1.s17446c1f10");
    check_field_offset(lv, s17446c1f11, ABISELECT(120,76), "S17446C1.s17446c1f11");
    check_field_offset(lv, s17446c1f12, ABISELECT(128,80), "S17446C1.s17446c1f12");
    check_field_offset(lv, s17446c1f13, ABISELECT(136,84), "S17446C1.s17446c1f13");
    check_field_offset(lv, s17446c1f14, ABISELECT(144,88), "S17446C1.s17446c1f14");
    check_field_offset(lv, s17446c1f15, ABISELECT(160,96), "S17446C1.s17446c1f15");
    check_field_offset(lv, s17446c1f16, ABISELECT(192,112), "S17446C1.s17446c1f16");
    check_field_offset(lv, s17446c1f17, ABISELECT(224,128), "S17446C1.s17446c1f17");
    check_field_offset(lv, s17446c1f18, ABISELECT(228,132), "S17446C1.s17446c1f18");
    check_field_offset(lv, s17446c1f19, ABISELECT(232,136), "S17446C1.s17446c1f19");
    check_field_offset(lv, s17446c1f20, ABISELECT(256,160), "S17446C1.s17446c1f20");
    check_field_offset(lv, s17446c1f21, ABISELECT(272,168), "S17446C1.s17446c1f21");
    check_field_offset(lv, s17446c1f22, ABISELECT(304,184), "S17446C1.s17446c1f22");
    check_field_offset(lv, s17446c1f23, ABISELECT(312,188), "S17446C1.s17446c1f23");
    check_field_offset(lv, s17446c1f24, ABISELECT(320,196), "S17446C1.s17446c1f24");
    check_field_offset(lv, s17446c1f25, ABISELECT(324,200), "S17446C1.s17446c1f25");
  }
}
static Arrange_To_Call_Me vS17446C1(Test_S17446C1, "S17446C1", ABISELECT(328,204));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15599C4_nt  {
  char s15599c4f0;
  char s15599c4f1[15];
  void  mf15599c4(); // _ZN11S15599C4_nt9mf15599c4Ev
};
//SIG(-1 S15599C4_nt) C1{ m Fc[16]}


void  S15599C4_nt ::mf15599c4(){}

//skip512 S15599C4_nt

#else // __cplusplus

Class_Descriptor cd_S15599C4_nt = {  "S15599C4_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  S15599C3_nt  : S15599C4_nt {
};
//SIG(-1 S15599C3_nt) C1{ BC2{ m Fc[16]}}



//skip512 S15599C3_nt

#else // __cplusplus

extern Class_Descriptor cd_S15599C4_nt;
static Base_Class bases_S15599C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S15599C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S15599C2  {
  void *s15599c2f0;
  int s15599c2f1;
  ::S15599C3_nt s15599c2f2;
  int s15599c2f3[2];
};
//SIG(1 S15599C2) C1{ Fp Fi FC2{ BC3{ m Fc[16]}} Fi[2]}



static void Test_S15599C2()
{
  {
    init_simple_test("S15599C2");
    S15599C2 lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S15599C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15599C2)");
    check_field_offset(lv, s15599c2f0, 0, "S15599C2.s15599c2f0");
    check_field_offset(lv, s15599c2f1, ABISELECT(8,4), "S15599C2.s15599c2f1");
    check_field_offset(lv, s15599c2f2, ABISELECT(12,8), "S15599C2.s15599c2f2");
    check_field_offset(lv, s15599c2f3, ABISELECT(28,24), "S15599C2.s15599c2f3");
  }
}
static Arrange_To_Call_Me vS15599C2(Test_S15599C2, "S15599C2", ABISELECT(40,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15599C10_nt  {
};
//SIG(-1 S15599C10_nt) C1{}



//skip512 S15599C10_nt

#else // __cplusplus

Class_Descriptor cd_S15599C10_nt = {  "S15599C10_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15599C9_nt  : S15599C10_nt {
};
//SIG(-1 S15599C9_nt) C1{ BC2{}}



//skip512 S15599C9_nt

#else // __cplusplus

extern Class_Descriptor cd_S15599C10_nt;
static Base_Class bases_S15599C9_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S15599C10_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S15599C7_nt  : S20643C15_nt {
  ::S15599C9_nt s15599c7f0;
};
//SIG(-1 S15599C7_nt) C1{ BC2{} FC3{ BC4{}}}



//skip512 S15599C7_nt

#else // __cplusplus

extern Class_Descriptor cd_S20643C15_nt;
static Base_Class bases_S15599C7_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20643C15_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S15599C7_nt = {  "S15599C7_nt", // class name
  bases_S15599C7_nt, 1,
  0, // no vftv
  0, //no vtt
  1, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15599C6_nt  : S15599C7_nt {
  void *s15599c6f0[3];
};
//SIG(-1 S15599C6_nt) C1{ BC2{ BC3{} FC4{ BC5{}}} Fp[3]}



//skip512 S15599C6_nt

#else // __cplusplus

extern Class_Descriptor cd_S20643C15_nt;
extern Class_Descriptor cd_S15599C7_nt;
static Base_Class bases_S15599C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20643C15_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S15599C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S15599C1  {
  ::S15599C2 s15599c1f0[16];
  int s15599c1f1[3];
  ::S16701C4_nt s15599c1f2;
  void *s15599c1f3[2];
  int s15599c1f4[9];
  ::S15599C6_nt s15599c1f5;
  ::S15599C6_nt s15599c1f6;
  void *s15599c1f7[7];
  ::S15599C6_nt s15599c1f8;
  int s15599c1f9;
  void  mf15599c1(); // _ZN8S15599C19mf15599c1Ev
};
//SIG(1 S15599C1) C1{ m FC2{ Fp Fi FC3{ BC4{ m Fc[16]}} Fi[2]}[16] Fi[3] FC5{ m Fp} Fp[2] Fi[9] FC6{ BC7{ BC8{} FC9{ BC10{}}} Fp[3]} FC6 Fp[7] FC6 Fi}


void  S15599C1 ::mf15599c1(){}

static void Test_S15599C1()
{
  {
    init_simple_test("S15599C1");
    S15599C1 lv;
    check2(sizeof(lv), ABISELECT(880,652), "sizeof(S15599C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15599C1)");
    check_field_offset(lv, s15599c1f0, 0, "S15599C1.s15599c1f0");
    check_field_offset(lv, s15599c1f1, ABISELECT(640,512), "S15599C1.s15599c1f1");
    check_field_offset(lv, s15599c1f2, ABISELECT(656,524), "S15599C1.s15599c1f2");
    check_field_offset(lv, s15599c1f3, ABISELECT(664,528), "S15599C1.s15599c1f3");
    check_field_offset(lv, s15599c1f4, ABISELECT(680,536), "S15599C1.s15599c1f4");
    check_field_offset(lv, s15599c1f5, ABISELECT(720,572), "S15599C1.s15599c1f5");
    check_field_offset(lv, s15599c1f6, ABISELECT(752,588), "S15599C1.s15599c1f6");
    check_field_offset(lv, s15599c1f7, ABISELECT(784,604), "S15599C1.s15599c1f7");
    check_field_offset(lv, s15599c1f8, ABISELECT(840,632), "S15599C1.s15599c1f8");
    check_field_offset(lv, s15599c1f9, ABISELECT(872,648), "S15599C1.s15599c1f9");
  }
}
static Arrange_To_Call_Me vS15599C1(Test_S15599C1, "S15599C1", ABISELECT(880,652));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8634C2  {
  char s8634c2f0;
  int s8634c2f1[57];
  virtual  ~S8634C2(); // _ZN7S8634C2D1Ev
  virtual void  v16(); // _ZN7S8634C23v16Ev
  virtual void  v17(); // _ZN7S8634C23v17Ev
  virtual void  v18(); // _ZN7S8634C23v18Ev
  virtual void  v19(); // _ZN7S8634C23v19Ev
  virtual void  v20(); // _ZN7S8634C23v20Ev
  virtual void  v21(); // _ZN7S8634C23v21Ev
  virtual void  v22(); // _ZN7S8634C23v22Ev
  virtual void  v23(); // _ZN7S8634C23v23Ev
  virtual void  v24(); // _ZN7S8634C23v24Ev
  virtual void  v25(); // _ZN7S8634C23v25Ev
  virtual void  v26(); // _ZN7S8634C23v26Ev
  virtual void  v27(); // _ZN7S8634C23v27Ev
  virtual void  v28(); // _ZN7S8634C23v28Ev
  virtual void  v29(); // _ZN7S8634C23v29Ev
  virtual void  v30(); // _ZN7S8634C23v30Ev
  S8634C2(); // tgen
};
//SIG(-1 S8634C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fc Fi[57]}


 S8634C2 ::~S8634C2(){ note_dtor("S8634C2", this);}
void  S8634C2 ::v16(){vfunc_called(this, "_ZN7S8634C23v16Ev");}
void  S8634C2 ::v17(){vfunc_called(this, "_ZN7S8634C23v17Ev");}
void  S8634C2 ::v18(){vfunc_called(this, "_ZN7S8634C23v18Ev");}
void  S8634C2 ::v19(){vfunc_called(this, "_ZN7S8634C23v19Ev");}
void  S8634C2 ::v20(){vfunc_called(this, "_ZN7S8634C23v20Ev");}
void  S8634C2 ::v21(){vfunc_called(this, "_ZN7S8634C23v21Ev");}
void  S8634C2 ::v22(){vfunc_called(this, "_ZN7S8634C23v22Ev");}
void  S8634C2 ::v23(){vfunc_called(this, "_ZN7S8634C23v23Ev");}
void  S8634C2 ::v24(){vfunc_called(this, "_ZN7S8634C23v24Ev");}
void  S8634C2 ::v25(){vfunc_called(this, "_ZN7S8634C23v25Ev");}
void  S8634C2 ::v26(){vfunc_called(this, "_ZN7S8634C23v26Ev");}
void  S8634C2 ::v27(){vfunc_called(this, "_ZN7S8634C23v27Ev");}
void  S8634C2 ::v28(){vfunc_called(this, "_ZN7S8634C23v28Ev");}
void  S8634C2 ::v29(){vfunc_called(this, "_ZN7S8634C23v29Ev");}
void  S8634C2 ::v30(){vfunc_called(this, "_ZN7S8634C23v30Ev");}
S8634C2 ::S8634C2(){ note_ctor("S8634C2", this);} // tgen

static void Test_S8634C2()
{
  extern Class_Descriptor cd_S8634C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,60)];
    init_test(&cd_S8634C2, buf);
    S8634C2 *dp, &lv = *(dp=new (buf) S8634C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,236), "sizeof(S8634C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8634C2)");
    check_field_offset(lv, s8634c2f0, ABISELECT(8,4), "S8634C2.s8634c2f0");
    check_field_offset(lv, s8634c2f1, ABISELECT(12,8), "S8634C2.s8634c2f1");
    test_class_info(&lv, &cd_S8634C2);
    dp->~S8634C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8634C2(Test_S8634C2, "S8634C2", ABISELECT(240,236));

#else // __cplusplus

extern void _ZN7S8634C2C1Ev();
extern void _ZN7S8634C2D1Ev();
Name_Map name_map_S8634C2[] = {
  NSPAIR(_ZN7S8634C2C1Ev),
  NSPAIR(_ZN7S8634C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8634C2[];
extern void _ZN7S8634C2D1Ev();
extern void _ZN7S8634C2D0Ev();
extern void _ZN7S8634C23v16Ev();
extern void _ZN7S8634C23v17Ev();
extern void _ZN7S8634C23v18Ev();
extern void _ZN7S8634C23v19Ev();
extern void _ZN7S8634C23v20Ev();
extern void _ZN7S8634C23v21Ev();
extern void _ZN7S8634C23v22Ev();
extern void _ZN7S8634C23v23Ev();
extern void _ZN7S8634C23v24Ev();
extern void _ZN7S8634C23v25Ev();
extern void _ZN7S8634C23v26Ev();
extern void _ZN7S8634C23v27Ev();
extern void _ZN7S8634C23v28Ev();
extern void _ZN7S8634C23v29Ev();
extern void _ZN7S8634C23v30Ev();
static  VTBL_ENTRY vtc_S8634C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8634C2[0]),
  (VTBL_ENTRY)&_ZN7S8634C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8634C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8634C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8634C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8634C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8634C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8634C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8634C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8634C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8634C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8634C23v24Ev,
  (VTBL_ENTRY)&_ZN7S8634C23v25Ev,
  (VTBL_ENTRY)&_ZN7S8634C23v26Ev,
  (VTBL_ENTRY)&_ZN7S8634C23v27Ev,
  (VTBL_ENTRY)&_ZN7S8634C23v28Ev,
  (VTBL_ENTRY)&_ZN7S8634C23v29Ev,
  (VTBL_ENTRY)&_ZN7S8634C23v30Ev,
};
extern VTBL_ENTRY _ZTI7S8634C2[];
extern  VTBL_ENTRY _ZTV7S8634C2[];
Class_Descriptor cd_S8634C2 = {  "S8634C2", // class name
  0,0,//no base classes
  &(vtc_S8634C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(240,236), // object size
  NSPAIRA(_ZTI7S8634C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8634C2),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8634C3  {
  int s8634c3f0[31];
  void  mf8634c3(); // _ZN7S8634C38mf8634c3Ev
};
//SIG(-1 S8634C3) C1{ m Fi[31]}


void  S8634C3 ::mf8634c3(){}

static void Test_S8634C3()
{
  {
    init_simple_test("S8634C3");
    S8634C3 lv;
    check2(sizeof(lv), 124, "sizeof(S8634C3)");
    check2(__alignof__(lv), 4, "__alignof__(S8634C3)");
    check_field_offset(lv, s8634c3f0, 0, "S8634C3.s8634c3f0");
  }
}
static Arrange_To_Call_Me vS8634C3(Test_S8634C3, "S8634C3", 124);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8634C1  : S8634C2 {
  ::S8634C3 s8634c1f0;
  void *s8634c1f1;
  virtual  ~S8634C1(); // _ZN7S8634C1D1Ev
  virtual void  v1(); // _ZN7S8634C12v1Ev
  virtual void  v2(); // _ZN7S8634C12v2Ev
  virtual void  v3(); // _ZN7S8634C12v3Ev
  virtual void  v4(); // _ZN7S8634C12v4Ev
  virtual void  v5(); // _ZN7S8634C12v5Ev
  virtual void  v6(); // _ZN7S8634C12v6Ev
  virtual void  v7(); // _ZN7S8634C12v7Ev
  virtual void  v8(); // _ZN7S8634C12v8Ev
  virtual void  v9(); // _ZN7S8634C12v9Ev
  virtual void  v10(); // _ZN7S8634C13v10Ev
  virtual void  v11(); // _ZN7S8634C13v11Ev
  virtual void  v12(); // _ZN7S8634C13v12Ev
  virtual void  v13(); // _ZN7S8634C13v13Ev
  virtual void  v14(); // _ZN7S8634C13v14Ev
  virtual void  v15(); // _ZN7S8634C13v15Ev
  S8634C1(); // tgen
};
//SIG(1 S8634C1) C1{ BC2{ vd v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 Fc Fi[57]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 FC3{ m Fi[31]} Fp}


 S8634C1 ::~S8634C1(){ note_dtor("S8634C1", this);}
void  S8634C1 ::v1(){vfunc_called(this, "_ZN7S8634C12v1Ev");}
void  S8634C1 ::v2(){vfunc_called(this, "_ZN7S8634C12v2Ev");}
void  S8634C1 ::v3(){vfunc_called(this, "_ZN7S8634C12v3Ev");}
void  S8634C1 ::v4(){vfunc_called(this, "_ZN7S8634C12v4Ev");}
void  S8634C1 ::v5(){vfunc_called(this, "_ZN7S8634C12v5Ev");}
void  S8634C1 ::v6(){vfunc_called(this, "_ZN7S8634C12v6Ev");}
void  S8634C1 ::v7(){vfunc_called(this, "_ZN7S8634C12v7Ev");}
void  S8634C1 ::v8(){vfunc_called(this, "_ZN7S8634C12v8Ev");}
void  S8634C1 ::v9(){vfunc_called(this, "_ZN7S8634C12v9Ev");}
void  S8634C1 ::v10(){vfunc_called(this, "_ZN7S8634C13v10Ev");}
void  S8634C1 ::v11(){vfunc_called(this, "_ZN7S8634C13v11Ev");}
void  S8634C1 ::v12(){vfunc_called(this, "_ZN7S8634C13v12Ev");}
void  S8634C1 ::v13(){vfunc_called(this, "_ZN7S8634C13v13Ev");}
void  S8634C1 ::v14(){vfunc_called(this, "_ZN7S8634C13v14Ev");}
void  S8634C1 ::v15(){vfunc_called(this, "_ZN7S8634C13v15Ev");}
S8634C1 ::S8634C1(){ note_ctor("S8634C1", this);} // tgen

static void Test_S8634C1()
{
  extern Class_Descriptor cd_S8634C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(48,92)];
    init_test(&cd_S8634C1, buf);
    S8634C1 *dp, &lv = *(dp=new (buf) S8634C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(376,364), "sizeof(S8634C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8634C1)");
    check_base_class_offset(lv, (S8634C2*), 0, "S8634C1");
    check_field_offset(lv, s8634c1f0, ABISELECT(240,236), "S8634C1.s8634c1f0");
    check_field_offset(lv, s8634c1f1, ABISELECT(368,360), "S8634C1.s8634c1f1");
    test_class_info(&lv, &cd_S8634C1);
    dp->~S8634C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8634C1(Test_S8634C1, "S8634C1", ABISELECT(376,364));

#else // __cplusplus

extern void _ZN7S8634C1C1Ev();
extern void _ZN7S8634C1D1Ev();
Name_Map name_map_S8634C1[] = {
  NSPAIR(_ZN7S8634C1C1Ev),
  NSPAIR(_ZN7S8634C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8634C2;
extern VTBL_ENTRY _ZTI7S8634C2[];
extern  VTBL_ENTRY _ZTV7S8634C2[];
static Base_Class bases_S8634C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8634C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8634C1[];
extern void _ZN7S8634C1D1Ev();
extern void _ZN7S8634C1D0Ev();
extern void _ZN7S8634C23v16Ev();
extern void _ZN7S8634C23v17Ev();
extern void _ZN7S8634C23v18Ev();
extern void _ZN7S8634C23v19Ev();
extern void _ZN7S8634C23v20Ev();
extern void _ZN7S8634C23v21Ev();
extern void _ZN7S8634C23v22Ev();
extern void _ZN7S8634C23v23Ev();
extern void _ZN7S8634C23v24Ev();
extern void _ZN7S8634C23v25Ev();
extern void _ZN7S8634C23v26Ev();
extern void _ZN7S8634C23v27Ev();
extern void _ZN7S8634C23v28Ev();
extern void _ZN7S8634C23v29Ev();
extern void _ZN7S8634C23v30Ev();
extern void _ZN7S8634C12v1Ev();
extern void _ZN7S8634C12v2Ev();
extern void _ZN7S8634C12v3Ev();
extern void _ZN7S8634C12v4Ev();
extern void _ZN7S8634C12v5Ev();
extern void _ZN7S8634C12v6Ev();
extern void _ZN7S8634C12v7Ev();
extern void _ZN7S8634C12v8Ev();
extern void _ZN7S8634C12v9Ev();
extern void _ZN7S8634C13v10Ev();
extern void _ZN7S8634C13v11Ev();
extern void _ZN7S8634C13v12Ev();
extern void _ZN7S8634C13v13Ev();
extern void _ZN7S8634C13v14Ev();
extern void _ZN7S8634C13v15Ev();
static  VTBL_ENTRY vtc_S8634C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8634C1[0]),
  (VTBL_ENTRY)&_ZN7S8634C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8634C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8634C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8634C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8634C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8634C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8634C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8634C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8634C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8634C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8634C23v24Ev,
  (VTBL_ENTRY)&_ZN7S8634C23v25Ev,
  (VTBL_ENTRY)&_ZN7S8634C23v26Ev,
  (VTBL_ENTRY)&_ZN7S8634C23v27Ev,
  (VTBL_ENTRY)&_ZN7S8634C23v28Ev,
  (VTBL_ENTRY)&_ZN7S8634C23v29Ev,
  (VTBL_ENTRY)&_ZN7S8634C23v30Ev,
  (VTBL_ENTRY)&_ZN7S8634C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8634C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8634C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8634C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8634C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8634C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8634C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8634C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8634C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8634C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8634C13v11Ev,
  (VTBL_ENTRY)&_ZN7S8634C13v12Ev,
  (VTBL_ENTRY)&_ZN7S8634C13v13Ev,
  (VTBL_ENTRY)&_ZN7S8634C13v14Ev,
  (VTBL_ENTRY)&_ZN7S8634C13v15Ev,
};
extern VTBL_ENTRY _ZTI7S8634C1[];
extern  VTBL_ENTRY _ZTV7S8634C1[];
Class_Descriptor cd_S8634C1 = {  "S8634C1", // class name
  bases_S8634C1, 1,
  &(vtc_S8634C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(376,364), // object size
  NSPAIRA(_ZTI7S8634C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8634C1),34, //virtual function table var
  2, // 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  S1127C3  : S3216C8_nt {
};
//SIG(-1 S1127C3) C1{ BC2{ m Fi}}



static void Test_S1127C3()
{
  extern Class_Descriptor cd_S1127C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S1127C3, buf);
    S1127C3 &lv = *(new (buf) S1127C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S1127C3)");
    check2(__alignof__(lv), 4, "__alignof__(S1127C3)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S1127C3");
    test_class_info(&lv, &cd_S1127C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1127C3(Test_S1127C3, "S1127C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S1127C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1127C3[];
Class_Descriptor cd_S1127C3 = {  "S1127C3", // class name
  bases_S1127C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S1127C3),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  S1127C2_nt  : S1127C3 {
  virtual  ~S1127C2_nt(); // _ZN10S1127C2_ntD1Ev
  virtual void  v8(); // _ZN10S1127C2_nt2v8Ev
  S1127C2_nt(); // tgen
};
//SIG(-1 S1127C2_nt) C1{ BC2{ BC3{ m Fi}} vd v1}


 S1127C2_nt ::~S1127C2_nt(){ note_dtor("S1127C2_nt", this);}
void  S1127C2_nt ::v8(){vfunc_called(this, "_ZN10S1127C2_nt2v8Ev");}
S1127C2_nt ::S1127C2_nt(){ note_ctor("S1127C2_nt", this);} // tgen

//skip512 S1127C2_nt

#else // __cplusplus

extern void _ZN10S1127C2_ntC1Ev();
extern void _ZN10S1127C2_ntD1Ev();
Name_Map name_map_S1127C2_nt[] = {
  NSPAIR(_ZN10S1127C2_ntC1Ev),
  NSPAIR(_ZN10S1127C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1127C3;
extern VTBL_ENTRY _ZTI7S1127C3[];
static Base_Class bases_S1127C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S1127C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1127C2_nt[];
extern void _ZN10S1127C2_ntD1Ev();
extern void _ZN10S1127C2_ntD0Ev();
extern void _ZN10S1127C2_nt2v8Ev();
static  VTBL_ENTRY vtc_S1127C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1127C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S1127C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1127C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1127C2_nt2v8Ev,
};
extern VTBL_ENTRY _ZTI10S1127C2_nt[];
VTBL_ENTRY *P__ZTI10S1127C2_nt = _ZTI10S1127C2_nt; 
extern  VTBL_ENTRY _ZTV10S1127C2_nt[];
Class_Descriptor cd_S1127C2_nt = {  "S1127C2_nt", // class name
  bases_S1127C2_nt, 2,
  &(vtc_S1127C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S1127C2_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV10S1127C2_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  S1127C5_nt  {
  virtual  ~S1127C5_nt(); // _ZN10S1127C5_ntD1Ev
  virtual void  v9(); // _ZN10S1127C5_nt2v9Ev
  virtual void  v10(); // _ZN10S1127C5_nt3v10Ev
  virtual void  v11(); // _ZN10S1127C5_nt3v11Ev
  virtual void  v12(); // _ZN10S1127C5_nt3v12Ev
  virtual void  v13(); // _ZN10S1127C5_nt3v13Ev
  virtual void  v14(); // _ZN10S1127C5_nt3v14Ev
  S1127C5_nt(); // tgen
};
//SIG(-1 S1127C5_nt) C1{ vd v1 v2 v3 v4 v5 v6}


 S1127C5_nt ::~S1127C5_nt(){ note_dtor("S1127C5_nt", this);}
void  S1127C5_nt ::v9(){vfunc_called(this, "_ZN10S1127C5_nt2v9Ev");}
void  S1127C5_nt ::v10(){vfunc_called(this, "_ZN10S1127C5_nt3v10Ev");}
void  S1127C5_nt ::v11(){vfunc_called(this, "_ZN10S1127C5_nt3v11Ev");}
void  S1127C5_nt ::v12(){vfunc_called(this, "_ZN10S1127C5_nt3v12Ev");}
void  S1127C5_nt ::v13(){vfunc_called(this, "_ZN10S1127C5_nt3v13Ev");}
void  S1127C5_nt ::v14(){vfunc_called(this, "_ZN10S1127C5_nt3v14Ev");}
S1127C5_nt ::S1127C5_nt(){ note_ctor("S1127C5_nt", this);} // tgen

//skip512 S1127C5_nt

#else // __cplusplus

extern void _ZN10S1127C5_ntC1Ev();
extern void _ZN10S1127C5_ntD1Ev();
Name_Map name_map_S1127C5_nt[] = {
  NSPAIR(_ZN10S1127C5_ntC1Ev),
  NSPAIR(_ZN10S1127C5_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S1127C5_nt[];
extern void _ZN10S1127C5_ntD1Ev();
extern void _ZN10S1127C5_ntD0Ev();
extern void _ZN10S1127C5_nt2v9Ev();
extern void _ZN10S1127C5_nt3v10Ev();
extern void _ZN10S1127C5_nt3v11Ev();
extern void _ZN10S1127C5_nt3v12Ev();
extern void _ZN10S1127C5_nt3v13Ev();
extern void _ZN10S1127C5_nt3v14Ev();
static  VTBL_ENTRY vtc_S1127C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1127C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S1127C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1127C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1127C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S1127C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S1127C5_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S1127C5_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S1127C5_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S1127C5_nt3v14Ev,
};
extern VTBL_ENTRY _ZTI10S1127C5_nt[];
VTBL_ENTRY *P__ZTI10S1127C5_nt = _ZTI10S1127C5_nt; 
extern  VTBL_ENTRY _ZTV10S1127C5_nt[];
Class_Descriptor cd_S1127C5_nt = {  "S1127C5_nt", // class name
  0,0,//no base classes
  &(vtc_S1127C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S1127C5_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S1127C5_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  S1127C11  {
  int s1127c11f0;
  void *s1127c11f1[3];
};
//SIG(-1 S1127C11) C1{ Fi Fp[3]}



static void Test_S1127C11()
{
  {
    init_simple_test("S1127C11");
    S1127C11 lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S1127C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1127C11)");
    check_field_offset(lv, s1127c11f0, 0, "S1127C11.s1127c11f0");
    check_field_offset(lv, s1127c11f1, ABISELECT(8,4), "S1127C11.s1127c11f1");
  }
}
static Arrange_To_Call_Me vS1127C11(Test_S1127C11, "S1127C11", ABISELECT(32,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1127C10  {
  ::S1127C11 s1127c10f0;
  void  mf1127c10(); // _ZN8S1127C109mf1127c10Ev
};
//SIG(-1 S1127C10) C1{ m FC2{ Fi Fp[3]}}


void  S1127C10 ::mf1127c10(){}

static void Test_S1127C10()
{
  {
    init_simple_test("S1127C10");
    S1127C10 lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S1127C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1127C10)");
    check_field_offset(lv, s1127c10f0, 0, "S1127C10.s1127c10f0");
  }
}
static Arrange_To_Call_Me vS1127C10(Test_S1127C10, "S1127C10", ABISELECT(32,16));

#else // __cplusplus

Class_Descriptor cd_S1127C10 = {  "S1127C10", // 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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1127C9  : S1127C10 {
};
//SIG(-1 S1127C9) C1{ BC2{ m FC3{ Fi Fp[3]}}}



static void Test_S1127C9()
{
  extern Class_Descriptor cd_S1127C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S1127C9, buf);
    S1127C9 &lv = *(new (buf) S1127C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S1127C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1127C9)");
    check_base_class_offset(lv, (S1127C10*), 0, "S1127C9");
    test_class_info(&lv, &cd_S1127C9);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1127C9(Test_S1127C9, "S1127C9", ABISELECT(32,16));

#else // __cplusplus

extern Class_Descriptor cd_S1127C10;
static Base_Class bases_S1127C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1127C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S1127C9 = {  "S1127C9", // class name
  bases_S1127C9, 1,
  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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1127C1  : S1127C2_nt , S1127C5_nt {
  void *s1127c1f0;
  ::S16701C4_nt s1127c1f1;
  char s1127c1f2[2];
  ::S133C12 s1127c1f3;
  ::S1127C9 s1127c1f4;
  virtual  ~S1127C1(); // _ZN7S1127C1D1Ev
  virtual void  v1(); // _ZN7S1127C12v1Ev
  virtual void  v2(); // _ZN7S1127C12v2Ev
  virtual void  v3(); // _ZN7S1127C12v3Ev
  virtual void  v4(); // _ZN7S1127C12v4Ev
  virtual void  v5(); // _ZN7S1127C12v5Ev
  virtual void  v6(); // _ZN7S1127C12v6Ev
  virtual void  v7(); // _ZN7S1127C12v7Ev
  S1127C1(); // tgen
};
//SIG(1 S1127C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v8} BC5{ vd v9 v10 v11 v12 v13 v14} vd v1 v2 v3 v4 v5 v6 v7 Fp FC6{ m Fp} Fc[2] FC7{ m FC8{ m Fp Fi[4]}} FC9{ BC10{ m FC11{ Fi Fp[3]}}}}


 S1127C1 ::~S1127C1(){ note_dtor("S1127C1", this);}
void  S1127C1 ::v1(){vfunc_called(this, "_ZN7S1127C12v1Ev");}
void  S1127C1 ::v2(){vfunc_called(this, "_ZN7S1127C12v2Ev");}
void  S1127C1 ::v3(){vfunc_called(this, "_ZN7S1127C12v3Ev");}
void  S1127C1 ::v4(){vfunc_called(this, "_ZN7S1127C12v4Ev");}
void  S1127C1 ::v5(){vfunc_called(this, "_ZN7S1127C12v5Ev");}
void  S1127C1 ::v6(){vfunc_called(this, "_ZN7S1127C12v6Ev");}
void  S1127C1 ::v7(){vfunc_called(this, "_ZN7S1127C12v7Ev");}
S1127C1 ::S1127C1(){ note_ctor("S1127C1", this);} // tgen

static void Test_S1127C1()
{
  extern Class_Descriptor cd_S1127C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,16)];
    init_test(&cd_S1127C1, buf);
    S1127C1 *dp, &lv = *(dp=new (buf) S1127C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,60), "sizeof(S1127C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1127C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1127C3*)(S1127C2_nt*), ABISELECT(8,4), "S1127C1");
    check_base_class_offset(lv, (S1127C3*)(S1127C2_nt*), ABISELECT(8,4), "S1127C1");
    check_base_class_offset(lv, (S1127C2_nt*), 0, "S1127C1");
    check_base_class_offset(lv, (S1127C5_nt*), ABISELECT(16,8), "S1127C1");
    check_field_offset(lv, s1127c1f0, ABISELECT(24,12), "S1127C1.s1127c1f0");
    check_field_offset(lv, s1127c1f1, ABISELECT(32,16), "S1127C1.s1127c1f1");
    check_field_offset(lv, s1127c1f2, ABISELECT(40,20), "S1127C1.s1127c1f2");
    check_field_offset(lv, s1127c1f3, ABISELECT(48,24), "S1127C1.s1127c1f3");
    check_field_offset(lv, s1127c1f4, ABISELECT(72,44), "S1127C1.s1127c1f4");
    test_class_info(&lv, &cd_S1127C1);
    dp->~S1127C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1127C1(Test_S1127C1, "S1127C1", ABISELECT(104,60));

#else // __cplusplus

extern void _ZN7S1127C1C1Ev();
extern void _ZN7S1127C1D1Ev();
Name_Map name_map_S1127C1[] = {
  NSPAIR(_ZN7S1127C1C1Ev),
  NSPAIR(_ZN7S1127C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1127C3;
extern VTBL_ENTRY _ZTI7S1127C3[];
extern Class_Descriptor cd_S1127C2_nt;
extern VTBL_ENTRY _ZTI10S1127C2_nt[];
extern  VTBL_ENTRY _ZTV10S1127C2_nt[];
extern Class_Descriptor cd_S1127C5_nt;
extern VTBL_ENTRY _ZTI10S1127C5_nt[];
extern  VTBL_ENTRY _ZTV10S1127C5_nt[];
static Base_Class bases_S1127C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S1127C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1127C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1127C5_nt,    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
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1127C1[];
extern void _ZN7S1127C1D1Ev();
extern void _ZN7S1127C1D0Ev();
extern void _ZN10S1127C2_nt2v8Ev();
extern void _ZN7S1127C12v1Ev();
extern void _ZN7S1127C12v2Ev();
extern void _ZN7S1127C12v3Ev();
extern void _ZN7S1127C12v4Ev();
extern void _ZN7S1127C12v5Ev();
extern void _ZN7S1127C12v6Ev();
extern void _ZN7S1127C12v7Ev();
extern void ABISELECT(_ZThn16_N7S1127C1D1Ev,_ZThn8_N7S1127C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S1127C1D0Ev,_ZThn8_N7S1127C1D0Ev)();
extern void _ZN10S1127C5_nt2v9Ev();
extern void _ZN10S1127C5_nt3v10Ev();
extern void _ZN10S1127C5_nt3v11Ev();
extern void _ZN10S1127C5_nt3v12Ev();
extern void _ZN10S1127C5_nt3v13Ev();
extern void _ZN10S1127C5_nt3v14Ev();
static  VTBL_ENTRY vtc_S1127C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1127C1[0]),
  (VTBL_ENTRY)&_ZN7S1127C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1127C1D0Ev,
  (VTBL_ENTRY)&_ZN10S1127C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S1127C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1127C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1127C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1127C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1127C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1127C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1127C12v7Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1127C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S1127C1D1Ev,_ZThn8_N7S1127C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S1127C1D0Ev,_ZThn8_N7S1127C1D0Ev),
  (VTBL_ENTRY)&_ZN10S1127C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S1127C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S1127C5_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S1127C5_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S1127C5_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S1127C5_nt3v14Ev,
};
extern VTBL_ENTRY _ZTI7S1127C1[];
extern  VTBL_ENTRY _ZTV7S1127C1[];
Class_Descriptor cd_S1127C1 = {  "S1127C1", // class name
  bases_S1127C1, 4,
  &(vtc_S1127C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,60), // object size
  NSPAIRA(_ZTI7S1127C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S1127C1),22, //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  S16428C9_nt  {
  ::S133C9_nt s16428c9f0;
  void  mf16428c9(); // _ZN11S16428C9_nt9mf16428c9Ev
};
//SIG(-1 S16428C9_nt) C1{ m FC2{ m Fp Fi[4]}}


void  S16428C9_nt ::mf16428c9(){}

//skip512 S16428C9_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16428C1  {
  ::S16701C4_nt s16428c1f0;
  ::S1021C13_nt s16428c1f1;
  ::S1021C13_nt s16428c1f2;
  ::S1020C15 s16428c1f3[688];
  ::S133C12 s16428c1f4;
  ::S1020C15 s16428c1f5;
  ::S1020C15 s16428c1f6;
  ::S1020C15 s16428c1f7;
  ::S1020C15 s16428c1f8[256];
  ::S1020C15 s16428c1f9[256];
  ::S1020C15 s16428c1f10[256];
  ::S133C8_nt s16428c1f11;
  ::S16428C9_nt s16428c1f12;
  void  mf16428c1(); // _ZN8S16428C19mf16428c1Ev
};
//SIG(1 S16428C1) C1{ m FC2{ m Fp} FC3{ m Fp} FC3 FC4{ m Fp}[688] FC5{ m FC6{ m Fp Fi[4]}} FC4 FC4 FC4 FC4[256] FC4[256] FC4[256] FC7{ m FC6} FC8{ m FC6}}


void  S16428C1 ::mf16428c1(){}

static void Test_S16428C1()
{
  {
    init_simple_test("S16428C1");
    S16428C1 lv;
    check2(sizeof(lv), ABISELECT(11768,5908), "sizeof(S16428C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16428C1)");
    check_field_offset(lv, s16428c1f0, 0, "S16428C1.s16428c1f0");
    check_field_offset(lv, s16428c1f1, ABISELECT(8,4), "S16428C1.s16428c1f1");
    check_field_offset(lv, s16428c1f2, ABISELECT(16,8), "S16428C1.s16428c1f2");
    check_field_offset(lv, s16428c1f3, ABISELECT(24,12), "S16428C1.s16428c1f3");
    check_field_offset(lv, s16428c1f4, ABISELECT(5528,2764), "S16428C1.s16428c1f4");
    check_field_offset(lv, s16428c1f5, ABISELECT(5552,2784), "S16428C1.s16428c1f5");
    check_field_offset(lv, s16428c1f6, ABISELECT(5560,2788), "S16428C1.s16428c1f6");
    check_field_offset(lv, s16428c1f7, ABISELECT(5568,2792), "S16428C1.s16428c1f7");
    check_field_offset(lv, s16428c1f8, ABISELECT(5576,2796), "S16428C1.s16428c1f8");
    check_field_offset(lv, s16428c1f9, ABISELECT(7624,3820), "S16428C1.s16428c1f9");
    check_field_offset(lv, s16428c1f10, ABISELECT(9672,4844), "S16428C1.s16428c1f10");
    check_field_offset(lv, s16428c1f11, ABISELECT(11720,5868), "S16428C1.s16428c1f11");
    check_field_offset(lv, s16428c1f12, ABISELECT(11744,5888), "S16428C1.s16428c1f12");
  }
}
static Arrange_To_Call_Me vS16428C1(Test_S16428C1, "S16428C1", ABISELECT(11768,5908));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S136C5  : S3216C8_nt {
};
//SIG(-1 S136C5) C1{ BC2{ m Fi}}



static void Test_S136C5()
{
  extern Class_Descriptor cd_S136C5;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S136C5, buf);
    S136C5 &lv = *(new (buf) S136C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S136C5)");
    check2(__alignof__(lv), 4, "__alignof__(S136C5)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S136C5");
    test_class_info(&lv, &cd_S136C5);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS136C5(Test_S136C5, "S136C5", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S136C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S136C5[];
Class_Descriptor cd_S136C5 = {  "S136C5", // class name
  bases_S136C5, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI6S136C5),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  S136C4  : S136C5 {
  int s136c4f0;
  virtual  ~S136C4(); // _ZN6S136C4D1Ev
  virtual void  v1(); // _ZN6S136C42v1Ev
  virtual void  v2(); // _ZN6S136C42v2Ev
  virtual void  v3(); // _ZN6S136C42v3Ev
  virtual void  v4(); // _ZN6S136C42v4Ev
  virtual void  v5(); // _ZN6S136C42v5Ev
  virtual void  v6(); // _ZN6S136C42v6Ev
  virtual void  v7(); // _ZN6S136C42v7Ev
  virtual void  v8(); // _ZN6S136C42v8Ev
  virtual void  v9(); // _ZN6S136C42v9Ev
  virtual void  v10(); // _ZN6S136C43v10Ev
  virtual void  v11(); // _ZN6S136C43v11Ev
  virtual void  v12(); // _ZN6S136C43v12Ev
  virtual void  v13(); // _ZN6S136C43v13Ev
  S136C4(); // tgen
};
//SIG(-1 S136C4) C1{ BC2{ BC3{ m Fi}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 Fi}


 S136C4 ::~S136C4(){ note_dtor("S136C4", this);}
void  S136C4 ::v1(){vfunc_called(this, "_ZN6S136C42v1Ev");}
void  S136C4 ::v2(){vfunc_called(this, "_ZN6S136C42v2Ev");}
void  S136C4 ::v3(){vfunc_called(this, "_ZN6S136C42v3Ev");}
void  S136C4 ::v4(){vfunc_called(this, "_ZN6S136C42v4Ev");}
void  S136C4 ::v5(){vfunc_called(this, "_ZN6S136C42v5Ev");}
void  S136C4 ::v6(){vfunc_called(this, "_ZN6S136C42v6Ev");}
void  S136C4 ::v7(){vfunc_called(this, "_ZN6S136C42v7Ev");}
void  S136C4 ::v8(){vfunc_called(this, "_ZN6S136C42v8Ev");}
void  S136C4 ::v9(){vfunc_called(this, "_ZN6S136C42v9Ev");}
void  S136C4 ::v10(){vfunc_called(this, "_ZN6S136C43v10Ev");}
void  S136C4 ::v11(){vfunc_called(this, "_ZN6S136C43v11Ev");}
void  S136C4 ::v12(){vfunc_called(this, "_ZN6S136C43v12Ev");}
void  S136C4 ::v13(){vfunc_called(this, "_ZN6S136C43v13Ev");}
S136C4 ::S136C4(){ note_ctor("S136C4", this);} // tgen

static void Test_S136C4()
{
  extern Class_Descriptor cd_S136C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S136C4, buf);
    S136C4 *dp, &lv = *(dp=new (buf) S136C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S136C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S136C4)");
    check_base_class_offset(lv, (S3216C8_nt*)(S136C5*), ABISELECT(8,4), "S136C4");
    check_base_class_offset(lv, (S136C5*), ABISELECT(8,4), "S136C4");
    check_field_offset(lv, s136c4f0, ABISELECT(12,8), "S136C4.s136c4f0");
    test_class_info(&lv, &cd_S136C4);
    dp->~S136C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS136C4(Test_S136C4, "S136C4", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN6S136C4C1Ev();
extern void _ZN6S136C4D1Ev();
Name_Map name_map_S136C4[] = {
  NSPAIR(_ZN6S136C4C1Ev),
  NSPAIR(_ZN6S136C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S136C5;
extern VTBL_ENTRY _ZTI6S136C5[];
static Base_Class bases_S136C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S136C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S136C4[];
extern void _ZN6S136C4D1Ev();
extern void _ZN6S136C4D0Ev();
extern void _ZN6S136C42v1Ev();
extern void _ZN6S136C42v2Ev();
extern void _ZN6S136C42v3Ev();
extern void _ZN6S136C42v4Ev();
extern void _ZN6S136C42v5Ev();
extern void _ZN6S136C42v6Ev();
extern void _ZN6S136C42v7Ev();
extern void _ZN6S136C42v8Ev();
extern void _ZN6S136C42v9Ev();
extern void _ZN6S136C43v10Ev();
extern void _ZN6S136C43v11Ev();
extern void _ZN6S136C43v12Ev();
extern void _ZN6S136C43v13Ev();
static  VTBL_ENTRY vtc_S136C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S136C4[0]),
  (VTBL_ENTRY)&_ZN6S136C4D1Ev,
  (VTBL_ENTRY)&_ZN6S136C4D0Ev,
  (VTBL_ENTRY)&_ZN6S136C42v1Ev,
  (VTBL_ENTRY)&_ZN6S136C42v2Ev,
  (VTBL_ENTRY)&_ZN6S136C42v3Ev,
  (VTBL_ENTRY)&_ZN6S136C42v4Ev,
  (VTBL_ENTRY)&_ZN6S136C42v5Ev,
  (VTBL_ENTRY)&_ZN6S136C42v6Ev,
  (VTBL_ENTRY)&_ZN6S136C42v7Ev,
  (VTBL_ENTRY)&_ZN6S136C42v8Ev,
  (VTBL_ENTRY)&_ZN6S136C42v9Ev,
  (VTBL_ENTRY)&_ZN6S136C43v10Ev,
  (VTBL_ENTRY)&_ZN6S136C43v11Ev,
  (VTBL_ENTRY)&_ZN6S136C43v12Ev,
  (VTBL_ENTRY)&_ZN6S136C43v13Ev,
};
extern VTBL_ENTRY _ZTI6S136C4[];
extern  VTBL_ENTRY _ZTV6S136C4[];
Class_Descriptor cd_S136C4 = {  "S136C4", // class name
  bases_S136C4, 2,
  &(vtc_S136C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI6S136C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV6S136C4),17, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S136C3  : S136C4 {
  ::S16428C9_nt s136c3f0;
  ::S133C15_nt s136c3f1;
  virtual  ~S136C3(); // _ZN6S136C3D1Ev
  virtual void  v14(); // _ZN6S136C33v14Ev
  virtual void  v15(); // _ZN6S136C33v15Ev
  virtual void  v16(); // _ZN6S136C33v16Ev
  S136C3(); // tgen
};
//SIG(-1 S136C3) C1{ BC2{ BC3{ BC4{ m Fi}} vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 Fi} vd v1 v2 v3 FC5{ m FC6{ m Fp Fi[4]}} FC7{ m Fi FC8{ BC9{ m Fp Fi}}}}


 S136C3 ::~S136C3(){ note_dtor("S136C3", this);}
void  S136C3 ::v14(){vfunc_called(this, "_ZN6S136C33v14Ev");}
void  S136C3 ::v15(){vfunc_called(this, "_ZN6S136C33v15Ev");}
void  S136C3 ::v16(){vfunc_called(this, "_ZN6S136C33v16Ev");}
S136C3 ::S136C3(){ note_ctor("S136C3", this);} // tgen

static void Test_S136C3()
{
  extern Class_Descriptor cd_S136C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S136C3, buf);
    S136C3 *dp, &lv = *(dp=new (buf) S136C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S136C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S136C3)");
    check_base_class_offset(lv, (S3216C8_nt*)(S136C5*)(S136C4*), ABISELECT(8,4), "S136C3");
    check_base_class_offset(lv, (S136C5*)(S136C4*), ABISELECT(8,4), "S136C3");
    check_base_class_offset(lv, (S136C4*), 0, "S136C3");
    check_field_offset(lv, s136c3f0, ABISELECT(16,12), "S136C3.s136c3f0");
    check_field_offset(lv, s136c3f1, ABISELECT(40,32), "S136C3.s136c3f1");
    test_class_info(&lv, &cd_S136C3);
    dp->~S136C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS136C3(Test_S136C3, "S136C3", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN6S136C3C1Ev();
extern void _ZN6S136C3D1Ev();
Name_Map name_map_S136C3[] = {
  NSPAIR(_ZN6S136C3C1Ev),
  NSPAIR(_ZN6S136C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S136C5;
extern VTBL_ENTRY _ZTI6S136C5[];
extern Class_Descriptor cd_S136C4;
extern VTBL_ENTRY _ZTI6S136C4[];
extern  VTBL_ENTRY _ZTV6S136C4[];
static Base_Class bases_S136C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S136C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S136C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S136C3[];
extern void _ZN6S136C3D1Ev();
extern void _ZN6S136C3D0Ev();
extern void _ZN6S136C42v1Ev();
extern void _ZN6S136C42v2Ev();
extern void _ZN6S136C42v3Ev();
extern void _ZN6S136C42v4Ev();
extern void _ZN6S136C42v5Ev();
extern void _ZN6S136C42v6Ev();
extern void _ZN6S136C42v7Ev();
extern void _ZN6S136C42v8Ev();
extern void _ZN6S136C42v9Ev();
extern void _ZN6S136C43v10Ev();
extern void _ZN6S136C43v11Ev();
extern void _ZN6S136C43v12Ev();
extern void _ZN6S136C43v13Ev();
extern void _ZN6S136C33v14Ev();
extern void _ZN6S136C33v15Ev();
extern void _ZN6S136C33v16Ev();
static  VTBL_ENTRY vtc_S136C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S136C3[0]),
  (VTBL_ENTRY)&_ZN6S136C3D1Ev,
  (VTBL_ENTRY)&_ZN6S136C3D0Ev,
  (VTBL_ENTRY)&_ZN6S136C42v1Ev,
  (VTBL_ENTRY)&_ZN6S136C42v2Ev,
  (VTBL_ENTRY)&_ZN6S136C42v3Ev,
  (VTBL_ENTRY)&_ZN6S136C42v4Ev,
  (VTBL_ENTRY)&_ZN6S136C42v5Ev,
  (VTBL_ENTRY)&_ZN6S136C42v6Ev,
  (VTBL_ENTRY)&_ZN6S136C42v7Ev,
  (VTBL_ENTRY)&_ZN6S136C42v8Ev,
  (VTBL_ENTRY)&_ZN6S136C42v9Ev,
  (VTBL_ENTRY)&_ZN6S136C43v10Ev,
  (VTBL_ENTRY)&_ZN6S136C43v11Ev,
  (VTBL_ENTRY)&_ZN6S136C43v12Ev,
  (VTBL_ENTRY)&_ZN6S136C43v13Ev,
  (VTBL_ENTRY)&_ZN6S136C33v14Ev,
  (VTBL_ENTRY)&_ZN6S136C33v15Ev,
  (VTBL_ENTRY)&_ZN6S136C33v16Ev,
};
extern VTBL_ENTRY _ZTI6S136C3[];
extern  VTBL_ENTRY _ZTV6S136C3[];
Class_Descriptor cd_S136C3 = {  "S136C3", // class name
  bases_S136C3, 3,
  &(vtc_S136C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI6S136C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S136C3),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  S136C2  : S136C3 {
  ~S136C2(); // tgen
  S136C2(); // tgen
};
//SIG(-1 S136C2) C1{ BC2{ BC3{ BC4{ BC5{ m Fi}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 Fi} vd v14 v15 v16 FC6{ m FC7{ m Fp Fi[4]}} FC8{ m Fi FC9{ BC10{ m Fp Fi}}}}}


S136C2 ::~S136C2(){ note_dtor("S136C2", this);} // tgen
S136C2 ::S136C2(){ note_ctor("S136C2", this);} // tgen

static void Test_S136C2()
{
  extern Class_Descriptor cd_S136C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S136C2, buf);
    S136C2 *dp, &lv = *(dp=new (buf) S136C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S136C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S136C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S136C5*)(S136C4*)(S136C3*), ABISELECT(8,4), "S136C2");
    check_base_class_offset(lv, (S136C5*)(S136C4*)(S136C3*), ABISELECT(8,4), "S136C2");
    check_base_class_offset(lv, (S136C4*)(S136C3*), 0, "S136C2");
    check_base_class_offset(lv, (S136C3*), 0, "S136C2");
    test_class_info(&lv, &cd_S136C2);
    dp->~S136C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS136C2(Test_S136C2, "S136C2", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN6S136C2C1Ev();
extern void _ZN6S136C2D1Ev();
Name_Map name_map_S136C2[] = {
  NSPAIR(_ZN6S136C2C1Ev),
  NSPAIR(_ZN6S136C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S136C5;
extern VTBL_ENTRY _ZTI6S136C5[];
extern Class_Descriptor cd_S136C4;
extern VTBL_ENTRY _ZTI6S136C4[];
extern  VTBL_ENTRY _ZTV6S136C4[];
extern Class_Descriptor cd_S136C3;
extern VTBL_ENTRY _ZTI6S136C3[];
extern  VTBL_ENTRY _ZTV6S136C3[];
static Base_Class bases_S136C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S136C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S136C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S136C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S136C2[];
extern void _ZN6S136C2D1Ev();
extern void _ZN6S136C2D0Ev();
extern void _ZN6S136C42v1Ev();
extern void _ZN6S136C42v2Ev();
extern void _ZN6S136C42v3Ev();
extern void _ZN6S136C42v4Ev();
extern void _ZN6S136C42v5Ev();
extern void _ZN6S136C42v6Ev();
extern void _ZN6S136C42v7Ev();
extern void _ZN6S136C42v8Ev();
extern void _ZN6S136C42v9Ev();
extern void _ZN6S136C43v10Ev();
extern void _ZN6S136C43v11Ev();
extern void _ZN6S136C43v12Ev();
extern void _ZN6S136C43v13Ev();
extern void _ZN6S136C33v14Ev();
extern void _ZN6S136C33v15Ev();
extern void _ZN6S136C33v16Ev();
static  VTBL_ENTRY vtc_S136C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S136C2[0]),
  (VTBL_ENTRY)&_ZN6S136C2D1Ev,
  (VTBL_ENTRY)&_ZN6S136C2D0Ev,
  (VTBL_ENTRY)&_ZN6S136C42v1Ev,
  (VTBL_ENTRY)&_ZN6S136C42v2Ev,
  (VTBL_ENTRY)&_ZN6S136C42v3Ev,
  (VTBL_ENTRY)&_ZN6S136C42v4Ev,
  (VTBL_ENTRY)&_ZN6S136C42v5Ev,
  (VTBL_ENTRY)&_ZN6S136C42v6Ev,
  (VTBL_ENTRY)&_ZN6S136C42v7Ev,
  (VTBL_ENTRY)&_ZN6S136C42v8Ev,
  (VTBL_ENTRY)&_ZN6S136C42v9Ev,
  (VTBL_ENTRY)&_ZN6S136C43v10Ev,
  (VTBL_ENTRY)&_ZN6S136C43v11Ev,
  (VTBL_ENTRY)&_ZN6S136C43v12Ev,
  (VTBL_ENTRY)&_ZN6S136C43v13Ev,
  (VTBL_ENTRY)&_ZN6S136C33v14Ev,
  (VTBL_ENTRY)&_ZN6S136C33v15Ev,
  (VTBL_ENTRY)&_ZN6S136C33v16Ev,
};
extern VTBL_ENTRY _ZTI6S136C2[];
extern  VTBL_ENTRY _ZTV6S136C2[];
Class_Descriptor cd_S136C2 = {  "S136C2", // class name
  bases_S136C2, 4,
  &(vtc_S136C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI6S136C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S136C2),20, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S136C1  : S136C2 {
  ~S136C1(); // tgen
  S136C1(); // tgen
};
//SIG(1 S136C1) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ m Fi}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 Fi} vd v14 v15 v16 FC7{ m FC8{ m Fp Fi[4]}} FC9{ m Fi FC10{ BC11{ m Fp Fi}}}}}}


S136C1 ::~S136C1(){ note_dtor("S136C1", this);} // tgen
S136C1 ::S136C1(){ note_ctor("S136C1", this);} // tgen

static void Test_S136C1()
{
  extern Class_Descriptor cd_S136C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S136C1, buf);
    S136C1 *dp, &lv = *(dp=new (buf) S136C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S136C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S136C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S136C5*)(S136C4*)(S136C3*)(S136C2*), ABISELECT(8,4), "S136C1");
    check_base_class_offset(lv, (S136C5*)(S136C4*)(S136C3*)(S136C2*), ABISELECT(8,4), "S136C1");
    check_base_class_offset(lv, (S136C4*)(S136C3*)(S136C2*), 0, "S136C1");
    check_base_class_offset(lv, (S136C3*)(S136C2*), 0, "S136C1");
    check_base_class_offset(lv, (S136C2*), 0, "S136C1");
    test_class_info(&lv, &cd_S136C1);
    dp->~S136C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS136C1(Test_S136C1, "S136C1", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN6S136C1C1Ev();
extern void _ZN6S136C1D1Ev();
Name_Map name_map_S136C1[] = {
  NSPAIR(_ZN6S136C1C1Ev),
  NSPAIR(_ZN6S136C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S136C5;
extern VTBL_ENTRY _ZTI6S136C5[];
extern Class_Descriptor cd_S136C4;
extern VTBL_ENTRY _ZTI6S136C4[];
extern  VTBL_ENTRY _ZTV6S136C4[];
extern Class_Descriptor cd_S136C3;
extern VTBL_ENTRY _ZTI6S136C3[];
extern  VTBL_ENTRY _ZTV6S136C3[];
extern Class_Descriptor cd_S136C2;
extern VTBL_ENTRY _ZTI6S136C2[];
extern  VTBL_ENTRY _ZTV6S136C2[];
static Base_Class bases_S136C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S136C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S136C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S136C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S136C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S136C1[];
extern void _ZN6S136C1D1Ev();
extern void _ZN6S136C1D0Ev();
extern void _ZN6S136C42v1Ev();
extern void _ZN6S136C42v2Ev();
extern void _ZN6S136C42v3Ev();
extern void _ZN6S136C42v4Ev();
extern void _ZN6S136C42v5Ev();
extern void _ZN6S136C42v6Ev();
extern void _ZN6S136C42v7Ev();
extern void _ZN6S136C42v8Ev();
extern void _ZN6S136C42v9Ev();
extern void _ZN6S136C43v10Ev();
extern void _ZN6S136C43v11Ev();
extern void _ZN6S136C43v12Ev();
extern void _ZN6S136C43v13Ev();
extern void _ZN6S136C33v14Ev();
extern void _ZN6S136C33v15Ev();
extern void _ZN6S136C33v16Ev();
static  VTBL_ENTRY vtc_S136C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S136C1[0]),
  (VTBL_ENTRY)&_ZN6S136C1D1Ev,
  (VTBL_ENTRY)&_ZN6S136C1D0Ev,
  (VTBL_ENTRY)&_ZN6S136C42v1Ev,
  (VTBL_ENTRY)&_ZN6S136C42v2Ev,
  (VTBL_ENTRY)&_ZN6S136C42v3Ev,
  (VTBL_ENTRY)&_ZN6S136C42v4Ev,
  (VTBL_ENTRY)&_ZN6S136C42v5Ev,
  (VTBL_ENTRY)&_ZN6S136C42v6Ev,
  (VTBL_ENTRY)&_ZN6S136C42v7Ev,
  (VTBL_ENTRY)&_ZN6S136C42v8Ev,
  (VTBL_ENTRY)&_ZN6S136C42v9Ev,
  (VTBL_ENTRY)&_ZN6S136C43v10Ev,
  (VTBL_ENTRY)&_ZN6S136C43v11Ev,
  (VTBL_ENTRY)&_ZN6S136C43v12Ev,
  (VTBL_ENTRY)&_ZN6S136C43v13Ev,
  (VTBL_ENTRY)&_ZN6S136C33v14Ev,
  (VTBL_ENTRY)&_ZN6S136C33v15Ev,
  (VTBL_ENTRY)&_ZN6S136C33v16Ev,
};
extern VTBL_ENTRY _ZTI6S136C1[];
extern  VTBL_ENTRY _ZTV6S136C1[];
Class_Descriptor cd_S136C1 = {  "S136C1", // class name
  bases_S136C1, 5,
  &(vtc_S136C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI6S136C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S136C1),20, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S22085C4  {
  int s22085c4f0[3];
  ::S133C17_nt s22085c4f1;
  ::S133C17_nt s22085c4f2;
  ::S133C17_nt s22085c4f3;
  int s22085c4f4;
  void  mf22085c4(); // _ZN8S22085C49mf22085c4Ev
};
//SIG(-1 S22085C4) C1{ m Fi[3] FC2{ m Fp Fi} FC2 FC2 Fi}


void  S22085C4 ::mf22085c4(){}

static void Test_S22085C4()
{
  {
    init_simple_test("S22085C4");
    S22085C4 lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S22085C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S22085C4)");
    check_field_offset(lv, s22085c4f0, 0, "S22085C4.s22085c4f0");
    check_field_offset(lv, s22085c4f1, ABISELECT(16,12), "S22085C4.s22085c4f1");
    check_field_offset(lv, s22085c4f2, ABISELECT(32,20), "S22085C4.s22085c4f2");
    check_field_offset(lv, s22085c4f3, ABISELECT(48,28), "S22085C4.s22085c4f3");
    check_field_offset(lv, s22085c4f4, ABISELECT(64,36), "S22085C4.s22085c4f4");
  }
}
static Arrange_To_Call_Me vS22085C4(Test_S22085C4, "S22085C4", ABISELECT(72,40));

#else // __cplusplus

Class_Descriptor cd_S22085C4 = {  "S22085C4", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(72,40), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S22085C3  : S22085C4 {
  int s22085c3f0;
};
//SIG(-1 S22085C3) C1{ BC2{ m Fi[3] FC3{ m Fp Fi} FC3 FC3 Fi} Fi}



static void Test_S22085C3()
{
  extern Class_Descriptor cd_S22085C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,12)];
    init_test(&cd_S22085C3, buf);
    S22085C3 &lv = *(new (buf) S22085C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S22085C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S22085C3)");
    check_base_class_offset(lv, (S22085C4*), 0, "S22085C3");
    check_field_offset(lv, s22085c3f0, ABISELECT(72,40), "S22085C3.s22085c3f0");
    test_class_info(&lv, &cd_S22085C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS22085C3(Test_S22085C3, "S22085C3", ABISELECT(80,44));

#else // __cplusplus

extern Class_Descriptor cd_S22085C4;
static Base_Class bases_S22085C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S22085C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S22085C3 = {  "S22085C3", // class name
  bases_S22085C3, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(80,44), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S22085C2  {
  void *s22085c2f0[2];
  ::S22085C3 s22085c2f1;
  int s22085c2f2[2];
  virtual  ~S22085C2(); // _ZN8S22085C2D1Ev
  virtual void  v15(); // _ZN8S22085C23v15Ev
  S22085C2(); // tgen
};
//SIG(-1 S22085C2) C1{ vd v1 Fp[2] FC2{ BC3{ m Fi[3] FC4{ m Fp Fi} FC4 FC4 Fi} Fi} Fi[2]}


 S22085C2 ::~S22085C2(){ note_dtor("S22085C2", this);}
void  S22085C2 ::v15(){vfunc_called(this, "_ZN8S22085C23v15Ev");}
S22085C2 ::S22085C2(){ note_ctor("S22085C2", this);} // tgen

static void Test_S22085C2()
{
  extern Class_Descriptor cd_S22085C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,17)];
    init_test(&cd_S22085C2, buf);
    S22085C2 *dp, &lv = *(dp=new (buf) S22085C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,64), "sizeof(S22085C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S22085C2)");
    check_field_offset(lv, s22085c2f0, ABISELECT(8,4), "S22085C2.s22085c2f0");
    check_field_offset(lv, s22085c2f1, ABISELECT(24,12), "S22085C2.s22085c2f1");
    check_field_offset(lv, s22085c2f2, ABISELECT(104,56), "S22085C2.s22085c2f2");
    test_class_info(&lv, &cd_S22085C2);
    dp->~S22085C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS22085C2(Test_S22085C2, "S22085C2", ABISELECT(112,64));

#else // __cplusplus

extern void _ZN8S22085C2C1Ev();
extern void _ZN8S22085C2D1Ev();
Name_Map name_map_S22085C2[] = {
  NSPAIR(_ZN8S22085C2C1Ev),
  NSPAIR(_ZN8S22085C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S22085C2[];
extern void _ZN8S22085C2D1Ev();
extern void _ZN8S22085C2D0Ev();
extern void _ZN8S22085C23v15Ev();
static  VTBL_ENTRY vtc_S22085C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S22085C2[0]),
  (VTBL_ENTRY)&_ZN8S22085C2D1Ev,
  (VTBL_ENTRY)&_ZN8S22085C2D0Ev,
  (VTBL_ENTRY)&_ZN8S22085C23v15Ev,
};
extern VTBL_ENTRY _ZTI8S22085C2[];
extern  VTBL_ENTRY _ZTV8S22085C2[];
Class_Descriptor cd_S22085C2 = {  "S22085C2", // class name
  0,0,//no base classes
  &(vtc_S22085C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,64), // object size
  NSPAIRA(_ZTI8S22085C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S22085C2),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  S22085C1  {
  ::S22085C2 s22085c1f0;
  void *s22085c1f1;
  int s22085c1f2[2];
  void *s22085c1f3;
  __tsi64 s22085c1f4;
  char s22085c1f5[2];
  int s22085c1f6;
  virtual  ~S22085C1(); // _ZN8S22085C1D1Ev
  virtual void  v1(); // _ZN8S22085C12v1Ev
  virtual void  v2(); // _ZN8S22085C12v2Ev
  virtual void  v3(); // _ZN8S22085C12v3Ev
  virtual void  v4(); // _ZN8S22085C12v4Ev
  virtual void  v5(); // _ZN8S22085C12v5Ev
  virtual void  v6(); // _ZN8S22085C12v6Ev
  virtual void  v7(); // _ZN8S22085C12v7Ev
  virtual void  v8(); // _ZN8S22085C12v8Ev
  virtual void  v9(); // _ZN8S22085C12v9Ev
  virtual void  v10(); // _ZN8S22085C13v10Ev
  virtual void  v11(); // _ZN8S22085C13v11Ev
  virtual void  v12(); // _ZN8S22085C13v12Ev
  virtual void  v13(); // _ZN8S22085C13v13Ev
  virtual void  v14(); // _ZN8S22085C13v14Ev
  S22085C1(); // tgen
};
//SIG(1 S22085C1) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 FC2{ vd v15 Fp[2] FC3{ BC4{ m Fi[3] FC5{ m Fp Fi} FC5 FC5 Fi} Fi} Fi[2]} Fp Fi[2] Fp FL Fc[2] Fi}


 S22085C1 ::~S22085C1(){ note_dtor("S22085C1", this);}
void  S22085C1 ::v1(){vfunc_called(this, "_ZN8S22085C12v1Ev");}
void  S22085C1 ::v2(){vfunc_called(this, "_ZN8S22085C12v2Ev");}
void  S22085C1 ::v3(){vfunc_called(this, "_ZN8S22085C12v3Ev");}
void  S22085C1 ::v4(){vfunc_called(this, "_ZN8S22085C12v4Ev");}
void  S22085C1 ::v5(){vfunc_called(this, "_ZN8S22085C12v5Ev");}
void  S22085C1 ::v6(){vfunc_called(this, "_ZN8S22085C12v6Ev");}
void  S22085C1 ::v7(){vfunc_called(this, "_ZN8S22085C12v7Ev");}
void  S22085C1 ::v8(){vfunc_called(this, "_ZN8S22085C12v8Ev");}
void  S22085C1 ::v9(){vfunc_called(this, "_ZN8S22085C12v9Ev");}
void  S22085C1 ::v10(){vfunc_called(this, "_ZN8S22085C13v10Ev");}
void  S22085C1 ::v11(){vfunc_called(this, "_ZN8S22085C13v11Ev");}
void  S22085C1 ::v12(){vfunc_called(this, "_ZN8S22085C13v12Ev");}
void  S22085C1 ::v13(){vfunc_called(this, "_ZN8S22085C13v13Ev");}
void  S22085C1 ::v14(){vfunc_called(this, "_ZN8S22085C13v14Ev");}
S22085C1 ::S22085C1(){ note_ctor("S22085C1", this);} // tgen

static void Test_S22085C1()
{
  extern Class_Descriptor cd_S22085C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,26)];
    init_test(&cd_S22085C1, buf);
    S22085C1 *dp, &lv = *(dp=new (buf) S22085C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,100), "sizeof(S22085C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S22085C1)");
    check_field_offset(lv, s22085c1f0, ABISELECT(8,4), "S22085C1.s22085c1f0");
    check_field_offset(lv, s22085c1f1, ABISELECT(120,68), "S22085C1.s22085c1f1");
    check_field_offset(lv, s22085c1f2, ABISELECT(128,72), "S22085C1.s22085c1f2");
    check_field_offset(lv, s22085c1f3, ABISELECT(136,80), "S22085C1.s22085c1f3");
    check_field_offset(lv, s22085c1f4, ABISELECT(144,84), "S22085C1.s22085c1f4");
    check_field_offset(lv, s22085c1f5, ABISELECT(152,92), "S22085C1.s22085c1f5");
    check_field_offset(lv, s22085c1f6, ABISELECT(156,96), "S22085C1.s22085c1f6");
    test_class_info(&lv, &cd_S22085C1);
    dp->~S22085C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS22085C1(Test_S22085C1, "S22085C1", ABISELECT(160,100));

#else // __cplusplus

extern void _ZN8S22085C1C1Ev();
extern void _ZN8S22085C1D1Ev();
Name_Map name_map_S22085C1[] = {
  NSPAIR(_ZN8S22085C1C1Ev),
  NSPAIR(_ZN8S22085C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S22085C1[];
extern void _ZN8S22085C1D1Ev();
extern void _ZN8S22085C1D0Ev();
extern void _ZN8S22085C12v1Ev();
extern void _ZN8S22085C12v2Ev();
extern void _ZN8S22085C12v3Ev();
extern void _ZN8S22085C12v4Ev();
extern void _ZN8S22085C12v5Ev();
extern void _ZN8S22085C12v6Ev();
extern void _ZN8S22085C12v7Ev();
extern void _ZN8S22085C12v8Ev();
extern void _ZN8S22085C12v9Ev();
extern void _ZN8S22085C13v10Ev();
extern void _ZN8S22085C13v11Ev();
extern void _ZN8S22085C13v12Ev();
extern void _ZN8S22085C13v13Ev();
extern void _ZN8S22085C13v14Ev();
static  VTBL_ENTRY vtc_S22085C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S22085C1[0]),
  (VTBL_ENTRY)&_ZN8S22085C1D1Ev,
  (VTBL_ENTRY)&_ZN8S22085C1D0Ev,
  (VTBL_ENTRY)&_ZN8S22085C12v1Ev,
  (VTBL_ENTRY)&_ZN8S22085C12v2Ev,
  (VTBL_ENTRY)&_ZN8S22085C12v3Ev,
  (VTBL_ENTRY)&_ZN8S22085C12v4Ev,
  (VTBL_ENTRY)&_ZN8S22085C12v5Ev,
  (VTBL_ENTRY)&_ZN8S22085C12v6Ev,
  (VTBL_ENTRY)&_ZN8S22085C12v7Ev,
  (VTBL_ENTRY)&_ZN8S22085C12v8Ev,
  (VTBL_ENTRY)&_ZN8S22085C12v9Ev,
  (VTBL_ENTRY)&_ZN8S22085C13v10Ev,
  (VTBL_ENTRY)&_ZN8S22085C13v11Ev,
  (VTBL_ENTRY)&_ZN8S22085C13v12Ev,
  (VTBL_ENTRY)&_ZN8S22085C13v13Ev,
  (VTBL_ENTRY)&_ZN8S22085C13v14Ev,
};
extern VTBL_ENTRY _ZTI8S22085C1[];
extern  VTBL_ENTRY _ZTV8S22085C1[];
Class_Descriptor cd_S22085C1 = {  "S22085C1", // class name
  0,0,//no base classes
  &(vtc_S22085C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,100), // object size
  NSPAIRA(_ZTI8S22085C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S22085C1),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  S8508C2  {
  void *s8508c2f0[4];
  virtual  ~S8508C2(); // _ZN7S8508C2D1Ev
  virtual void  v10(); // _ZN7S8508C23v10Ev
  virtual void  v11(); // _ZN7S8508C23v11Ev
  virtual void  v12(); // _ZN7S8508C23v12Ev
  virtual void  v13(); // _ZN7S8508C23v13Ev
  S8508C2(); // tgen
};
//SIG(-1 S8508C2) C1{ vd v1 v2 v3 v4 Fp[4]}


 S8508C2 ::~S8508C2(){ note_dtor("S8508C2", this);}
void  S8508C2 ::v10(){vfunc_called(this, "_ZN7S8508C23v10Ev");}
void  S8508C2 ::v11(){vfunc_called(this, "_ZN7S8508C23v11Ev");}
void  S8508C2 ::v12(){vfunc_called(this, "_ZN7S8508C23v12Ev");}
void  S8508C2 ::v13(){vfunc_called(this, "_ZN7S8508C23v13Ev");}
S8508C2 ::S8508C2(){ note_ctor("S8508C2", this);} // tgen

static void Test_S8508C2()
{
  extern Class_Descriptor cd_S8508C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S8508C2, buf);
    S8508C2 *dp, &lv = *(dp=new (buf) S8508C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S8508C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8508C2)");
    check_field_offset(lv, s8508c2f0, ABISELECT(8,4), "S8508C2.s8508c2f0");
    test_class_info(&lv, &cd_S8508C2);
    dp->~S8508C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8508C2(Test_S8508C2, "S8508C2", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S8508C2C1Ev();
extern void _ZN7S8508C2D1Ev();
Name_Map name_map_S8508C2[] = {
  NSPAIR(_ZN7S8508C2C1Ev),
  NSPAIR(_ZN7S8508C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8508C2[];
extern void _ZN7S8508C2D1Ev();
extern void _ZN7S8508C2D0Ev();
extern void _ZN7S8508C23v10Ev();
extern void _ZN7S8508C23v11Ev();
extern void _ZN7S8508C23v12Ev();
extern void _ZN7S8508C23v13Ev();
static  VTBL_ENTRY vtc_S8508C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8508C2[0]),
  (VTBL_ENTRY)&_ZN7S8508C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8508C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8508C23v10Ev,
  (VTBL_ENTRY)&_ZN7S8508C23v11Ev,
  (VTBL_ENTRY)&_ZN7S8508C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8508C23v13Ev,
};
extern VTBL_ENTRY _ZTI7S8508C2[];
extern  VTBL_ENTRY _ZTV7S8508C2[];
Class_Descriptor cd_S8508C2 = {  "S8508C2", // class name
  0,0,//no base classes
  &(vtc_S8508C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S8508C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8508C2),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  S8508C3  {
  virtual  ~S8508C3(); // _ZN7S8508C3D1Ev
  virtual void  v14(); // _ZN7S8508C33v14Ev
  S8508C3(); // tgen
};
//SIG(-1 S8508C3) C1{ vd v1}


 S8508C3 ::~S8508C3(){ note_dtor("S8508C3", this);}
void  S8508C3 ::v14(){vfunc_called(this, "_ZN7S8508C33v14Ev");}
S8508C3 ::S8508C3(){ note_ctor("S8508C3", this);} // tgen

static void Test_S8508C3()
{
  extern Class_Descriptor cd_S8508C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8508C3, buf);
    S8508C3 *dp, &lv = *(dp=new (buf) S8508C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8508C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8508C3)");
    test_class_info(&lv, &cd_S8508C3);
    dp->~S8508C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8508C3(Test_S8508C3, "S8508C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8508C3C1Ev();
extern void _ZN7S8508C3D1Ev();
Name_Map name_map_S8508C3[] = {
  NSPAIR(_ZN7S8508C3C1Ev),
  NSPAIR(_ZN7S8508C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8508C3[];
extern void _ZN7S8508C3D1Ev();
extern void _ZN7S8508C3D0Ev();
extern void _ZN7S8508C33v14Ev();
static  VTBL_ENTRY vtc_S8508C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8508C3[0]),
  (VTBL_ENTRY)&_ZN7S8508C3D1Ev,
  (VTBL_ENTRY)&_ZN7S8508C3D0Ev,
  (VTBL_ENTRY)&_ZN7S8508C33v14Ev,
};
extern VTBL_ENTRY _ZTI7S8508C3[];
extern  VTBL_ENTRY _ZTV7S8508C3[];
Class_Descriptor cd_S8508C3 = {  "S8508C3", // class name
  0,0,//no base classes
  &(vtc_S8508C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8508C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8508C3),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  S8508C4  {
  virtual  ~S8508C4(); // _ZN7S8508C4D1Ev
  virtual void  v15(); // _ZN7S8508C43v15Ev
  virtual void  v16(); // _ZN7S8508C43v16Ev
  S8508C4(); // tgen
};
//SIG(-1 S8508C4) C1{ vd v1 v2}


 S8508C4 ::~S8508C4(){ note_dtor("S8508C4", this);}
void  S8508C4 ::v15(){vfunc_called(this, "_ZN7S8508C43v15Ev");}
void  S8508C4 ::v16(){vfunc_called(this, "_ZN7S8508C43v16Ev");}
S8508C4 ::S8508C4(){ note_ctor("S8508C4", this);} // tgen

static void Test_S8508C4()
{
  extern Class_Descriptor cd_S8508C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8508C4, buf);
    S8508C4 *dp, &lv = *(dp=new (buf) S8508C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8508C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8508C4)");
    test_class_info(&lv, &cd_S8508C4);
    dp->~S8508C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8508C4(Test_S8508C4, "S8508C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8508C4C1Ev();
extern void _ZN7S8508C4D1Ev();
Name_Map name_map_S8508C4[] = {
  NSPAIR(_ZN7S8508C4C1Ev),
  NSPAIR(_ZN7S8508C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8508C4[];
extern void _ZN7S8508C4D1Ev();
extern void _ZN7S8508C4D0Ev();
extern void _ZN7S8508C43v15Ev();
extern void _ZN7S8508C43v16Ev();
static  VTBL_ENTRY vtc_S8508C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8508C4[0]),
  (VTBL_ENTRY)&_ZN7S8508C4D1Ev,
  (VTBL_ENTRY)&_ZN7S8508C4D0Ev,
  (VTBL_ENTRY)&_ZN7S8508C43v15Ev,
  (VTBL_ENTRY)&_ZN7S8508C43v16Ev,
};
extern VTBL_ENTRY _ZTI7S8508C4[];
extern  VTBL_ENTRY _ZTV7S8508C4[];
Class_Descriptor cd_S8508C4 = {  "S8508C4", // class name
  0,0,//no base classes
  &(vtc_S8508C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8508C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8508C4),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  S8508C5  {
  virtual  ~S8508C5(); // _ZN7S8508C5D1Ev
  virtual void  v17(); // _ZN7S8508C53v17Ev
  virtual void  v18(); // _ZN7S8508C53v18Ev
  S8508C5(); // tgen
};
//SIG(-1 S8508C5) C1{ vd v1 v2}


 S8508C5 ::~S8508C5(){ note_dtor("S8508C5", this);}
void  S8508C5 ::v17(){vfunc_called(this, "_ZN7S8508C53v17Ev");}
void  S8508C5 ::v18(){vfunc_called(this, "_ZN7S8508C53v18Ev");}
S8508C5 ::S8508C5(){ note_ctor("S8508C5", this);} // tgen

static void Test_S8508C5()
{
  extern Class_Descriptor cd_S8508C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8508C5, buf);
    S8508C5 *dp, &lv = *(dp=new (buf) S8508C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8508C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8508C5)");
    test_class_info(&lv, &cd_S8508C5);
    dp->~S8508C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8508C5(Test_S8508C5, "S8508C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8508C5C1Ev();
extern void _ZN7S8508C5D1Ev();
Name_Map name_map_S8508C5[] = {
  NSPAIR(_ZN7S8508C5C1Ev),
  NSPAIR(_ZN7S8508C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8508C5[];
extern void _ZN7S8508C5D1Ev();
extern void _ZN7S8508C5D0Ev();
extern void _ZN7S8508C53v17Ev();
extern void _ZN7S8508C53v18Ev();
static  VTBL_ENTRY vtc_S8508C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8508C5[0]),
  (VTBL_ENTRY)&_ZN7S8508C5D1Ev,
  (VTBL_ENTRY)&_ZN7S8508C5D0Ev,
  (VTBL_ENTRY)&_ZN7S8508C53v17Ev,
  (VTBL_ENTRY)&_ZN7S8508C53v18Ev,
};
extern VTBL_ENTRY _ZTI7S8508C5[];
extern  VTBL_ENTRY _ZTV7S8508C5[];
Class_Descriptor cd_S8508C5 = {  "S8508C5", // class name
  0,0,//no base classes
  &(vtc_S8508C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8508C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8508C5),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  S8508C6_nt  {
  virtual  ~S8508C6_nt(); // _ZN10S8508C6_ntD1Ev
  S8508C6_nt(); // tgen
};
//SIG(-1 S8508C6_nt) C1{ vd}


 S8508C6_nt ::~S8508C6_nt(){ note_dtor("S8508C6_nt", this);}
S8508C6_nt ::S8508C6_nt(){ note_ctor("S8508C6_nt", this);} // tgen

//skip512 S8508C6_nt

#else // __cplusplus

extern void _ZN10S8508C6_ntC1Ev();
extern void _ZN10S8508C6_ntD1Ev();
Name_Map name_map_S8508C6_nt[] = {
  NSPAIR(_ZN10S8508C6_ntC1Ev),
  NSPAIR(_ZN10S8508C6_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S8508C6_nt[];
extern void _ZN10S8508C6_ntD1Ev();
extern void _ZN10S8508C6_ntD0Ev();
static  VTBL_ENTRY vtc_S8508C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S8508C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S8508C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S8508C6_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S8508C6_nt[];
VTBL_ENTRY *P__ZTI10S8508C6_nt = _ZTI10S8508C6_nt; 
extern  VTBL_ENTRY _ZTV10S8508C6_nt[];
Class_Descriptor cd_S8508C6_nt = {  "S8508C6_nt", // class name
  0,0,//no base classes
  &(vtc_S8508C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S8508C6_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S8508C6_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  S8508C1  : S8508C2 , S8508C3 , S8508C4 , S8508C5 , S8508C6_nt {
  char s8508c1f0[2];
  ::S133C15_nt s8508c1f1;
  virtual void  v1(); // _ZN7S8508C12v1Ev
  virtual void  v2(); // _ZN7S8508C12v2Ev
  virtual void  v3(); // _ZN7S8508C12v3Ev
  virtual void  v4(); // _ZN7S8508C12v4Ev
  virtual void  v5(); // _ZN7S8508C12v5Ev
  virtual void  v6(); // _ZN7S8508C12v6Ev
  virtual void  v7(); // _ZN7S8508C12v7Ev
  virtual void  v8(); // _ZN7S8508C12v8Ev
  virtual void  v9(); // _ZN7S8508C12v9Ev
  ~S8508C1(); // tgen
  S8508C1(); // tgen
};
//SIG(1 S8508C1) C1{ BC2{ vd v10 v11 v12 v13 Fp[4]} BC3{ vd v14} BC4{ vd v15 v16} BC5{ vd v17 v18} BC6{ vd} v1 v2 v3 v4 v5 v6 v7 v8 v9 Fc[2] FC7{ m Fi FC8{ BC9{ m Fp Fi}}}}


void  S8508C1 ::v1(){vfunc_called(this, "_ZN7S8508C12v1Ev");}
void  S8508C1 ::v2(){vfunc_called(this, "_ZN7S8508C12v2Ev");}
void  S8508C1 ::v3(){vfunc_called(this, "_ZN7S8508C12v3Ev");}
void  S8508C1 ::v4(){vfunc_called(this, "_ZN7S8508C12v4Ev");}
void  S8508C1 ::v5(){vfunc_called(this, "_ZN7S8508C12v5Ev");}
void  S8508C1 ::v6(){vfunc_called(this, "_ZN7S8508C12v6Ev");}
void  S8508C1 ::v7(){vfunc_called(this, "_ZN7S8508C12v7Ev");}
void  S8508C1 ::v8(){vfunc_called(this, "_ZN7S8508C12v8Ev");}
void  S8508C1 ::v9(){vfunc_called(this, "_ZN7S8508C12v9Ev");}
S8508C1 ::~S8508C1(){ note_dtor("S8508C1", this);} // tgen
S8508C1 ::S8508C1(){ note_ctor("S8508C1", this);} // tgen

static void Test_S8508C1()
{
  extern Class_Descriptor cd_S8508C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[14];
    init_test(&cd_S8508C1, buf);
    S8508C1 *dp, &lv = *(dp=new (buf) S8508C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,52), "sizeof(S8508C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8508C1)");
    check_base_class_offset(lv, (S8508C2*), 0, "S8508C1");
    check_base_class_offset(lv, (S8508C3*), ABISELECT(40,20), "S8508C1");
    check_base_class_offset(lv, (S8508C4*), ABISELECT(48,24), "S8508C1");
    check_base_class_offset(lv, (S8508C5*), ABISELECT(56,28), "S8508C1");
    check_base_class_offset(lv, (S8508C6_nt*), ABISELECT(64,32), "S8508C1");
    check_field_offset(lv, s8508c1f0, ABISELECT(72,36), "S8508C1.s8508c1f0");
    check_field_offset(lv, s8508c1f1, ABISELECT(80,40), "S8508C1.s8508c1f1");
    test_class_info(&lv, &cd_S8508C1);
    dp->~S8508C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8508C1(Test_S8508C1, "S8508C1", ABISELECT(104,52));

#else // __cplusplus

extern void _ZN7S8508C1C1Ev();
extern void _ZN7S8508C1D1Ev();
Name_Map name_map_S8508C1[] = {
  NSPAIR(_ZN7S8508C1C1Ev),
  NSPAIR(_ZN7S8508C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8508C2;
extern VTBL_ENTRY _ZTI7S8508C2[];
extern  VTBL_ENTRY _ZTV7S8508C2[];
extern Class_Descriptor cd_S8508C3;
extern VTBL_ENTRY _ZTI7S8508C3[];
extern  VTBL_ENTRY _ZTV7S8508C3[];
extern Class_Descriptor cd_S8508C4;
extern VTBL_ENTRY _ZTI7S8508C4[];
extern  VTBL_ENTRY _ZTV7S8508C4[];
extern Class_Descriptor cd_S8508C5;
extern VTBL_ENTRY _ZTI7S8508C5[];
extern  VTBL_ENTRY _ZTV7S8508C5[];
extern Class_Descriptor cd_S8508C6_nt;
extern VTBL_ENTRY _ZTI10S8508C6_nt[];
extern  VTBL_ENTRY _ZTV10S8508C6_nt[];
static Base_Class bases_S8508C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8508C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8508C3,    ABISELECT(40,20), //bcp->offset
    17, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8508C4,    ABISELECT(48,24), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8508C5,    ABISELECT(56,28), //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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8508C6_nt,    ABISELECT(64,32), //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
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8508C1[];
extern void _ZN7S8508C1D1Ev();
extern void _ZN7S8508C1D0Ev();
extern void _ZN7S8508C23v10Ev();
extern void _ZN7S8508C23v11Ev();
extern void _ZN7S8508C23v12Ev();
extern void _ZN7S8508C23v13Ev();
extern void _ZN7S8508C12v1Ev();
extern void _ZN7S8508C12v2Ev();
extern void _ZN7S8508C12v3Ev();
extern void _ZN7S8508C12v4Ev();
extern void _ZN7S8508C12v5Ev();
extern void _ZN7S8508C12v6Ev();
extern void _ZN7S8508C12v7Ev();
extern void _ZN7S8508C12v8Ev();
extern void _ZN7S8508C12v9Ev();
extern void ABISELECT(_ZThn40_N7S8508C1D1Ev,_ZThn20_N7S8508C1D1Ev)();
extern void ABISELECT(_ZThn40_N7S8508C1D0Ev,_ZThn20_N7S8508C1D0Ev)();
extern void _ZN7S8508C33v14Ev();
extern void ABISELECT(_ZThn48_N7S8508C1D1Ev,_ZThn24_N7S8508C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S8508C1D0Ev,_ZThn24_N7S8508C1D0Ev)();
extern void _ZN7S8508C43v15Ev();
extern void _ZN7S8508C43v16Ev();
extern void ABISELECT(_ZThn56_N7S8508C1D1Ev,_ZThn28_N7S8508C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S8508C1D0Ev,_ZThn28_N7S8508C1D0Ev)();
extern void _ZN7S8508C53v17Ev();
extern void _ZN7S8508C53v18Ev();
extern void ABISELECT(_ZThn64_N7S8508C1D1Ev,_ZThn32_N7S8508C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S8508C1D0Ev,_ZThn32_N7S8508C1D0Ev)();
static  VTBL_ENTRY vtc_S8508C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8508C1[0]),
  (VTBL_ENTRY)&_ZN7S8508C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8508C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8508C23v10Ev,
  (VTBL_ENTRY)&_ZN7S8508C23v11Ev,
  (VTBL_ENTRY)&_ZN7S8508C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8508C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8508C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8508C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8508C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8508C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8508C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8508C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8508C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8508C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8508C12v9Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S8508C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S8508C1D1Ev,_ZThn20_N7S8508C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S8508C1D0Ev,_ZThn20_N7S8508C1D0Ev),
  (VTBL_ENTRY)&_ZN7S8508C33v14Ev,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S8508C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S8508C1D1Ev,_ZThn24_N7S8508C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S8508C1D0Ev,_ZThn24_N7S8508C1D0Ev),
  (VTBL_ENTRY)&_ZN7S8508C43v15Ev,
  (VTBL_ENTRY)&_ZN7S8508C43v16Ev,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S8508C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S8508C1D1Ev,_ZThn28_N7S8508C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S8508C1D0Ev,_ZThn28_N7S8508C1D0Ev),
  (VTBL_ENTRY)&_ZN7S8508C53v17Ev,
  (VTBL_ENTRY)&_ZN7S8508C53v18Ev,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S8508C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S8508C1D1Ev,_ZThn32_N7S8508C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S8508C1D0Ev,_ZThn32_N7S8508C1D0Ev),
};
extern VTBL_ENTRY _ZTI7S8508C1[];
extern  VTBL_ENTRY _ZTV7S8508C1[];
Class_Descriptor cd_S8508C1 = {  "S8508C1", // class name
  bases_S8508C1, 5,
  &(vtc_S8508C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,52), // object size
  NSPAIRA(_ZTI7S8508C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S8508C1),38, //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  S5636C1  : S133C7_nt {
  ::S16701C3 s5636c1f0;
  ::S16428C9_nt s5636c1f1;
  ::S133C12 s5636c1f2;
  char s5636c1f3;
  int s5636c1f4;
  ::S16701C4_nt s5636c1f5;
  ::S1021C13_nt s5636c1f6;
  ::S1020C15 s5636c1f7;
  ::S1020C13_nt s5636c1f8;
};
//SIG(1 S5636C1) C1{ BC2{ m FC3{ m FC4{ m Fp Fi[4]}}} FC5{ m FC6{ m Fp}} FC7{ m FC4} FC8{ m FC4} Fc Fi FC6 FC9{ m Fp} FC10{ m Fp} FC11{ m Fp}}



static void Test_S5636C1()
{
  extern Class_Descriptor cd_S5636C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,23)];
    init_test(&cd_S5636C1, buf);
    S5636C1 &lv = *(new (buf) S5636C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,88), "sizeof(S5636C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5636C1)");
    check_base_class_offset(lv, (S133C7_nt*), 0, "S5636C1");
    check_field_offset(lv, s5636c1f0, ABISELECT(24,20), "S5636C1.s5636c1f0");
    check_field_offset(lv, s5636c1f1, ABISELECT(32,24), "S5636C1.s5636c1f1");
    check_field_offset(lv, s5636c1f2, ABISELECT(56,44), "S5636C1.s5636c1f2");
    check_field_offset(lv, s5636c1f3, ABISELECT(80,64), "S5636C1.s5636c1f3");
    check_field_offset(lv, s5636c1f4, ABISELECT(84,68), "S5636C1.s5636c1f4");
    check_field_offset(lv, s5636c1f5, ABISELECT(88,72), "S5636C1.s5636c1f5");
    check_field_offset(lv, s5636c1f6, ABISELECT(96,76), "S5636C1.s5636c1f6");
    check_field_offset(lv, s5636c1f7, ABISELECT(104,80), "S5636C1.s5636c1f7");
    check_field_offset(lv, s5636c1f8, ABISELECT(112,84), "S5636C1.s5636c1f8");
    test_class_info(&lv, &cd_S5636C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5636C1(Test_S5636C1, "S5636C1", ABISELECT(120,88));

#else // __cplusplus

extern Class_Descriptor cd_S133C7_nt;
static Base_Class bases_S5636C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S133C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S5636C1 = {  "S5636C1", // class name
  bases_S5636C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(120,88), // 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  S1126C3  : S3216C8_nt {
};
//SIG(-1 S1126C3) C1{ BC2{ m Fi}}



static void Test_S1126C3()
{
  extern Class_Descriptor cd_S1126C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S1126C3, buf);
    S1126C3 &lv = *(new (buf) S1126C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S1126C3)");
    check2(__alignof__(lv), 4, "__alignof__(S1126C3)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S1126C3");
    test_class_info(&lv, &cd_S1126C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1126C3(Test_S1126C3, "S1126C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S1126C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1126C3[];
Class_Descriptor cd_S1126C3 = {  "S1126C3", // class name
  bases_S1126C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S1126C3),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  S1126C2  : S1126C3 {
  virtual  ~S1126C2(); // _ZN7S1126C2D1Ev
  virtual void  v8(); // _ZN7S1126C22v8Ev
  virtual void  v9(); // _ZN7S1126C22v9Ev
  virtual void  v10(); // _ZN7S1126C23v10Ev
  virtual void  v11(); // _ZN7S1126C23v11Ev
  virtual void  v12(); // _ZN7S1126C23v12Ev
  virtual void  v13(); // _ZN7S1126C23v13Ev
  virtual void  v14(); // _ZN7S1126C23v14Ev
  S1126C2(); // tgen
};
//SIG(-1 S1126C2) C1{ BC2{ BC3{ m Fi}} vd v1 v2 v3 v4 v5 v6 v7}


 S1126C2 ::~S1126C2(){ note_dtor("S1126C2", this);}
void  S1126C2 ::v8(){vfunc_called(this, "_ZN7S1126C22v8Ev");}
void  S1126C2 ::v9(){vfunc_called(this, "_ZN7S1126C22v9Ev");}
void  S1126C2 ::v10(){vfunc_called(this, "_ZN7S1126C23v10Ev");}
void  S1126C2 ::v11(){vfunc_called(this, "_ZN7S1126C23v11Ev");}
void  S1126C2 ::v12(){vfunc_called(this, "_ZN7S1126C23v12Ev");}
void  S1126C2 ::v13(){vfunc_called(this, "_ZN7S1126C23v13Ev");}
void  S1126C2 ::v14(){vfunc_called(this, "_ZN7S1126C23v14Ev");}
S1126C2 ::S1126C2(){ note_ctor("S1126C2", this);} // tgen

static void Test_S1126C2()
{
  extern Class_Descriptor cd_S1126C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1126C2, buf);
    S1126C2 *dp, &lv = *(dp=new (buf) S1126C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1126C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1126C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1126C3*), ABISELECT(8,4), "S1126C2");
    check_base_class_offset(lv, (S1126C3*), ABISELECT(8,4), "S1126C2");
    test_class_info(&lv, &cd_S1126C2);
    dp->~S1126C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1126C2(Test_S1126C2, "S1126C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1126C2C1Ev();
extern void _ZN7S1126C2D1Ev();
Name_Map name_map_S1126C2[] = {
  NSPAIR(_ZN7S1126C2C1Ev),
  NSPAIR(_ZN7S1126C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1126C3;
extern VTBL_ENTRY _ZTI7S1126C3[];
static Base_Class bases_S1126C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S1126C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1126C2[];
extern void _ZN7S1126C2D1Ev();
extern void _ZN7S1126C2D0Ev();
extern void _ZN7S1126C22v8Ev();
extern void _ZN7S1126C22v9Ev();
extern void _ZN7S1126C23v10Ev();
extern void _ZN7S1126C23v11Ev();
extern void _ZN7S1126C23v12Ev();
extern void _ZN7S1126C23v13Ev();
extern void _ZN7S1126C23v14Ev();
static  VTBL_ENTRY vtc_S1126C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1126C2[0]),
  (VTBL_ENTRY)&_ZN7S1126C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1126C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1126C22v8Ev,
  (VTBL_ENTRY)&_ZN7S1126C22v9Ev,
  (VTBL_ENTRY)&_ZN7S1126C23v10Ev,
  (VTBL_ENTRY)&_ZN7S1126C23v11Ev,
  (VTBL_ENTRY)&_ZN7S1126C23v12Ev,
  (VTBL_ENTRY)&_ZN7S1126C23v13Ev,
  (VTBL_ENTRY)&_ZN7S1126C23v14Ev,
};
extern VTBL_ENTRY _ZTI7S1126C2[];
extern  VTBL_ENTRY _ZTV7S1126C2[];
Class_Descriptor cd_S1126C2 = {  "S1126C2", // class name
  bases_S1126C2, 2,
  &(vtc_S1126C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1126C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1126C2),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  S1126C1  : S1126C2 {
  void *s1126c1f0;
  ::S133C15_nt s1126c1f1;
  ::S16428C9_nt s1126c1f2;
  int s1126c1f3[2];
  char s1126c1f4[2];
  virtual  ~S1126C1(); // _ZN7S1126C1D1Ev
  virtual void  v1(); // _ZN7S1126C12v1Ev
  virtual void  v2(); // _ZN7S1126C12v2Ev
  virtual void  v3(); // _ZN7S1126C12v3Ev
  virtual void  v4(); // _ZN7S1126C12v4Ev
  virtual void  v5(); // _ZN7S1126C12v5Ev
  virtual void  v6(); // _ZN7S1126C12v6Ev
  virtual void  v7(); // _ZN7S1126C12v7Ev
  S1126C1(); // tgen
};
//SIG(1 S1126C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v8 v9 v10 v11 v12 v13 v14} vd v1 v2 v3 v4 v5 v6 v7 Fp FC5{ m Fi FC6{ BC7{ m Fp Fi}}} FC8{ m FC9{ m Fp Fi[4]}} Fi[2] Fc[2]}


 S1126C1 ::~S1126C1(){ note_dtor("S1126C1", this);}
void  S1126C1 ::v1(){vfunc_called(this, "_ZN7S1126C12v1Ev");}
void  S1126C1 ::v2(){vfunc_called(this, "_ZN7S1126C12v2Ev");}
void  S1126C1 ::v3(){vfunc_called(this, "_ZN7S1126C12v3Ev");}
void  S1126C1 ::v4(){vfunc_called(this, "_ZN7S1126C12v4Ev");}
void  S1126C1 ::v5(){vfunc_called(this, "_ZN7S1126C12v5Ev");}
void  S1126C1 ::v6(){vfunc_called(this, "_ZN7S1126C12v6Ev");}
void  S1126C1 ::v7(){vfunc_called(this, "_ZN7S1126C12v7Ev");}
S1126C1 ::S1126C1(){ note_ctor("S1126C1", this);} // tgen

static void Test_S1126C1()
{
  extern Class_Descriptor cd_S1126C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S1126C1, buf);
    S1126C1 *dp, &lv = *(dp=new (buf) S1126C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S1126C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1126C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1126C3*)(S1126C2*), ABISELECT(8,4), "S1126C1");
    check_base_class_offset(lv, (S1126C3*)(S1126C2*), ABISELECT(8,4), "S1126C1");
    check_base_class_offset(lv, (S1126C2*), 0, "S1126C1");
    check_field_offset(lv, s1126c1f0, ABISELECT(16,8), "S1126C1.s1126c1f0");
    check_field_offset(lv, s1126c1f1, ABISELECT(24,12), "S1126C1.s1126c1f1");
    check_field_offset(lv, s1126c1f2, ABISELECT(48,24), "S1126C1.s1126c1f2");
    check_field_offset(lv, s1126c1f3, ABISELECT(72,44), "S1126C1.s1126c1f3");
    check_field_offset(lv, s1126c1f4, ABISELECT(80,52), "S1126C1.s1126c1f4");
    test_class_info(&lv, &cd_S1126C1);
    dp->~S1126C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1126C1(Test_S1126C1, "S1126C1", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN7S1126C1C1Ev();
extern void _ZN7S1126C1D1Ev();
Name_Map name_map_S1126C1[] = {
  NSPAIR(_ZN7S1126C1C1Ev),
  NSPAIR(_ZN7S1126C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1126C3;
extern VTBL_ENTRY _ZTI7S1126C3[];
extern Class_Descriptor cd_S1126C2;
extern VTBL_ENTRY _ZTI7S1126C2[];
extern  VTBL_ENTRY _ZTV7S1126C2[];
static Base_Class bases_S1126C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S1126C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1126C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1126C1[];
extern void _ZN7S1126C1D1Ev();
extern void _ZN7S1126C1D0Ev();
extern void _ZN7S1126C22v8Ev();
extern void _ZN7S1126C22v9Ev();
extern void _ZN7S1126C23v10Ev();
extern void _ZN7S1126C23v11Ev();
extern void _ZN7S1126C23v12Ev();
extern void _ZN7S1126C23v13Ev();
extern void _ZN7S1126C23v14Ev();
extern void _ZN7S1126C12v1Ev();
extern void _ZN7S1126C12v2Ev();
extern void _ZN7S1126C12v3Ev();
extern void _ZN7S1126C12v4Ev();
extern void _ZN7S1126C12v5Ev();
extern void _ZN7S1126C12v6Ev();
extern void _ZN7S1126C12v7Ev();
static  VTBL_ENTRY vtc_S1126C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1126C1[0]),
  (VTBL_ENTRY)&_ZN7S1126C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1126C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1126C22v8Ev,
  (VTBL_ENTRY)&_ZN7S1126C22v9Ev,
  (VTBL_ENTRY)&_ZN7S1126C23v10Ev,
  (VTBL_ENTRY)&_ZN7S1126C23v11Ev,
  (VTBL_ENTRY)&_ZN7S1126C23v12Ev,
  (VTBL_ENTRY)&_ZN7S1126C23v13Ev,
  (VTBL_ENTRY)&_ZN7S1126C23v14Ev,
  (VTBL_ENTRY)&_ZN7S1126C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1126C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1126C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1126C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1126C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1126C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1126C12v7Ev,
};
extern VTBL_ENTRY _ZTI7S1126C1[];
extern  VTBL_ENTRY _ZTV7S1126C1[];
Class_Descriptor cd_S1126C1 = {  "S1126C1", // class name
  bases_S1126C1, 3,
  &(vtc_S1126C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI7S1126C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1126C1),18, //virtual function table var
  2, // 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  S17573C6_nt  {
  int s17573c6f0;
  char s17573c6f1;
  void  mf17573c6(); // _ZN11S17573C6_nt9mf17573c6Ev
};
//SIG(-1 S17573C6_nt) C1{ m Fi Fc}


void  S17573C6_nt ::mf17573c6(){}

//skip512 S17573C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17573C2  {
  ::S16701C4_nt s17573c2f0;
  ::S1021C13_nt s17573c2f1;
  ::S16701C4_nt s17573c2f2;
  ::S1021C13_nt s17573c2f3;
  ::S3216C4_nt s17573c2f4;
  int s17573c2f5[3];
  ::S17573C6_nt s17573c2f6;
  ::S17573C6_nt s17573c2f7;
  ::S17573C6_nt s17573c2f8;
  int s17573c2f9[6];
  unsigned char s17573c2f10:1;
  unsigned char s17573c2f11:1;
  unsigned char s17573c2f12:1;
  unsigned char s17573c2f13:1;
  void  mf17573c2(); // _ZN8S17573C29mf17573c2Ev
};
//SIG(-1 S17573C2) C1{ m FC2{ m Fp} FC3{ m Fp} FC2 FC3 FC4{ m Fi[2]} Fi[3] FC5{ m Fi Fc} FC5 FC5 Fi[6] Fc:1 Fc:1 Fc:1 Fc:1}


void  S17573C2 ::mf17573c2(){}

static void Test_S17573C2()
{
  {
    init_simple_test("S17573C2");
    static S17573C2 lv;
    check2(sizeof(lv), ABISELECT(104,88), "sizeof(S17573C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17573C2)");
    check_field_offset(lv, s17573c2f0, 0, "S17573C2.s17573c2f0");
    check_field_offset(lv, s17573c2f1, ABISELECT(8,4), "S17573C2.s17573c2f1");
    check_field_offset(lv, s17573c2f2, ABISELECT(16,8), "S17573C2.s17573c2f2");
    check_field_offset(lv, s17573c2f3, ABISELECT(24,12), "S17573C2.s17573c2f3");
    check_field_offset(lv, s17573c2f4, ABISELECT(32,16), "S17573C2.s17573c2f4");
    check_field_offset(lv, s17573c2f5, ABISELECT(40,24), "S17573C2.s17573c2f5");
    check_field_offset(lv, s17573c2f6, ABISELECT(52,36), "S17573C2.s17573c2f6");
    check_field_offset(lv, s17573c2f7, ABISELECT(60,44), "S17573C2.s17573c2f7");
    check_field_offset(lv, s17573c2f8, ABISELECT(68,52), "S17573C2.s17573c2f8");
    check_field_offset(lv, s17573c2f9, ABISELECT(76,60), "S17573C2.s17573c2f9");
    set_bf_and_test(lv, s17573c2f10, ABISELECT(100,84), 0, 1, 1, "S17573C2");
    set_bf_and_test(lv, s17573c2f11, ABISELECT(100,84), 1, 1, 1, "S17573C2");
    set_bf_and_test(lv, s17573c2f12, ABISELECT(100,84), 2, 1, 1, "S17573C2");
    set_bf_and_test(lv, s17573c2f13, ABISELECT(100,84), 3, 1, 1, "S17573C2");
  }
}
static Arrange_To_Call_Me vS17573C2(Test_S17573C2, "S17573C2", ABISELECT(104,88));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17573C1  {
  void *s17573c1f0;
  ::S17573C2 s17573c1f1;
  ::S133C15_nt s17573c1f2;
  char s17573c1f3;
  int s17573c1f4;
  void  mf17573c1(); // _ZN8S17573C19mf17573c1Ev
};
//SIG(1 S17573C1) C1{ m Fp FC2{ m FC3{ m Fp} FC4{ m Fp} FC3 FC4 FC5{ m Fi[2]} Fi[3] FC6{ m Fi Fc} FC6 FC6 Fi[6] Fc:1 Fc:1 Fc:1 Fc:1} FC7{ m Fi FC8{ BC9{ m Fp Fi}}} Fc Fi}


void  S17573C1 ::mf17573c1(){}

static void Test_S17573C1()
{
  {
    init_simple_test("S17573C1");
    static S17573C1 lv;
    check2(sizeof(lv), ABISELECT(144,112), "sizeof(S17573C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17573C1)");
    check_field_offset(lv, s17573c1f0, 0, "S17573C1.s17573c1f0");
    check_field_offset(lv, s17573c1f1, ABISELECT(8,4), "S17573C1.s17573c1f1");
    check_field_offset(lv, s17573c1f2, ABISELECT(112,92), "S17573C1.s17573c1f2");
    check_field_offset(lv, s17573c1f3, ABISELECT(136,104), "S17573C1.s17573c1f3");
    check_field_offset(lv, s17573c1f4, ABISELECT(140,108), "S17573C1.s17573c1f4");
  }
}
static Arrange_To_Call_Me vS17573C1(Test_S17573C1, "S17573C1", ABISELECT(144,112));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S395C4  : S3216C8_nt {
};
//SIG(-1 S395C4) C1{ BC2{ m Fi}}



static void Test_S395C4()
{
  extern Class_Descriptor cd_S395C4;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S395C4, buf);
    S395C4 &lv = *(new (buf) S395C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S395C4)");
    check2(__alignof__(lv), 4, "__alignof__(S395C4)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S395C4");
    test_class_info(&lv, &cd_S395C4);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS395C4(Test_S395C4, "S395C4", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S395C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S395C4[];
Class_Descriptor cd_S395C4 = {  "S395C4", // class name
  bases_S395C4, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI6S395C4),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  S395C3  : S395C4 {
  virtual  ~S395C3(); // _ZN6S395C3D1Ev
  virtual void  v7(); // _ZN6S395C32v7Ev
  S395C3(); // tgen
};
//SIG(-1 S395C3) C1{ BC2{ BC3{ m Fi}} vd v1}


 S395C3 ::~S395C3(){ note_dtor("S395C3", this);}
void  S395C3 ::v7(){vfunc_called(this, "_ZN6S395C32v7Ev");}
S395C3 ::S395C3(){ note_ctor("S395C3", this);} // tgen

static void Test_S395C3()
{
  extern Class_Descriptor cd_S395C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S395C3, buf);
    S395C3 *dp, &lv = *(dp=new (buf) S395C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S395C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S395C3)");
    check_base_class_offset(lv, (S3216C8_nt*)(S395C4*), ABISELECT(8,4), "S395C3");
    check_base_class_offset(lv, (S395C4*), ABISELECT(8,4), "S395C3");
    test_class_info(&lv, &cd_S395C3);
    dp->~S395C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS395C3(Test_S395C3, "S395C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN6S395C3C1Ev();
extern void _ZN6S395C3D1Ev();
Name_Map name_map_S395C3[] = {
  NSPAIR(_ZN6S395C3C1Ev),
  NSPAIR(_ZN6S395C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S395C4;
extern VTBL_ENTRY _ZTI6S395C4[];
static Base_Class bases_S395C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S395C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S395C3[];
extern void _ZN6S395C3D1Ev();
extern void _ZN6S395C3D0Ev();
extern void _ZN6S395C32v7Ev();
static  VTBL_ENTRY vtc_S395C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S395C3[0]),
  (VTBL_ENTRY)&_ZN6S395C3D1Ev,
  (VTBL_ENTRY)&_ZN6S395C3D0Ev,
  (VTBL_ENTRY)&_ZN6S395C32v7Ev,
};
extern VTBL_ENTRY _ZTI6S395C3[];
extern  VTBL_ENTRY _ZTV6S395C3[];
Class_Descriptor cd_S395C3 = {  "S395C3", // class name
  bases_S395C3, 2,
  &(vtc_S395C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI6S395C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV6S395C3),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  S395C2  : S395C3 {
  ::S1127C9 s395c2f0;
  virtual  ~S395C2(); // _ZN6S395C2D1Ev
  virtual void  v8(); // _ZN6S395C22v8Ev
  virtual void  v9(); // _ZN6S395C22v9Ev
  S395C2(); // tgen
};
//SIG(-1 S395C2) C1{ BC2{ BC3{ BC4{ m Fi}} vd v3} vd v1 v2 FC5{ BC6{ m FC7{ Fi Fp[3]}}}}


 S395C2 ::~S395C2(){ note_dtor("S395C2", this);}
void  S395C2 ::v8(){vfunc_called(this, "_ZN6S395C22v8Ev");}
void  S395C2 ::v9(){vfunc_called(this, "_ZN6S395C22v9Ev");}
S395C2 ::S395C2(){ note_ctor("S395C2", this);} // tgen

static void Test_S395C2()
{
  extern Class_Descriptor cd_S395C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S395C2, buf);
    S395C2 *dp, &lv = *(dp=new (buf) S395C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S395C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S395C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S395C4*)(S395C3*), ABISELECT(8,4), "S395C2");
    check_base_class_offset(lv, (S395C4*)(S395C3*), ABISELECT(8,4), "S395C2");
    check_base_class_offset(lv, (S395C3*), 0, "S395C2");
    check_field_offset(lv, s395c2f0, ABISELECT(16,8), "S395C2.s395c2f0");
    test_class_info(&lv, &cd_S395C2);
    dp->~S395C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS395C2(Test_S395C2, "S395C2", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN6S395C2C1Ev();
extern void _ZN6S395C2D1Ev();
Name_Map name_map_S395C2[] = {
  NSPAIR(_ZN6S395C2C1Ev),
  NSPAIR(_ZN6S395C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S395C4;
extern VTBL_ENTRY _ZTI6S395C4[];
extern Class_Descriptor cd_S395C3;
extern VTBL_ENTRY _ZTI6S395C3[];
extern  VTBL_ENTRY _ZTV6S395C3[];
static Base_Class bases_S395C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S395C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S395C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S395C2[];
extern void _ZN6S395C2D1Ev();
extern void _ZN6S395C2D0Ev();
extern void _ZN6S395C32v7Ev();
extern void _ZN6S395C22v8Ev();
extern void _ZN6S395C22v9Ev();
static  VTBL_ENTRY vtc_S395C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S395C2[0]),
  (VTBL_ENTRY)&_ZN6S395C2D1Ev,
  (VTBL_ENTRY)&_ZN6S395C2D0Ev,
  (VTBL_ENTRY)&_ZN6S395C32v7Ev,
  (VTBL_ENTRY)&_ZN6S395C22v8Ev,
  (VTBL_ENTRY)&_ZN6S395C22v9Ev,
};
extern VTBL_ENTRY _ZTI6S395C2[];
extern  VTBL_ENTRY _ZTV6S395C2[];
Class_Descriptor cd_S395C2 = {  "S395C2", // class name
  bases_S395C2, 3,
  &(vtc_S395C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI6S395C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S395C2),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S395C10  {
  virtual  ~S395C10(); // _ZN7S395C10D1Ev
  virtual void  v10(); // _ZN7S395C103v10Ev
  virtual void  v11(); // _ZN7S395C103v11Ev
  S395C10(); // tgen
};
//SIG(-1 S395C10) C1{ vd v1 v2}


 S395C10 ::~S395C10(){ note_dtor("S395C10", this);}
void  S395C10 ::v10(){vfunc_called(this, "_ZN7S395C103v10Ev");}
void  S395C10 ::v11(){vfunc_called(this, "_ZN7S395C103v11Ev");}
S395C10 ::S395C10(){ note_ctor("S395C10", this);} // tgen

static void Test_S395C10()
{
  extern Class_Descriptor cd_S395C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S395C10, buf);
    S395C10 *dp, &lv = *(dp=new (buf) S395C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S395C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S395C10)");
    test_class_info(&lv, &cd_S395C10);
    dp->~S395C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS395C10(Test_S395C10, "S395C10", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S395C10C1Ev();
extern void _ZN7S395C10D1Ev();
Name_Map name_map_S395C10[] = {
  NSPAIR(_ZN7S395C10C1Ev),
  NSPAIR(_ZN7S395C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S395C10[];
extern void _ZN7S395C10D1Ev();
extern void _ZN7S395C10D0Ev();
extern void _ZN7S395C103v10Ev();
extern void _ZN7S395C103v11Ev();
static  VTBL_ENTRY vtc_S395C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S395C10[0]),
  (VTBL_ENTRY)&_ZN7S395C10D1Ev,
  (VTBL_ENTRY)&_ZN7S395C10D0Ev,
  (VTBL_ENTRY)&_ZN7S395C103v10Ev,
  (VTBL_ENTRY)&_ZN7S395C103v11Ev,
};
extern VTBL_ENTRY _ZTI7S395C10[];
extern  VTBL_ENTRY _ZTV7S395C10[];
Class_Descriptor cd_S395C10 = {  "S395C10", // class name
  0,0,//no base classes
  &(vtc_S395C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S395C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S395C10),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  S395C9_nt  : S395C10 {
  virtual  ~S395C9_nt(); // _ZN9S395C9_ntD1Ev
  virtual void  v12(); // _ZN9S395C9_nt3v12Ev
  virtual void  v13(); // _ZN9S395C9_nt3v13Ev
  virtual void  v14(); // _ZN9S395C9_nt3v14Ev
  S395C9_nt(); // tgen
};
//SIG(-1 S395C9_nt) C1{ BC2{ vd v4 v5} vd v1 v2 v3}


 S395C9_nt ::~S395C9_nt(){ note_dtor("S395C9_nt", this);}
void  S395C9_nt ::v12(){vfunc_called(this, "_ZN9S395C9_nt3v12Ev");}
void  S395C9_nt ::v13(){vfunc_called(this, "_ZN9S395C9_nt3v13Ev");}
void  S395C9_nt ::v14(){vfunc_called(this, "_ZN9S395C9_nt3v14Ev");}
S395C9_nt ::S395C9_nt(){ note_ctor("S395C9_nt", this);} // tgen

//skip512 S395C9_nt

#else // __cplusplus

extern void _ZN9S395C9_ntC1Ev();
extern void _ZN9S395C9_ntD1Ev();
Name_Map name_map_S395C9_nt[] = {
  NSPAIR(_ZN9S395C9_ntC1Ev),
  NSPAIR(_ZN9S395C9_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S395C10;
extern VTBL_ENTRY _ZTI7S395C10[];
extern  VTBL_ENTRY _ZTV7S395C10[];
static Base_Class bases_S395C9_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S395C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S395C9_nt[];
extern void _ZN9S395C9_ntD1Ev();
extern void _ZN9S395C9_ntD0Ev();
extern void _ZN7S395C103v10Ev();
extern void _ZN7S395C103v11Ev();
extern void _ZN9S395C9_nt3v12Ev();
extern void _ZN9S395C9_nt3v13Ev();
extern void _ZN9S395C9_nt3v14Ev();
static  VTBL_ENTRY vtc_S395C9_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S395C9_nt[0]),
  (VTBL_ENTRY)&_ZN9S395C9_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S395C9_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S395C103v10Ev,
  (VTBL_ENTRY)&_ZN7S395C103v11Ev,
  (VTBL_ENTRY)&_ZN9S395C9_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S395C9_nt3v13Ev,
  (VTBL_ENTRY)&_ZN9S395C9_nt3v14Ev,
};
extern VTBL_ENTRY _ZTI9S395C9_nt[];
VTBL_ENTRY *P__ZTI9S395C9_nt = _ZTI9S395C9_nt; 
extern  VTBL_ENTRY _ZTV9S395C9_nt[];
Class_Descriptor cd_S395C9_nt = {  "S395C9_nt", // class name
  bases_S395C9_nt, 1,
  &(vtc_S395C9_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S395C9_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S395C9_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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S395C1  : S395C2 , S395C9_nt {
  void *s395c1f0;
  ::S16701C4_nt s395c1f1;
  virtual void  v1(); // _ZN6S395C12v1Ev
  virtual void  v2(); // _ZN6S395C12v2Ev
  virtual void  v3(); // _ZN6S395C12v3Ev
  virtual void  v4(); // _ZN6S395C12v4Ev
  virtual void  v5(); // _ZN6S395C12v5Ev
  virtual void  v6(); // _ZN6S395C12v6Ev
  ~S395C1(); // tgen
  S395C1(); // tgen
};
//SIG(1 S395C1) C1{ BC2{ BC3{ BC4{ BC5{ m Fi}} vd v7} vd v8 v9 FC6{ BC7{ m FC8{ Fi Fp[3]}}}} BC9{ BC10{ vd v10 v11} vd v12 v13 v14} v1 v2 v3 v4 v5 v6 Fp FC11{ m Fp}}


void  S395C1 ::v1(){vfunc_called(this, "_ZN6S395C12v1Ev");}
void  S395C1 ::v2(){vfunc_called(this, "_ZN6S395C12v2Ev");}
void  S395C1 ::v3(){vfunc_called(this, "_ZN6S395C12v3Ev");}
void  S395C1 ::v4(){vfunc_called(this, "_ZN6S395C12v4Ev");}
void  S395C1 ::v5(){vfunc_called(this, "_ZN6S395C12v5Ev");}
void  S395C1 ::v6(){vfunc_called(this, "_ZN6S395C12v6Ev");}
S395C1 ::~S395C1(){ note_dtor("S395C1", this);} // tgen
S395C1 ::S395C1(){ note_ctor("S395C1", this);} // tgen

static void Test_S395C1()
{
  extern Class_Descriptor cd_S395C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S395C1, buf);
    S395C1 *dp, &lv = *(dp=new (buf) S395C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S395C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S395C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S395C4*)(S395C3*)(S395C2*), ABISELECT(8,4), "S395C1");
    check_base_class_offset(lv, (S395C4*)(S395C3*)(S395C2*), ABISELECT(8,4), "S395C1");
    check_base_class_offset(lv, (S395C3*)(S395C2*), 0, "S395C1");
    check_base_class_offset(lv, (S395C2*), 0, "S395C1");
    check_base_class_offset(lv, (S395C10*)(S395C9_nt*), ABISELECT(48,24), "S395C1");
    check_base_class_offset(lv, (S395C9_nt*), ABISELECT(48,24), "S395C1");
    check_field_offset(lv, s395c1f0, ABISELECT(56,28), "S395C1.s395c1f0");
    check_field_offset(lv, s395c1f1, ABISELECT(64,32), "S395C1.s395c1f1");
    test_class_info(&lv, &cd_S395C1);
    dp->~S395C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS395C1(Test_S395C1, "S395C1", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN6S395C1C1Ev();
extern void _ZN6S395C1D1Ev();
Name_Map name_map_S395C1[] = {
  NSPAIR(_ZN6S395C1C1Ev),
  NSPAIR(_ZN6S395C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S395C4;
extern VTBL_ENTRY _ZTI6S395C4[];
extern Class_Descriptor cd_S395C3;
extern VTBL_ENTRY _ZTI6S395C3[];
extern  VTBL_ENTRY _ZTV6S395C3[];
extern Class_Descriptor cd_S395C2;
extern VTBL_ENTRY _ZTI6S395C2[];
extern  VTBL_ENTRY _ZTV6S395C2[];
extern Class_Descriptor cd_S395C10;
extern VTBL_ENTRY _ZTI7S395C10[];
extern  VTBL_ENTRY _ZTV7S395C10[];
extern Class_Descriptor cd_S395C9_nt;
extern VTBL_ENTRY _ZTI9S395C9_nt[];
extern  VTBL_ENTRY _ZTV9S395C9_nt[];
static Base_Class bases_S395C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S395C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S395C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S395C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S395C10,    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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S395C9_nt,    ABISELECT(48,24), //bcp->offset
    13, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S395C1[];
extern void _ZN6S395C1D1Ev();
extern void _ZN6S395C1D0Ev();
extern void _ZN6S395C32v7Ev();
extern void _ZN6S395C22v8Ev();
extern void _ZN6S395C22v9Ev();
extern void _ZN6S395C12v1Ev();
extern void _ZN6S395C12v2Ev();
extern void _ZN6S395C12v3Ev();
extern void _ZN6S395C12v4Ev();
extern void _ZN6S395C12v5Ev();
extern void _ZN6S395C12v6Ev();
extern void ABISELECT(_ZThn48_N6S395C1D1Ev,_ZThn24_N6S395C1D1Ev)();
extern void ABISELECT(_ZThn48_N6S395C1D0Ev,_ZThn24_N6S395C1D0Ev)();
extern void _ZN7S395C103v10Ev();
extern void _ZN7S395C103v11Ev();
extern void _ZN9S395C9_nt3v12Ev();
extern void _ZN9S395C9_nt3v13Ev();
extern void _ZN9S395C9_nt3v14Ev();
static  VTBL_ENTRY vtc_S395C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S395C1[0]),
  (VTBL_ENTRY)&_ZN6S395C1D1Ev,
  (VTBL_ENTRY)&_ZN6S395C1D0Ev,
  (VTBL_ENTRY)&_ZN6S395C32v7Ev,
  (VTBL_ENTRY)&_ZN6S395C22v8Ev,
  (VTBL_ENTRY)&_ZN6S395C22v9Ev,
  (VTBL_ENTRY)&_ZN6S395C12v1Ev,
  (VTBL_ENTRY)&_ZN6S395C12v2Ev,
  (VTBL_ENTRY)&_ZN6S395C12v3Ev,
  (VTBL_ENTRY)&_ZN6S395C12v4Ev,
  (VTBL_ENTRY)&_ZN6S395C12v5Ev,
  (VTBL_ENTRY)&_ZN6S395C12v6Ev,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI6S395C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N6S395C1D1Ev,_ZThn24_N6S395C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N6S395C1D0Ev,_ZThn24_N6S395C1D0Ev),
  (VTBL_ENTRY)&_ZN7S395C103v10Ev,
  (VTBL_ENTRY)&_ZN7S395C103v11Ev,
  (VTBL_ENTRY)&_ZN9S395C9_nt3v12Ev,
  (VTBL_ENTRY)&_ZN9S395C9_nt3v13Ev,
  (VTBL_ENTRY)&_ZN9S395C9_nt3v14Ev,
};
extern VTBL_ENTRY _ZTI6S395C1[];
extern  VTBL_ENTRY _ZTV6S395C1[];
Class_Descriptor cd_S395C1 = {  "S395C1", // class name
  bases_S395C1, 6,
  &(vtc_S395C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI6S395C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV6S395C1),22, //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  S15917C5  {
  int s15917c5f0[2048];
};
//SIG(-1 S15917C5) C1{ Fi[2048]}



static void Test_S15917C5()
{
  {
    init_simple_test("S15917C5");
    S15917C5 lv;
    check2(sizeof(lv), 8192, "sizeof(S15917C5)");
    check2(__alignof__(lv), 4, "__alignof__(S15917C5)");
    check_field_offset(lv, s15917c5f0, 0, "S15917C5.s15917c5f0");
  }
}
static Arrange_To_Call_Me vS15917C5(Test_S15917C5, "S15917C5", 8192);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15917C3  : S133C17_nt {
  ::S15917C5 s15917c3f0;
};
//SIG(-1 S15917C3) C1{ BC2{ m Fp Fi} FC3{ Fi[2048]}}



static void Test_S15917C3()
{
  extern Class_Descriptor cd_S15917C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(1027,2051)];
    init_test(&cd_S15917C3, buf);
    S15917C3 &lv = *(new (buf) S15917C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8208,8200), "sizeof(S15917C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15917C3)");
    check_base_class_offset(lv, (S133C17_nt*), 0, "S15917C3");
    check_field_offset(lv, s15917c3f0, ABISELECT(16,8), "S15917C3.s15917c3f0");
    test_class_info(&lv, &cd_S15917C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15917C3(Test_S15917C3, "S15917C3", ABISELECT(8208,8200));

#else // __cplusplus

extern Class_Descriptor cd_S133C17_nt;
static Base_Class bases_S15917C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S133C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S15917C3 = {  "S15917C3", // class name
  bases_S15917C3, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(8208,8200), // 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  S15917C2  {
  int s15917c2f0;
  ::S15917C3 s15917c2f1;
  void  mf15917c2(); // _ZN8S15917C29mf15917c2Ev
};
//SIG(-1 S15917C2) C1{ m Fi FC2{ BC3{ m Fp Fi} FC4{ Fi[2048]}}}


void  S15917C2 ::mf15917c2(){}

static void Test_S15917C2()
{
  {
    init_simple_test("S15917C2");
    S15917C2 lv;
    check2(sizeof(lv), ABISELECT(8216,8204), "sizeof(S15917C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15917C2)");
    check_field_offset(lv, s15917c2f0, 0, "S15917C2.s15917c2f0");
    check_field_offset(lv, s15917c2f1, ABISELECT(8,4), "S15917C2.s15917c2f1");
  }
}
static Arrange_To_Call_Me vS15917C2(Test_S15917C2, "S15917C2", ABISELECT(8216,8204));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15917C8_nt  {
  void *s15917c8f0;
  int s15917c8f1;
  void  mf15917c8(); // _ZN11S15917C8_nt9mf15917c8Ev
};
//SIG(-1 S15917C8_nt) C1{ m Fp Fi}


void  S15917C8_nt ::mf15917c8(){}

//skip512 S15917C8_nt

#else // __cplusplus

Class_Descriptor cd_S15917C8_nt = {  "S15917C8_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  S15917C9  {
  int s15917c9f0[10240];
};
//SIG(-1 S15917C9) C1{ Fi[10240]}



static void Test_S15917C9()
{
  {
    init_simple_test("S15917C9");
    S15917C9 lv;
    check2(sizeof(lv), 40960, "sizeof(S15917C9)");
    check2(__alignof__(lv), 4, "__alignof__(S15917C9)");
    check_field_offset(lv, s15917c9f0, 0, "S15917C9.s15917c9f0");
  }
}
static Arrange_To_Call_Me vS15917C9(Test_S15917C9, "S15917C9", 40960);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15917C7  : S15917C8_nt {
  ::S15917C9 s15917c7f0;
};
//SIG(-1 S15917C7) C1{ BC2{ m Fp Fi} FC3{ Fi[10240]}}



static void Test_S15917C7()
{
  extern Class_Descriptor cd_S15917C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5123,10243)];
    init_test(&cd_S15917C7, buf);
    S15917C7 &lv = *(new (buf) S15917C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40976,40968), "sizeof(S15917C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15917C7)");
    check_base_class_offset(lv, (S15917C8_nt*), 0, "S15917C7");
    check_field_offset(lv, s15917c7f0, ABISELECT(16,8), "S15917C7.s15917c7f0");
    test_class_info(&lv, &cd_S15917C7);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15917C7(Test_S15917C7, "S15917C7", ABISELECT(40976,40968));

#else // __cplusplus

extern Class_Descriptor cd_S15917C8_nt;
static Base_Class bases_S15917C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S15917C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S15917C7 = {  "S15917C7", // class name
  bases_S15917C7, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(40976,40968), // 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  S15917C6  {
  int s15917c6f0;
  ::S15917C7 s15917c6f1;
  void  mf15917c6(); // _ZN8S15917C69mf15917c6Ev
};
//SIG(-1 S15917C6) C1{ m Fi FC2{ BC3{ m Fp Fi} FC4{ Fi[10240]}}}


void  S15917C6 ::mf15917c6(){}

static void Test_S15917C6()
{
  {
    init_simple_test("S15917C6");
    S15917C6 lv;
    check2(sizeof(lv), ABISELECT(40984,40972), "sizeof(S15917C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15917C6)");
    check_field_offset(lv, s15917c6f0, 0, "S15917C6.s15917c6f0");
    check_field_offset(lv, s15917c6f1, ABISELECT(8,4), "S15917C6.s15917c6f1");
  }
}
static Arrange_To_Call_Me vS15917C6(Test_S15917C6, "S15917C6", ABISELECT(40984,40972));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15917C12  {
  void *s15917c12f0;
  int s15917c12f1;
  void  mf15917c12(); // _ZN9S15917C1210mf15917c12Ev
};
//SIG(-1 S15917C12) C1{ m Fp Fi}


void  S15917C12 ::mf15917c12(){}

static void Test_S15917C12()
{
  {
    init_simple_test("S15917C12");
    S15917C12 lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S15917C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15917C12)");
    check_field_offset(lv, s15917c12f0, 0, "S15917C12.s15917c12f0");
    check_field_offset(lv, s15917c12f1, ABISELECT(8,4), "S15917C12.s15917c12f1");
  }
}
static Arrange_To_Call_Me vS15917C12(Test_S15917C12, "S15917C12", ABISELECT(16,8));

#else // __cplusplus

Class_Descriptor cd_S15917C12 = {  "S15917C12", // 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  S15917C13  {
  int s15917c13f0[4096];
};
//SIG(-1 S15917C13) C1{ Fi[4096]}



static void Test_S15917C13()
{
  {
    init_simple_test("S15917C13");
    S15917C13 lv;
    check2(sizeof(lv), 16384, "sizeof(S15917C13)");
    check2(__alignof__(lv), 4, "__alignof__(S15917C13)");
    check_field_offset(lv, s15917c13f0, 0, "S15917C13.s15917c13f0");
  }
}
static Arrange_To_Call_Me vS15917C13(Test_S15917C13, "S15917C13", 16384);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15917C11  : S15917C12 {
  ::S15917C13 s15917c11f0;
};
//SIG(-1 S15917C11) C1{ BC2{ m Fp Fi} FC3{ Fi[4096]}}



static void Test_S15917C11()
{
  extern Class_Descriptor cd_S15917C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(2051,4099)];
    init_test(&cd_S15917C11, buf);
    S15917C11 &lv = *(new (buf) S15917C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16400,16392), "sizeof(S15917C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15917C11)");
    check_base_class_offset(lv, (S15917C12*), 0, "S15917C11");
    check_field_offset(lv, s15917c11f0, ABISELECT(16,8), "S15917C11.s15917c11f0");
    test_class_info(&lv, &cd_S15917C11);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15917C11(Test_S15917C11, "S15917C11", ABISELECT(16400,16392));

#else // __cplusplus

extern Class_Descriptor cd_S15917C12;
static Base_Class bases_S15917C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S15917C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S15917C11 = {  "S15917C11", // class name
  bases_S15917C11, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(16400,16392), // 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  S15917C10  {
  int s15917c10f0;
  ::S15917C11 s15917c10f1;
  void  mf15917c10(); // _ZN9S15917C1010mf15917c10Ev
};
//SIG(-1 S15917C10) C1{ m Fi FC2{ BC3{ m Fp Fi} FC4{ Fi[4096]}}}


void  S15917C10 ::mf15917c10(){}

static void Test_S15917C10()
{
  {
    init_simple_test("S15917C10");
    S15917C10 lv;
    check2(sizeof(lv), ABISELECT(16408,16396), "sizeof(S15917C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15917C10)");
    check_field_offset(lv, s15917c10f0, 0, "S15917C10.s15917c10f0");
    check_field_offset(lv, s15917c10f1, ABISELECT(8,4), "S15917C10.s15917c10f1");
  }
}
static Arrange_To_Call_Me vS15917C10(Test_S15917C10, "S15917C10", ABISELECT(16408,16396));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15917C1  {
  ::S15917C2 s15917c1f0;
  ::S15917C6 s15917c1f1;
  ::S15917C10 s15917c1f2;
  void  mf15917c1(); // _ZN8S15917C19mf15917c1Ev
};
//SIG(1 S15917C1) C1{ m FC2{ m Fi FC3{ BC4{ m Fp Fi} FC5{ Fi[2048]}}} FC6{ m Fi FC7{ BC8{ m Fp Fi} FC9{ Fi[10240]}}} FC10{ m Fi FC11{ BC12{ m Fp Fi} FC13{ Fi[4096]}}}}


void  S15917C1 ::mf15917c1(){}

static void Test_S15917C1()
{
  {
    init_simple_test("S15917C1");
    S15917C1 lv;
    check2(sizeof(lv), ABISELECT(65608,65572), "sizeof(S15917C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15917C1)");
    check_field_offset(lv, s15917c1f0, 0, "S15917C1.s15917c1f0");
    check_field_offset(lv, s15917c1f1, ABISELECT(8216,8204), "S15917C1.s15917c1f1");
    check_field_offset(lv, s15917c1f2, ABISELECT(49200,49176), "S15917C1.s15917c1f2");
  }
}
static Arrange_To_Call_Me vS15917C1(Test_S15917C1, "S15917C1", ABISELECT(65608,65572));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15920C5  {
  __tsi64 s15920c5f0[2048];
};
//SIG(-1 S15920C5) C1{ FL[2048]}



static void Test_S15920C5()
{
  {
    init_simple_test("S15920C5");
    S15920C5 lv;
    check2(sizeof(lv), 16384, "sizeof(S15920C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15920C5)");
    check_field_offset(lv, s15920c5f0, 0, "S15920C5.s15920c5f0");
  }
}
static Arrange_To_Call_Me vS15920C5(Test_S15920C5, "S15920C5", 16384);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15920C3  : S15917C12 {
  ::S15920C5 s15920c3f0;
};
//SIG(-1 S15920C3) C1{ BC2{ m Fp Fi} FC3{ FL[2048]}}



static void Test_S15920C3()
{
  extern Class_Descriptor cd_S15920C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(2051,4099)];
    init_test(&cd_S15920C3, buf);
    S15920C3 &lv = *(new (buf) S15920C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16400,16392), "sizeof(S15920C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15920C3)");
    check_base_class_offset(lv, (S15917C12*), 0, "S15920C3");
    check_field_offset(lv, s15920c3f0, ABISELECT(16,8), "S15920C3.s15920c3f0");
    test_class_info(&lv, &cd_S15920C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15920C3(Test_S15920C3, "S15920C3", ABISELECT(16400,16392));

#else // __cplusplus

extern Class_Descriptor cd_S15917C12;
static Base_Class bases_S15920C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S15917C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S15920C3 = {  "S15920C3", // class name
  bases_S15920C3, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(16400,16392), // 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  S15920C2  {
  int s15920c2f0;
  ::S15920C3 s15920c2f1;
  void  mf15920c2(); // _ZN8S15920C29mf15920c2Ev
};
//SIG(-1 S15920C2) C1{ m Fi FC2{ BC3{ m Fp Fi} FC4{ FL[2048]}}}


void  S15920C2 ::mf15920c2(){}

static void Test_S15920C2()
{
  {
    init_simple_test("S15920C2");
    S15920C2 lv;
    check2(sizeof(lv), ABISELECT(16408,16396), "sizeof(S15920C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15920C2)");
    check_field_offset(lv, s15920c2f0, 0, "S15920C2.s15920c2f0");
    check_field_offset(lv, s15920c2f1, ABISELECT(8,4), "S15920C2.s15920c2f1");
  }
}
static Arrange_To_Call_Me vS15920C2(Test_S15920C2, "S15920C2", ABISELECT(16408,16396));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15920C9  {
  __tsi64 s15920c9f0[6144];
};
//SIG(-1 S15920C9) C1{ FL[6144]}



static void Test_S15920C9()
{
  {
    init_simple_test("S15920C9");
    S15920C9 lv;
    check2(sizeof(lv), 49152, "sizeof(S15920C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15920C9)");
    check_field_offset(lv, s15920c9f0, 0, "S15920C9.s15920c9f0");
  }
}
static Arrange_To_Call_Me vS15920C9(Test_S15920C9, "S15920C9", 49152);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15920C7  : S15917C8_nt {
  ::S15920C9 s15920c7f0;
};
//SIG(-1 S15920C7) C1{ BC2{ m Fp Fi} FC3{ FL[6144]}}



static void Test_S15920C7()
{
  extern Class_Descriptor cd_S15920C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6147,12291)];
    init_test(&cd_S15920C7, buf);
    S15920C7 &lv = *(new (buf) S15920C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(49168,49160), "sizeof(S15920C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15920C7)");
    check_base_class_offset(lv, (S15917C8_nt*), 0, "S15920C7");
    check_field_offset(lv, s15920c7f0, ABISELECT(16,8), "S15920C7.s15920c7f0");
    test_class_info(&lv, &cd_S15920C7);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15920C7(Test_S15920C7, "S15920C7", ABISELECT(49168,49160));

#else // __cplusplus

extern Class_Descriptor cd_S15917C8_nt;
static Base_Class bases_S15920C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S15917C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S15920C7 = {  "S15920C7", // class name
  bases_S15920C7, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(49168,49160), // 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  S15920C6  {
  int s15920c6f0;
  ::S15920C7 s15920c6f1;
  void  mf15920c6(); // _ZN8S15920C69mf15920c6Ev
};
//SIG(-1 S15920C6) C1{ m Fi FC2{ BC3{ m Fp Fi} FC4{ FL[6144]}}}


void  S15920C6 ::mf15920c6(){}

static void Test_S15920C6()
{
  {
    init_simple_test("S15920C6");
    S15920C6 lv;
    check2(sizeof(lv), ABISELECT(49176,49164), "sizeof(S15920C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15920C6)");
    check_field_offset(lv, s15920c6f0, 0, "S15920C6.s15920c6f0");
    check_field_offset(lv, s15920c6f1, ABISELECT(8,4), "S15920C6.s15920c6f1");
  }
}
static Arrange_To_Call_Me vS15920C6(Test_S15920C6, "S15920C6", ABISELECT(49176,49164));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15920C1  {
  ::S15920C2 s15920c1f0;
  ::S15920C6 s15920c1f1;
  ::S15917C10 s15920c1f2;
  void  mf15920c1(); // _ZN8S15920C19mf15920c1Ev
};
//SIG(1 S15920C1) C1{ m FC2{ m Fi FC3{ BC4{ m Fp Fi} FC5{ FL[2048]}}} FC6{ m Fi FC7{ BC8{ m Fp Fi} FC9{ FL[6144]}}} FC10{ m Fi FC11{ BC4 FC12{ Fi[4096]}}}}


void  S15920C1 ::mf15920c1(){}

static void Test_S15920C1()
{
  {
    init_simple_test("S15920C1");
    S15920C1 lv;
    check2(sizeof(lv), ABISELECT(81992,81956), "sizeof(S15920C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15920C1)");
    check_field_offset(lv, s15920c1f0, 0, "S15920C1.s15920c1f0");
    check_field_offset(lv, s15920c1f1, ABISELECT(16408,16396), "S15920C1.s15920c1f1");
    check_field_offset(lv, s15920c1f2, ABISELECT(65584,65560), "S15920C1.s15920c1f2");
  }
}
static Arrange_To_Call_Me vS15920C1(Test_S15920C1, "S15920C1", ABISELECT(81992,81956));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15918C1  {
  ::S15917C2 s15918c1f0;
  ::S15920C6 s15918c1f1;
  ::S15917C10 s15918c1f2;
  void  mf15918c1(); // _ZN8S15918C19mf15918c1Ev
};
//SIG(1 S15918C1) C1{ m FC2{ m Fi FC3{ BC4{ m Fp Fi} FC5{ Fi[2048]}}} FC6{ m Fi FC7{ BC8{ m Fp Fi} FC9{ FL[6144]}}} FC10{ m Fi FC11{ BC12{ m Fp Fi} FC13{ Fi[4096]}}}}


void  S15918C1 ::mf15918c1(){}

static void Test_S15918C1()
{
  {
    init_simple_test("S15918C1");
    S15918C1 lv;
    check2(sizeof(lv), ABISELECT(73800,73764), "sizeof(S15918C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15918C1)");
    check_field_offset(lv, s15918c1f0, 0, "S15918C1.s15918c1f0");
    check_field_offset(lv, s15918c1f1, ABISELECT(8216,8204), "S15918C1.s15918c1f1");
    check_field_offset(lv, s15918c1f2, ABISELECT(57392,57368), "S15918C1.s15918c1f2");
  }
}
static Arrange_To_Call_Me vS15918C1(Test_S15918C1, "S15918C1", ABISELECT(73800,73764));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19001C5  : virtual S7883C3_nt , virtual S3216C8_nt , S4677C37 {
  int s19001c5f0;
  ~S19001C5(); // tgen
  S19001C5(); // tgen
};
//SIG(-1 S19001C5) C1{ VBC2{ vd m} VBC3{ m Fi} BC4{ m} Fi}


S19001C5 ::~S19001C5(){ note_dtor("S19001C5", this);} // tgen
S19001C5 ::S19001C5(){ note_ctor("S19001C5", this);} // tgen

static void Test_S19001C5()
{
  extern Class_Descriptor cd_S19001C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S19001C5, buf);
    S19001C5 *dp, &lv = *(dp=new (buf) S19001C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S19001C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19001C5)");
    check_base_class_offset(lv, (S7883C3_nt*), 0, "S19001C5");
    check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(12,8), "S19001C5");
    check_base_class_offset(lv, (S4677C37*), 0, "S19001C5");
    check_field_offset(lv, s19001c5f0, ABISELECT(8,4), "S19001C5.s19001c5f0");
    test_class_info(&lv, &cd_S19001C5);
    dp->~S19001C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19001C5(Test_S19001C5, "S19001C5", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S19001C5C1Ev();
extern void _ZN8S19001C5D1Ev();
Name_Map name_map_S19001C5[] = {
  NSPAIR(_ZN8S19001C5C1Ev),
  NSPAIR(_ZN8S19001C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
static Base_Class bases_S19001C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19001C5[];
extern void _ZN8S19001C5D1Ev();
extern void _ZN8S19001C5D0Ev();
static  VTBL_ENTRY vtc_S19001C5[] = {
  ABISELECT(12,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19001C5[0]),
  (VTBL_ENTRY)&_ZN8S19001C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19001C5D0Ev,
};
extern VTBL_ENTRY _ZTV8S19001C5[];
static  VTT_ENTRY vtt_S19001C5[] = {
  {&(_ZTV8S19001C5[5]),  5,7},
  {&(_ZTV8S19001C5[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S19001C5[];
extern  VTBL_ENTRY _ZTV8S19001C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19001C5[];
Class_Descriptor cd_S19001C5 = {  "S19001C5", // class name
  bases_S19001C5, 3,
  &(vtc_S19001C5[0]), // expected_vtbl_contents
  &(vtt_S19001C5[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S19001C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19001C5),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19001C5),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  S19001C4  : S19001C5 {
  int s19001c4f0;
  ~S19001C4(); // tgen
  S19001C4(); // tgen
};
//SIG(-1 S19001C4) C1{ BC2{ VBC3{ vd m} VBC4{ m Fi} BC5{ m} Fi} Fi}


S19001C4 ::~S19001C4(){ note_dtor("S19001C4", this);} // tgen
S19001C4 ::S19001C4(){ note_ctor("S19001C4", this);} // tgen

static void Test_S19001C4()
{
  extern Class_Descriptor cd_S19001C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19001C4, buf);
    S19001C4 *dp, &lv = *(dp=new (buf) S19001C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19001C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19001C4)");
    check_base_class_offset(lv, (S7883C3_nt*)(S19001C5*), 0, "S19001C4");
    check_base_class_offset(lv, (S3216C8_nt*)(S19001C5*), ABISELECT(16,12), "S19001C4");
    check_base_class_offset(lv, (S4677C37*)(S19001C5*), 0, "S19001C4");
    check_base_class_offset(lv, (S19001C5*), 0, "S19001C4");
    check_field_offset(lv, s19001c4f0, ABISELECT(12,8), "S19001C4.s19001c4f0");
    test_class_info(&lv, &cd_S19001C4);
    dp->~S19001C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19001C4(Test_S19001C4, "S19001C4", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S19001C4C1Ev();
extern void _ZN8S19001C4D1Ev();
Name_Map name_map_S19001C4[] = {
  NSPAIR(_ZN8S19001C4C1Ev),
  NSPAIR(_ZN8S19001C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19001C5;
extern VTBL_ENTRY _ZTI8S19001C5[];
extern  VTBL_ENTRY _ZTV8S19001C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19001C5[];
static Base_Class bases_S19001C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19001C5,    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 _ZTI8S19001C4[];
extern void _ZN8S19001C4D1Ev();
extern void _ZN8S19001C4D0Ev();
static  VTBL_ENTRY vtc_S19001C4[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19001C4[0]),
  (VTBL_ENTRY)&_ZN8S19001C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19001C4D0Ev,
};
extern VTBL_ENTRY _ZTV8S19001C4[];
extern void _ZN8S19001C5D1Ev();
extern void _ZN8S19001C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19001C5__8S19001C4[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19001C5[0]),
  (VTBL_ENTRY)&_ZN8S19001C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19001C5D0Ev,
};
static  VTT_ENTRY vtt_S19001C4[] = {
  {&(_ZTV8S19001C4[5]),  5,7},
  {&(_tg__ZTV8S19001C5__8S19001C4[5]),  5,7},
  {&(_tg__ZTV8S19001C5__8S19001C4[5]),  5,7},
  {&(_ZTV8S19001C4[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S19001C4[];
extern  VTBL_ENTRY _ZTV8S19001C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19001C4[];
Class_Descriptor cd_S19001C4 = {  "S19001C4", // class name
  bases_S19001C4, 4,
  &(vtc_S19001C4[0]), // expected_vtbl_contents
  &(vtt_S19001C4[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S19001C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19001C4),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19001C4),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19001C3  : S19001C4 {
  ~S19001C3(); // tgen
  S19001C3(); // tgen
};
//SIG(-1 S19001C3) C1{ BC2{ BC3{ VBC4{ vd m} VBC5{ m Fi} BC6{ m} Fi} Fi}}


S19001C3 ::~S19001C3(){ note_dtor("S19001C3", this);} // tgen
S19001C3 ::S19001C3(){ note_ctor("S19001C3", this);} // tgen

static void Test_S19001C3()
{
  extern Class_Descriptor cd_S19001C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19001C3, buf);
    S19001C3 *dp, &lv = *(dp=new (buf) S19001C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19001C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19001C3)");
    check_base_class_offset(lv, (S7883C3_nt*)(S19001C5*)(S19001C4*), 0, "S19001C3");
    check_base_class_offset(lv, (S3216C8_nt*)(S19001C5*)(S19001C4*), ABISELECT(16,12), "S19001C3");
    check_base_class_offset(lv, (S4677C37*)(S19001C5*)(S19001C4*), 0, "S19001C3");
    check_base_class_offset(lv, (S19001C5*)(S19001C4*), 0, "S19001C3");
    check_base_class_offset(lv, (S19001C4*), 0, "S19001C3");
    test_class_info(&lv, &cd_S19001C3);
    dp->~S19001C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19001C3(Test_S19001C3, "S19001C3", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S19001C3C1Ev();
extern void _ZN8S19001C3D1Ev();
Name_Map name_map_S19001C3[] = {
  NSPAIR(_ZN8S19001C3C1Ev),
  NSPAIR(_ZN8S19001C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19001C5;
extern VTBL_ENTRY _ZTI8S19001C5[];
extern  VTBL_ENTRY _ZTV8S19001C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19001C5[];
extern Class_Descriptor cd_S19001C4;
extern VTBL_ENTRY _ZTI8S19001C4[];
extern  VTBL_ENTRY _ZTV8S19001C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19001C4[];
static Base_Class bases_S19001C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19001C5,    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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19001C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19001C3[];
extern void _ZN8S19001C3D1Ev();
extern void _ZN8S19001C3D0Ev();
static  VTBL_ENTRY vtc_S19001C3[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19001C3[0]),
  (VTBL_ENTRY)&_ZN8S19001C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19001C3D0Ev,
};
extern VTBL_ENTRY _ZTV8S19001C3[];
extern void _ZN8S19001C4D1Ev();
extern void _ZN8S19001C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19001C4__8S19001C3[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19001C4[0]),
  (VTBL_ENTRY)&_ZN8S19001C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19001C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev)();
extern void _ZN8S19001C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev)();
extern void _ZN8S19001C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C58S19001C4__8S19001C3[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19001C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev),
};
static  VTT_ENTRY vtt_S19001C3[] = {
  {&(_ZTV8S19001C3[5]),  5,7},
  {&(_tg__ZTV8S19001C4__8S19001C3[5]),  5,7},
  {&(_tg__ZTV8S19001C58S19001C4__8S19001C3[5]),  5,7},
  {&(_tg__ZTV8S19001C58S19001C4__8S19001C3[5]),  5,7},
  {&(_tg__ZTV8S19001C4__8S19001C3[5]),  5,7},
  {&(_ZTV8S19001C3[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S19001C3[];
extern  VTBL_ENTRY _ZTV8S19001C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19001C3[];
static VTBL_ENTRY alt_thunk_names143[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S19001C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S19001C5D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19001C3 = {  "S19001C3", // class name
  bases_S19001C3, 5,
  &(vtc_S19001C3[0]), // expected_vtbl_contents
  &(vtt_S19001C3[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S19001C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19001C3),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19001C3),6, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names143,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19001C11  : virtual S19001C4 , S4677C37 {
  ~S19001C11(); // tgen
  S19001C11(); // tgen
};
//SIG(-1 S19001C11) C1{ VBC2{ BC3{ VBC4{ vd m} VBC5{ m Fi} BC6{ m} Fi} Fi} BC6}


S19001C11 ::~S19001C11(){ note_dtor("S19001C11", this);} // tgen
S19001C11 ::S19001C11(){ note_ctor("S19001C11", this);} // tgen

static void Test_S19001C11()
{
  extern Class_Descriptor cd_S19001C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19001C11, buf);
    S19001C11 *dp, &lv = *(dp=new (buf) S19001C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19001C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19001C11)");
    check_base_class_offset(lv, (S7883C3_nt*)(S19001C5*)(S19001C4*), 0, "S19001C11");
    check_base_class_offset(lv, (S3216C8_nt*)(S19001C5*)(S19001C4*), ABISELECT(24,16), "S19001C11");
    check_base_class_offset(lv, (S4677C37*)(S19001C5*)(S19001C4*), ABISELECT(8,4), "S19001C11");
    check_base_class_offset(lv, (S19001C5*)(S19001C4*), ABISELECT(8,4), "S19001C11");
    check_base_class_offset(lv, (S19001C4*), ABISELECT(8,4), "S19001C11");
    /*is_ambiguous_... S19001C11::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*), 0, "S19001C11");
    test_class_info(&lv, &cd_S19001C11);
    dp->~S19001C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19001C11(Test_S19001C11, "S19001C11", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN9S19001C11C1Ev();
extern void _ZN9S19001C11D1Ev();
Name_Map name_map_S19001C11[] = {
  NSPAIR(_ZN9S19001C11C1Ev),
  NSPAIR(_ZN9S19001C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19001C5;
extern VTBL_ENTRY _ZTI8S19001C5[];
extern  VTBL_ENTRY _ZTV8S19001C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19001C5[];
extern Class_Descriptor cd_S19001C4;
extern VTBL_ENTRY _ZTI8S19001C4[];
extern  VTBL_ENTRY _ZTV8S19001C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19001C4[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
static Base_Class bases_S19001C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19001C5,    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
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19001C4,    ABISELECT(8,4), //bcp->offset
    8, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19001C11[];
extern void _ZN9S19001C11D1Ev();
extern void _ZN9S19001C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19001C11D1Ev,_ZTv0_n12_N9S19001C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S19001C11D1Ev,_ZThn4_N9S19001C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19001C11D0Ev,_ZTv0_n12_N9S19001C11D0Ev)();
extern void ABISELECT(_ZThn8_N9S19001C11D0Ev,_ZThn4_N9S19001C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19001C11[] = {
  ABISELECT(24,16),
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19001C11[0]),
  (VTBL_ENTRY)&_ZN9S19001C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19001C11D0Ev,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19001C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C11D1Ev,_ZTv0_n12_N9S19001C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C11D0Ev,_ZTv0_n12_N9S19001C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S19001C11[];
extern void ABISELECT(_ZTv0_n24_N8S19001C4D1Ev,_ZTv0_n12_N8S19001C4D1Ev)();
extern void _ZN8S19001C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C4D0Ev,_ZTv0_n12_N8S19001C4D0Ev)();
extern void _ZN8S19001C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C4__9S19001C11[] = {
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19001C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C4D1Ev,_ZTv0_n12_N8S19001C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C4D0Ev,_ZTv0_n12_N8S19001C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev)();
extern void _ZN8S19001C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev)();
extern void _ZN8S19001C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C58S19001C4__9S19001C11[] = {
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19001C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S19001C58S19001C4__9S19001C11[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19001C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C4D1Ev,_ZTv0_n12_N8S19001C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19001C4D0Ev,_ZTv0_n12_N8S19001C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S19001C4__9S19001C11[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19001C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C4D1Ev,_ZTv0_n12_N8S19001C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C4D0Ev,_ZTv0_n12_N8S19001C4D0Ev),
};
static  VTT_ENTRY vtt_S19001C11[] = {
  {&(_ZTV9S19001C11[6]),  6,15},
  {&(_ZTV9S19001C11[13]),  13,15},
  {&(_ZTV9S19001C11[6]),  6,15},
  {&(_tg__ZTV8S19001C4__9S19001C11[5]),  5,7},
  {&(_tg__ZTV8S19001C58S19001C4__9S19001C11[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S19001C58S19001C4__9S19001C11[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S19001C4__9S19001C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19001C11[];
extern  VTBL_ENTRY _ZTV9S19001C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19001C11[];
static VTBL_ENTRY alt_thunk_names144[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S19001C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S19001C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C4D0Ev,_ZTv0_n12_N8S19001C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S19001C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C4D1Ev,_ZTv0_n12_N8S19001C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S19001C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19001C11D0Ev,_ZTv0_n12_N9S19001C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19001C11D0Ev,_ZThn4_N9S19001C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19001C11D1Ev,_ZTv0_n12_N9S19001C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19001C11D1Ev,_ZThn4_N9S19001C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19001C11 = {  "S19001C11", // class name
  bases_S19001C11, 6,
  &(vtc_S19001C11[0]), // expected_vtbl_contents
  &(vtt_S19001C11[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI9S19001C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19001C11),15, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19001C11),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names144,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19001C10  : virtual S19001C11 {
  ::S3216C8_nt s19001c10f0;
  ~S19001C10(); // tgen
  S19001C10(); // tgen
};
//SIG(-1 S19001C10) C1{ VBC2{ VBC3{ BC4{ VBC5{ vd m} VBC6{ m Fi} BC7{ m} Fi} Fi} BC7} FC6}


S19001C10 ::~S19001C10(){ note_dtor("S19001C10", this);} // tgen
S19001C10 ::S19001C10(){ note_ctor("S19001C10", this);} // tgen

static void Test_S19001C10()
{
  extern Class_Descriptor cd_S19001C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S19001C10, buf);
    S19001C10 *dp, &lv = *(dp=new (buf) S19001C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S19001C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19001C10)");
    check_base_class_offset(lv, (S7883C3_nt*)(S19001C5*)(S19001C4*), 0, "S19001C10");
    check_base_class_offset(lv, (S3216C8_nt*)(S19001C5*)(S19001C4*), ABISELECT(32,20), "S19001C10");
    check_base_class_offset(lv, (S4677C37*)(S19001C5*)(S19001C4*), ABISELECT(16,8), "S19001C10");
    check_base_class_offset(lv, (S19001C5*)(S19001C4*), ABISELECT(16,8), "S19001C10");
    check_base_class_offset(lv, (S19001C4*)(S19001C11*), ABISELECT(16,8), "S19001C10");
    /*is_ambiguous_... S19001C11::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S19001C11*), 0, "S19001C10");
    check_base_class_offset(lv, (S19001C11*), 0, "S19001C10");
    check_field_offset(lv, s19001c10f0, ABISELECT(8,4), "S19001C10.s19001c10f0");
    test_class_info(&lv, &cd_S19001C10);
    dp->~S19001C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19001C10(Test_S19001C10, "S19001C10", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN9S19001C10C1Ev();
extern void _ZN9S19001C10D1Ev();
Name_Map name_map_S19001C10[] = {
  NSPAIR(_ZN9S19001C10C1Ev),
  NSPAIR(_ZN9S19001C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19001C5;
extern VTBL_ENTRY _ZTI8S19001C5[];
extern  VTBL_ENTRY _ZTV8S19001C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19001C5[];
extern Class_Descriptor cd_S19001C4;
extern VTBL_ENTRY _ZTI8S19001C4[];
extern  VTBL_ENTRY _ZTV8S19001C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19001C4[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19001C11;
extern VTBL_ENTRY _ZTI9S19001C11[];
extern  VTBL_ENTRY _ZTV9S19001C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19001C11[];
static Base_Class bases_S19001C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_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
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19001C5,    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
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19001C4,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19001C11,    0, //bcp->offset
    -1, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19001C10[];
extern void _ZN9S19001C10D1Ev();
extern void _ZN9S19001C10D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19001C10D1Ev,_ZTv0_n12_N9S19001C10D1Ev)();
extern void ABISELECT(_ZThn16_N9S19001C10D1Ev,_ZThn8_N9S19001C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19001C10D0Ev,_ZTv0_n12_N9S19001C10D0Ev)();
extern void ABISELECT(_ZThn16_N9S19001C10D0Ev,_ZThn8_N9S19001C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19001C10[] = {
  0,
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19001C10[0]),
  (VTBL_ENTRY)&_ZN9S19001C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19001C10D0Ev,
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19001C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C10D1Ev,_ZTv0_n12_N9S19001C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C10D0Ev,_ZTv0_n12_N9S19001C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S19001C10[];
extern void ABISELECT(_ZTv0_n24_N9S19001C11D1Ev,_ZTv0_n12_N9S19001C11D1Ev)();
extern void _ZN9S19001C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19001C11D0Ev,_ZTv0_n12_N9S19001C11D0Ev)();
extern void _ZN9S19001C11D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19001C11__9S19001C10[] = {
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19001C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C11D1Ev,_ZTv0_n12_N9S19001C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C11D0Ev,_ZTv0_n12_N9S19001C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19001C11D1Ev,_ZTv0_n12_N9S19001C11D1Ev)();
extern void ABISELECT(_ZThn16_N9S19001C11D1Ev,_ZThn8_N9S19001C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19001C11D0Ev,_ZTv0_n12_N9S19001C11D0Ev)();
extern void ABISELECT(_ZThn16_N9S19001C11D0Ev,_ZThn8_N9S19001C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C4__9S19001C11__9S19001C10[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19001C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C11D1Ev,_ZTv0_n12_N9S19001C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C11D0Ev,_ZTv0_n12_N9S19001C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C4D1Ev,_ZTv0_n12_N8S19001C4D1Ev)();
extern void _ZN8S19001C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C4D0Ev,_ZTv0_n12_N8S19001C4D0Ev)();
extern void _ZN8S19001C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C4__9S19001C10[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19001C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C4D1Ev,_ZTv0_n12_N8S19001C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C4D0Ev,_ZTv0_n12_N8S19001C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev)();
extern void _ZN8S19001C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev)();
extern void _ZN8S19001C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C58S19001C4__9S19001C10[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19001C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S19001C58S19001C4__9S19001C10[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19001C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C4D1Ev,_ZTv0_n12_N8S19001C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19001C4D0Ev,_ZTv0_n12_N8S19001C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S19001C4__9S19001C10[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19001C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C4D1Ev,_ZTv0_n12_N8S19001C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C4D0Ev,_ZTv0_n12_N8S19001C4D0Ev),
};
static  VTT_ENTRY vtt_S19001C10[] = {
  {&(_ZTV9S19001C10[7]),  7,16},
  {&(_ZTV9S19001C10[7]),  7,16},
  {&(_ZTV9S19001C10[14]),  14,16},
  {&(_ZTV9S19001C10[7]),  7,16},
  {&(_tg__ZTV9S19001C11__9S19001C10[6]),  6,8},
  {&(_tg__ZTV8S19001C4__9S19001C11__9S19001C10[5]),  5,7},
  {&(_tg__ZTV9S19001C11__9S19001C10[6]),  6,8},
  {&(_tg__ZTV8S19001C4__9S19001C10[5]),  5,7},
  {&(_tg__ZTV8S19001C58S19001C4__9S19001C10[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S19001C58S19001C4__9S19001C10[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S19001C4__9S19001C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19001C10[];
extern  VTBL_ENTRY _ZTV9S19001C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19001C10[];
static VTBL_ENTRY alt_thunk_names145[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S19001C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S19001C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C4D0Ev,_ZTv0_n12_N8S19001C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S19001C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C4D1Ev,_ZTv0_n12_N8S19001C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S19001C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19001C11D0Ev,_ZTv0_n12_N9S19001C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19001C11D0Ev,_ZThn8_N9S19001C11D0Ev),
  (VTBL_ENTRY)_ZN9S19001C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19001C11D1Ev,_ZTv0_n12_N9S19001C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19001C11D1Ev,_ZThn8_N9S19001C11D1Ev),
  (VTBL_ENTRY)_ZN9S19001C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19001C10D0Ev,_ZTv0_n12_N9S19001C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19001C10D0Ev,_ZThn8_N9S19001C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19001C10D1Ev,_ZTv0_n12_N9S19001C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19001C10D1Ev,_ZThn8_N9S19001C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19001C10 = {  "S19001C10", // class name
  bases_S19001C10, 7,
  &(vtc_S19001C10[0]), // expected_vtbl_contents
  &(vtt_S19001C10[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI9S19001C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19001C10),16, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19001C10),11, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names145,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19001C12  : virtual S3216C8_nt {
  virtual  ~S19001C12(); // _ZN9S19001C12D2Ev
  S19001C12(); // tgen
};
//SIG(-1 S19001C12) C1{ VBC2{ m Fi} vd}


 S19001C12 ::~S19001C12(){ note_dtor("S19001C12", this);}
S19001C12 ::S19001C12(){ note_ctor("S19001C12", this);} // tgen

static void Test_S19001C12()
{
  extern Class_Descriptor cd_S19001C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19001C12, buf);
    S19001C12 *dp, &lv = *(dp=new (buf) S19001C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19001C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19001C12)");
    check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(8,4), "S19001C12");
    test_class_info(&lv, &cd_S19001C12);
    dp->~S19001C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19001C12(Test_S19001C12, "S19001C12", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19001C12C1Ev();
extern void _ZN9S19001C12D2Ev();
Name_Map name_map_S19001C12[] = {
  NSPAIR(_ZN9S19001C12C1Ev),
  NSPAIR(_ZN9S19001C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S19001C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19001C12[];
extern void _ZN9S19001C12D1Ev();
extern void _ZN9S19001C12D0Ev();
static  VTBL_ENTRY vtc_S19001C12[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19001C12[0]),
  (VTBL_ENTRY)&_ZN9S19001C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19001C12D0Ev,
};
extern VTBL_ENTRY _ZTV9S19001C12[];
static  VTT_ENTRY vtt_S19001C12[] = {
  {&(_ZTV9S19001C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19001C12[];
extern  VTBL_ENTRY _ZTV9S19001C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19001C12[];
Class_Descriptor cd_S19001C12 = {  "S19001C12", // class name
  bases_S19001C12, 1,
  &(vtc_S19001C12[0]), // expected_vtbl_contents
  &(vtt_S19001C12[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19001C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19001C12),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19001C12),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  S19001C9  : virtual S3216C8_nt , virtual S19001C10 , virtual S19001C12 , virtual S4677C37 , S19001C5 {
  int s19001c9f0;
  void *s19001c9f1;
  virtual  ~S19001C9(); // _ZN8S19001C9D2Ev
  S19001C9(); // tgen
};
//SIG(-1 S19001C9) C1{ VBC2{ m Fi} VBC3{ VBC4{ VBC5{ BC6{ VBC7{ vd m} VBC2 BC8{ m} Fi} Fi} BC8} FC2} VBC9{ VBC2 vd} VBC8 BC6 vd Fi Fp}


 S19001C9 ::~S19001C9(){ note_dtor("S19001C9", this);}
S19001C9 ::S19001C9(){ note_ctor("S19001C9", this);} // tgen

static void Test_S19001C9()
{
  extern Class_Descriptor cd_S19001C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S19001C9, buf);
    S19001C9 *dp, &lv = *(dp=new (buf) S19001C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S19001C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19001C9)");
    check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(24,16), "S19001C9");
    check_base_class_offset(lv, (S3216C8_nt*)(S19001C5*)(S19001C4*), ABISELECT(24,16), "S19001C9");
    check_base_class_offset(lv, (S3216C8_nt*)(S19001C12*), ABISELECT(24,16), "S19001C9");
    /*is_ambiguous_... S19001C9::S19001C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19001C5*), ABISELECT(24,16), "S19001C9");
    check_base_class_offset(lv, (S7883C3_nt*)(S19001C5*)(S19001C4*), ABISELECT(32,20), "S19001C9");
    /*is_ambiguous_... S19001C9::S19001C5 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S19001C5*), ABISELECT(32,20), "S19001C9");
    check_base_class_offset(lv, (S4677C37*)(S19001C5*)(S19001C4*), ABISELECT(48,28), "S19001C9");
    check_base_class_offset(lv, (S19001C5*)(S19001C4*), ABISELECT(48,28), "S19001C9");
    check_base_class_offset(lv, (S19001C4*)(S19001C11*), ABISELECT(48,28), "S19001C9");
    /*is_ambiguous_... S19001C11::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S19001C11*), ABISELECT(32,20), "S19001C9");
    check_base_class_offset(lv, (S19001C11*)(S19001C10*), ABISELECT(32,20), "S19001C9");
    check_base_class_offset(lv, (S19001C10*), ABISELECT(32,20), "S19001C9");
    check_base_class_offset(lv, (S19001C12*), ABISELECT(64,40), "S19001C9");
    /*is_ambiguous_... S19001C9::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*), ABISELECT(72,44), "S19001C9");
    /*is_ambiguous_... S19001C9::S19001C5 */ AMB_check_base_class_offset(lv, (S4677C37*)(S19001C5*), 0, "S19001C9");
    /*is_ambiguous_... S19001C9::S19001C5 */ AMB_check_base_class_offset(lv, (S19001C5*), 0, "S19001C9");
    check_field_offset(lv, s19001c9f0, ABISELECT(12,8), "S19001C9.s19001c9f0");
    check_field_offset(lv, s19001c9f1, ABISELECT(16,12), "S19001C9.s19001c9f1");
    test_class_info(&lv, &cd_S19001C9);
    dp->~S19001C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19001C9(Test_S19001C9, "S19001C9", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN8S19001C9C1Ev();
extern void _ZN8S19001C9D2Ev();
Name_Map name_map_S19001C9[] = {
  NSPAIR(_ZN8S19001C9C1Ev),
  NSPAIR(_ZN8S19001C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19001C5;
extern VTBL_ENTRY _ZTI8S19001C5[];
extern  VTBL_ENTRY _ZTV8S19001C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19001C5[];
extern Class_Descriptor cd_S19001C4;
extern VTBL_ENTRY _ZTI8S19001C4[];
extern  VTBL_ENTRY _ZTV8S19001C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19001C4[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19001C11;
extern VTBL_ENTRY _ZTI9S19001C11[];
extern  VTBL_ENTRY _ZTV9S19001C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19001C11[];
extern Class_Descriptor cd_S19001C10;
extern VTBL_ENTRY _ZTI9S19001C10[];
extern  VTBL_ENTRY _ZTV9S19001C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19001C10[];
extern Class_Descriptor cd_S19001C12;
extern VTBL_ENTRY _ZTI9S19001C12[];
extern  VTBL_ENTRY _ZTV9S19001C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19001C12[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19001C5;
extern VTBL_ENTRY _ZTI8S19001C5[];
extern  VTBL_ENTRY _ZTV8S19001C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19001C5[];
static Base_Class bases_S19001C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7883C3_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19001C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19001C4,    ABISELECT(48,28), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    6, //immediately_derived
  0, 0},
  {&cd_S19001C11,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19001C10,    ABISELECT(32,20), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19001C12,    ABISELECT(64,40), //bcp->offset
    28, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19001C5,    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},
  {0}};
extern VTBL_ENTRY _ZTI8S19001C9[];
extern void ABISELECT(_ZTv0_n24_N8S19001C9D1Ev,_ZTv0_n12_N8S19001C9D1Ev)();
extern void _ZN8S19001C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C9D0Ev,_ZTv0_n12_N8S19001C9D0Ev)();
extern void _ZN8S19001C9D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C9D1Ev,_ZTv0_n12_N8S19001C9D1Ev)();
extern void ABISELECT(_ZThn32_N8S19001C9D1Ev,_ZThn20_N8S19001C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C9D0Ev,_ZTv0_n12_N8S19001C9D0Ev)();
extern void ABISELECT(_ZThn32_N8S19001C9D0Ev,_ZThn20_N8S19001C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C9D1Ev,_ZTv0_n12_N8S19001C9D1Ev)();
extern void ABISELECT(_ZThn48_N8S19001C9D1Ev,_ZThn28_N8S19001C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C9D0Ev,_ZTv0_n12_N8S19001C9D0Ev)();
extern void ABISELECT(_ZThn48_N8S19001C9D0Ev,_ZThn28_N8S19001C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19001C9D1Ev,_ZTv0_n16_N8S19001C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S19001C9D1Ev,_ZThn40_N8S19001C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19001C9D0Ev,_ZTv0_n16_N8S19001C9D0Ev)();
extern void ABISELECT(_ZThn64_N8S19001C9D0Ev,_ZThn40_N8S19001C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19001C9[] = {
  ABISELECT(72,44),
  ABISELECT(64,40),
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(32,20),
  ABISELECT(24,16),
  ABISELECT(32,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19001C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C9D1Ev,_ZTv0_n12_N8S19001C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C9D0Ev,_ZTv0_n12_N8S19001C9D0Ev),
  0,
  ABISELECT(-8,-4),
  0,
  ABISELECT(16,8),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19001C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C9D1Ev,_ZTv0_n12_N8S19001C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C9D0Ev,_ZTv0_n12_N8S19001C9D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19001C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C9D1Ev,_ZTv0_n12_N8S19001C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C9D0Ev,_ZTv0_n12_N8S19001C9D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19001C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19001C9D1Ev,_ZTv0_n16_N8S19001C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19001C9D0Ev,_ZTv0_n16_N8S19001C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19001C9[];
extern void ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev)();
extern void _ZN8S19001C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev)();
extern void _ZN8S19001C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C5__A1__8S19001C9[] = {
  ABISELECT(24,16),
  ABISELECT(32,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19001C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev)();
extern void ABISELECT(_ZThn32_N8S19001C5D1Ev,_ZThn20_N8S19001C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev)();
extern void ABISELECT(_ZThn32_N8S19001C5D0Ev,_ZThn20_N8S19001C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S19001C5__A1__8S19001C9[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19001C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19001C10D1Ev,_ZTv0_n12_N9S19001C10D1Ev)();
extern void _ZN9S19001C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19001C10D0Ev,_ZTv0_n12_N9S19001C10D0Ev)();
extern void _ZN9S19001C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19001C10__8S19001C9[] = {
  0,
  ABISELECT(-8,-4),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19001C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C10D1Ev,_ZTv0_n12_N9S19001C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C10D0Ev,_ZTv0_n12_N9S19001C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19001C10D1Ev,_ZTv0_n12_N9S19001C10D1Ev)();
extern void ABISELECT(_ZThn16_N9S19001C10D1Ev,_ZThn8_N9S19001C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19001C10D0Ev,_ZTv0_n12_N9S19001C10D0Ev)();
extern void ABISELECT(_ZThn16_N9S19001C10D0Ev,_ZThn8_N9S19001C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C4__9S19001C10__8S19001C9[] = {
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19001C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C10D1Ev,_ZTv0_n12_N9S19001C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C10D0Ev,_ZTv0_n12_N9S19001C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19001C11D1Ev,_ZTv0_n12_N9S19001C11D1Ev)();
extern void _ZN9S19001C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19001C11D0Ev,_ZTv0_n12_N9S19001C11D0Ev)();
extern void _ZN9S19001C11D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19001C11__8S19001C9[] = {
  ABISELECT(-8,-4),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19001C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C11D1Ev,_ZTv0_n12_N9S19001C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C11D0Ev,_ZTv0_n12_N9S19001C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19001C11D1Ev,_ZTv0_n12_N9S19001C11D1Ev)();
extern void ABISELECT(_ZThn16_N9S19001C11D1Ev,_ZThn8_N9S19001C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19001C11D0Ev,_ZTv0_n12_N9S19001C11D0Ev)();
extern void ABISELECT(_ZThn16_N9S19001C11D0Ev,_ZThn8_N9S19001C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C4__9S19001C11__8S19001C9[] = {
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19001C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C11D1Ev,_ZTv0_n12_N9S19001C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C11D0Ev,_ZTv0_n12_N9S19001C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C4D1Ev,_ZTv0_n12_N8S19001C4D1Ev)();
extern void _ZN8S19001C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C4D0Ev,_ZTv0_n12_N8S19001C4D0Ev)();
extern void _ZN8S19001C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C4__8S19001C9[] = {
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19001C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C4D1Ev,_ZTv0_n12_N8S19001C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C4D0Ev,_ZTv0_n12_N8S19001C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev)();
extern void _ZN8S19001C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev)();
extern void _ZN8S19001C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C58S19001C4__8S19001C9[] = {
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19001C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S19001C58S19001C4__8S19001C9[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19001C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C4D1Ev,_ZTv0_n12_N8S19001C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19001C4D0Ev,_ZTv0_n12_N8S19001C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S19001C4__8S19001C9[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19001C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C4D1Ev,_ZTv0_n12_N8S19001C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C4D0Ev,_ZTv0_n12_N8S19001C4D0Ev),
};
extern void _ZN9S19001C12D1Ev();
extern void _ZN9S19001C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19001C12__8S19001C9[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19001C12[0]),
  (VTBL_ENTRY)&_ZN9S19001C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19001C12D0Ev,
};
static  VTT_ENTRY vtt_S19001C9[] = {
  {&(_ZTV8S19001C9[10]),  10,34},
  {&(_tg__ZTV8S19001C5__A1__8S19001C9[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S19001C5__A1__8S19001C9[3]),  3,5},
  {&(_ZTV8S19001C9[19]),  19,34},
  {&(_ZTV8S19001C9[19]),  19,34},
  {&(_ZTV8S19001C9[26]),  26,34},
  {&(_ZTV8S19001C9[19]),  19,34},
  {&(_ZTV8S19001C9[32]),  32,34},
  {&(_tg__ZTV9S19001C10__8S19001C9[7]),  7,9},
  {&(_tg__ZTV9S19001C10__8S19001C9[7]),  7,9},
  {&(_tg__ZTV8S19001C4__9S19001C10__8S19001C9[5]),  5,7},
  {&(_tg__ZTV9S19001C10__8S19001C9[7]),  7,9},
  {&(_tg__ZTV9S19001C11__8S19001C9[6]),  6,8},
  {&(_tg__ZTV8S19001C4__9S19001C11__8S19001C9[5]),  5,7},
  {&(_tg__ZTV9S19001C11__8S19001C9[6]),  6,8},
  {&(_tg__ZTV8S19001C4__8S19001C9[5]),  5,7},
  {&(_tg__ZTV8S19001C58S19001C4__8S19001C9[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S19001C58S19001C4__8S19001C9[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S19001C4__8S19001C9[3]),  3,5},
  {&(_tg__ZTV9S19001C12__8S19001C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19001C9[];
extern  VTBL_ENTRY _ZTV8S19001C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19001C9[];
static VTBL_ENTRY alt_thunk_names146[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C4D0Ev,_ZTv0_n12_N8S19001C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S19001C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C4D1Ev,_ZTv0_n12_N8S19001C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S19001C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19001C11D0Ev,_ZTv0_n12_N9S19001C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19001C11D0Ev,_ZThn8_N9S19001C11D0Ev),
  (VTBL_ENTRY)_ZN9S19001C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19001C11D1Ev,_ZTv0_n12_N9S19001C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19001C11D1Ev,_ZThn8_N9S19001C11D1Ev),
  (VTBL_ENTRY)_ZN9S19001C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19001C10D0Ev,_ZTv0_n12_N9S19001C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19001C10D0Ev,_ZThn8_N9S19001C10D0Ev),
  (VTBL_ENTRY)_ZN9S19001C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19001C10D1Ev,_ZTv0_n12_N9S19001C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19001C10D1Ev,_ZThn8_N9S19001C10D1Ev),
  (VTBL_ENTRY)_ZN9S19001C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S19001C5D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19001C5D0Ev,_ZThn20_N8S19001C5D0Ev),
  (VTBL_ENTRY)_ZN8S19001C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S19001C5D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19001C5D1Ev,_ZThn20_N8S19001C5D1Ev),
  (VTBL_ENTRY)_ZN8S19001C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19001C9D0Ev,_ZTv0_n16_N8S19001C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19001C9D0Ev,_ZThn40_N8S19001C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19001C9D1Ev,_ZTv0_n16_N8S19001C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19001C9D1Ev,_ZThn40_N8S19001C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C9D0Ev,_ZTv0_n12_N8S19001C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19001C9D0Ev,_ZThn28_N8S19001C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19001C9D0Ev,_ZThn20_N8S19001C9D0Ev),
  (VTBL_ENTRY)_ZN8S19001C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C9D1Ev,_ZTv0_n12_N8S19001C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19001C9D1Ev,_ZThn28_N8S19001C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19001C9D1Ev,_ZThn20_N8S19001C9D1Ev),
  (VTBL_ENTRY)_ZN8S19001C9D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19001C9 = {  "S19001C9", // class name
  bases_S19001C9, 12,
  &(vtc_S19001C9[0]), // expected_vtbl_contents
  &(vtt_S19001C9[0]), // expected_vtt_contents
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI8S19001C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19001C9),34, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19001C9),20, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names146,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19001C2  : S19001C3 , virtual S19001C9 {
  int s19001c2f0;
  virtual  ~S19001C2(); // _ZN8S19001C2D2Ev
  S19001C2(); // tgen
};
//SIG(-1 S19001C2) C1{ BC2{ BC3{ BC4{ VBC5{ vd m} VBC6{ m Fi} BC7{ m} Fi} Fi}} VBC8{ VBC6 VBC9{ VBC10{ VBC3 BC7} FC6} VBC11{ VBC6 vd} VBC7 BC4 vd Fi Fp} vd Fi}


 S19001C2 ::~S19001C2(){ note_dtor("S19001C2", this);}
S19001C2 ::S19001C2(){ note_ctor("S19001C2", this);} // tgen

static void Test_S19001C2()
{
  extern Class_Descriptor cd_S19001C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,17)];
    init_test(&cd_S19001C2, buf);
    S19001C2 *dp, &lv = *(dp=new (buf) S19001C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,64), "sizeof(S19001C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19001C2)");
    check_base_class_offset(lv, (S7883C3_nt*)(S19001C5*)(S19001C4*)(S19001C3*), 0, "S19001C2");
    /*is_ambiguous_... S19001C2::S19001C4 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S19001C5*)(S19001C4*), 0, "S19001C2");
    /*is_ambiguous_... S19001C9::S19001C5 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S19001C5*)(S19001C9*), 0, "S19001C2");
    check_base_class_offset(lv, (S3216C8_nt*)(S19001C5*)(S19001C4*)(S19001C3*), ABISELECT(20,16), "S19001C2");
    check_base_class_offset(lv, (S3216C8_nt*)(S19001C9*), ABISELECT(20,16), "S19001C2");
    /*is_ambiguous_... S19001C2::S19001C4 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19001C5*)(S19001C4*), ABISELECT(20,16), "S19001C2");
    check_base_class_offset(lv, (S3216C8_nt*)(S19001C12*), ABISELECT(20,16), "S19001C2");
    /*is_ambiguous_... S19001C9::S19001C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19001C5*)(S19001C9*), ABISELECT(20,16), "S19001C2");
    check_base_class_offset(lv, (S4677C37*)(S19001C5*)(S19001C4*)(S19001C3*), 0, "S19001C2");
    check_base_class_offset(lv, (S19001C5*)(S19001C4*)(S19001C3*), 0, "S19001C2");
    check_base_class_offset(lv, (S19001C4*)(S19001C3*), 0, "S19001C2");
    check_base_class_offset(lv, (S19001C3*), 0, "S19001C2");
    /*is_ambiguous_... S19001C2::S19001C4 */ AMB_check_base_class_offset(lv, (S4677C37*)(S19001C5*)(S19001C4*), ABISELECT(64,44), "S19001C2");
    /*is_ambiguous_... S19001C2::S19001C4 */ AMB_check_base_class_offset(lv, (S19001C5*)(S19001C4*), ABISELECT(64,44), "S19001C2");
    check_base_class_offset(lv, (S19001C4*)(S19001C11*), ABISELECT(64,44), "S19001C2");
    /*is_ambiguous_... S19001C11::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S19001C11*), ABISELECT(48,36), "S19001C2");
    check_base_class_offset(lv, (S19001C11*)(S19001C10*), ABISELECT(48,36), "S19001C2");
    check_base_class_offset(lv, (S19001C10*)(S19001C9*), ABISELECT(48,36), "S19001C2");
    check_base_class_offset(lv, (S19001C12*)(S19001C9*), ABISELECT(80,56), "S19001C2");
    /*is_ambiguous_... S19001C9::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S19001C9*), ABISELECT(88,60), "S19001C2");
    /*is_ambiguous_... S19001C9::S19001C5 */ AMB_check_base_class_offset(lv, (S4677C37*)(S19001C5*)(S19001C9*), ABISELECT(24,20), "S19001C2");
    /*is_ambiguous_... S19001C9::S19001C5 */ AMB_check_base_class_offset(lv, (S19001C5*)(S19001C9*), ABISELECT(24,20), "S19001C2");
    check_base_class_offset(lv, (S19001C9*), ABISELECT(24,20), "S19001C2");
    check_field_offset(lv, s19001c2f0, ABISELECT(16,12), "S19001C2.s19001c2f0");
    test_class_info(&lv, &cd_S19001C2);
    dp->~S19001C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19001C2(Test_S19001C2, "S19001C2", ABISELECT(96,64));

#else // __cplusplus

extern void _ZN8S19001C2C1Ev();
extern void _ZN8S19001C2D2Ev();
Name_Map name_map_S19001C2[] = {
  NSPAIR(_ZN8S19001C2C1Ev),
  NSPAIR(_ZN8S19001C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19001C5;
extern VTBL_ENTRY _ZTI8S19001C5[];
extern  VTBL_ENTRY _ZTV8S19001C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19001C5[];
extern Class_Descriptor cd_S19001C4;
extern VTBL_ENTRY _ZTI8S19001C4[];
extern  VTBL_ENTRY _ZTV8S19001C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19001C4[];
extern Class_Descriptor cd_S19001C3;
extern VTBL_ENTRY _ZTI8S19001C3[];
extern  VTBL_ENTRY _ZTV8S19001C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19001C3[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19001C5;
extern VTBL_ENTRY _ZTI8S19001C5[];
extern  VTBL_ENTRY _ZTV8S19001C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19001C5[];
extern Class_Descriptor cd_S19001C4;
extern VTBL_ENTRY _ZTI8S19001C4[];
extern  VTBL_ENTRY _ZTV8S19001C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19001C4[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19001C11;
extern VTBL_ENTRY _ZTI9S19001C11[];
extern  VTBL_ENTRY _ZTV9S19001C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19001C11[];
extern Class_Descriptor cd_S19001C10;
extern VTBL_ENTRY _ZTI9S19001C10[];
extern  VTBL_ENTRY _ZTV9S19001C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19001C10[];
extern Class_Descriptor cd_S19001C12;
extern VTBL_ENTRY _ZTI9S19001C12[];
extern  VTBL_ENTRY _ZTV9S19001C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19001C12[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19001C5;
extern VTBL_ENTRY _ZTI8S19001C5[];
extern  VTBL_ENTRY _ZTV8S19001C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19001C5[];
extern Class_Descriptor cd_S19001C9;
extern VTBL_ENTRY _ZTI8S19001C9[];
extern  VTBL_ENTRY _ZTV8S19001C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19001C9[];
static Base_Class bases_S19001C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(20,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19001C5,    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
    9, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19001C4,    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
    10, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19001C3,    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_S4677C37,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19001C5,    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
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19001C4,    ABISELECT(64,44), //bcp->offset
    34, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19001C11,    ABISELECT(48,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19001C10,    ABISELECT(48,36), //bcp->offset
    25, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19001C12,    ABISELECT(80,56), //bcp->offset
    41, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4677C37,    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
    16, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(24,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
    15, //immediately_derived
  0, 0},
  {&cd_S19001C5,    ABISELECT(24,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19001C9,    ABISELECT(24,20), //bcp->offset
    13, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19001C2[];
extern void _ZN8S19001C2D1Ev();
extern void _ZN8S19001C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19001C2D1Ev,_ZTv0_n12_N8S19001C2D1Ev)();
extern void ABISELECT(_ZThn24_N8S19001C2D1Ev,_ZThn20_N8S19001C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C2D0Ev,_ZTv0_n12_N8S19001C2D0Ev)();
extern void ABISELECT(_ZThn24_N8S19001C2D0Ev,_ZThn20_N8S19001C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C2D1Ev,_ZTv0_n12_N8S19001C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S19001C2D1Ev,_ZThn36_N8S19001C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C2D0Ev,_ZTv0_n12_N8S19001C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S19001C2D0Ev,_ZThn36_N8S19001C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C2D1Ev,_ZTv0_n12_N8S19001C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S19001C2D1Ev,_ZThn44_N8S19001C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C2D0Ev,_ZTv0_n12_N8S19001C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S19001C2D0Ev,_ZThn44_N8S19001C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19001C2D1Ev,_ZTv0_n16_N8S19001C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S19001C2D1Ev,_ZThn56_N8S19001C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19001C2D0Ev,_ZTv0_n16_N8S19001C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S19001C2D0Ev,_ZThn56_N8S19001C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19001C2[] = {
  ABISELECT(88,60),
  ABISELECT(80,56),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(24,20),
  ABISELECT(20,16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19001C2[0]),
  (VTBL_ENTRY)&_ZN8S19001C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19001C2D0Ev,
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(24,16),
  -4,
  ABISELECT(-24,-20),
  ABISELECT(-24,-20),
  ABISELECT(-24,-20),
  (VTBL_ENTRY)&(_ZTI8S19001C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C2D1Ev,_ZTv0_n12_N8S19001C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C2D0Ev,_ZTv0_n12_N8S19001C2D0Ev),
  0,
  ABISELECT(-28,-20),
  ABISELECT(-48,-36),
  ABISELECT(16,8),
  ABISELECT(-48,-36),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S19001C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C2D1Ev,_ZTv0_n12_N8S19001C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C2D0Ev,_ZTv0_n12_N8S19001C2D0Ev),
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S19001C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C2D1Ev,_ZTv0_n12_N8S19001C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C2D0Ev,_ZTv0_n12_N8S19001C2D0Ev),
  ABISELECT(-80,-56),
  ABISELECT(-60,-40),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S19001C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19001C2D1Ev,_ZTv0_n16_N8S19001C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19001C2D0Ev,_ZTv0_n16_N8S19001C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S19001C2[];
extern void _ZN8S19001C3D1Ev();
extern void _ZN8S19001C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19001C3__8S19001C2[] = {
  ABISELECT(20,16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19001C3[0]),
  (VTBL_ENTRY)&_ZN8S19001C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19001C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19001C4D1Ev,_ZTv0_n12_N8S19001C4D1Ev)();
extern void _ZN8S19001C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C4D0Ev,_ZTv0_n12_N8S19001C4D0Ev)();
extern void _ZN8S19001C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C48S19001C3__8S19001C2[] = {
  ABISELECT(20,16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19001C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C4D1Ev,_ZTv0_n12_N8S19001C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C4D0Ev,_ZTv0_n12_N8S19001C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev)();
extern void _ZN8S19001C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev)();
extern void _ZN8S19001C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C58S19001C48S19001C3__8S19001C2[] = {
  ABISELECT(20,16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19001C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C9D1Ev,_ZTv0_n12_N8S19001C9D1Ev)();
extern void _ZN8S19001C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C9D0Ev,_ZTv0_n12_N8S19001C9D0Ev)();
extern void _ZN8S19001C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C9__8S19001C2[] = {
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(24,16),
  -4,
  ABISELECT(-24,-20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19001C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C9D1Ev,_ZTv0_n12_N8S19001C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C9D0Ev,_ZTv0_n12_N8S19001C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev)();
extern void _ZN8S19001C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev)();
extern void _ZN8S19001C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C58S19001C9__A2__8S19001C2[] = {
  -4,
  ABISELECT(-24,-20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19001C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S19001C58S19001C9__A2__8S19001C2[] = {
  ABISELECT(24,20),
  ABISELECT(24,20),
  (VTBL_ENTRY)&(_ZTI8S19001C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C9D1Ev,_ZTv0_n12_N8S19001C9D1Ev)();
extern void ABISELECT(_ZThn24_N8S19001C9D1Ev,_ZThn16_N8S19001C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C9D0Ev,_ZTv0_n12_N8S19001C9D0Ev)();
extern void ABISELECT(_ZThn24_N8S19001C9D0Ev,_ZThn16_N8S19001C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19001C10__8S19001C9__8S19001C2[] = {
  0,
  ABISELECT(-28,-20),
  ABISELECT(-48,-36),
  ABISELECT(16,8),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19001C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C9D1Ev,_ZTv0_n12_N8S19001C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C9D0Ev,_ZTv0_n12_N8S19001C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C9D1Ev,_ZTv0_n12_N8S19001C9D1Ev)();
extern void ABISELECT(_ZThn40_N8S19001C9D1Ev,_ZThn24_N8S19001C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C9D0Ev,_ZTv0_n12_N8S19001C9D0Ev)();
extern void ABISELECT(_ZThn40_N8S19001C9D0Ev,_ZThn24_N8S19001C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C4__8S19001C9__8S19001C2[] = {
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S19001C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C9D1Ev,_ZTv0_n12_N8S19001C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C9D0Ev,_ZTv0_n12_N8S19001C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C9D1Ev,_ZTv0_n12_N8S19001C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19001C9D0Ev,_ZTv0_n12_N8S19001C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S19001C9__8S19001C2[] = {
  ABISELECT(24,20),
  ABISELECT(24,20),
  (VTBL_ENTRY)&(_ZTI8S19001C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C9D1Ev,_ZTv0_n12_N8S19001C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C9D0Ev,_ZTv0_n12_N8S19001C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19001C9D1Ev,_ZTv0_n16_N8S19001C9D1Ev)();
extern void ABISELECT(_ZThn56_N8S19001C9D1Ev,_ZThn36_N8S19001C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19001C9D0Ev,_ZTv0_n16_N8S19001C9D0Ev)();
extern void ABISELECT(_ZThn56_N8S19001C9D0Ev,_ZThn36_N8S19001C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19001C12__8S19001C9__8S19001C2[] = {
  ABISELECT(-56,-36),
  ABISELECT(-60,-40),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19001C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19001C9D1Ev,_ZTv0_n16_N8S19001C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19001C9D0Ev,_ZTv0_n16_N8S19001C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19001C10D1Ev,_ZTv0_n12_N9S19001C10D1Ev)();
extern void _ZN9S19001C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19001C10D0Ev,_ZTv0_n12_N9S19001C10D0Ev)();
extern void _ZN9S19001C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19001C10__8S19001C2[] = {
  0,
  ABISELECT(-28,-20),
  ABISELECT(-48,-36),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19001C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C10D1Ev,_ZTv0_n12_N9S19001C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C10D0Ev,_ZTv0_n12_N9S19001C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19001C10D1Ev,_ZTv0_n12_N9S19001C10D1Ev)();
extern void ABISELECT(_ZThn16_N9S19001C10D1Ev,_ZThn8_N9S19001C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19001C10D0Ev,_ZTv0_n12_N9S19001C10D0Ev)();
extern void ABISELECT(_ZThn16_N9S19001C10D0Ev,_ZThn8_N9S19001C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C4__9S19001C10__8S19001C2[] = {
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19001C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C10D1Ev,_ZTv0_n12_N9S19001C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C10D0Ev,_ZTv0_n12_N9S19001C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19001C10D1Ev,_ZTv0_n12_N9S19001C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19001C10D0Ev,_ZTv0_n12_N9S19001C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S19001C10__8S19001C2[] = {
  ABISELECT(48,36),
  ABISELECT(48,36),
  (VTBL_ENTRY)&(_ZTI9S19001C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C10D1Ev,_ZTv0_n12_N9S19001C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C10D0Ev,_ZTv0_n12_N9S19001C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19001C11D1Ev,_ZTv0_n12_N9S19001C11D1Ev)();
extern void _ZN9S19001C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19001C11D0Ev,_ZTv0_n12_N9S19001C11D0Ev)();
extern void _ZN9S19001C11D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19001C11__8S19001C2[] = {
  ABISELECT(-28,-20),
  ABISELECT(-48,-36),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19001C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C11D1Ev,_ZTv0_n12_N9S19001C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C11D0Ev,_ZTv0_n12_N9S19001C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19001C11D1Ev,_ZTv0_n12_N9S19001C11D1Ev)();
extern void ABISELECT(_ZThn16_N9S19001C11D1Ev,_ZThn8_N9S19001C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19001C11D0Ev,_ZTv0_n12_N9S19001C11D0Ev)();
extern void ABISELECT(_ZThn16_N9S19001C11D0Ev,_ZThn8_N9S19001C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C4__9S19001C11__8S19001C2[] = {
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19001C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C11D1Ev,_ZTv0_n12_N9S19001C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C11D0Ev,_ZTv0_n12_N9S19001C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19001C11D1Ev,_ZTv0_n12_N9S19001C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19001C11D0Ev,_ZTv0_n12_N9S19001C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S19001C11__8S19001C2[] = {
  ABISELECT(48,36),
  ABISELECT(48,36),
  (VTBL_ENTRY)&(_ZTI9S19001C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C11D1Ev,_ZTv0_n12_N9S19001C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C11D0Ev,_ZTv0_n12_N9S19001C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C4D1Ev,_ZTv0_n12_N8S19001C4D1Ev)();
extern void _ZN8S19001C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C4D0Ev,_ZTv0_n12_N8S19001C4D0Ev)();
extern void _ZN8S19001C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C4__A1__8S19001C2[] = {
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19001C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C4D1Ev,_ZTv0_n12_N8S19001C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C4D0Ev,_ZTv0_n12_N8S19001C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev)();
extern void _ZN8S19001C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev)();
extern void _ZN8S19001C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C58S19001C4__A1__8S19001C2[] = {
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19001C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S19001C58S19001C4__A1__8S19001C2[] = {
  ABISELECT(64,44),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S19001C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C4D1Ev,_ZTv0_n12_N8S19001C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19001C4D0Ev,_ZTv0_n12_N8S19001C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S19001C4__A1__8S19001C2[] = {
  ABISELECT(64,44),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S19001C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C4D1Ev,_ZTv0_n12_N8S19001C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C4D0Ev,_ZTv0_n12_N8S19001C4D0Ev),
};
extern void _ZN9S19001C12D1Ev();
extern void _ZN9S19001C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19001C12__8S19001C2[] = {
  ABISELECT(-60,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19001C12[0]),
  (VTBL_ENTRY)&_ZN9S19001C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19001C12D0Ev,
};
static  VTT_ENTRY vtt_S19001C2[] = {
  {&(_ZTV8S19001C2[11]),  11,47},
  {&(_tg__ZTV8S19001C3__8S19001C2[5]),  5,7},
  {&(_tg__ZTV8S19001C48S19001C3__8S19001C2[5]),  5,7},
  {&(_tg__ZTV8S19001C58S19001C48S19001C3__8S19001C2[5]),  5,7},
  {&(_tg__ZTV8S19001C58S19001C48S19001C3__8S19001C2[5]),  5,7},
  {&(_tg__ZTV8S19001C48S19001C3__8S19001C2[5]),  5,7},
  {&(_tg__ZTV8S19001C3__8S19001C2[5]),  5,7},
  {&(_ZTV8S19001C2[11]),  11,47},
  {&(_ZTV8S19001C2[23]),  23,47},
  {&(_ZTV8S19001C2[32]),  32,47},
  {&(_ZTV8S19001C2[32]),  32,47},
  {&(_ZTV8S19001C2[39]),  39,47},
  {&(_ZTV8S19001C2[45]),  45,47},
  {&(_tg__ZTV8S19001C9__8S19001C2[10]),  10,12},
  {&(_tg__ZTV8S19001C58S19001C9__A2__8S19001C2[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S19001C58S19001C9__A2__8S19001C2[3]),  3,5},
  {&(_tg__ZTV9S19001C10__8S19001C9__8S19001C2[7]),  7,9},
  {&(_tg__ZTV9S19001C10__8S19001C9__8S19001C2[7]),  7,9},
  {&(_tg__ZTV8S19001C4__8S19001C9__8S19001C2[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S19001C9__8S19001C2[3]),  3,5},
  {&(_tg__ZTV9S19001C12__8S19001C9__8S19001C2[4]),  4,6},
  {&(_tg__ZTV9S19001C10__8S19001C2[7]),  7,9},
  {&(_tg__ZTV9S19001C10__8S19001C2[7]),  7,9},
  {&(_tg__ZTV8S19001C4__9S19001C10__8S19001C2[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__9S19001C10__8S19001C2[3]),  3,5},
  {&(_tg__ZTV9S19001C11__8S19001C2[6]),  6,8},
  {&(_tg__ZTV8S19001C4__9S19001C11__8S19001C2[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__9S19001C11__8S19001C2[3]),  3,5},
  {&(_tg__ZTV8S19001C4__A1__8S19001C2[5]),  5,7},
  {&(_tg__ZTV8S19001C58S19001C4__A1__8S19001C2[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S19001C58S19001C4__A1__8S19001C2[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S19001C4__A1__8S19001C2[3]),  3,5},
  {&(_tg__ZTV9S19001C12__8S19001C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19001C2[];
extern  VTBL_ENTRY _ZTV8S19001C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19001C2[];
static VTBL_ENTRY alt_thunk_names147[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19001C11D0Ev,_ZTv0_n12_N9S19001C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19001C11D0Ev,_ZThn8_N9S19001C11D0Ev),
  (VTBL_ENTRY)_ZN9S19001C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19001C11D1Ev,_ZTv0_n12_N9S19001C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19001C11D1Ev,_ZThn8_N9S19001C11D1Ev),
  (VTBL_ENTRY)_ZN9S19001C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19001C10D0Ev,_ZTv0_n12_N9S19001C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19001C10D0Ev,_ZThn8_N9S19001C10D0Ev),
  (VTBL_ENTRY)_ZN9S19001C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19001C10D1Ev,_ZTv0_n12_N9S19001C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19001C10D1Ev,_ZThn8_N9S19001C10D1Ev),
  (VTBL_ENTRY)_ZN9S19001C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19001C9D0Ev,_ZTv0_n16_N8S19001C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19001C9D0Ev,_ZThn36_N8S19001C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19001C9D1Ev,_ZTv0_n16_N8S19001C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19001C9D1Ev,_ZThn36_N8S19001C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C9D0Ev,_ZTv0_n12_N8S19001C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19001C9D0Ev,_ZThn24_N8S19001C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19001C9D0Ev,_ZThn16_N8S19001C9D0Ev),
  (VTBL_ENTRY)_ZN8S19001C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C9D1Ev,_ZTv0_n12_N8S19001C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19001C9D1Ev,_ZThn24_N8S19001C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19001C9D1Ev,_ZThn16_N8S19001C9D1Ev),
  (VTBL_ENTRY)_ZN8S19001C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S19001C5D0Ev,
  (VTBL_ENTRY)_ZN8S19001C5D0Ev,
  (VTBL_ENTRY)_ZN8S19001C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S19001C5D1Ev,
  (VTBL_ENTRY)_ZN8S19001C5D1Ev,
  (VTBL_ENTRY)_ZN8S19001C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C4D0Ev,_ZTv0_n12_N8S19001C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S19001C4D0Ev,
  (VTBL_ENTRY)_ZN8S19001C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C4D1Ev,_ZTv0_n12_N8S19001C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S19001C4D1Ev,
  (VTBL_ENTRY)_ZN8S19001C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19001C2D0Ev,_ZTv0_n16_N8S19001C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19001C2D0Ev,_ZThn56_N8S19001C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19001C2D1Ev,_ZTv0_n16_N8S19001C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19001C2D1Ev,_ZThn56_N8S19001C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C2D0Ev,_ZTv0_n12_N8S19001C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19001C2D0Ev,_ZThn44_N8S19001C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19001C2D0Ev,_ZThn36_N8S19001C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19001C2D0Ev,_ZThn20_N8S19001C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C2D1Ev,_ZTv0_n12_N8S19001C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19001C2D1Ev,_ZThn44_N8S19001C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19001C2D1Ev,_ZThn36_N8S19001C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19001C2D1Ev,_ZThn20_N8S19001C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19001C2 = {  "S19001C2", // class name
  bases_S19001C2, 17,
  &(vtc_S19001C2[0]), // expected_vtbl_contents
  &(vtt_S19001C2[0]), // expected_vtt_contents
  ABISELECT(96,64), // object size
  NSPAIRA(_ZTI8S19001C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19001C2),47, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19001C2),33, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names147,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19001C1  : virtual S19001C2 {
  ~S19001C1(); // tgen
  S19001C1(); // tgen
};
//SIG(1 S19001C1) C1{ VBC2{ BC3{ BC4{ BC5{ VBC6{ vd m} VBC7{ m Fi} BC8{ m} Fi} Fi}} VBC9{ VBC7 VBC10{ VBC11{ VBC4 BC8} FC7} VBC12{ VBC7 vd} VBC8 BC5 vd Fi Fp} vd Fi}}


S19001C1 ::~S19001C1(){ note_dtor("S19001C1", this);} // tgen
S19001C1 ::S19001C1(){ note_ctor("S19001C1", this);} // tgen

static void Test_S19001C1()
{
  extern Class_Descriptor cd_S19001C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,16)];
    init_test(&cd_S19001C1, buf);
    S19001C1 *dp, &lv = *(dp=new (buf) S19001C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,60), "sizeof(S19001C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19001C1)");
    check_base_class_offset(lv, (S7883C3_nt*)(S19001C5*)(S19001C4*)(S19001C3*)(S19001C2*), ABISELECT(8,4), "S19001C1");
    /*is_ambiguous_... S19001C1::S19001C4 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S19001C5*)(S19001C4*), ABISELECT(8,4), "S19001C1");
    /*is_ambiguous_... S19001C9::S19001C5 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S19001C5*)(S19001C9*), ABISELECT(8,4), "S19001C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S19001C5*)(S19001C4*)(S19001C3*)(S19001C2*), ABISELECT(28,20), "S19001C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S19001C9*), ABISELECT(28,20), "S19001C1");
    /*is_ambiguous_... S19001C1::S19001C4 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19001C5*)(S19001C4*), ABISELECT(28,20), "S19001C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S19001C12*), ABISELECT(28,20), "S19001C1");
    /*is_ambiguous_... S19001C9::S19001C5 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S19001C5*)(S19001C9*), ABISELECT(28,20), "S19001C1");
    check_base_class_offset(lv, (S4677C37*)(S19001C5*)(S19001C4*)(S19001C3*)(S19001C2*), ABISELECT(8,4), "S19001C1");
    check_base_class_offset(lv, (S19001C5*)(S19001C4*)(S19001C3*)(S19001C2*), ABISELECT(8,4), "S19001C1");
    check_base_class_offset(lv, (S19001C4*)(S19001C3*)(S19001C2*), ABISELECT(8,4), "S19001C1");
    check_base_class_offset(lv, (S19001C3*)(S19001C2*), ABISELECT(8,4), "S19001C1");
    /*is_ambiguous_... S19001C1::S19001C4 */ AMB_check_base_class_offset(lv, (S4677C37*)(S19001C5*)(S19001C4*), ABISELECT(72,48), "S19001C1");
    /*is_ambiguous_... S19001C1::S19001C4 */ AMB_check_base_class_offset(lv, (S19001C5*)(S19001C4*), ABISELECT(72,48), "S19001C1");
    check_base_class_offset(lv, (S19001C4*)(S19001C11*), ABISELECT(72,48), "S19001C1");
    /*is_ambiguous_... S19001C11::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S19001C11*), ABISELECT(56,40), "S19001C1");
    check_base_class_offset(lv, (S19001C11*)(S19001C10*), ABISELECT(56,40), "S19001C1");
    check_base_class_offset(lv, (S19001C10*)(S19001C9*), ABISELECT(56,40), "S19001C1");
    check_base_class_offset(lv, (S19001C12*)(S19001C9*), 0, "S19001C1");
    /*is_ambiguous_... S19001C9::S4677C37 */ AMB_check_base_class_offset(lv, (S4677C37*)(S19001C9*), 0, "S19001C1");
    /*is_ambiguous_... S19001C9::S19001C5 */ AMB_check_base_class_offset(lv, (S4677C37*)(S19001C5*)(S19001C9*), ABISELECT(32,24), "S19001C1");
    /*is_ambiguous_... S19001C9::S19001C5 */ AMB_check_base_class_offset(lv, (S19001C5*)(S19001C9*), ABISELECT(32,24), "S19001C1");
    check_base_class_offset(lv, (S19001C9*)(S19001C2*), ABISELECT(32,24), "S19001C1");
    check_base_class_offset(lv, (S19001C2*), ABISELECT(8,4), "S19001C1");
    test_class_info(&lv, &cd_S19001C1);
    dp->~S19001C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19001C1(Test_S19001C1, "S19001C1", ABISELECT(88,60));

#else // __cplusplus

extern void _ZN8S19001C1C1Ev();
extern void _ZN8S19001C1D1Ev();
Name_Map name_map_S19001C1[] = {
  NSPAIR(_ZN8S19001C1C1Ev),
  NSPAIR(_ZN8S19001C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19001C5;
extern VTBL_ENTRY _ZTI8S19001C5[];
extern  VTBL_ENTRY _ZTV8S19001C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19001C5[];
extern Class_Descriptor cd_S19001C4;
extern VTBL_ENTRY _ZTI8S19001C4[];
extern  VTBL_ENTRY _ZTV8S19001C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19001C4[];
extern Class_Descriptor cd_S19001C3;
extern VTBL_ENTRY _ZTI8S19001C3[];
extern  VTBL_ENTRY _ZTV8S19001C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19001C3[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19001C5;
extern VTBL_ENTRY _ZTI8S19001C5[];
extern  VTBL_ENTRY _ZTV8S19001C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19001C5[];
extern Class_Descriptor cd_S19001C4;
extern VTBL_ENTRY _ZTI8S19001C4[];
extern  VTBL_ENTRY _ZTV8S19001C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19001C4[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19001C11;
extern VTBL_ENTRY _ZTI9S19001C11[];
extern  VTBL_ENTRY _ZTV9S19001C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19001C11[];
extern Class_Descriptor cd_S19001C10;
extern VTBL_ENTRY _ZTI9S19001C10[];
extern  VTBL_ENTRY _ZTV9S19001C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19001C10[];
extern Class_Descriptor cd_S19001C12;
extern VTBL_ENTRY _ZTI9S19001C12[];
extern  VTBL_ENTRY _ZTV9S19001C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19001C12[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S19001C5;
extern VTBL_ENTRY _ZTI8S19001C5[];
extern  VTBL_ENTRY _ZTV8S19001C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19001C5[];
extern Class_Descriptor cd_S19001C9;
extern VTBL_ENTRY _ZTI8S19001C9[];
extern  VTBL_ENTRY _ZTV8S19001C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19001C9[];
extern Class_Descriptor cd_S19001C2;
extern VTBL_ENTRY _ZTI8S19001C2[];
extern  VTBL_ENTRY _ZTV8S19001C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19001C2[];
static Base_Class bases_S19001C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(28,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19001C5,    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
    9, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19001C4,    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
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19001C3,    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
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S4677C37,    ABISELECT(72,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19001C5,    ABISELECT(72,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19001C4,    ABISELECT(72,48), //bcp->offset
    48, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S4677C37,    ABISELECT(56,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19001C11,    ABISELECT(56,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19001C10,    ABISELECT(56,40), //bcp->offset
    39, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19001C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4677C37,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19001C5,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19001C9,    ABISELECT(32,24), //bcp->offset
    27, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19001C2,    ABISELECT(8,4), //bcp->offset
    14, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19001C1[];
extern void _ZN8S19001C1D1Ev();
extern void _ZN8S19001C1D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19001C1D1Ev,_ZTv0_n12_N8S19001C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S19001C1D1Ev,_ZThn4_N8S19001C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C1D0Ev,_ZTv0_n12_N8S19001C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S19001C1D0Ev,_ZThn4_N8S19001C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C1D1Ev,_ZTv0_n12_N8S19001C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S19001C1D1Ev,_ZThn24_N8S19001C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C1D0Ev,_ZTv0_n12_N8S19001C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S19001C1D0Ev,_ZThn24_N8S19001C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C1D1Ev,_ZTv0_n12_N8S19001C1D1Ev)();
extern void ABISELECT(_ZThn56_N8S19001C1D1Ev,_ZThn40_N8S19001C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C1D0Ev,_ZTv0_n12_N8S19001C1D0Ev)();
extern void ABISELECT(_ZThn56_N8S19001C1D0Ev,_ZThn40_N8S19001C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C1D1Ev,_ZTv0_n12_N8S19001C1D1Ev)();
extern void ABISELECT(_ZThn72_N8S19001C1D1Ev,_ZThn48_N8S19001C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C1D0Ev,_ZTv0_n12_N8S19001C1D0Ev)();
extern void ABISELECT(_ZThn72_N8S19001C1D0Ev,_ZThn48_N8S19001C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19001C1[] = {
  0,
  0,
  ABISELECT(72,48),
  ABISELECT(56,40),
  ABISELECT(56,40),
  ABISELECT(32,24),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  ABISELECT(28,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19001C1[0]),
  (VTBL_ENTRY)&_ZN8S19001C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19001C1D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(24,20),
  ABISELECT(20,16),
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19001C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C1D1Ev,_ZTv0_n12_N8S19001C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C1D0Ev,_ZTv0_n12_N8S19001C1D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(24,16),
  -4,
  ABISELECT(-24,-20),
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S19001C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C1D1Ev,_ZTv0_n12_N8S19001C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C1D0Ev,_ZTv0_n12_N8S19001C1D0Ev),
  0,
  ABISELECT(-28,-20),
  ABISELECT(-48,-36),
  ABISELECT(16,8),
  ABISELECT(-56,-40),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI8S19001C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C1D1Ev,_ZTv0_n12_N8S19001C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C1D0Ev,_ZTv0_n12_N8S19001C1D0Ev),
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  ABISELECT(-72,-48),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S19001C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C1D1Ev,_ZTv0_n12_N8S19001C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C1D0Ev,_ZTv0_n12_N8S19001C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19001C1[];
extern void ABISELECT(_ZTv0_n24_N8S19001C2D1Ev,_ZTv0_n12_N8S19001C2D1Ev)();
extern void _ZN8S19001C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C2D0Ev,_ZTv0_n12_N8S19001C2D0Ev)();
extern void _ZN8S19001C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C2__8S19001C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(24,20),
  ABISELECT(20,16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19001C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C2D1Ev,_ZTv0_n12_N8S19001C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C2D0Ev,_ZTv0_n12_N8S19001C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C3D1Ev,_ZTv0_n12_N8S19001C3D1Ev)();
extern void _ZN8S19001C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C3D0Ev,_ZTv0_n12_N8S19001C3D0Ev)();
extern void _ZN8S19001C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C38S19001C2__8S19001C1[] = {
  ABISELECT(20,16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19001C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C3D1Ev,_ZTv0_n12_N8S19001C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C3D0Ev,_ZTv0_n12_N8S19001C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C4D1Ev,_ZTv0_n12_N8S19001C4D1Ev)();
extern void _ZN8S19001C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C4D0Ev,_ZTv0_n12_N8S19001C4D0Ev)();
extern void _ZN8S19001C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C48S19001C38S19001C2__8S19001C1[] = {
  ABISELECT(20,16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19001C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C4D1Ev,_ZTv0_n12_N8S19001C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C4D0Ev,_ZTv0_n12_N8S19001C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev)();
extern void _ZN8S19001C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev)();
extern void _ZN8S19001C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C58S19001C48S19001C38S19001C2__8S19001C1[] = {
  ABISELECT(20,16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19001C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C2D1Ev,_ZTv0_n12_N8S19001C2D1Ev)();
extern void ABISELECT(_ZThn24_N8S19001C2D1Ev,_ZThn20_N8S19001C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C2D0Ev,_ZTv0_n12_N8S19001C2D0Ev)();
extern void ABISELECT(_ZThn24_N8S19001C2D0Ev,_ZThn20_N8S19001C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C9__8S19001C2__8S19001C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(24,16),
  -4,
  ABISELECT(-24,-20),
  ABISELECT(-24,-20),
  ABISELECT(-24,-20),
  (VTBL_ENTRY)&(_ZTI8S19001C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C2D1Ev,_ZTv0_n12_N8S19001C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C2D0Ev,_ZTv0_n12_N8S19001C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C2D1Ev,_ZTv0_n12_N8S19001C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S19001C2D1Ev,_ZThn36_N8S19001C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C2D0Ev,_ZTv0_n12_N8S19001C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S19001C2D0Ev,_ZThn36_N8S19001C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19001C10__8S19001C2__8S19001C1[] = {
  0,
  ABISELECT(-28,-20),
  ABISELECT(-48,-36),
  ABISELECT(16,8),
  ABISELECT(-48,-36),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S19001C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C2D1Ev,_ZTv0_n12_N8S19001C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C2D0Ev,_ZTv0_n12_N8S19001C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C2D1Ev,_ZTv0_n12_N8S19001C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S19001C2D1Ev,_ZThn44_N8S19001C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C2D0Ev,_ZTv0_n12_N8S19001C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S19001C2D0Ev,_ZThn44_N8S19001C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C4__A1__8S19001C2__8S19001C1[] = {
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S19001C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C2D1Ev,_ZTv0_n12_N8S19001C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C2D0Ev,_ZTv0_n12_N8S19001C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19001C2D1Ev,_ZTv0_n16_N8S19001C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19001C2D0Ev,_ZTv0_n16_N8S19001C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19001C12__8S19001C2__8S19001C1[] = {
  ABISELECT(8,4),
  ABISELECT(28,20),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19001C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19001C2D1Ev,_ZTv0_n16_N8S19001C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19001C2D0Ev,_ZTv0_n16_N8S19001C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C9D1Ev,_ZTv0_n12_N8S19001C9D1Ev)();
extern void _ZN8S19001C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C9D0Ev,_ZTv0_n12_N8S19001C9D0Ev)();
extern void _ZN8S19001C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C9__8S19001C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(24,16),
  -4,
  ABISELECT(-24,-20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19001C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C9D1Ev,_ZTv0_n12_N8S19001C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C9D0Ev,_ZTv0_n12_N8S19001C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev)();
extern void _ZN8S19001C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev)();
extern void _ZN8S19001C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C58S19001C9__A2__8S19001C1[] = {
  -4,
  ABISELECT(-24,-20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19001C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S19001C58S19001C9__A2__8S19001C1[] = {
  ABISELECT(24,20),
  ABISELECT(24,20),
  (VTBL_ENTRY)&(_ZTI8S19001C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C9D1Ev,_ZTv0_n12_N8S19001C9D1Ev)();
extern void ABISELECT(_ZThn24_N8S19001C9D1Ev,_ZThn16_N8S19001C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C9D0Ev,_ZTv0_n12_N8S19001C9D0Ev)();
extern void ABISELECT(_ZThn24_N8S19001C9D0Ev,_ZThn16_N8S19001C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19001C10__8S19001C9__8S19001C1[] = {
  0,
  ABISELECT(-28,-20),
  ABISELECT(-48,-36),
  ABISELECT(16,8),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19001C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C9D1Ev,_ZTv0_n12_N8S19001C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C9D0Ev,_ZTv0_n12_N8S19001C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C9D1Ev,_ZTv0_n12_N8S19001C9D1Ev)();
extern void ABISELECT(_ZThn40_N8S19001C9D1Ev,_ZThn24_N8S19001C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C9D0Ev,_ZTv0_n12_N8S19001C9D0Ev)();
extern void ABISELECT(_ZThn40_N8S19001C9D0Ev,_ZThn24_N8S19001C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C4__8S19001C9__8S19001C1[] = {
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S19001C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C9D1Ev,_ZTv0_n12_N8S19001C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C9D0Ev,_ZTv0_n12_N8S19001C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C9D1Ev,_ZTv0_n12_N8S19001C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19001C9D0Ev,_ZTv0_n12_N8S19001C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S19001C9__8S19001C1[] = {
  ABISELECT(24,20),
  ABISELECT(24,20),
  (VTBL_ENTRY)&(_ZTI8S19001C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C9D1Ev,_ZTv0_n12_N8S19001C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C9D0Ev,_ZTv0_n12_N8S19001C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19001C9D1Ev,_ZTv0_n16_N8S19001C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19001C9D0Ev,_ZTv0_n16_N8S19001C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19001C12__8S19001C9__8S19001C1[] = {
  ABISELECT(32,24),
  ABISELECT(28,20),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI8S19001C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19001C9D1Ev,_ZTv0_n16_N8S19001C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19001C9D0Ev,_ZTv0_n16_N8S19001C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19001C10D1Ev,_ZTv0_n12_N9S19001C10D1Ev)();
extern void _ZN9S19001C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19001C10D0Ev,_ZTv0_n12_N9S19001C10D0Ev)();
extern void _ZN9S19001C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19001C10__8S19001C1[] = {
  0,
  ABISELECT(-28,-20),
  ABISELECT(-48,-36),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19001C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C10D1Ev,_ZTv0_n12_N9S19001C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C10D0Ev,_ZTv0_n12_N9S19001C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19001C10D1Ev,_ZTv0_n12_N9S19001C10D1Ev)();
extern void ABISELECT(_ZThn16_N9S19001C10D1Ev,_ZThn8_N9S19001C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19001C10D0Ev,_ZTv0_n12_N9S19001C10D0Ev)();
extern void ABISELECT(_ZThn16_N9S19001C10D0Ev,_ZThn8_N9S19001C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C4__9S19001C10__8S19001C1[] = {
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19001C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C10D1Ev,_ZTv0_n12_N9S19001C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C10D0Ev,_ZTv0_n12_N9S19001C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19001C10D1Ev,_ZTv0_n12_N9S19001C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19001C10D0Ev,_ZTv0_n12_N9S19001C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S19001C10__8S19001C1[] = {
  ABISELECT(48,36),
  ABISELECT(48,36),
  (VTBL_ENTRY)&(_ZTI9S19001C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C10D1Ev,_ZTv0_n12_N9S19001C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C10D0Ev,_ZTv0_n12_N9S19001C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19001C11D1Ev,_ZTv0_n12_N9S19001C11D1Ev)();
extern void _ZN9S19001C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19001C11D0Ev,_ZTv0_n12_N9S19001C11D0Ev)();
extern void _ZN9S19001C11D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19001C11__8S19001C1[] = {
  ABISELECT(-28,-20),
  ABISELECT(-48,-36),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19001C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C11D1Ev,_ZTv0_n12_N9S19001C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C11D0Ev,_ZTv0_n12_N9S19001C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19001C11D1Ev,_ZTv0_n12_N9S19001C11D1Ev)();
extern void ABISELECT(_ZThn16_N9S19001C11D1Ev,_ZThn8_N9S19001C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19001C11D0Ev,_ZTv0_n12_N9S19001C11D0Ev)();
extern void ABISELECT(_ZThn16_N9S19001C11D0Ev,_ZThn8_N9S19001C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C4__9S19001C11__8S19001C1[] = {
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19001C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C11D1Ev,_ZTv0_n12_N9S19001C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C11D0Ev,_ZTv0_n12_N9S19001C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19001C11D1Ev,_ZTv0_n12_N9S19001C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19001C11D0Ev,_ZTv0_n12_N9S19001C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__9S19001C11__8S19001C1[] = {
  ABISELECT(48,36),
  ABISELECT(48,36),
  (VTBL_ENTRY)&(_ZTI9S19001C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C11D1Ev,_ZTv0_n12_N9S19001C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19001C11D0Ev,_ZTv0_n12_N9S19001C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C4D1Ev,_ZTv0_n12_N8S19001C4D1Ev)();
extern void _ZN8S19001C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C4D0Ev,_ZTv0_n12_N8S19001C4D0Ev)();
extern void _ZN8S19001C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C4__A1__8S19001C1[] = {
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19001C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C4D1Ev,_ZTv0_n12_N8S19001C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C4D0Ev,_ZTv0_n12_N8S19001C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev)();
extern void _ZN8S19001C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev)();
extern void _ZN8S19001C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19001C58S19001C4__A1__8S19001C1[] = {
  ABISELECT(-44,-28),
  ABISELECT(-64,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19001C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S19001C58S19001C4__A1__8S19001C1[] = {
  ABISELECT(64,44),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S19001C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19001C4D1Ev,_ZTv0_n12_N8S19001C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19001C4D0Ev,_ZTv0_n12_N8S19001C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__8S19001C4__A1__8S19001C1[] = {
  ABISELECT(64,44),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S19001C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C4D1Ev,_ZTv0_n12_N8S19001C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19001C4D0Ev,_ZTv0_n12_N8S19001C4D0Ev),
};
extern void _ZN9S19001C12D1Ev();
extern void _ZN9S19001C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19001C12__8S19001C1[] = {
  ABISELECT(28,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19001C12[0]),
  (VTBL_ENTRY)&_ZN9S19001C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19001C12D0Ev,
};
static  VTT_ENTRY vtt_S19001C1[] = {
  {&(_ZTV8S19001C1[12]),  12,55},
  {&(_ZTV8S19001C1[25]),  25,55},
  {&(_ZTV8S19001C1[25]),  25,55},
  {&(_ZTV8S19001C1[37]),  37,55},
  {&(_ZTV8S19001C1[46]),  46,55},
  {&(_ZTV8S19001C1[46]),  46,55},
  {&(_ZTV8S19001C1[53]),  53,55},
  {&(_ZTV8S19001C1[12]),  12,55},
  {&(_tg__ZTV8S19001C2__8S19001C1[11]),  11,13},
  {&(_tg__ZTV8S19001C38S19001C2__8S19001C1[5]),  5,7},
  {&(_tg__ZTV8S19001C48S19001C38S19001C2__8S19001C1[5]),  5,7},
  {&(_tg__ZTV8S19001C58S19001C48S19001C38S19001C2__8S19001C1[5]),  5,7},
  {&(_tg__ZTV8S19001C58S19001C48S19001C38S19001C2__8S19001C1[5]),  5,7},
  {&(_tg__ZTV8S19001C48S19001C38S19001C2__8S19001C1[5]),  5,7},
  {&(_tg__ZTV8S19001C38S19001C2__8S19001C1[5]),  5,7},
  {&(_tg__ZTV8S19001C2__8S19001C1[11]),  11,13},
  {&(_tg__ZTV8S19001C9__8S19001C2__8S19001C1[10]),  10,12},
  {&(_tg__ZTV9S19001C10__8S19001C2__8S19001C1[7]),  7,9},
  {&(_tg__ZTV9S19001C10__8S19001C2__8S19001C1[7]),  7,9},
  {&(_tg__ZTV8S19001C4__A1__8S19001C2__8S19001C1[5]),  5,7},
  {&(_tg__ZTV9S19001C12__8S19001C2__8S19001C1[4]),  4,6},
  {&(_tg__ZTV8S19001C9__8S19001C1[10]),  10,12},
  {&(_tg__ZTV8S19001C58S19001C9__A2__8S19001C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S19001C58S19001C9__A2__8S19001C1[3]),  3,5},
  {&(_tg__ZTV9S19001C10__8S19001C9__8S19001C1[7]),  7,9},
  {&(_tg__ZTV9S19001C10__8S19001C9__8S19001C1[7]),  7,9},
  {&(_tg__ZTV8S19001C4__8S19001C9__8S19001C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S19001C9__8S19001C1[3]),  3,5},
  {&(_tg__ZTV9S19001C12__8S19001C9__8S19001C1[4]),  4,6},
  {&(_tg__ZTV9S19001C10__8S19001C1[7]),  7,9},
  {&(_tg__ZTV9S19001C10__8S19001C1[7]),  7,9},
  {&(_tg__ZTV8S19001C4__9S19001C10__8S19001C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__9S19001C10__8S19001C1[3]),  3,5},
  {&(_tg__ZTV9S19001C11__8S19001C1[6]),  6,8},
  {&(_tg__ZTV8S19001C4__9S19001C11__8S19001C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__9S19001C11__8S19001C1[3]),  3,5},
  {&(_tg__ZTV8S19001C4__A1__8S19001C1[5]),  5,7},
  {&(_tg__ZTV8S19001C58S19001C4__A1__8S19001C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__8S19001C58S19001C4__A1__8S19001C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__8S19001C4__A1__8S19001C1[3]),  3,5},
  {&(_tg__ZTV9S19001C12__8S19001C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19001C1[];
extern  VTBL_ENTRY _ZTV8S19001C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19001C1[];
static VTBL_ENTRY alt_thunk_names148[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19001C11D0Ev,_ZTv0_n12_N9S19001C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19001C11D0Ev,_ZThn8_N9S19001C11D0Ev),
  (VTBL_ENTRY)_ZN9S19001C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19001C11D1Ev,_ZTv0_n12_N9S19001C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19001C11D1Ev,_ZThn8_N9S19001C11D1Ev),
  (VTBL_ENTRY)_ZN9S19001C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19001C10D0Ev,_ZTv0_n12_N9S19001C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19001C10D0Ev,_ZThn8_N9S19001C10D0Ev),
  (VTBL_ENTRY)_ZN9S19001C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19001C10D1Ev,_ZTv0_n12_N9S19001C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19001C10D1Ev,_ZThn8_N9S19001C10D1Ev),
  (VTBL_ENTRY)_ZN9S19001C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C9D0Ev,_ZTv0_n12_N8S19001C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19001C9D0Ev,_ZThn24_N8S19001C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19001C9D0Ev,_ZThn16_N8S19001C9D0Ev),
  (VTBL_ENTRY)_ZN8S19001C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C9D1Ev,_ZTv0_n12_N8S19001C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19001C9D1Ev,_ZThn24_N8S19001C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19001C9D1Ev,_ZThn16_N8S19001C9D1Ev),
  (VTBL_ENTRY)_ZN8S19001C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C5D0Ev,_ZTv0_n12_N8S19001C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S19001C5D0Ev,
  (VTBL_ENTRY)_ZN8S19001C5D0Ev,
  (VTBL_ENTRY)_ZN8S19001C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C5D1Ev,_ZTv0_n12_N8S19001C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S19001C5D1Ev,
  (VTBL_ENTRY)_ZN8S19001C5D1Ev,
  (VTBL_ENTRY)_ZN8S19001C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C4D0Ev,_ZTv0_n12_N8S19001C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S19001C4D0Ev,
  (VTBL_ENTRY)_ZN8S19001C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C4D1Ev,_ZTv0_n12_N8S19001C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S19001C4D1Ev,
  (VTBL_ENTRY)_ZN8S19001C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C3D0Ev,_ZTv0_n12_N8S19001C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S19001C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C3D1Ev,_ZTv0_n12_N8S19001C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S19001C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C2D0Ev,_ZTv0_n12_N8S19001C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19001C2D0Ev,_ZThn44_N8S19001C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19001C2D0Ev,_ZThn36_N8S19001C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19001C2D0Ev,_ZThn20_N8S19001C2D0Ev),
  (VTBL_ENTRY)_ZN8S19001C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C2D1Ev,_ZTv0_n12_N8S19001C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19001C2D1Ev,_ZThn44_N8S19001C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19001C2D1Ev,_ZThn36_N8S19001C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19001C2D1Ev,_ZThn20_N8S19001C2D1Ev),
  (VTBL_ENTRY)_ZN8S19001C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C1D0Ev,_ZTv0_n12_N8S19001C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19001C1D0Ev,_ZThn48_N8S19001C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19001C1D0Ev,_ZThn40_N8S19001C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19001C1D0Ev,_ZThn24_N8S19001C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19001C1D0Ev,_ZThn4_N8S19001C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19001C1D1Ev,_ZTv0_n12_N8S19001C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19001C1D1Ev,_ZThn48_N8S19001C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19001C1D1Ev,_ZThn40_N8S19001C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19001C1D1Ev,_ZThn24_N8S19001C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19001C1D1Ev,_ZThn4_N8S19001C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19001C1 = {  "S19001C1", // class name
  bases_S19001C1, 18,
  &(vtc_S19001C1[0]), // expected_vtbl_contents
  &(vtt_S19001C1[0]), // expected_vtt_contents
  ABISELECT(88,60), // object size
  NSPAIRA(_ZTI8S19001C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19001C1),55, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19001C1),41, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names148,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15922C11_nt  {
  ::S133C9_nt s15922c11f0;
  void  mf15922c11(); // _ZN12S15922C11_nt10mf15922c11Ev
};
//SIG(-1 S15922C11_nt) C1{ m FC2{ m Fp Fi[4]}}


void  S15922C11_nt ::mf15922c11(){}

//skip512 S15922C11_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15922C1  {
  ::S133C15_nt s15922c1f0;
  ::S16428C9_nt s15922c1f1;
  ::S133C12 s15922c1f2;
  ::S133C8_nt s15922c1f3;
  ::S15922C11_nt s15922c1f4;
  ::S133C8_nt s15922c1f5;
  void  mf15922c1(); // _ZN8S15922C19mf15922c1Ev
};
//SIG(1 S15922C1) C1{ m FC2{ m Fi FC3{ BC4{ m Fp Fi}}} FC5{ m FC6{ m Fp Fi[4]}} FC7{ m FC6} FC8{ m FC6} FC9{ m FC6} FC8}


void  S15922C1 ::mf15922c1(){}

static void Test_S15922C1()
{
  {
    init_simple_test("S15922C1");
    S15922C1 lv;
    check2(sizeof(lv), ABISELECT(144,112), "sizeof(S15922C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15922C1)");
    check_field_offset(lv, s15922c1f0, 0, "S15922C1.s15922c1f0");
    check_field_offset(lv, s15922c1f1, ABISELECT(24,12), "S15922C1.s15922c1f1");
    check_field_offset(lv, s15922c1f2, ABISELECT(48,32), "S15922C1.s15922c1f2");
    check_field_offset(lv, s15922c1f3, ABISELECT(72,52), "S15922C1.s15922c1f3");
    check_field_offset(lv, s15922c1f4, ABISELECT(96,72), "S15922C1.s15922c1f4");
    check_field_offset(lv, s15922c1f5, ABISELECT(120,92), "S15922C1.s15922c1f5");
  }
}
static Arrange_To_Call_Me vS15922C1(Test_S15922C1, "S15922C1", ABISELECT(144,112));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1006C3  : S3216C8_nt {
};
//SIG(-1 S1006C3) C1{ BC2{ m Fi}}



static void Test_S1006C3()
{
  extern Class_Descriptor cd_S1006C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S1006C3, buf);
    S1006C3 &lv = *(new (buf) S1006C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S1006C3)");
    check2(__alignof__(lv), 4, "__alignof__(S1006C3)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S1006C3");
    test_class_info(&lv, &cd_S1006C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1006C3(Test_S1006C3, "S1006C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S1006C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S1006C3 = {  "S1006C3", // class name
  bases_S1006C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1006C8_nt  {
  __tsi64 s1006c8f0[4];
};
//SIG(-1 S1006C8_nt) C1{ FL[4]}



//skip512 S1006C8_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1006C7_nt  {
  ::S1006C8_nt s1006c7f0;
};
//SIG(-1 S1006C7_nt) C1{ FC2{ FL[4]}}



//skip512 S1006C7_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1006C6_nt  {
  ::S1006C7_nt s1006c6f0;
  void  mf1006c6(); // _ZN10S1006C6_nt8mf1006c6Ev
};
//SIG(-1 S1006C6_nt) C1{ m FC2{ FC3{ FL[4]}}}


void  S1006C6_nt ::mf1006c6(){}

//skip512 S1006C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1006C10_nt  {
  ::S7944C15_nt s1006c10f0;
};
//SIG(-1 S1006C10_nt) C1{ FC2{ Fi[4]}}



//skip512 S1006C10_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1006C9_nt  {
  ::S1006C10_nt s1006c9f0;
  void  mf1006c9(); // _ZN10S1006C9_nt8mf1006c9Ev
};
//SIG(-1 S1006C9_nt) C1{ m FC2{ FC3{ Fi[4]}}}


void  S1006C9_nt ::mf1006c9(){}

//skip512 S1006C9_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1006C5  {
  char s1006c5f0;
  ::S1006C6_nt s1006c5f1;
  ::S1006C9_nt s1006c5f2;
  void  mf1006c5(); // _ZN7S1006C58mf1006c5Ev
};
//SIG(-1 S1006C5) C1{ m Fc FC2{ m FC3{ FC4{ FL[4]}}} FC5{ m FC6{ FC7{ Fi[4]}}}}


void  S1006C5 ::mf1006c5(){}

static void Test_S1006C5()
{
  {
    init_simple_test("S1006C5");
    S1006C5 lv;
    check2(sizeof(lv), ABISELECT(56,52), "sizeof(S1006C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1006C5)");
    check_field_offset(lv, s1006c5f0, 0, "S1006C5.s1006c5f0");
    check_field_offset(lv, s1006c5f1, ABISELECT(8,4), "S1006C5.s1006c5f1");
    check_field_offset(lv, s1006c5f2, ABISELECT(40,36), "S1006C5.s1006c5f2");
  }
}
static Arrange_To_Call_Me vS1006C5(Test_S1006C5, "S1006C5", ABISELECT(56,52));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1006C2  : S1006C3 {
  void *s1006c2f0;
  ::S1006C5 s1006c2f1;
  ::S1006C6_nt s1006c2f2;
  char s1006c2f3;
  ::S133C15_nt s1006c2f4;
};
//SIG(-1 S1006C2) C1{ BC2{ BC3{ m Fi}} Fp FC4{ m Fc FC5{ m FC6{ FC7{ FL[4]}}} FC8{ m FC9{ FC10{ Fi[4]}}}} FC5 Fc FC11{ m Fi FC12{ BC13{ m Fp Fi}}}}



static void Test_S1006C2()
{
  extern Class_Descriptor cd_S1006C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,28)];
    init_test(&cd_S1006C2, buf);
    S1006C2 &lv = *(new (buf) S1006C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,108), "sizeof(S1006C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1006C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1006C3*), 0, "S1006C2");
    check_base_class_offset(lv, (S1006C3*), 0, "S1006C2");
    check_field_offset(lv, s1006c2f0, ABISELECT(8,4), "S1006C2.s1006c2f0");
    check_field_offset(lv, s1006c2f1, ABISELECT(16,8), "S1006C2.s1006c2f1");
    check_field_offset(lv, s1006c2f2, ABISELECT(72,60), "S1006C2.s1006c2f2");
    check_field_offset(lv, s1006c2f3, ABISELECT(104,92), "S1006C2.s1006c2f3");
    check_field_offset(lv, s1006c2f4, ABISELECT(112,96), "S1006C2.s1006c2f4");
    test_class_info(&lv, &cd_S1006C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1006C2(Test_S1006C2, "S1006C2", ABISELECT(136,108));

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1006C3;
static Base_Class bases_S1006C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1006C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S1006C2 = {  "S1006C2", // class name
  bases_S1006C2, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(136,108), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1006C1  : S1006C2 , S4677C37 {
};
//SIG(1 S1006C1) C1{ BC2{ BC3{ BC4{ m Fi}} Fp FC5{ m Fc FC6{ m FC7{ FC8{ FL[4]}}} FC9{ m FC10{ FC11{ Fi[4]}}}} FC6 Fc FC12{ m Fi FC13{ BC14{ m Fp Fi}}}} BC15{ m}}



static void Test_S1006C1()
{
  extern Class_Descriptor cd_S1006C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,28)];
    init_test(&cd_S1006C1, buf);
    S1006C1 &lv = *(new (buf) S1006C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,108), "sizeof(S1006C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1006C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1006C3*)(S1006C2*), 0, "S1006C1");
    check_base_class_offset(lv, (S1006C3*)(S1006C2*), 0, "S1006C1");
    check_base_class_offset(lv, (S1006C2*), 0, "S1006C1");
    check_base_class_offset(lv, (S4677C37*), 0, "S1006C1");
    test_class_info(&lv, &cd_S1006C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1006C1(Test_S1006C1, "S1006C1", ABISELECT(136,108));

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1006C3;
extern Class_Descriptor cd_S1006C2;
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
static Base_Class bases_S1006C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1006C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1006C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S1006C1 = {  "S1006C1", // class name
  bases_S1006C1, 4,
  0, // no vftv
  0, //no vtt
  ABISELECT(136,108), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1123C3  : S3216C8_nt {
};
//SIG(-1 S1123C3) C1{ BC2{ m Fi}}



static void Test_S1123C3()
{
  extern Class_Descriptor cd_S1123C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S1123C3, buf);
    S1123C3 &lv = *(new (buf) S1123C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S1123C3)");
    check2(__alignof__(lv), 4, "__alignof__(S1123C3)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S1123C3");
    test_class_info(&lv, &cd_S1123C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1123C3(Test_S1123C3, "S1123C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S1123C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1123C3[];
Class_Descriptor cd_S1123C3 = {  "S1123C3", // class name
  bases_S1123C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S1123C3),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  S1123C2  : S1123C3 {
  virtual  ~S1123C2(); // _ZN7S1123C2D1Ev
  virtual void  v7(); // _ZN7S1123C22v7Ev
  virtual void  v8(); // _ZN7S1123C22v8Ev
  virtual void  v9(); // _ZN7S1123C22v9Ev
  virtual void  v10(); // _ZN7S1123C23v10Ev
  virtual void  v11(); // _ZN7S1123C23v11Ev
  virtual void  v12(); // _ZN7S1123C23v12Ev
  S1123C2(); // tgen
};
//SIG(-1 S1123C2) C1{ BC2{ BC3{ m Fi}} vd v1 v2 v3 v4 v5 v6}


 S1123C2 ::~S1123C2(){ note_dtor("S1123C2", this);}
void  S1123C2 ::v7(){vfunc_called(this, "_ZN7S1123C22v7Ev");}
void  S1123C2 ::v8(){vfunc_called(this, "_ZN7S1123C22v8Ev");}
void  S1123C2 ::v9(){vfunc_called(this, "_ZN7S1123C22v9Ev");}
void  S1123C2 ::v10(){vfunc_called(this, "_ZN7S1123C23v10Ev");}
void  S1123C2 ::v11(){vfunc_called(this, "_ZN7S1123C23v11Ev");}
void  S1123C2 ::v12(){vfunc_called(this, "_ZN7S1123C23v12Ev");}
S1123C2 ::S1123C2(){ note_ctor("S1123C2", this);} // tgen

static void Test_S1123C2()
{
  extern Class_Descriptor cd_S1123C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1123C2, buf);
    S1123C2 *dp, &lv = *(dp=new (buf) S1123C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1123C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1123C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1123C3*), ABISELECT(8,4), "S1123C2");
    check_base_class_offset(lv, (S1123C3*), ABISELECT(8,4), "S1123C2");
    test_class_info(&lv, &cd_S1123C2);
    dp->~S1123C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1123C2(Test_S1123C2, "S1123C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1123C2C1Ev();
extern void _ZN7S1123C2D1Ev();
Name_Map name_map_S1123C2[] = {
  NSPAIR(_ZN7S1123C2C1Ev),
  NSPAIR(_ZN7S1123C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1123C3;
extern VTBL_ENTRY _ZTI7S1123C3[];
static Base_Class bases_S1123C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S1123C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1123C2[];
extern void _ZN7S1123C2D1Ev();
extern void _ZN7S1123C2D0Ev();
extern void _ZN7S1123C22v7Ev();
extern void _ZN7S1123C22v8Ev();
extern void _ZN7S1123C22v9Ev();
extern void _ZN7S1123C23v10Ev();
extern void _ZN7S1123C23v11Ev();
extern void _ZN7S1123C23v12Ev();
static  VTBL_ENTRY vtc_S1123C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1123C2[0]),
  (VTBL_ENTRY)&_ZN7S1123C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1123C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1123C22v7Ev,
  (VTBL_ENTRY)&_ZN7S1123C22v8Ev,
  (VTBL_ENTRY)&_ZN7S1123C22v9Ev,
  (VTBL_ENTRY)&_ZN7S1123C23v10Ev,
  (VTBL_ENTRY)&_ZN7S1123C23v11Ev,
  (VTBL_ENTRY)&_ZN7S1123C23v12Ev,
};
extern VTBL_ENTRY _ZTI7S1123C2[];
extern  VTBL_ENTRY _ZTV7S1123C2[];
Class_Descriptor cd_S1123C2 = {  "S1123C2", // class name
  bases_S1123C2, 2,
  &(vtc_S1123C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1123C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1123C2),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  S1123C1  : S1123C2 {
  ::S16428C9_nt s1123c1f0;
  int s1123c1f1;
  ::S16701C3 s1123c1f2;
  ::S16701C4_nt s1123c1f3;
  int s1123c1f4;
  char s1123c1f5;
  virtual  ~S1123C1(); // _ZN7S1123C1D1Ev
  virtual void  v1(); // _ZN7S1123C12v1Ev
  virtual void  v2(); // _ZN7S1123C12v2Ev
  virtual void  v3(); // _ZN7S1123C12v3Ev
  virtual void  v4(); // _ZN7S1123C12v4Ev
  virtual void  v5(); // _ZN7S1123C12v5Ev
  virtual void  v6(); // _ZN7S1123C12v6Ev
  S1123C1(); // tgen
};
//SIG(1 S1123C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v7 v8 v9 v10 v11 v12} vd v1 v2 v3 v4 v5 v6 FC5{ m FC6{ m Fp Fi[4]}} Fi FC7{ m FC8{ m Fp}} FC8 Fi Fc}


 S1123C1 ::~S1123C1(){ note_dtor("S1123C1", this);}
void  S1123C1 ::v1(){vfunc_called(this, "_ZN7S1123C12v1Ev");}
void  S1123C1 ::v2(){vfunc_called(this, "_ZN7S1123C12v2Ev");}
void  S1123C1 ::v3(){vfunc_called(this, "_ZN7S1123C12v3Ev");}
void  S1123C1 ::v4(){vfunc_called(this, "_ZN7S1123C12v4Ev");}
void  S1123C1 ::v5(){vfunc_called(this, "_ZN7S1123C12v5Ev");}
void  S1123C1 ::v6(){vfunc_called(this, "_ZN7S1123C12v6Ev");}
S1123C1 ::S1123C1(){ note_ctor("S1123C1", this);} // tgen

static void Test_S1123C1()
{
  extern Class_Descriptor cd_S1123C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,13)];
    init_test(&cd_S1123C1, buf);
    S1123C1 *dp, &lv = *(dp=new (buf) S1123C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,48), "sizeof(S1123C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1123C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1123C3*)(S1123C2*), ABISELECT(8,4), "S1123C1");
    check_base_class_offset(lv, (S1123C3*)(S1123C2*), ABISELECT(8,4), "S1123C1");
    check_base_class_offset(lv, (S1123C2*), 0, "S1123C1");
    check_field_offset(lv, s1123c1f0, ABISELECT(16,8), "S1123C1.s1123c1f0");
    check_field_offset(lv, s1123c1f1, ABISELECT(40,28), "S1123C1.s1123c1f1");
    check_field_offset(lv, s1123c1f2, ABISELECT(48,32), "S1123C1.s1123c1f2");
    check_field_offset(lv, s1123c1f3, ABISELECT(56,36), "S1123C1.s1123c1f3");
    check_field_offset(lv, s1123c1f4, ABISELECT(64,40), "S1123C1.s1123c1f4");
    check_field_offset(lv, s1123c1f5, ABISELECT(68,44), "S1123C1.s1123c1f5");
    test_class_info(&lv, &cd_S1123C1);
    dp->~S1123C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1123C1(Test_S1123C1, "S1123C1", ABISELECT(72,48));

#else // __cplusplus

extern void _ZN7S1123C1C1Ev();
extern void _ZN7S1123C1D1Ev();
Name_Map name_map_S1123C1[] = {
  NSPAIR(_ZN7S1123C1C1Ev),
  NSPAIR(_ZN7S1123C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1123C3;
extern VTBL_ENTRY _ZTI7S1123C3[];
extern Class_Descriptor cd_S1123C2;
extern VTBL_ENTRY _ZTI7S1123C2[];
extern  VTBL_ENTRY _ZTV7S1123C2[];
static Base_Class bases_S1123C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S1123C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1123C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1123C1[];
extern void _ZN7S1123C1D1Ev();
extern void _ZN7S1123C1D0Ev();
extern void _ZN7S1123C22v7Ev();
extern void _ZN7S1123C22v8Ev();
extern void _ZN7S1123C22v9Ev();
extern void _ZN7S1123C23v10Ev();
extern void _ZN7S1123C23v11Ev();
extern void _ZN7S1123C23v12Ev();
extern void _ZN7S1123C12v1Ev();
extern void _ZN7S1123C12v2Ev();
extern void _ZN7S1123C12v3Ev();
extern void _ZN7S1123C12v4Ev();
extern void _ZN7S1123C12v5Ev();
extern void _ZN7S1123C12v6Ev();
static  VTBL_ENTRY vtc_S1123C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1123C1[0]),
  (VTBL_ENTRY)&_ZN7S1123C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1123C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1123C22v7Ev,
  (VTBL_ENTRY)&_ZN7S1123C22v8Ev,
  (VTBL_ENTRY)&_ZN7S1123C22v9Ev,
  (VTBL_ENTRY)&_ZN7S1123C23v10Ev,
  (VTBL_ENTRY)&_ZN7S1123C23v11Ev,
  (VTBL_ENTRY)&_ZN7S1123C23v12Ev,
  (VTBL_ENTRY)&_ZN7S1123C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1123C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1123C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1123C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1123C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1123C12v6Ev,
};
extern VTBL_ENTRY _ZTI7S1123C1[];
extern  VTBL_ENTRY _ZTV7S1123C1[];
Class_Descriptor cd_S1123C1 = {  "S1123C1", // class name
  bases_S1123C1, 3,
  &(vtc_S1123C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,48), // object size
  NSPAIRA(_ZTI7S1123C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1123C1),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  S6263C7  : virtual S7883C3_nt , virtual S3216C8_nt , S4677C27 {
  int s6263c7f0;
  ~S6263C7(); // tgen
  S6263C7(); // tgen
};
//SIG(-1 S6263C7) C1{ VBC2{ vd m} VBC3{ m Fi} BC4{ m} Fi}


S6263C7 ::~S6263C7(){ note_dtor("S6263C7", this);} // tgen
S6263C7 ::S6263C7(){ note_ctor("S6263C7", this);} // tgen

static void Test_S6263C7()
{
  extern Class_Descriptor cd_S6263C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S6263C7, buf);
    S6263C7 *dp, &lv = *(dp=new (buf) S6263C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S6263C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6263C7)");
    check_base_class_offset(lv, (S7883C3_nt*), 0, "S6263C7");
    check_base_class_offset(lv, (S3216C8_nt*), ABISELECT(12,8), "S6263C7");
    check_base_class_offset(lv, (S4677C27*), 0, "S6263C7");
    check_field_offset(lv, s6263c7f0, ABISELECT(8,4), "S6263C7.s6263c7f0");
    test_class_info(&lv, &cd_S6263C7);
    dp->~S6263C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6263C7(Test_S6263C7, "S6263C7", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S6263C7C1Ev();
extern void _ZN7S6263C7D1Ev();
Name_Map name_map_S6263C7[] = {
  NSPAIR(_ZN7S6263C7C1Ev),
  NSPAIR(_ZN7S6263C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C27;
extern VTBL_ENTRY _ZTI8S4677C27[];
static Base_Class bases_S6263C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3216C8_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6263C7[];
extern void _ZN7S6263C7D1Ev();
extern void _ZN7S6263C7D0Ev();
static  VTBL_ENTRY vtc_S6263C7[] = {
  ABISELECT(12,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6263C7[0]),
  (VTBL_ENTRY)&_ZN7S6263C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6263C7D0Ev,
};
extern VTBL_ENTRY _ZTV7S6263C7[];
static  VTT_ENTRY vtt_S6263C7[] = {
  {&(_ZTV7S6263C7[5]),  5,7},
  {&(_ZTV7S6263C7[5]),  5,7},
};
extern VTBL_ENTRY _ZTI7S6263C7[];
extern  VTBL_ENTRY _ZTV7S6263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6263C7[];
Class_Descriptor cd_S6263C7 = {  "S6263C7", // class name
  bases_S6263C7, 3,
  &(vtc_S6263C7[0]), // expected_vtbl_contents
  &(vtt_S6263C7[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S6263C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6263C7),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6263C7),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  S6263C6  : S6263C7 {
  int s6263c6f0;
  ~S6263C6(); // tgen
  S6263C6(); // tgen
};
//SIG(-1 S6263C6) C1{ BC2{ VBC3{ vd m} VBC4{ m Fi} BC5{ m} Fi} Fi}


S6263C6 ::~S6263C6(){ note_dtor("S6263C6", this);} // tgen
S6263C6 ::S6263C6(){ note_ctor("S6263C6", this);} // tgen

static void Test_S6263C6()
{
  extern Class_Descriptor cd_S6263C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S6263C6, buf);
    S6263C6 *dp, &lv = *(dp=new (buf) S6263C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S6263C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6263C6)");
    check_base_class_offset(lv, (S7883C3_nt*)(S6263C7*), 0, "S6263C6");
    check_base_class_offset(lv, (S3216C8_nt*)(S6263C7*), ABISELECT(16,12), "S6263C6");
    check_base_class_offset(lv, (S4677C27*)(S6263C7*), 0, "S6263C6");
    check_base_class_offset(lv, (S6263C7*), 0, "S6263C6");
    check_field_offset(lv, s6263c6f0, ABISELECT(12,8), "S6263C6.s6263c6f0");
    test_class_info(&lv, &cd_S6263C6);
    dp->~S6263C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6263C6(Test_S6263C6, "S6263C6", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S6263C6C1Ev();
extern void _ZN7S6263C6D1Ev();
Name_Map name_map_S6263C6[] = {
  NSPAIR(_ZN7S6263C6C1Ev),
  NSPAIR(_ZN7S6263C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C27;
extern VTBL_ENTRY _ZTI8S4677C27[];
extern Class_Descriptor cd_S6263C7;
extern VTBL_ENTRY _ZTI7S6263C7[];
extern  VTBL_ENTRY _ZTV7S6263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6263C7[];
static Base_Class bases_S6263C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6263C7,    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 _ZTI7S6263C6[];
extern void _ZN7S6263C6D1Ev();
extern void _ZN7S6263C6D0Ev();
static  VTBL_ENTRY vtc_S6263C6[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6263C6[0]),
  (VTBL_ENTRY)&_ZN7S6263C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6263C6D0Ev,
};
extern VTBL_ENTRY _ZTV7S6263C6[];
extern void _ZN7S6263C7D1Ev();
extern void _ZN7S6263C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6263C7__7S6263C6[] = {
  ABISELECT(16,12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6263C7[0]),
  (VTBL_ENTRY)&_ZN7S6263C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6263C7D0Ev,
};
static  VTT_ENTRY vtt_S6263C6[] = {
  {&(_ZTV7S6263C6[5]),  5,7},
  {&(_tg__ZTV7S6263C7__7S6263C6[5]),  5,7},
  {&(_tg__ZTV7S6263C7__7S6263C6[5]),  5,7},
  {&(_ZTV7S6263C6[5]),  5,7},
};
extern VTBL_ENTRY _ZTI7S6263C6[];
extern  VTBL_ENTRY _ZTV7S6263C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6263C6[];
Class_Descriptor cd_S6263C6 = {  "S6263C6", // class name
  bases_S6263C6, 4,
  &(vtc_S6263C6[0]), // expected_vtbl_contents
  &(vtt_S6263C6[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S6263C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6263C6),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6263C6),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6263C5  : virtual S6263C6 , S4677C27 {
  ~S6263C5(); // tgen
  S6263C5(); // tgen
};
//SIG(-1 S6263C5) C1{ VBC2{ BC3{ VBC4{ vd m} VBC5{ m Fi} BC6{ m} Fi} Fi} BC6}


S6263C5 ::~S6263C5(){ note_dtor("S6263C5", this);} // tgen
S6263C5 ::S6263C5(){ note_ctor("S6263C5", this);} // tgen

static void Test_S6263C5()
{
  extern Class_Descriptor cd_S6263C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S6263C5, buf);
    S6263C5 *dp, &lv = *(dp=new (buf) S6263C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S6263C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6263C5)");
    check_base_class_offset(lv, (S7883C3_nt*)(S6263C7*)(S6263C6*), 0, "S6263C5");
    check_base_class_offset(lv, (S3216C8_nt*)(S6263C7*)(S6263C6*), ABISELECT(24,16), "S6263C5");
    check_base_class_offset(lv, (S4677C27*)(S6263C7*)(S6263C6*), ABISELECT(8,4), "S6263C5");
    check_base_class_offset(lv, (S6263C7*)(S6263C6*), ABISELECT(8,4), "S6263C5");
    check_base_class_offset(lv, (S6263C6*), ABISELECT(8,4), "S6263C5");
    /*is_ambiguous_... S6263C5::S4677C27 */ AMB_check_base_class_offset(lv, (S4677C27*), 0, "S6263C5");
    test_class_info(&lv, &cd_S6263C5);
    dp->~S6263C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6263C5(Test_S6263C5, "S6263C5", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S6263C5C1Ev();
extern void _ZN7S6263C5D1Ev();
Name_Map name_map_S6263C5[] = {
  NSPAIR(_ZN7S6263C5C1Ev),
  NSPAIR(_ZN7S6263C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C27;
extern VTBL_ENTRY _ZTI8S4677C27[];
extern Class_Descriptor cd_S6263C7;
extern VTBL_ENTRY _ZTI7S6263C7[];
extern  VTBL_ENTRY _ZTV7S6263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6263C7[];
extern Class_Descriptor cd_S6263C6;
extern VTBL_ENTRY _ZTI7S6263C6[];
extern  VTBL_ENTRY _ZTV7S6263C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6263C6[];
extern Class_Descriptor cd_S4677C27;
extern VTBL_ENTRY _ZTI8S4677C27[];
static Base_Class bases_S6263C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C27,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6263C7,    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
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6263C6,    ABISELECT(8,4), //bcp->offset
    8, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4677C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6263C5[];
extern void _ZN7S6263C5D1Ev();
extern void _ZN7S6263C5D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S6263C5D1Ev,_ZTv0_n12_N7S6263C5D1Ev)();
extern void ABISELECT(_ZThn8_N7S6263C5D1Ev,_ZThn4_N7S6263C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C5D0Ev,_ZTv0_n12_N7S6263C5D0Ev)();
extern void ABISELECT(_ZThn8_N7S6263C5D0Ev,_ZThn4_N7S6263C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6263C5[] = {
  ABISELECT(24,16),
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6263C5[0]),
  (VTBL_ENTRY)&_ZN7S6263C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6263C5D0Ev,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S6263C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C5D1Ev,_ZTv0_n12_N7S6263C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C5D0Ev,_ZTv0_n12_N7S6263C5D0Ev),
};
extern VTBL_ENTRY _ZTV7S6263C5[];
extern void ABISELECT(_ZTv0_n24_N7S6263C6D1Ev,_ZTv0_n12_N7S6263C6D1Ev)();
extern void _ZN7S6263C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C6D0Ev,_ZTv0_n12_N7S6263C6D0Ev)();
extern void _ZN7S6263C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6263C6__7S6263C5[] = {
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6263C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C6D1Ev,_ZTv0_n12_N7S6263C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C6D0Ev,_ZTv0_n12_N7S6263C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C7D1Ev,_ZTv0_n12_N7S6263C7D1Ev)();
extern void _ZN7S6263C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C7D0Ev,_ZTv0_n12_N7S6263C7D0Ev)();
extern void _ZN7S6263C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6263C77S6263C6__7S6263C5[] = {
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6263C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C7D1Ev,_ZTv0_n12_N7S6263C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C7D0Ev,_ZTv0_n12_N7S6263C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C7D1Ev,_ZTv0_n12_N7S6263C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6263C7D0Ev,_ZTv0_n12_N7S6263C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S6263C77S6263C6__7S6263C5[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S6263C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C7D1Ev,_ZTv0_n12_N7S6263C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C7D0Ev,_ZTv0_n12_N7S6263C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C6D1Ev,_ZTv0_n12_N7S6263C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6263C6D0Ev,_ZTv0_n12_N7S6263C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S6263C6__7S6263C5[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S6263C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C6D1Ev,_ZTv0_n12_N7S6263C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C6D0Ev,_ZTv0_n12_N7S6263C6D0Ev),
};
static  VTT_ENTRY vtt_S6263C5[] = {
  {&(_ZTV7S6263C5[6]),  6,15},
  {&(_ZTV7S6263C5[13]),  13,15},
  {&(_ZTV7S6263C5[6]),  6,15},
  {&(_tg__ZTV7S6263C6__7S6263C5[5]),  5,7},
  {&(_tg__ZTV7S6263C77S6263C6__7S6263C5[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S6263C77S6263C6__7S6263C5[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S6263C6__7S6263C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S6263C5[];
extern  VTBL_ENTRY _ZTV7S6263C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6263C5[];
static VTBL_ENTRY alt_thunk_names149[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C7D0Ev,_ZTv0_n12_N7S6263C7D0Ev), // 
  (VTBL_ENTRY)_ZN7S6263C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C7D1Ev,_ZTv0_n12_N7S6263C7D1Ev), // 
  (VTBL_ENTRY)_ZN7S6263C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C6D0Ev,_ZTv0_n12_N7S6263C6D0Ev), // 
  (VTBL_ENTRY)_ZN7S6263C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C6D1Ev,_ZTv0_n12_N7S6263C6D1Ev), // 
  (VTBL_ENTRY)_ZN7S6263C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C5D0Ev,_ZTv0_n12_N7S6263C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S6263C5D0Ev,_ZThn4_N7S6263C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C5D1Ev,_ZTv0_n12_N7S6263C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S6263C5D1Ev,_ZThn4_N7S6263C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6263C5 = {  "S6263C5", // class name
  bases_S6263C5, 6,
  &(vtc_S6263C5[0]), // expected_vtbl_contents
  &(vtt_S6263C5[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S6263C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6263C5),15, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6263C5),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names149,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6263C4  : virtual S6263C5 {
  ::S3216C8_nt s6263c4f0;
  ~S6263C4(); // tgen
  S6263C4(); // tgen
};
//SIG(-1 S6263C4) C1{ VBC2{ VBC3{ BC4{ VBC5{ vd m} VBC6{ m Fi} BC7{ m} Fi} Fi} BC7} FC6}


S6263C4 ::~S6263C4(){ note_dtor("S6263C4", this);} // tgen
S6263C4 ::S6263C4(){ note_ctor("S6263C4", this);} // tgen

static void Test_S6263C4()
{
  extern Class_Descriptor cd_S6263C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S6263C4, buf);
    S6263C4 *dp, &lv = *(dp=new (buf) S6263C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S6263C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6263C4)");
    check_base_class_offset(lv, (S7883C3_nt*)(S6263C7*)(S6263C6*), 0, "S6263C4");
    check_base_class_offset(lv, (S3216C8_nt*)(S6263C7*)(S6263C6*), ABISELECT(32,20), "S6263C4");
    check_base_class_offset(lv, (S4677C27*)(S6263C7*)(S6263C6*), ABISELECT(16,8), "S6263C4");
    check_base_class_offset(lv, (S6263C7*)(S6263C6*), ABISELECT(16,8), "S6263C4");
    check_base_class_offset(lv, (S6263C6*)(S6263C5*), ABISELECT(16,8), "S6263C4");
    /*is_ambiguous_... S6263C5::S4677C27 */ AMB_check_base_class_offset(lv, (S4677C27*)(S6263C5*), 0, "S6263C4");
    check_base_class_offset(lv, (S6263C5*), 0, "S6263C4");
    check_field_offset(lv, s6263c4f0, ABISELECT(8,4), "S6263C4.s6263c4f0");
    test_class_info(&lv, &cd_S6263C4);
    dp->~S6263C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6263C4(Test_S6263C4, "S6263C4", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S6263C4C1Ev();
extern void _ZN7S6263C4D1Ev();
Name_Map name_map_S6263C4[] = {
  NSPAIR(_ZN7S6263C4C1Ev),
  NSPAIR(_ZN7S6263C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C27;
extern VTBL_ENTRY _ZTI8S4677C27[];
extern Class_Descriptor cd_S6263C7;
extern VTBL_ENTRY _ZTI7S6263C7[];
extern  VTBL_ENTRY _ZTV7S6263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6263C7[];
extern Class_Descriptor cd_S6263C6;
extern VTBL_ENTRY _ZTI7S6263C6[];
extern  VTBL_ENTRY _ZTV7S6263C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6263C6[];
extern Class_Descriptor cd_S4677C27;
extern VTBL_ENTRY _ZTI8S4677C27[];
extern Class_Descriptor cd_S6263C5;
extern VTBL_ENTRY _ZTI7S6263C5[];
extern  VTBL_ENTRY _ZTV7S6263C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6263C5[];
static Base_Class bases_S6263C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_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
    3, //immediately_derived
  0, 1},
  {&cd_S4677C27,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6263C7,    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
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6263C6,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4677C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S6263C5,    0, //bcp->offset
    -1, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6263C4[];
extern void _ZN7S6263C4D1Ev();
extern void _ZN7S6263C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S6263C4D1Ev,_ZTv0_n12_N7S6263C4D1Ev)();
extern void ABISELECT(_ZThn16_N7S6263C4D1Ev,_ZThn8_N7S6263C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C4D0Ev,_ZTv0_n12_N7S6263C4D0Ev)();
extern void ABISELECT(_ZThn16_N7S6263C4D0Ev,_ZThn8_N7S6263C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6263C4[] = {
  0,
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6263C4[0]),
  (VTBL_ENTRY)&_ZN7S6263C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6263C4D0Ev,
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6263C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C4D1Ev,_ZTv0_n12_N7S6263C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C4D0Ev,_ZTv0_n12_N7S6263C4D0Ev),
};
extern VTBL_ENTRY _ZTV7S6263C4[];
extern void ABISELECT(_ZTv0_n24_N7S6263C5D1Ev,_ZTv0_n12_N7S6263C5D1Ev)();
extern void _ZN7S6263C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C5D0Ev,_ZTv0_n12_N7S6263C5D0Ev)();
extern void _ZN7S6263C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6263C5__7S6263C4[] = {
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6263C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C5D1Ev,_ZTv0_n12_N7S6263C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C5D0Ev,_ZTv0_n12_N7S6263C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C5D1Ev,_ZTv0_n12_N7S6263C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S6263C5D1Ev,_ZThn8_N7S6263C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C5D0Ev,_ZTv0_n12_N7S6263C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S6263C5D0Ev,_ZThn8_N7S6263C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6263C6__7S6263C5__7S6263C4[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6263C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C5D1Ev,_ZTv0_n12_N7S6263C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C5D0Ev,_ZTv0_n12_N7S6263C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C6D1Ev,_ZTv0_n12_N7S6263C6D1Ev)();
extern void _ZN7S6263C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C6D0Ev,_ZTv0_n12_N7S6263C6D0Ev)();
extern void _ZN7S6263C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6263C6__7S6263C4[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6263C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C6D1Ev,_ZTv0_n12_N7S6263C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C6D0Ev,_ZTv0_n12_N7S6263C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C7D1Ev,_ZTv0_n12_N7S6263C7D1Ev)();
extern void _ZN7S6263C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C7D0Ev,_ZTv0_n12_N7S6263C7D0Ev)();
extern void _ZN7S6263C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6263C77S6263C6__7S6263C4[] = {
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6263C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C7D1Ev,_ZTv0_n12_N7S6263C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C7D0Ev,_ZTv0_n12_N7S6263C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C7D1Ev,_ZTv0_n12_N7S6263C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6263C7D0Ev,_ZTv0_n12_N7S6263C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S6263C77S6263C6__7S6263C4[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S6263C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C7D1Ev,_ZTv0_n12_N7S6263C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C7D0Ev,_ZTv0_n12_N7S6263C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C6D1Ev,_ZTv0_n12_N7S6263C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6263C6D0Ev,_ZTv0_n12_N7S6263C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S6263C6__7S6263C4[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S6263C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C6D1Ev,_ZTv0_n12_N7S6263C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C6D0Ev,_ZTv0_n12_N7S6263C6D0Ev),
};
static  VTT_ENTRY vtt_S6263C4[] = {
  {&(_ZTV7S6263C4[7]),  7,16},
  {&(_ZTV7S6263C4[7]),  7,16},
  {&(_ZTV7S6263C4[14]),  14,16},
  {&(_ZTV7S6263C4[7]),  7,16},
  {&(_tg__ZTV7S6263C5__7S6263C4[6]),  6,8},
  {&(_tg__ZTV7S6263C6__7S6263C5__7S6263C4[5]),  5,7},
  {&(_tg__ZTV7S6263C5__7S6263C4[6]),  6,8},
  {&(_tg__ZTV7S6263C6__7S6263C4[5]),  5,7},
  {&(_tg__ZTV7S6263C77S6263C6__7S6263C4[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S6263C77S6263C6__7S6263C4[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S6263C6__7S6263C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S6263C4[];
extern  VTBL_ENTRY _ZTV7S6263C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6263C4[];
static VTBL_ENTRY alt_thunk_names150[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C7D0Ev,_ZTv0_n12_N7S6263C7D0Ev), // 
  (VTBL_ENTRY)_ZN7S6263C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C7D1Ev,_ZTv0_n12_N7S6263C7D1Ev), // 
  (VTBL_ENTRY)_ZN7S6263C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C6D0Ev,_ZTv0_n12_N7S6263C6D0Ev), // 
  (VTBL_ENTRY)_ZN7S6263C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C6D1Ev,_ZTv0_n12_N7S6263C6D1Ev), // 
  (VTBL_ENTRY)_ZN7S6263C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C5D0Ev,_ZTv0_n12_N7S6263C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6263C5D0Ev,_ZThn8_N7S6263C5D0Ev),
  (VTBL_ENTRY)_ZN7S6263C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C5D1Ev,_ZTv0_n12_N7S6263C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6263C5D1Ev,_ZThn8_N7S6263C5D1Ev),
  (VTBL_ENTRY)_ZN7S6263C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C4D0Ev,_ZTv0_n12_N7S6263C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6263C4D0Ev,_ZThn8_N7S6263C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C4D1Ev,_ZTv0_n12_N7S6263C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6263C4D1Ev,_ZThn8_N7S6263C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6263C4 = {  "S6263C4", // class name
  bases_S6263C4, 7,
  &(vtc_S6263C4[0]), // expected_vtbl_contents
  &(vtt_S6263C4[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S6263C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S6263C4),16, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6263C4),11, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names150,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6263C3  : S6263C4 , S6263C7 {
  ::S20987C16 s6263c3f0[10];
  ~S6263C3(); // tgen
  S6263C3(); // tgen
};
//SIG(-1 S6263C3) C1{ BC2{ VBC3{ VBC4{ BC5{ VBC6{ vd m} VBC7{ m Fi} BC8{ m} Fi} Fi} BC8} FC7} BC5 FC9{ VBC7 vd}[10]}


S6263C3 ::~S6263C3(){ note_dtor("S6263C3", this);} // tgen
S6263C3 ::S6263C3(){ note_ctor("S6263C3", this);} // tgen

static void Test_S6263C3()
{
  extern Class_Descriptor cd_S6263C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(28,29)];
    init_test(&cd_S6263C3, buf);
    S6263C3 *dp, &lv = *(dp=new (buf) S6263C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(216,112), "sizeof(S6263C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6263C3)");
    check_base_class_offset(lv, (S7883C3_nt*)(S6263C7*)(S6263C6*), 0, "S6263C3");
    /*is_ambiguous_... S6263C3::S6263C7 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S6263C7*), 0, "S6263C3");
    check_base_class_offset(lv, (S3216C8_nt*)(S6263C7*)(S6263C6*), ABISELECT(208,108), "S6263C3");
    /*is_ambiguous_... S6263C3::S6263C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S6263C7*), ABISELECT(208,108), "S6263C3");
    check_base_class_offset(lv, (S4677C27*)(S6263C7*)(S6263C6*), ABISELECT(192,96), "S6263C3");
    check_base_class_offset(lv, (S6263C7*)(S6263C6*), ABISELECT(192,96), "S6263C3");
    check_base_class_offset(lv, (S6263C6*)(S6263C5*), ABISELECT(192,96), "S6263C3");
    /*is_ambiguous_... S6263C5::S4677C27 */ AMB_check_base_class_offset(lv, (S4677C27*)(S6263C5*), 0, "S6263C3");
    check_base_class_offset(lv, (S6263C5*)(S6263C4*), 0, "S6263C3");
    check_base_class_offset(lv, (S6263C4*), 0, "S6263C3");
    /*is_ambiguous_... S6263C3::S6263C7 */ AMB_check_base_class_offset(lv, (S4677C27*)(S6263C7*), ABISELECT(16,8), "S6263C3");
    /*is_ambiguous_... S6263C3::S6263C7 */ AMB_check_base_class_offset(lv, (S6263C7*), ABISELECT(16,8), "S6263C3");
    check_field_offset(lv, s6263c3f0, ABISELECT(32,16), "S6263C3.s6263c3f0");
    test_class_info(&lv, &cd_S6263C3);
    dp->~S6263C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6263C3(Test_S6263C3, "S6263C3", ABISELECT(216,112));

#else // __cplusplus

extern void _ZN7S6263C3C1Ev();
extern void _ZN7S6263C3D1Ev();
Name_Map name_map_S6263C3[] = {
  NSPAIR(_ZN7S6263C3C1Ev),
  NSPAIR(_ZN7S6263C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C27;
extern VTBL_ENTRY _ZTI8S4677C27[];
extern Class_Descriptor cd_S6263C7;
extern VTBL_ENTRY _ZTI7S6263C7[];
extern  VTBL_ENTRY _ZTV7S6263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6263C7[];
extern Class_Descriptor cd_S6263C6;
extern VTBL_ENTRY _ZTI7S6263C6[];
extern  VTBL_ENTRY _ZTV7S6263C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6263C6[];
extern Class_Descriptor cd_S4677C27;
extern VTBL_ENTRY _ZTI8S4677C27[];
extern Class_Descriptor cd_S6263C5;
extern VTBL_ENTRY _ZTI7S6263C5[];
extern  VTBL_ENTRY _ZTV7S6263C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6263C5[];
extern Class_Descriptor cd_S6263C4;
extern VTBL_ENTRY _ZTI7S6263C4[];
extern  VTBL_ENTRY _ZTV7S6263C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6263C4[];
extern Class_Descriptor cd_S4677C27;
extern VTBL_ENTRY _ZTI8S4677C27[];
extern Class_Descriptor cd_S6263C7;
extern VTBL_ENTRY _ZTI7S6263C7[];
extern  VTBL_ENTRY _ZTV7S6263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6263C7[];
static Base_Class bases_S6263C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(208,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C27,    ABISELECT(192,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6263C7,    ABISELECT(192,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //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
    4, //immediately_derived
  0, 0},
  {&cd_S6263C6,    ABISELECT(192,96), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //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
    6, //immediately_derived
  0, 1},
  {&cd_S4677C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S6263C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6263C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4677C27,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6263C7,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6263C3[];
extern void _ZN7S6263C3D1Ev();
extern void _ZN7S6263C3D0Ev();
extern void ABISELECT(_ZThn16_N7S6263C3D1Ev,_ZThn8_N7S6263C3D1Ev)();
extern void ABISELECT(_ZThn16_N7S6263C3D0Ev,_ZThn8_N7S6263C3D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6263C3D1Ev,_ZTv0_n12_N7S6263C3D1Ev)();
extern void ABISELECT(_ZThn192_N7S6263C3D1Ev,_ZThn96_N7S6263C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C3D0Ev,_ZTv0_n12_N7S6263C3D0Ev)();
extern void ABISELECT(_ZThn192_N7S6263C3D0Ev,_ZThn96_N7S6263C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6263C3[] = {
  0,
  ABISELECT(208,108),
  0,
  ABISELECT(192,96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6263C3[0]),
  (VTBL_ENTRY)&_ZN7S6263C3D1Ev,
  (VTBL_ENTRY)&_ZN7S6263C3D0Ev,
  ABISELECT(192,100),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6263C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S6263C3D1Ev,_ZThn8_N7S6263C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S6263C3D0Ev,_ZThn8_N7S6263C3D0Ev),
  ABISELECT(16,12),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI7S6263C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C3D1Ev,_ZTv0_n12_N7S6263C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C3D0Ev,_ZTv0_n12_N7S6263C3D0Ev),
};
extern VTBL_ENTRY _ZTV7S6263C3[];
extern void _ZN7S6263C4D1Ev();
extern void _ZN7S6263C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6263C4__7S6263C3[] = {
  0,
  ABISELECT(208,108),
  0,
  ABISELECT(192,96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6263C4[0]),
  (VTBL_ENTRY)&_ZN7S6263C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6263C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S6263C4D1Ev,_ZTv0_n12_N7S6263C4D1Ev)();
extern void ABISELECT(_ZThn192_N7S6263C4D1Ev,_ZThn96_N7S6263C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C4D0Ev,_ZTv0_n12_N7S6263C4D0Ev)();
extern void ABISELECT(_ZThn192_N7S6263C4D0Ev,_ZThn96_N7S6263C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6263C6__7S6263C4__7S6263C3[] = {
  ABISELECT(16,12),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI7S6263C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C4D1Ev,_ZTv0_n12_N7S6263C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C4D0Ev,_ZTv0_n12_N7S6263C4D0Ev),
};
extern void _ZN7S6263C7D1Ev();
extern void _ZN7S6263C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6263C7__A1__7S6263C3[] = {
  ABISELECT(192,100),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6263C7[0]),
  (VTBL_ENTRY)&_ZN7S6263C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6263C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S6263C7D1Ev,_ZTv0_n12_N7S6263C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6263C7D0Ev,_ZTv0_n12_N7S6263C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S6263C7__A1__7S6263C3[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S6263C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C7D1Ev,_ZTv0_n12_N7S6263C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C7D0Ev,_ZTv0_n12_N7S6263C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C5D1Ev,_ZTv0_n12_N7S6263C5D1Ev)();
extern void _ZN7S6263C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C5D0Ev,_ZTv0_n12_N7S6263C5D0Ev)();
extern void _ZN7S6263C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6263C5__7S6263C3[] = {
  ABISELECT(208,108),
  0,
  ABISELECT(192,96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6263C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C5D1Ev,_ZTv0_n12_N7S6263C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C5D0Ev,_ZTv0_n12_N7S6263C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C5D1Ev,_ZTv0_n12_N7S6263C5D1Ev)();
extern void ABISELECT(_ZThn192_N7S6263C5D1Ev,_ZThn96_N7S6263C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C5D0Ev,_ZTv0_n12_N7S6263C5D0Ev)();
extern void ABISELECT(_ZThn192_N7S6263C5D0Ev,_ZThn96_N7S6263C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6263C6__7S6263C5__7S6263C3[] = {
  ABISELECT(16,12),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI7S6263C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C5D1Ev,_ZTv0_n12_N7S6263C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C5D0Ev,_ZTv0_n12_N7S6263C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C6D1Ev,_ZTv0_n12_N7S6263C6D1Ev)();
extern void _ZN7S6263C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C6D0Ev,_ZTv0_n12_N7S6263C6D0Ev)();
extern void _ZN7S6263C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6263C6__7S6263C3[] = {
  ABISELECT(16,12),
  ABISELECT(-192,-96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6263C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C6D1Ev,_ZTv0_n12_N7S6263C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C6D0Ev,_ZTv0_n12_N7S6263C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C7D1Ev,_ZTv0_n12_N7S6263C7D1Ev)();
extern void _ZN7S6263C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C7D0Ev,_ZTv0_n12_N7S6263C7D0Ev)();
extern void _ZN7S6263C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6263C77S6263C6__7S6263C3[] = {
  ABISELECT(16,12),
  ABISELECT(-192,-96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6263C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C7D1Ev,_ZTv0_n12_N7S6263C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C7D0Ev,_ZTv0_n12_N7S6263C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C7D1Ev,_ZTv0_n12_N7S6263C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6263C7D0Ev,_ZTv0_n12_N7S6263C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S6263C77S6263C6__7S6263C3[] = {
  ABISELECT(192,96),
  ABISELECT(192,96),
  (VTBL_ENTRY)&(_ZTI7S6263C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C7D1Ev,_ZTv0_n12_N7S6263C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C7D0Ev,_ZTv0_n12_N7S6263C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C6D1Ev,_ZTv0_n12_N7S6263C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6263C6D0Ev,_ZTv0_n12_N7S6263C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S6263C6__7S6263C3[] = {
  ABISELECT(192,96),
  ABISELECT(192,96),
  (VTBL_ENTRY)&(_ZTI7S6263C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C6D1Ev,_ZTv0_n12_N7S6263C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C6D0Ev,_ZTv0_n12_N7S6263C6D0Ev),
};
static  VTT_ENTRY vtt_S6263C3[] = {
  {&(_ZTV7S6263C3[7]),  7,23},
  {&(_tg__ZTV7S6263C4__7S6263C3[7]),  7,9},
  {&(_tg__ZTV7S6263C4__7S6263C3[7]),  7,9},
  {&(_tg__ZTV7S6263C6__7S6263C4__7S6263C3[5]),  5,7},
  {&(_tg__ZTV7S6263C4__7S6263C3[7]),  7,9},
  {&(_tg__ZTV7S6263C7__A1__7S6263C3[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S6263C7__A1__7S6263C3[3]),  3,5},
  {&(_ZTV7S6263C3[7]),  7,23},
  {&(_ZTV7S6263C3[21]),  21,23},
  {&(_ZTV7S6263C3[7]),  7,23},
  {&(_ZTV7S6263C3[14]),  14,23},
  {&(_tg__ZTV7S6263C5__7S6263C3[6]),  6,8},
  {&(_tg__ZTV7S6263C6__7S6263C5__7S6263C3[5]),  5,7},
  {&(_tg__ZTV7S6263C5__7S6263C3[6]),  6,8},
  {&(_tg__ZTV7S6263C6__7S6263C3[5]),  5,7},
  {&(_tg__ZTV7S6263C77S6263C6__7S6263C3[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S6263C77S6263C6__7S6263C3[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S6263C6__7S6263C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S6263C3[];
extern  VTBL_ENTRY _ZTV7S6263C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6263C3[];
static VTBL_ENTRY alt_thunk_names151[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C7D0Ev,_ZTv0_n12_N7S6263C7D0Ev), // 
  (VTBL_ENTRY)_ZN7S6263C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C7D1Ev,_ZTv0_n12_N7S6263C7D1Ev), // 
  (VTBL_ENTRY)_ZN7S6263C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C6D0Ev,_ZTv0_n12_N7S6263C6D0Ev), // 
  (VTBL_ENTRY)_ZN7S6263C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C6D1Ev,_ZTv0_n12_N7S6263C6D1Ev), // 
  (VTBL_ENTRY)_ZN7S6263C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C5D0Ev,_ZTv0_n12_N7S6263C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6263C5D0Ev,_ZThn96_N7S6263C5D0Ev),
  (VTBL_ENTRY)_ZN7S6263C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C5D1Ev,_ZTv0_n12_N7S6263C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6263C5D1Ev,_ZThn96_N7S6263C5D1Ev),
  (VTBL_ENTRY)_ZN7S6263C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C4D0Ev,_ZTv0_n12_N7S6263C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6263C4D0Ev,_ZThn96_N7S6263C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C4D1Ev,_ZTv0_n12_N7S6263C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6263C4D1Ev,_ZThn96_N7S6263C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C3D0Ev,_ZTv0_n12_N7S6263C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6263C3D0Ev,_ZThn96_N7S6263C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C3D1Ev,_ZTv0_n12_N7S6263C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6263C3D1Ev,_ZThn96_N7S6263C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6263C3 = {  "S6263C3", // class name
  bases_S6263C3, 10,
  &(vtc_S6263C3[0]), // expected_vtbl_contents
  &(vtt_S6263C3[0]), // expected_vtt_contents
  ABISELECT(216,112), // object size
  NSPAIRA(_ZTI7S6263C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6263C3),23, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6263C3),18, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names151,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6263C12  : virtual S6263C4 {
  int s6263c12f0[3];
  virtual  ~S6263C12(); // _ZN8S6263C12D2Ev
  S6263C12(); // tgen
};
//SIG(-1 S6263C12) C1{ VBC2{ VBC3{ VBC4{ BC5{ VBC6{ vd m} VBC7{ m Fi} BC8{ m} Fi} Fi} BC8} FC7} vd Fi[3]}


 S6263C12 ::~S6263C12(){ note_dtor("S6263C12", this);}
S6263C12 ::S6263C12(){ note_ctor("S6263C12", this);} // tgen

static void Test_S6263C12()
{
  extern Class_Descriptor cd_S6263C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,11)];
    init_test(&cd_S6263C12, buf);
    S6263C12 *dp, &lv = *(dp=new (buf) S6263C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S6263C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6263C12)");
    check_base_class_offset(lv, (S7883C3_nt*)(S6263C7*)(S6263C6*), 0, "S6263C12");
    check_base_class_offset(lv, (S3216C8_nt*)(S6263C7*)(S6263C6*), ABISELECT(56,36), "S6263C12");
    check_base_class_offset(lv, (S4677C27*)(S6263C7*)(S6263C6*), ABISELECT(40,24), "S6263C12");
    check_base_class_offset(lv, (S6263C7*)(S6263C6*), ABISELECT(40,24), "S6263C12");
    check_base_class_offset(lv, (S6263C6*)(S6263C5*), ABISELECT(40,24), "S6263C12");
    /*is_ambiguous_... S6263C5::S4677C27 */ AMB_check_base_class_offset(lv, (S4677C27*)(S6263C5*), 0, "S6263C12");
    check_base_class_offset(lv, (S6263C5*)(S6263C4*), 0, "S6263C12");
    check_base_class_offset(lv, (S6263C4*), ABISELECT(24,16), "S6263C12");
    check_field_offset(lv, s6263c12f0, ABISELECT(8,4), "S6263C12.s6263c12f0");
    test_class_info(&lv, &cd_S6263C12);
    dp->~S6263C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6263C12(Test_S6263C12, "S6263C12", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN8S6263C12C1Ev();
extern void _ZN8S6263C12D2Ev();
Name_Map name_map_S6263C12[] = {
  NSPAIR(_ZN8S6263C12C1Ev),
  NSPAIR(_ZN8S6263C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C27;
extern VTBL_ENTRY _ZTI8S4677C27[];
extern Class_Descriptor cd_S6263C7;
extern VTBL_ENTRY _ZTI7S6263C7[];
extern  VTBL_ENTRY _ZTV7S6263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6263C7[];
extern Class_Descriptor cd_S6263C6;
extern VTBL_ENTRY _ZTI7S6263C6[];
extern  VTBL_ENTRY _ZTV7S6263C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6263C6[];
extern Class_Descriptor cd_S4677C27;
extern VTBL_ENTRY _ZTI8S4677C27[];
extern Class_Descriptor cd_S6263C5;
extern VTBL_ENTRY _ZTI7S6263C5[];
extern  VTBL_ENTRY _ZTV7S6263C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6263C5[];
extern Class_Descriptor cd_S6263C4;
extern VTBL_ENTRY _ZTI7S6263C4[];
extern  VTBL_ENTRY _ZTV7S6263C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6263C4[];
static Base_Class bases_S6263C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7883C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4677C27,    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_S6263C7,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6263C6,    ABISELECT(40,24), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4677C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S6263C5,    0, //bcp->offset
    -1, //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
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6263C4,    ABISELECT(24,16), //bcp->offset
    10, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6263C12[];
extern void _ZN8S6263C12D1Ev();
extern void _ZN8S6263C12D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S6263C12D1Ev,_ZTv0_n12_N8S6263C12D1Ev)();
extern void ABISELECT(_ZThn24_N8S6263C12D1Ev,_ZThn16_N8S6263C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6263C12D0Ev,_ZTv0_n12_N8S6263C12D0Ev)();
extern void ABISELECT(_ZThn24_N8S6263C12D0Ev,_ZThn16_N8S6263C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6263C12D1Ev,_ZTv0_n12_N8S6263C12D1Ev)();
extern void ABISELECT(_ZThn40_N8S6263C12D1Ev,_ZThn24_N8S6263C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6263C12D0Ev,_ZTv0_n12_N8S6263C12D0Ev)();
extern void ABISELECT(_ZThn40_N8S6263C12D0Ev,_ZThn24_N8S6263C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6263C12[] = {
  0,
  ABISELECT(24,16),
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6263C12[0]),
  (VTBL_ENTRY)&_ZN8S6263C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6263C12D0Ev,
  ABISELECT(-24,-16),
  ABISELECT(32,20),
  ABISELECT(-24,-16),
  ABISELECT(16,8),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S6263C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6263C12D1Ev,_ZTv0_n12_N8S6263C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6263C12D0Ev,_ZTv0_n12_N8S6263C12D0Ev),
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S6263C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6263C12D1Ev,_ZTv0_n12_N8S6263C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6263C12D0Ev,_ZTv0_n12_N8S6263C12D0Ev),
};
extern VTBL_ENTRY _ZTV8S6263C12[];
extern void ABISELECT(_ZTv0_n24_N7S6263C4D1Ev,_ZTv0_n12_N7S6263C4D1Ev)();
extern void _ZN7S6263C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C4D0Ev,_ZTv0_n12_N7S6263C4D0Ev)();
extern void _ZN7S6263C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6263C4__8S6263C12[] = {
  ABISELECT(-24,-16),
  ABISELECT(32,20),
  ABISELECT(-24,-16),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6263C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C4D1Ev,_ZTv0_n12_N7S6263C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C4D0Ev,_ZTv0_n12_N7S6263C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C4D1Ev,_ZTv0_n12_N7S6263C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6263C4D0Ev,_ZTv0_n12_N7S6263C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6263C5__7S6263C4__8S6263C12[] = {
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S6263C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C4D1Ev,_ZTv0_n12_N7S6263C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C4D0Ev,_ZTv0_n12_N7S6263C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C4D1Ev,_ZTv0_n12_N7S6263C4D1Ev)();
extern void ABISELECT(_ZThn16_N7S6263C4D1Ev,_ZThn8_N7S6263C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C4D0Ev,_ZTv0_n12_N7S6263C4D0Ev)();
extern void ABISELECT(_ZThn16_N7S6263C4D0Ev,_ZThn8_N7S6263C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6263C6__7S6263C4__8S6263C12[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6263C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C4D1Ev,_ZTv0_n12_N7S6263C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C4D0Ev,_ZTv0_n12_N7S6263C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C5D1Ev,_ZTv0_n12_N7S6263C5D1Ev)();
extern void _ZN7S6263C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C5D0Ev,_ZTv0_n12_N7S6263C5D0Ev)();
extern void _ZN7S6263C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6263C5__8S6263C12[] = {
  ABISELECT(56,36),
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6263C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C5D1Ev,_ZTv0_n12_N7S6263C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C5D0Ev,_ZTv0_n12_N7S6263C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C5D1Ev,_ZTv0_n12_N7S6263C5D1Ev)();
extern void ABISELECT(_ZThn40_N7S6263C5D1Ev,_ZThn24_N7S6263C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C5D0Ev,_ZTv0_n12_N7S6263C5D0Ev)();
extern void ABISELECT(_ZThn40_N7S6263C5D0Ev,_ZThn24_N7S6263C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6263C6__7S6263C5__8S6263C12[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S6263C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C5D1Ev,_ZTv0_n12_N7S6263C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C5D0Ev,_ZTv0_n12_N7S6263C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C6D1Ev,_ZTv0_n12_N7S6263C6D1Ev)();
extern void _ZN7S6263C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C6D0Ev,_ZTv0_n12_N7S6263C6D0Ev)();
extern void _ZN7S6263C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6263C6__8S6263C12[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6263C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C6D1Ev,_ZTv0_n12_N7S6263C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C6D0Ev,_ZTv0_n12_N7S6263C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C7D1Ev,_ZTv0_n12_N7S6263C7D1Ev)();
extern void _ZN7S6263C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C7D0Ev,_ZTv0_n12_N7S6263C7D0Ev)();
extern void _ZN7S6263C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6263C77S6263C6__8S6263C12[] = {
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6263C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C7D1Ev,_ZTv0_n12_N7S6263C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C7D0Ev,_ZTv0_n12_N7S6263C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C7D1Ev,_ZTv0_n12_N7S6263C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6263C7D0Ev,_ZTv0_n12_N7S6263C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S6263C77S6263C6__8S6263C12[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S6263C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C7D1Ev,_ZTv0_n12_N7S6263C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C7D0Ev,_ZTv0_n12_N7S6263C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C6D1Ev,_ZTv0_n12_N7S6263C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6263C6D0Ev,_ZTv0_n12_N7S6263C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S6263C6__8S6263C12[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S6263C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C6D1Ev,_ZTv0_n12_N7S6263C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C6D0Ev,_ZTv0_n12_N7S6263C6D0Ev),
};
static  VTT_ENTRY vtt_S6263C12[] = {
  {&(_ZTV8S6263C12[8]),  8,26},
  {&(_ZTV8S6263C12[17]),  17,26},
  {&(_ZTV8S6263C12[8]),  8,26},
  {&(_ZTV8S6263C12[24]),  24,26},
  {&(_ZTV8S6263C12[8]),  8,26},
  {&(_tg__ZTV7S6263C4__8S6263C12[7]),  7,9},
  {&(_tg__ZTV7S6263C5__7S6263C4__8S6263C12[6]),  6,8},
  {&(_tg__ZTV7S6263C6__7S6263C4__8S6263C12[5]),  5,7},
  {&(_tg__ZTV7S6263C5__7S6263C4__8S6263C12[6]),  6,8},
  {&(_tg__ZTV7S6263C5__8S6263C12[6]),  6,8},
  {&(_tg__ZTV7S6263C6__7S6263C5__8S6263C12[5]),  5,7},
  {&(_tg__ZTV7S6263C5__8S6263C12[6]),  6,8},
  {&(_tg__ZTV7S6263C6__8S6263C12[5]),  5,7},
  {&(_tg__ZTV7S6263C77S6263C6__8S6263C12[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S6263C77S6263C6__8S6263C12[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S6263C6__8S6263C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S6263C12[];
extern  VTBL_ENTRY _ZTV8S6263C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6263C12[];
static VTBL_ENTRY alt_thunk_names152[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C7D0Ev,_ZTv0_n12_N7S6263C7D0Ev), // 
  (VTBL_ENTRY)_ZN7S6263C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C7D1Ev,_ZTv0_n12_N7S6263C7D1Ev), // 
  (VTBL_ENTRY)_ZN7S6263C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C6D0Ev,_ZTv0_n12_N7S6263C6D0Ev), // 
  (VTBL_ENTRY)_ZN7S6263C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C6D1Ev,_ZTv0_n12_N7S6263C6D1Ev), // 
  (VTBL_ENTRY)_ZN7S6263C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C5D0Ev,_ZTv0_n12_N7S6263C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S6263C5D0Ev,_ZThn24_N7S6263C5D0Ev),
  (VTBL_ENTRY)_ZN7S6263C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C5D1Ev,_ZTv0_n12_N7S6263C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S6263C5D1Ev,_ZThn24_N7S6263C5D1Ev),
  (VTBL_ENTRY)_ZN7S6263C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C4D0Ev,_ZTv0_n12_N7S6263C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6263C4D0Ev,_ZThn8_N7S6263C4D0Ev),
  (VTBL_ENTRY)_ZN7S6263C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C4D1Ev,_ZTv0_n12_N7S6263C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6263C4D1Ev,_ZThn8_N7S6263C4D1Ev),
  (VTBL_ENTRY)_ZN7S6263C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6263C12D0Ev,_ZTv0_n12_N8S6263C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S6263C12D0Ev,_ZThn24_N8S6263C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S6263C12D0Ev,_ZThn16_N8S6263C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6263C12D1Ev,_ZTv0_n12_N8S6263C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S6263C12D1Ev,_ZThn24_N8S6263C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S6263C12D1Ev,_ZThn16_N8S6263C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6263C12 = {  "S6263C12", // class name
  bases_S6263C12, 8,
  &(vtc_S6263C12[0]), // expected_vtbl_contents
  &(vtt_S6263C12[0]), // expected_vtt_contents
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI8S6263C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S6263C12),26, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6263C12),16, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names152,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6263C1  : S4677C37 , virtual S6263C3 , S6263C12 {
  int s6263c1f0;
  virtual  ~S6263C1(); // _ZN7S6263C1D2Ev
  S6263C1(); // tgen
};
//SIG(1 S6263C1) C1{ BC2{ m} VBC3{ BC4{ VBC5{ VBC6{ BC7{ VBC8{ vd m} VBC9{ m Fi} BC10{ m} Fi} Fi} BC10} FC9} BC7 FC11{ VBC9 vd}[10]} BC12{ VBC4 vd Fi[3]} vd Fi}


 S6263C1 ::~S6263C1(){ note_dtor("S6263C1", this);}
S6263C1 ::S6263C1(){ note_ctor("S6263C1", this);} // tgen

static void Test_S6263C1()
{
  extern Class_Descriptor cd_S6263C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(33,36)];
    init_test(&cd_S6263C1, buf);
    S6263C1 *dp, &lv = *(dp=new (buf) S6263C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,140), "sizeof(S6263C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6263C1)");
    check_base_class_offset(lv, (S4677C37*), 0, "S6263C1");
    check_base_class_offset(lv, (S7883C3_nt*)(S6263C7*)(S6263C6*), ABISELECT(24,20), "S6263C1");
    /*is_ambiguous_... S6263C3::S6263C7 */ AMB_check_base_class_offset(lv, (S7883C3_nt*)(S6263C7*)(S6263C3*), ABISELECT(24,20), "S6263C1");
    check_base_class_offset(lv, (S3216C8_nt*)(S6263C7*)(S6263C6*), ABISELECT(232,128), "S6263C1");
    /*is_ambiguous_... S6263C3::S6263C7 */ AMB_check_base_class_offset(lv, (S3216C8_nt*)(S6263C7*)(S6263C3*), ABISELECT(232,128), "S6263C1");
    check_base_class_offset(lv, (S4677C27*)(S6263C7*)(S6263C6*), ABISELECT(216,116), "S6263C1");
    check_base_class_offset(lv, (S6263C7*)(S6263C6*), ABISELECT(216,116), "S6263C1");
    check_base_class_offset(lv, (S6263C6*)(S6263C5*), ABISELECT(216,116), "S6263C1");
    /*is_ambiguous_... S6263C5::S4677C27 */ AMB_check_base_class_offset(lv, (S4677C27*)(S6263C5*), ABISELECT(24,20), "S6263C1");
    check_base_class_offset(lv, (S6263C5*)(S6263C4*)(S6263C3*), ABISELECT(24,20), "S6263C1");
    /*is_ambiguous_... S6263C1::S6263C4 */ AMB_check_base_class_offset(lv, (S6263C5*)(S6263C4*), ABISELECT(24,20), "S6263C1");
    check_base_class_offset(lv, (S6263C4*)(S6263C3*), ABISELECT(24,20), "S6263C1");
    /*is_ambiguous_... S6263C3::S6263C7 */ AMB_check_base_class_offset(lv, (S4677C27*)(S6263C7*)(S6263C3*), ABISELECT(40,28), "S6263C1");
    /*is_ambiguous_... S6263C3::S6263C7 */ AMB_check_base_class_offset(lv, (S6263C7*)(S6263C3*), ABISELECT(40,28), "S6263C1");
    check_base_class_offset(lv, (S6263C3*), ABISELECT(24,20), "S6263C1");
    check_base_class_offset(lv, (S6263C4*)(S6263C12*), ABISELECT(240,132), "S6263C1");
    check_base_class_offset(lv, (S6263C12*), 0, "S6263C1");
    check_field_offset(lv, s6263c1f0, ABISELECT(20,16), "S6263C1.s6263c1f0");
    test_class_info(&lv, &cd_S6263C1);
    dp->~S6263C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6263C1(Test_S6263C1, "S6263C1", ABISELECT(256,140));

#else // __cplusplus

extern void _ZN7S6263C1C1Ev();
extern void _ZN7S6263C1D2Ev();
Name_Map name_map_S6263C1[] = {
  NSPAIR(_ZN7S6263C1C1Ev),
  NSPAIR(_ZN7S6263C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S7883C3_nt;
extern VTBL_ENTRY _ZTI10S7883C3_nt[];
extern  VTBL_ENTRY _ZTV10S7883C3_nt[];
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S4677C27;
extern VTBL_ENTRY _ZTI8S4677C27[];
extern Class_Descriptor cd_S6263C7;
extern VTBL_ENTRY _ZTI7S6263C7[];
extern  VTBL_ENTRY _ZTV7S6263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6263C7[];
extern Class_Descriptor cd_S6263C6;
extern VTBL_ENTRY _ZTI7S6263C6[];
extern  VTBL_ENTRY _ZTV7S6263C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6263C6[];
extern Class_Descriptor cd_S4677C27;
extern VTBL_ENTRY _ZTI8S4677C27[];
extern Class_Descriptor cd_S6263C5;
extern VTBL_ENTRY _ZTI7S6263C5[];
extern  VTBL_ENTRY _ZTV7S6263C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6263C5[];
extern Class_Descriptor cd_S6263C4;
extern VTBL_ENTRY _ZTI7S6263C4[];
extern  VTBL_ENTRY _ZTV7S6263C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6263C4[];
extern Class_Descriptor cd_S4677C27;
extern VTBL_ENTRY _ZTI8S4677C27[];
extern Class_Descriptor cd_S6263C7;
extern VTBL_ENTRY _ZTI7S6263C7[];
extern  VTBL_ENTRY _ZTV7S6263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6263C7[];
extern Class_Descriptor cd_S6263C3;
extern VTBL_ENTRY _ZTI7S6263C3[];
extern  VTBL_ENTRY _ZTV7S6263C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6263C3[];
extern Class_Descriptor cd_S6263C4;
extern VTBL_ENTRY _ZTI7S6263C4[];
extern  VTBL_ENTRY _ZTV7S6263C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6263C4[];
extern Class_Descriptor cd_S6263C12;
extern VTBL_ENTRY _ZTI8S6263C12[];
extern  VTBL_ENTRY _ZTV8S6263C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6263C12[];
static Base_Class bases_S6263C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7883C3_nt,    ABISELECT(24,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3216C8_nt,    ABISELECT(232,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4677C27,    ABISELECT(216,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6263C7,    ABISELECT(216,116), //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
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6263C6,    ABISELECT(216,116), //bcp->offset
    27, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S4677C27,    ABISELECT(24,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_S6263C5,    ABISELECT(24,20), //bcp->offset
    -1, //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
    4, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S6263C4,    ABISELECT(24,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4677C27,    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
    10, //immediately_derived
  0, 0},
  {&cd_S6263C7,    ABISELECT(40,28), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S6263C3,    ABISELECT(24,20), //bcp->offset
    11, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6263C4,    ABISELECT(240,132), //bcp->offset
    34, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S6263C12,    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 _ZTI7S6263C1[];
extern void ABISELECT(_ZTv0_n24_N7S6263C1D1Ev,_ZTv0_n12_N7S6263C1D1Ev)();
extern void _ZN7S6263C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C1D0Ev,_ZTv0_n12_N7S6263C1D0Ev)();
extern void _ZN7S6263C1D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C1D1Ev,_ZTv0_n12_N7S6263C1D1Ev)();
extern void ABISELECT(_ZThn24_N7S6263C1D1Ev,_ZThn20_N7S6263C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C1D0Ev,_ZTv0_n12_N7S6263C1D0Ev)();
extern void ABISELECT(_ZThn24_N7S6263C1D0Ev,_ZThn20_N7S6263C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C1D1Ev,_ZTv0_n12_N7S6263C1D1Ev)();
extern void ABISELECT(_ZThn40_N7S6263C1D1Ev,_ZThn28_N7S6263C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C1D0Ev,_ZTv0_n12_N7S6263C1D0Ev)();
extern void ABISELECT(_ZThn40_N7S6263C1D0Ev,_ZThn28_N7S6263C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C1D1Ev,_ZTv0_n12_N7S6263C1D1Ev)();
extern void ABISELECT(_ZThn216_N7S6263C1D1Ev,_ZThn116_N7S6263C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C1D0Ev,_ZTv0_n12_N7S6263C1D0Ev)();
extern void ABISELECT(_ZThn216_N7S6263C1D0Ev,_ZThn116_N7S6263C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C1D1Ev,_ZTv0_n12_N7S6263C1D1Ev)();
extern void ABISELECT(_ZThn240_N7S6263C1D1Ev,_ZThn132_N7S6263C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C1D0Ev,_ZTv0_n12_N7S6263C1D0Ev)();
extern void ABISELECT(_ZThn240_N7S6263C1D0Ev,_ZThn132_N7S6263C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6263C1[] = {
  ABISELECT(24,20),
  ABISELECT(24,20),
  ABISELECT(240,132),
  ABISELECT(232,128),
  ABISELECT(24,20),
  ABISELECT(216,116),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6263C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C1D1Ev,_ZTv0_n12_N7S6263C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C1D0Ev,_ZTv0_n12_N7S6263C1D0Ev),
  0,
  ABISELECT(208,108),
  0,
  ABISELECT(192,96),
  ABISELECT(-24,-20),
  ABISELECT(-24,-20),
  (VTBL_ENTRY)&(_ZTI7S6263C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C1D1Ev,_ZTv0_n12_N7S6263C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C1D0Ev,_ZTv0_n12_N7S6263C1D0Ev),
  ABISELECT(192,100),
  ABISELECT(-16,-8),
  ABISELECT(-40,-28),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S6263C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C1D1Ev,_ZTv0_n12_N7S6263C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C1D0Ev,_ZTv0_n12_N7S6263C1D0Ev),
  ABISELECT(16,12),
  ABISELECT(-192,-96),
  ABISELECT(-216,-116),
  ABISELECT(-216,-116),
  (VTBL_ENTRY)&(_ZTI7S6263C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C1D1Ev,_ZTv0_n12_N7S6263C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C1D0Ev,_ZTv0_n12_N7S6263C1D0Ev),
  ABISELECT(-216,-112),
  ABISELECT(-8,-4),
  ABISELECT(-216,-112),
  ABISELECT(-24,-16),
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  (VTBL_ENTRY)&(_ZTI7S6263C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C1D1Ev,_ZTv0_n12_N7S6263C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C1D0Ev,_ZTv0_n12_N7S6263C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S6263C1[];
extern void ABISELECT(_ZTv0_n24_N8S6263C12D1Ev,_ZTv0_n12_N8S6263C12D1Ev)();
extern void _ZN8S6263C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6263C12D0Ev,_ZTv0_n12_N8S6263C12D0Ev)();
extern void _ZN8S6263C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6263C12__7S6263C1[] = {
  ABISELECT(24,20),
  ABISELECT(240,132),
  ABISELECT(232,128),
  ABISELECT(24,20),
  ABISELECT(216,116),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6263C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6263C12D1Ev,_ZTv0_n12_N8S6263C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6263C12D0Ev,_ZTv0_n12_N8S6263C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6263C12D1Ev,_ZTv0_n12_N8S6263C12D1Ev)();
extern void ABISELECT(_ZThn240_N8S6263C12D1Ev,_ZThn132_N8S6263C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6263C12D0Ev,_ZTv0_n12_N8S6263C12D0Ev)();
extern void ABISELECT(_ZThn240_N8S6263C12D0Ev,_ZThn132_N8S6263C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6263C4__8S6263C12__7S6263C1[] = {
  ABISELECT(-216,-112),
  ABISELECT(-8,-4),
  ABISELECT(-216,-112),
  ABISELECT(-24,-16),
  ABISELECT(-240,-132),
  ABISELECT(-240,-132),
  (VTBL_ENTRY)&(_ZTI8S6263C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6263C12D1Ev,_ZTv0_n12_N8S6263C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6263C12D0Ev,_ZTv0_n12_N8S6263C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6263C12D1Ev,_ZTv0_n12_N8S6263C12D1Ev)();
extern void ABISELECT(_ZThn24_N8S6263C12D1Ev,_ZThn20_N8S6263C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6263C12D0Ev,_ZTv0_n12_N8S6263C12D0Ev)();
extern void ABISELECT(_ZThn24_N8S6263C12D0Ev,_ZThn20_N8S6263C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6263C5__8S6263C12__7S6263C1[] = {
  ABISELECT(208,108),
  0,
  ABISELECT(192,96),
  ABISELECT(-24,-20),
  ABISELECT(-24,-20),
  (VTBL_ENTRY)&(_ZTI8S6263C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6263C12D1Ev,_ZTv0_n12_N8S6263C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6263C12D0Ev,_ZTv0_n12_N8S6263C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6263C12D1Ev,_ZTv0_n12_N8S6263C12D1Ev)();
extern void ABISELECT(_ZThn216_N8S6263C12D1Ev,_ZThn116_N8S6263C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6263C12D0Ev,_ZTv0_n12_N8S6263C12D0Ev)();
extern void ABISELECT(_ZThn216_N8S6263C12D0Ev,_ZThn116_N8S6263C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6263C6__8S6263C12__7S6263C1[] = {
  ABISELECT(16,12),
  ABISELECT(-192,-96),
  ABISELECT(-216,-116),
  ABISELECT(-216,-116),
  (VTBL_ENTRY)&(_ZTI8S6263C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6263C12D1Ev,_ZTv0_n12_N8S6263C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6263C12D0Ev,_ZTv0_n12_N8S6263C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C3D1Ev,_ZTv0_n12_N7S6263C3D1Ev)();
extern void _ZN7S6263C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C3D0Ev,_ZTv0_n12_N7S6263C3D0Ev)();
extern void _ZN7S6263C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6263C3__7S6263C1[] = {
  0,
  ABISELECT(208,108),
  0,
  ABISELECT(192,96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6263C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C3D1Ev,_ZTv0_n12_N7S6263C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C3D0Ev,_ZTv0_n12_N7S6263C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C4D1Ev,_ZTv0_n12_N7S6263C4D1Ev)();
extern void _ZN7S6263C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C4D0Ev,_ZTv0_n12_N7S6263C4D0Ev)();
extern void _ZN7S6263C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6263C47S6263C3__7S6263C1[] = {
  0,
  ABISELECT(208,108),
  0,
  ABISELECT(192,96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6263C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C4D1Ev,_ZTv0_n12_N7S6263C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C4D0Ev,_ZTv0_n12_N7S6263C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C4D1Ev,_ZTv0_n12_N7S6263C4D1Ev)();
extern void ABISELECT(_ZThn192_N7S6263C4D1Ev,_ZThn96_N7S6263C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C4D0Ev,_ZTv0_n12_N7S6263C4D0Ev)();
extern void ABISELECT(_ZThn192_N7S6263C4D0Ev,_ZThn96_N7S6263C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6263C6__7S6263C47S6263C3__7S6263C1[] = {
  ABISELECT(16,12),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI7S6263C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C4D1Ev,_ZTv0_n12_N7S6263C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C4D0Ev,_ZTv0_n12_N7S6263C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C7D1Ev,_ZTv0_n12_N7S6263C7D1Ev)();
extern void _ZN7S6263C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C7D0Ev,_ZTv0_n12_N7S6263C7D0Ev)();
extern void _ZN7S6263C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6263C77S6263C3__A1__7S6263C1[] = {
  ABISELECT(192,100),
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6263C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C7D1Ev,_ZTv0_n12_N7S6263C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C7D0Ev,_ZTv0_n12_N7S6263C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C7D1Ev,_ZTv0_n12_N7S6263C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6263C7D0Ev,_ZTv0_n12_N7S6263C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S6263C77S6263C3__A1__7S6263C1[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S6263C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C7D1Ev,_ZTv0_n12_N7S6263C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C7D0Ev,_ZTv0_n12_N7S6263C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C3D1Ev,_ZTv0_n12_N7S6263C3D1Ev)();
extern void ABISELECT(_ZThn192_N7S6263C3D1Ev,_ZThn96_N7S6263C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C3D0Ev,_ZTv0_n12_N7S6263C3D0Ev)();
extern void ABISELECT(_ZThn192_N7S6263C3D0Ev,_ZThn96_N7S6263C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6263C6__7S6263C3__7S6263C1[] = {
  ABISELECT(16,12),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI7S6263C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C3D1Ev,_ZTv0_n12_N7S6263C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C3D0Ev,_ZTv0_n12_N7S6263C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C3D1Ev,_ZTv0_n12_N7S6263C3D1Ev)();
extern void ABISELECT(_ZThn16_N7S6263C3D1Ev,_ZThn8_N7S6263C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C3D0Ev,_ZTv0_n12_N7S6263C3D0Ev)();
extern void ABISELECT(_ZThn16_N7S6263C3D0Ev,_ZThn8_N7S6263C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6263C7__A1__7S6263C3__7S6263C1[] = {
  ABISELECT(192,100),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6263C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C3D1Ev,_ZTv0_n12_N7S6263C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C3D0Ev,_ZTv0_n12_N7S6263C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C5D1Ev,_ZTv0_n12_N7S6263C5D1Ev)();
extern void _ZN7S6263C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C5D0Ev,_ZTv0_n12_N7S6263C5D0Ev)();
extern void _ZN7S6263C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6263C5__7S6263C1[] = {
  ABISELECT(208,108),
  0,
  ABISELECT(192,96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6263C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C5D1Ev,_ZTv0_n12_N7S6263C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C5D0Ev,_ZTv0_n12_N7S6263C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C5D1Ev,_ZTv0_n12_N7S6263C5D1Ev)();
extern void ABISELECT(_ZThn192_N7S6263C5D1Ev,_ZThn96_N7S6263C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C5D0Ev,_ZTv0_n12_N7S6263C5D0Ev)();
extern void ABISELECT(_ZThn192_N7S6263C5D0Ev,_ZThn96_N7S6263C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6263C6__7S6263C5__7S6263C1[] = {
  ABISELECT(16,12),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI7S6263C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C5D1Ev,_ZTv0_n12_N7S6263C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C5D0Ev,_ZTv0_n12_N7S6263C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C6D1Ev,_ZTv0_n12_N7S6263C6D1Ev)();
extern void _ZN7S6263C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C6D0Ev,_ZTv0_n12_N7S6263C6D0Ev)();
extern void _ZN7S6263C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6263C6__7S6263C1[] = {
  ABISELECT(16,12),
  ABISELECT(-192,-96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6263C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C6D1Ev,_ZTv0_n12_N7S6263C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C6D0Ev,_ZTv0_n12_N7S6263C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C7D1Ev,_ZTv0_n12_N7S6263C7D1Ev)();
extern void _ZN7S6263C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C7D0Ev,_ZTv0_n12_N7S6263C7D0Ev)();
extern void _ZN7S6263C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6263C77S6263C6__7S6263C1[] = {
  ABISELECT(16,12),
  ABISELECT(-192,-96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6263C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C7D1Ev,_ZTv0_n12_N7S6263C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C7D0Ev,_ZTv0_n12_N7S6263C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C7D1Ev,_ZTv0_n12_N7S6263C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6263C7D0Ev,_ZTv0_n12_N7S6263C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S6263C77S6263C6__7S6263C1[] = {
  ABISELECT(192,96),
  ABISELECT(192,96),
  (VTBL_ENTRY)&(_ZTI7S6263C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C7D1Ev,_ZTv0_n12_N7S6263C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C7D0Ev,_ZTv0_n12_N7S6263C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C6D1Ev,_ZTv0_n12_N7S6263C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6263C6D0Ev,_ZTv0_n12_N7S6263C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S7883C3_nt__7S6263C6__7S6263C1[] = {
  ABISELECT(192,96),
  ABISELECT(192,96),
  (VTBL_ENTRY)&(_ZTI7S6263C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C6D1Ev,_ZTv0_n12_N7S6263C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C6D0Ev,_ZTv0_n12_N7S6263C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C4D1Ev,_ZTv0_n12_N7S6263C4D1Ev)();
extern void _ZN7S6263C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6263C4D0Ev,_ZTv0_n12_N7S6263C4D0Ev)();
extern void _ZN7S6263C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6263C4__A1__7S6263C1[] = {
  ABISELECT(-216,-112),
  ABISELECT(-8,-4),
  ABISELECT(-216,-112),
  ABISELECT(-24,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6263C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C4D1Ev,_ZTv0_n12_N7S6263C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C4D0Ev,_ZTv0_n12_N7S6263C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C4D1Ev,_ZTv0_n12_N7S6263C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6263C4D0Ev,_ZTv0_n12_N7S6263C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6263C5__7S6263C4__A1__7S6263C1[] = {
  ABISELECT(208,108),
  0,
  ABISELECT(192,96),
  ABISELECT(216,112),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI7S6263C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C4D1Ev,_ZTv0_n12_N7S6263C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C4D0Ev,_ZTv0_n12_N7S6263C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6263C4D1Ev,_ZTv0_n12_N7S6263C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6263C4D0Ev,_ZTv0_n12_N7S6263C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6263C6__7S6263C4__A1__7S6263C1[] = {
  ABISELECT(16,12),
  ABISELECT(-192,-96),
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S6263C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C4D1Ev,_ZTv0_n12_N7S6263C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6263C4D0Ev,_ZTv0_n12_N7S6263C4D0Ev),
};
static  VTT_ENTRY vtt_S6263C1[] = {
  {&(_ZTV7S6263C1[9]),  9,43},
  {&(_tg__ZTV8S6263C12__7S6263C1[8]),  8,10},
  {&(_tg__ZTV7S6263C4__8S6263C12__7S6263C1[7]),  7,9},
  {&(_tg__ZTV7S6263C5__8S6263C12__7S6263C1[6]),  6,8},
  {&(_tg__ZTV7S6263C6__8S6263C12__7S6263C1[5]),  5,7},
  {&(_tg__ZTV7S6263C5__8S6263C12__7S6263C1[6]),  6,8},
  {&(_ZTV7S6263C1[18]),  18,43},
  {&(_ZTV7S6263C1[18]),  18,43},
  {&(_ZTV7S6263C1[32]),  32,43},
  {&(_ZTV7S6263C1[18]),  18,43},
  {&(_ZTV7S6263C1[25]),  25,43},
  {&(_ZTV7S6263C1[41]),  41,43},
  {&(_tg__ZTV7S6263C3__7S6263C1[7]),  7,9},
  {&(_tg__ZTV7S6263C47S6263C3__7S6263C1[7]),  7,9},
  {&(_tg__ZTV7S6263C47S6263C3__7S6263C1[7]),  7,9},
  {&(_tg__ZTV7S6263C6__7S6263C47S6263C3__7S6263C1[5]),  5,7},
  {&(_tg__ZTV7S6263C47S6263C3__7S6263C1[7]),  7,9},
  {&(_tg__ZTV7S6263C77S6263C3__A1__7S6263C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S6263C77S6263C3__A1__7S6263C1[3]),  3,5},
  {&(_tg__ZTV7S6263C3__7S6263C1[7]),  7,9},
  {&(_tg__ZTV7S6263C6__7S6263C3__7S6263C1[5]),  5,7},
  {&(_tg__ZTV7S6263C3__7S6263C1[7]),  7,9},
  {&(_tg__ZTV7S6263C7__A1__7S6263C3__7S6263C1[5]),  5,7},
  {&(_tg__ZTV7S6263C5__7S6263C1[6]),  6,8},
  {&(_tg__ZTV7S6263C6__7S6263C5__7S6263C1[5]),  5,7},
  {&(_tg__ZTV7S6263C5__7S6263C1[6]),  6,8},
  {&(_tg__ZTV7S6263C6__7S6263C1[5]),  5,7},
  {&(_tg__ZTV7S6263C77S6263C6__7S6263C1[5]),  5,7},
  {&(_tg__ZTV10S7883C3_nt__7S6263C77S6263C6__7S6263C1[3]),  3,5},
  {&(_tg__ZTV10S7883C3_nt__7S6263C6__7S6263C1[3]),  3,5},
  {&(_tg__ZTV7S6263C4__A1__7S6263C1[7]),  7,9},
  {&(_tg__ZTV7S6263C5__7S6263C4__A1__7S6263C1[6]),  6,8},
  {&(_tg__ZTV7S6263C6__7S6263C4__A1__7S6263C1[5]),  5,7},
  {&(_tg__ZTV7S6263C5__7S6263C4__A1__7S6263C1[6]),  6,8},
};
extern VTBL_ENTRY _ZTI7S6263C1[];
extern  VTBL_ENTRY _ZTV7S6263C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6263C1[];
static VTBL_ENTRY alt_thunk_names153[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C6D0Ev,_ZTv0_n12_N7S6263C6D0Ev), // 
  (VTBL_ENTRY)_ZN7S6263C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C6D1Ev,_ZTv0_n12_N7S6263C6D1Ev), // 
  (VTBL_ENTRY)_ZN7S6263C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C5D0Ev,_ZTv0_n12_N7S6263C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6263C5D0Ev,_ZThn96_N7S6263C5D0Ev),
  (VTBL_ENTRY)_ZN7S6263C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C5D1Ev,_ZTv0_n12_N7S6263C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6263C5D1Ev,_ZThn96_N7S6263C5D1Ev),
  (VTBL_ENTRY)_ZN7S6263C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C7D0Ev,_ZTv0_n12_N7S6263C7D0Ev), // 
  (VTBL_ENTRY)_ZN7S6263C7D0Ev,
  (VTBL_ENTRY)_ZN7S6263C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C7D1Ev,_ZTv0_n12_N7S6263C7D1Ev), // 
  (VTBL_ENTRY)_ZN7S6263C7D1Ev,
  (VTBL_ENTRY)_ZN7S6263C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C4D0Ev,_ZTv0_n12_N7S6263C4D0Ev), // 
  (VTBL_ENTRY)_ZN7S6263C4D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6263C4D0Ev,_ZThn96_N7S6263C4D0Ev),
  (VTBL_ENTRY)_ZN7S6263C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C4D1Ev,_ZTv0_n12_N7S6263C4D1Ev), // 
  (VTBL_ENTRY)_ZN7S6263C4D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6263C4D1Ev,_ZThn96_N7S6263C4D1Ev),
  (VTBL_ENTRY)_ZN7S6263C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C3D0Ev,_ZTv0_n12_N7S6263C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6263C3D0Ev,_ZThn8_N7S6263C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6263C3D0Ev,_ZThn96_N7S6263C3D0Ev),
  (VTBL_ENTRY)_ZN7S6263C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C3D1Ev,_ZTv0_n12_N7S6263C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6263C3D1Ev,_ZThn8_N7S6263C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6263C3D1Ev,_ZThn96_N7S6263C3D1Ev),
  (VTBL_ENTRY)_ZN7S6263C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6263C12D0Ev,_ZTv0_n12_N8S6263C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S6263C12D0Ev,_ZThn116_N8S6263C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S6263C12D0Ev,_ZThn20_N8S6263C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S6263C12D0Ev,_ZThn132_N8S6263C12D0Ev),
  (VTBL_ENTRY)_ZN8S6263C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6263C12D1Ev,_ZTv0_n12_N8S6263C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S6263C12D1Ev,_ZThn116_N8S6263C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S6263C12D1Ev,_ZThn20_N8S6263C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S6263C12D1Ev,_ZThn132_N8S6263C12D1Ev),
  (VTBL_ENTRY)_ZN8S6263C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C1D0Ev,_ZTv0_n12_N7S6263C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S6263C1D0Ev,_ZThn132_N7S6263C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S6263C1D0Ev,_ZThn116_N7S6263C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S6263C1D0Ev,_ZThn28_N7S6263C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S6263C1D0Ev,_ZThn20_N7S6263C1D0Ev),
  (VTBL_ENTRY)_ZN7S6263C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6263C1D1Ev,_ZTv0_n12_N7S6263C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S6263C1D1Ev,_ZThn132_N7S6263C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S6263C1D1Ev,_ZThn116_N7S6263C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S6263C1D1Ev,_ZThn28_N7S6263C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S6263C1D1Ev,_ZThn20_N7S6263C1D1Ev),
  (VTBL_ENTRY)_ZN7S6263C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6263C1 = {  "S6263C1", // class name
  bases_S6263C1, 14,
  &(vtc_S6263C1[0]), // expected_vtbl_contents
  &(vtt_S6263C1[0]), // expected_vtt_contents
  ABISELECT(256,140), // object size
  NSPAIRA(_ZTI7S6263C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6263C1),43, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6263C1),34, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names153,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1007C3  : S3216C8_nt {
};
//SIG(-1 S1007C3) C1{ BC2{ m Fi}}



static void Test_S1007C3()
{
  extern Class_Descriptor cd_S1007C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S1007C3, buf);
    S1007C3 &lv = *(new (buf) S1007C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S1007C3)");
    check2(__alignof__(lv), 4, "__alignof__(S1007C3)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S1007C3");
    test_class_info(&lv, &cd_S1007C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1007C3(Test_S1007C3, "S1007C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S1007C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S1007C3 = {  "S1007C3", // class name
  bases_S1007C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1007C6_nt  {
  ::S1006C8_nt s1007c6f0;
  void  mf1007c6(); // _ZN10S1007C6_nt8mf1007c6Ev
};
//SIG(-1 S1007C6_nt) C1{ m FC2{ FL[4]}}


void  S1007C6_nt ::mf1007c6(){}

//skip512 S1007C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1007C5  {
  char s1007c5f0;
  ::S1007C6_nt s1007c5f1;
  ::S1006C9_nt s1007c5f2;
  void  mf1007c5(); // _ZN7S1007C58mf1007c5Ev
};
//SIG(-1 S1007C5) C1{ m Fc FC2{ m FC3{ FL[4]}} FC4{ m FC5{ FC6{ Fi[4]}}}}


void  S1007C5 ::mf1007c5(){}

static void Test_S1007C5()
{
  {
    init_simple_test("S1007C5");
    S1007C5 lv;
    check2(sizeof(lv), ABISELECT(56,52), "sizeof(S1007C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1007C5)");
    check_field_offset(lv, s1007c5f0, 0, "S1007C5.s1007c5f0");
    check_field_offset(lv, s1007c5f1, ABISELECT(8,4), "S1007C5.s1007c5f1");
    check_field_offset(lv, s1007c5f2, ABISELECT(40,36), "S1007C5.s1007c5f2");
  }
}
static Arrange_To_Call_Me vS1007C5(Test_S1007C5, "S1007C5", ABISELECT(56,52));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1007C2  : S1007C3 {
  void *s1007c2f0;
  ::S1007C5 s1007c2f1;
  ::S1007C6_nt s1007c2f2;
  char s1007c2f3;
  ::S133C15_nt s1007c2f4;
};
//SIG(-1 S1007C2) C1{ BC2{ BC3{ m Fi}} Fp FC4{ m Fc FC5{ m FC6{ FL[4]}} FC7{ m FC8{ FC9{ Fi[4]}}}} FC5 Fc FC10{ m Fi FC11{ BC12{ m Fp Fi}}}}



static void Test_S1007C2()
{
  extern Class_Descriptor cd_S1007C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,28)];
    init_test(&cd_S1007C2, buf);
    S1007C2 &lv = *(new (buf) S1007C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,108), "sizeof(S1007C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1007C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1007C3*), 0, "S1007C2");
    check_base_class_offset(lv, (S1007C3*), 0, "S1007C2");
    check_field_offset(lv, s1007c2f0, ABISELECT(8,4), "S1007C2.s1007c2f0");
    check_field_offset(lv, s1007c2f1, ABISELECT(16,8), "S1007C2.s1007c2f1");
    check_field_offset(lv, s1007c2f2, ABISELECT(72,60), "S1007C2.s1007c2f2");
    check_field_offset(lv, s1007c2f3, ABISELECT(104,92), "S1007C2.s1007c2f3");
    check_field_offset(lv, s1007c2f4, ABISELECT(112,96), "S1007C2.s1007c2f4");
    test_class_info(&lv, &cd_S1007C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1007C2(Test_S1007C2, "S1007C2", ABISELECT(136,108));

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1007C3;
static Base_Class bases_S1007C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1007C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S1007C2 = {  "S1007C2", // class name
  bases_S1007C2, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(136,108), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1007C1  : S1007C2 , S4677C37 {
};
//SIG(1 S1007C1) C1{ BC2{ BC3{ BC4{ m Fi}} Fp FC5{ m Fc FC6{ m FC7{ FL[4]}} FC8{ m FC9{ FC10{ Fi[4]}}}} FC6 Fc FC11{ m Fi FC12{ BC13{ m Fp Fi}}}} BC14{ m}}



static void Test_S1007C1()
{
  extern Class_Descriptor cd_S1007C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,28)];
    init_test(&cd_S1007C1, buf);
    S1007C1 &lv = *(new (buf) S1007C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,108), "sizeof(S1007C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1007C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1007C3*)(S1007C2*), 0, "S1007C1");
    check_base_class_offset(lv, (S1007C3*)(S1007C2*), 0, "S1007C1");
    check_base_class_offset(lv, (S1007C2*), 0, "S1007C1");
    check_base_class_offset(lv, (S4677C37*), 0, "S1007C1");
    test_class_info(&lv, &cd_S1007C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1007C1(Test_S1007C1, "S1007C1", ABISELECT(136,108));

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1007C3;
extern Class_Descriptor cd_S1007C2;
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
static Base_Class bases_S1007C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1007C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1007C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S1007C1 = {  "S1007C1", // class name
  bases_S1007C1, 4,
  0, // no vftv
  0, //no vtt
  ABISELECT(136,108), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S388C4  : S3216C8_nt {
};
//SIG(-1 S388C4) C1{ BC2{ m Fi}}



static void Test_S388C4()
{
  extern Class_Descriptor cd_S388C4;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S388C4, buf);
    S388C4 &lv = *(new (buf) S388C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S388C4)");
    check2(__alignof__(lv), 4, "__alignof__(S388C4)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S388C4");
    test_class_info(&lv, &cd_S388C4);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS388C4(Test_S388C4, "S388C4", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S388C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S388C4[];
Class_Descriptor cd_S388C4 = {  "S388C4", // class name
  bases_S388C4, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI6S388C4),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  S388C3  : S388C4 {
  int s388c3f0;
  virtual  ~S388C3(); // _ZN6S388C3D1Ev
  virtual void  v1(); // _ZN6S388C32v1Ev
  virtual void  v2(); // _ZN6S388C32v2Ev
  virtual void  v3(); // _ZN6S388C32v3Ev
  virtual void  v4(); // _ZN6S388C32v4Ev
  virtual void  v5(); // _ZN6S388C32v5Ev
  virtual void  v6(); // _ZN6S388C32v6Ev
  virtual void  v7(); // _ZN6S388C32v7Ev
  virtual void  v8(); // _ZN6S388C32v8Ev
  virtual void  v9(); // _ZN6S388C32v9Ev
  virtual void  v10(); // _ZN6S388C33v10Ev
  virtual void  v11(); // _ZN6S388C33v11Ev
  virtual void  v12(); // _ZN6S388C33v12Ev
  virtual void  v13(); // _ZN6S388C33v13Ev
  S388C3(); // tgen
};
//SIG(-1 S388C3) C1{ BC2{ BC3{ m Fi}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 Fi}


 S388C3 ::~S388C3(){ note_dtor("S388C3", this);}
void  S388C3 ::v1(){vfunc_called(this, "_ZN6S388C32v1Ev");}
void  S388C3 ::v2(){vfunc_called(this, "_ZN6S388C32v2Ev");}
void  S388C3 ::v3(){vfunc_called(this, "_ZN6S388C32v3Ev");}
void  S388C3 ::v4(){vfunc_called(this, "_ZN6S388C32v4Ev");}
void  S388C3 ::v5(){vfunc_called(this, "_ZN6S388C32v5Ev");}
void  S388C3 ::v6(){vfunc_called(this, "_ZN6S388C32v6Ev");}
void  S388C3 ::v7(){vfunc_called(this, "_ZN6S388C32v7Ev");}
void  S388C3 ::v8(){vfunc_called(this, "_ZN6S388C32v8Ev");}
void  S388C3 ::v9(){vfunc_called(this, "_ZN6S388C32v9Ev");}
void  S388C3 ::v10(){vfunc_called(this, "_ZN6S388C33v10Ev");}
void  S388C3 ::v11(){vfunc_called(this, "_ZN6S388C33v11Ev");}
void  S388C3 ::v12(){vfunc_called(this, "_ZN6S388C33v12Ev");}
void  S388C3 ::v13(){vfunc_called(this, "_ZN6S388C33v13Ev");}
S388C3 ::S388C3(){ note_ctor("S388C3", this);} // tgen

static void Test_S388C3()
{
  extern Class_Descriptor cd_S388C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S388C3, buf);
    S388C3 *dp, &lv = *(dp=new (buf) S388C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S388C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S388C3)");
    check_base_class_offset(lv, (S3216C8_nt*)(S388C4*), ABISELECT(8,4), "S388C3");
    check_base_class_offset(lv, (S388C4*), ABISELECT(8,4), "S388C3");
    check_field_offset(lv, s388c3f0, ABISELECT(12,8), "S388C3.s388c3f0");
    test_class_info(&lv, &cd_S388C3);
    dp->~S388C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS388C3(Test_S388C3, "S388C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN6S388C3C1Ev();
extern void _ZN6S388C3D1Ev();
Name_Map name_map_S388C3[] = {
  NSPAIR(_ZN6S388C3C1Ev),
  NSPAIR(_ZN6S388C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S388C4;
extern VTBL_ENTRY _ZTI6S388C4[];
static Base_Class bases_S388C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S388C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S388C3[];
extern void _ZN6S388C3D1Ev();
extern void _ZN6S388C3D0Ev();
extern void _ZN6S388C32v1Ev();
extern void _ZN6S388C32v2Ev();
extern void _ZN6S388C32v3Ev();
extern void _ZN6S388C32v4Ev();
extern void _ZN6S388C32v5Ev();
extern void _ZN6S388C32v6Ev();
extern void _ZN6S388C32v7Ev();
extern void _ZN6S388C32v8Ev();
extern void _ZN6S388C32v9Ev();
extern void _ZN6S388C33v10Ev();
extern void _ZN6S388C33v11Ev();
extern void _ZN6S388C33v12Ev();
extern void _ZN6S388C33v13Ev();
static  VTBL_ENTRY vtc_S388C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S388C3[0]),
  (VTBL_ENTRY)&_ZN6S388C3D1Ev,
  (VTBL_ENTRY)&_ZN6S388C3D0Ev,
  (VTBL_ENTRY)&_ZN6S388C32v1Ev,
  (VTBL_ENTRY)&_ZN6S388C32v2Ev,
  (VTBL_ENTRY)&_ZN6S388C32v3Ev,
  (VTBL_ENTRY)&_ZN6S388C32v4Ev,
  (VTBL_ENTRY)&_ZN6S388C32v5Ev,
  (VTBL_ENTRY)&_ZN6S388C32v6Ev,
  (VTBL_ENTRY)&_ZN6S388C32v7Ev,
  (VTBL_ENTRY)&_ZN6S388C32v8Ev,
  (VTBL_ENTRY)&_ZN6S388C32v9Ev,
  (VTBL_ENTRY)&_ZN6S388C33v10Ev,
  (VTBL_ENTRY)&_ZN6S388C33v11Ev,
  (VTBL_ENTRY)&_ZN6S388C33v12Ev,
  (VTBL_ENTRY)&_ZN6S388C33v13Ev,
};
extern VTBL_ENTRY _ZTI6S388C3[];
extern  VTBL_ENTRY _ZTV6S388C3[];
Class_Descriptor cd_S388C3 = {  "S388C3", // class name
  bases_S388C3, 2,
  &(vtc_S388C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI6S388C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV6S388C3),17, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S388C2  : S388C3 {
  ::S133C15_nt s388c2f0;
  virtual  ~S388C2(); // _ZN6S388C2D1Ev
  virtual void  v14(); // _ZN6S388C23v14Ev
  virtual void  v15(); // _ZN6S388C23v15Ev
  virtual void  v16(); // _ZN6S388C23v16Ev
  S388C2(); // tgen
};
//SIG(-1 S388C2) C1{ BC2{ BC3{ BC4{ m Fi}} vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 Fi} vd v1 v2 v3 FC5{ m Fi FC6{ BC7{ m Fp Fi}}}}


 S388C2 ::~S388C2(){ note_dtor("S388C2", this);}
void  S388C2 ::v14(){vfunc_called(this, "_ZN6S388C23v14Ev");}
void  S388C2 ::v15(){vfunc_called(this, "_ZN6S388C23v15Ev");}
void  S388C2 ::v16(){vfunc_called(this, "_ZN6S388C23v16Ev");}
S388C2 ::S388C2(){ note_ctor("S388C2", this);} // tgen

static void Test_S388C2()
{
  extern Class_Descriptor cd_S388C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S388C2, buf);
    S388C2 *dp, &lv = *(dp=new (buf) S388C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S388C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S388C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S388C4*)(S388C3*), ABISELECT(8,4), "S388C2");
    check_base_class_offset(lv, (S388C4*)(S388C3*), ABISELECT(8,4), "S388C2");
    check_base_class_offset(lv, (S388C3*), 0, "S388C2");
    check_field_offset(lv, s388c2f0, ABISELECT(16,12), "S388C2.s388c2f0");
    test_class_info(&lv, &cd_S388C2);
    dp->~S388C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS388C2(Test_S388C2, "S388C2", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN6S388C2C1Ev();
extern void _ZN6S388C2D1Ev();
Name_Map name_map_S388C2[] = {
  NSPAIR(_ZN6S388C2C1Ev),
  NSPAIR(_ZN6S388C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S388C4;
extern VTBL_ENTRY _ZTI6S388C4[];
extern Class_Descriptor cd_S388C3;
extern VTBL_ENTRY _ZTI6S388C3[];
extern  VTBL_ENTRY _ZTV6S388C3[];
static Base_Class bases_S388C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S388C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S388C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S388C2[];
extern void _ZN6S388C2D1Ev();
extern void _ZN6S388C2D0Ev();
extern void _ZN6S388C32v1Ev();
extern void _ZN6S388C32v2Ev();
extern void _ZN6S388C32v3Ev();
extern void _ZN6S388C32v4Ev();
extern void _ZN6S388C32v5Ev();
extern void _ZN6S388C32v6Ev();
extern void _ZN6S388C32v7Ev();
extern void _ZN6S388C32v8Ev();
extern void _ZN6S388C32v9Ev();
extern void _ZN6S388C33v10Ev();
extern void _ZN6S388C33v11Ev();
extern void _ZN6S388C33v12Ev();
extern void _ZN6S388C33v13Ev();
extern void _ZN6S388C23v14Ev();
extern void _ZN6S388C23v15Ev();
extern void _ZN6S388C23v16Ev();
static  VTBL_ENTRY vtc_S388C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S388C2[0]),
  (VTBL_ENTRY)&_ZN6S388C2D1Ev,
  (VTBL_ENTRY)&_ZN6S388C2D0Ev,
  (VTBL_ENTRY)&_ZN6S388C32v1Ev,
  (VTBL_ENTRY)&_ZN6S388C32v2Ev,
  (VTBL_ENTRY)&_ZN6S388C32v3Ev,
  (VTBL_ENTRY)&_ZN6S388C32v4Ev,
  (VTBL_ENTRY)&_ZN6S388C32v5Ev,
  (VTBL_ENTRY)&_ZN6S388C32v6Ev,
  (VTBL_ENTRY)&_ZN6S388C32v7Ev,
  (VTBL_ENTRY)&_ZN6S388C32v8Ev,
  (VTBL_ENTRY)&_ZN6S388C32v9Ev,
  (VTBL_ENTRY)&_ZN6S388C33v10Ev,
  (VTBL_ENTRY)&_ZN6S388C33v11Ev,
  (VTBL_ENTRY)&_ZN6S388C33v12Ev,
  (VTBL_ENTRY)&_ZN6S388C33v13Ev,
  (VTBL_ENTRY)&_ZN6S388C23v14Ev,
  (VTBL_ENTRY)&_ZN6S388C23v15Ev,
  (VTBL_ENTRY)&_ZN6S388C23v16Ev,
};
extern VTBL_ENTRY _ZTI6S388C2[];
extern  VTBL_ENTRY _ZTV6S388C2[];
Class_Descriptor cd_S388C2 = {  "S388C2", // class name
  bases_S388C2, 3,
  &(vtc_S388C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI6S388C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S388C2),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  S388C1  : S388C2 {
  ~S388C1(); // tgen
  S388C1(); // tgen
};
//SIG(1 S388C1) C1{ BC2{ BC3{ BC4{ BC5{ m Fi}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 Fi} vd v14 v15 v16 FC6{ m Fi FC7{ BC8{ m Fp Fi}}}}}


S388C1 ::~S388C1(){ note_dtor("S388C1", this);} // tgen
S388C1 ::S388C1(){ note_ctor("S388C1", this);} // tgen

static void Test_S388C1()
{
  extern Class_Descriptor cd_S388C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S388C1, buf);
    S388C1 *dp, &lv = *(dp=new (buf) S388C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S388C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S388C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S388C4*)(S388C3*)(S388C2*), ABISELECT(8,4), "S388C1");
    check_base_class_offset(lv, (S388C4*)(S388C3*)(S388C2*), ABISELECT(8,4), "S388C1");
    check_base_class_offset(lv, (S388C3*)(S388C2*), 0, "S388C1");
    check_base_class_offset(lv, (S388C2*), 0, "S388C1");
    test_class_info(&lv, &cd_S388C1);
    dp->~S388C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS388C1(Test_S388C1, "S388C1", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN6S388C1C1Ev();
extern void _ZN6S388C1D1Ev();
Name_Map name_map_S388C1[] = {
  NSPAIR(_ZN6S388C1C1Ev),
  NSPAIR(_ZN6S388C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S388C4;
extern VTBL_ENTRY _ZTI6S388C4[];
extern Class_Descriptor cd_S388C3;
extern VTBL_ENTRY _ZTI6S388C3[];
extern  VTBL_ENTRY _ZTV6S388C3[];
extern Class_Descriptor cd_S388C2;
extern VTBL_ENTRY _ZTI6S388C2[];
extern  VTBL_ENTRY _ZTV6S388C2[];
static Base_Class bases_S388C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S388C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S388C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S388C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S388C1[];
extern void _ZN6S388C1D1Ev();
extern void _ZN6S388C1D0Ev();
extern void _ZN6S388C32v1Ev();
extern void _ZN6S388C32v2Ev();
extern void _ZN6S388C32v3Ev();
extern void _ZN6S388C32v4Ev();
extern void _ZN6S388C32v5Ev();
extern void _ZN6S388C32v6Ev();
extern void _ZN6S388C32v7Ev();
extern void _ZN6S388C32v8Ev();
extern void _ZN6S388C32v9Ev();
extern void _ZN6S388C33v10Ev();
extern void _ZN6S388C33v11Ev();
extern void _ZN6S388C33v12Ev();
extern void _ZN6S388C33v13Ev();
extern void _ZN6S388C23v14Ev();
extern void _ZN6S388C23v15Ev();
extern void _ZN6S388C23v16Ev();
static  VTBL_ENTRY vtc_S388C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S388C1[0]),
  (VTBL_ENTRY)&_ZN6S388C1D1Ev,
  (VTBL_ENTRY)&_ZN6S388C1D0Ev,
  (VTBL_ENTRY)&_ZN6S388C32v1Ev,
  (VTBL_ENTRY)&_ZN6S388C32v2Ev,
  (VTBL_ENTRY)&_ZN6S388C32v3Ev,
  (VTBL_ENTRY)&_ZN6S388C32v4Ev,
  (VTBL_ENTRY)&_ZN6S388C32v5Ev,
  (VTBL_ENTRY)&_ZN6S388C32v6Ev,
  (VTBL_ENTRY)&_ZN6S388C32v7Ev,
  (VTBL_ENTRY)&_ZN6S388C32v8Ev,
  (VTBL_ENTRY)&_ZN6S388C32v9Ev,
  (VTBL_ENTRY)&_ZN6S388C33v10Ev,
  (VTBL_ENTRY)&_ZN6S388C33v11Ev,
  (VTBL_ENTRY)&_ZN6S388C33v12Ev,
  (VTBL_ENTRY)&_ZN6S388C33v13Ev,
  (VTBL_ENTRY)&_ZN6S388C23v14Ev,
  (VTBL_ENTRY)&_ZN6S388C23v15Ev,
  (VTBL_ENTRY)&_ZN6S388C23v16Ev,
};
extern VTBL_ENTRY _ZTI6S388C1[];
extern  VTBL_ENTRY _ZTV6S388C1[];
Class_Descriptor cd_S388C1 = {  "S388C1", // class name
  bases_S388C1, 4,
  &(vtc_S388C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI6S388C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S388C1),20, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15894C8_nt  {
  char s15894c8f0[2];
};
//SIG(-1 S15894C8_nt) C1{ Fc[2]}



//skip512 S15894C8_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15894C1  {
  ::S16701C3 s15894c1f0;
  ::S4677C37 s15894c1f1;
  ::S16701C3 s15894c1f2;
  ::S16701C3 s15894c1f3;
  ::S16701C3 s15894c1f4;
  ::S133C15_nt s15894c1f5;
  ::S133C15_nt s15894c1f6;
  ::S133C15_nt s15894c1f7;
  ::S133C15_nt s15894c1f8;
  int s15894c1f9;
  char s15894c1f10[4];
  ::S133C15_nt s15894c1f11;
  ::S15894C8_nt s15894c1f12;
  char s15894c1f13;
  __tsi64 s15894c1f14;
  ::S16701C3 s15894c1f15;
  int s15894c1f16;
  void  mf15894c1(); // _ZN8S15894C19mf15894c1Ev
};
//SIG(1 S15894C1) C1{ m FC2{ m FC3{ m Fp}} FC4{ m} FC2 FC2 FC2 FC5{ m Fi FC6{ BC7{ m Fp Fi}}} FC5 FC5 FC5 Fi Fc[4] FC5 FC8{ Fc[2]} Fc FL FC2 Fi}


void  S15894C1 ::mf15894c1(){}

static void Test_S15894C1()
{
  {
    init_simple_test("S15894C1");
    S15894C1 lv;
    check2(sizeof(lv), ABISELECT(200,108), "sizeof(S15894C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15894C1)");
    check_field_offset(lv, s15894c1f0, 0, "S15894C1.s15894c1f0");
    check_field_offset(lv, s15894c1f1, ABISELECT(8,4), "S15894C1.s15894c1f1");
    check_field_offset(lv, s15894c1f2, ABISELECT(16,8), "S15894C1.s15894c1f2");
    check_field_offset(lv, s15894c1f3, ABISELECT(24,12), "S15894C1.s15894c1f3");
    check_field_offset(lv, s15894c1f4, ABISELECT(32,16), "S15894C1.s15894c1f4");
    check_field_offset(lv, s15894c1f5, ABISELECT(40,20), "S15894C1.s15894c1f5");
    check_field_offset(lv, s15894c1f6, ABISELECT(64,32), "S15894C1.s15894c1f6");
    check_field_offset(lv, s15894c1f7, ABISELECT(88,44), "S15894C1.s15894c1f7");
    check_field_offset(lv, s15894c1f8, ABISELECT(112,56), "S15894C1.s15894c1f8");
    check_field_offset(lv, s15894c1f9, ABISELECT(136,68), "S15894C1.s15894c1f9");
    check_field_offset(lv, s15894c1f10, ABISELECT(140,72), "S15894C1.s15894c1f10");
    check_field_offset(lv, s15894c1f11, ABISELECT(144,76), "S15894C1.s15894c1f11");
    check_field_offset(lv, s15894c1f12, ABISELECT(168,88), "S15894C1.s15894c1f12");
    check_field_offset(lv, s15894c1f13, ABISELECT(170,90), "S15894C1.s15894c1f13");
    check_field_offset(lv, s15894c1f14, ABISELECT(176,92), "S15894C1.s15894c1f14");
    check_field_offset(lv, s15894c1f15, ABISELECT(184,100), "S15894C1.s15894c1f15");
    check_field_offset(lv, s15894c1f16, ABISELECT(192,104), "S15894C1.s15894c1f16");
  }
}
static Arrange_To_Call_Me vS15894C1(Test_S15894C1, "S15894C1", ABISELECT(200,108));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2527C2  : S7246C4 {
  int s2527c2f0;
};
//SIG(-1 S2527C2) C1{ BC2{ m Fi[10]} Fi}



static void Test_S2527C2()
{
  extern Class_Descriptor cd_S2527C2;
  void *lvp;
  {
    int buf[12];
    init_test(&cd_S2527C2, buf);
    S2527C2 &lv = *(new (buf) S2527C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 44, "sizeof(S2527C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2527C2)");
    check_base_class_offset(lv, (S7246C4*), 0, "S2527C2");
    check_field_offset(lv, s2527c2f0, 40, "S2527C2.s2527c2f0");
    test_class_info(&lv, &cd_S2527C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2527C2(Test_S2527C2, "S2527C2", 44);

#else // __cplusplus

extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
static Base_Class bases_S2527C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2527C2[];
Class_Descriptor cd_S2527C2 = {  "S2527C2", // class name
  bases_S2527C2, 1,
  0, // no vftv
  0, //no vtt
  44, // object size
  NSPAIRA(_ZTI7S2527C2),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  S2527C4  : virtual S7246C4 {
  virtual  ~S2527C4(); // _ZN7S2527C4D2Ev
  S2527C4(); // tgen
};
//SIG(-1 S2527C4) C1{ VBC2{ m Fi[10]} vd}


 S2527C4 ::~S2527C4(){ note_dtor("S2527C4", this);}
S2527C4 ::S2527C4(){ note_ctor("S2527C4", this);} // tgen

static void Test_S2527C4()
{
  extern Class_Descriptor cd_S2527C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S2527C4, buf);
    S2527C4 *dp, &lv = *(dp=new (buf) S2527C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S2527C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2527C4)");
    check_base_class_offset(lv, (S7246C4*), ABISELECT(8,4), "S2527C4");
    test_class_info(&lv, &cd_S2527C4);
    dp->~S2527C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2527C4(Test_S2527C4, "S2527C4", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN7S2527C4C1Ev();
extern void _ZN7S2527C4D2Ev();
Name_Map name_map_S2527C4[] = {
  NSPAIR(_ZN7S2527C4C1Ev),
  NSPAIR(_ZN7S2527C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
static Base_Class bases_S2527C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S2527C4[];
extern void _ZN7S2527C4D1Ev();
extern void _ZN7S2527C4D0Ev();
static  VTBL_ENTRY vtc_S2527C4[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S2527C4[0]),
  (VTBL_ENTRY)&_ZN7S2527C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2527C4D0Ev,
};
extern VTBL_ENTRY _ZTV7S2527C4[];
static  VTT_ENTRY vtt_S2527C4[] = {
  {&(_ZTV7S2527C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S2527C4[];
extern  VTBL_ENTRY _ZTV7S2527C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2527C4[];
Class_Descriptor cd_S2527C4 = {  "S2527C4", // class name
  bases_S2527C4, 1,
  &(vtc_S2527C4[0]), // expected_vtbl_contents
  &(vtt_S2527C4[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI7S2527C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S2527C4),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2527C4),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  S2527C6  : S7246C4 {
};
//SIG(-1 S2527C6) C1{ BC2{ m Fi[10]}}



static void Test_S2527C6()
{
  extern Class_Descriptor cd_S2527C6;
  void *lvp;
  {
    int buf[11];
    init_test(&cd_S2527C6, buf);
    S2527C6 &lv = *(new (buf) S2527C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), 40, "sizeof(S2527C6)");
    check2(__alignof__(lv), 4, "__alignof__(S2527C6)");
    check_base_class_offset(lv, (S7246C4*), 0, "S2527C6");
    test_class_info(&lv, &cd_S2527C6);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2527C6(Test_S2527C6, "S2527C6", 40);

#else // __cplusplus

extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
static Base_Class bases_S2527C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2527C6[];
Class_Descriptor cd_S2527C6 = {  "S2527C6", // class name
  bases_S2527C6, 1,
  0, // no vftv
  0, //no vtt
  40, // object size
  NSPAIRA(_ZTI7S2527C6),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  S2527C7  : S2527C2 {
  ::S2527C2 s2527c7f0;
};
//SIG(-1 S2527C7) C1{ BC2{ BC3{ m Fi[10]} Fi} FC2}



static void Test_S2527C7()
{
  extern Class_Descriptor cd_S2527C7;
  void *lvp;
  {
    int buf[23];
    init_test(&cd_S2527C7, buf);
    S2527C7 &lv = *(new (buf) S2527C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), 88, "sizeof(S2527C7)");
    check2(__alignof__(lv), 4, "__alignof__(S2527C7)");
    check_base_class_offset(lv, (S7246C4*)(S2527C2*), 0, "S2527C7");
    check_base_class_offset(lv, (S2527C2*), 0, "S2527C7");
    check_field_offset(lv, s2527c7f0, 44, "S2527C7.s2527c7f0");
    test_class_info(&lv, &cd_S2527C7);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2527C7(Test_S2527C7, "S2527C7", 88);

#else // __cplusplus

extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S2527C2;
extern VTBL_ENTRY _ZTI7S2527C2[];
static Base_Class bases_S2527C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2527C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2527C7[];
Class_Descriptor cd_S2527C7 = {  "S2527C7", // class name
  bases_S2527C7, 2,
  0, // no vftv
  0, //no vtt
  88, // object size
  NSPAIRA(_ZTI7S2527C7),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2527C5  : virtual S2527C2 , virtual S2527C6 , virtual S2527C7 , S7246C4 {
  void *s2527c5f0;
  virtual  ~S2527C5(); // _ZN7S2527C5D2Ev
  S2527C5(); // tgen
};
//SIG(-1 S2527C5) C1{ VBC2{ BC3{ m Fi[10]} Fi} VBC4{ BC3} VBC5{ BC2 FC2} BC3 vd Fp}


 S2527C5 ::~S2527C5(){ note_dtor("S2527C5", this);}
S2527C5 ::S2527C5(){ note_ctor("S2527C5", this);} // tgen

static void Test_S2527C5()
{
  extern Class_Descriptor cd_S2527C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,56)];
    init_test(&cd_S2527C5, buf);
    S2527C5 *dp, &lv = *(dp=new (buf) S2527C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,220), "sizeof(S2527C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2527C5)");
    /*is_ambiguous_... S2527C5::S2527C2 */ AMB_check_base_class_offset(lv, (S7246C4*)(S2527C2*), ABISELECT(56,48), "S2527C5");
    /*is_ambiguous_... S2527C5::S2527C2 */ AMB_check_base_class_offset(lv, (S2527C2*), ABISELECT(56,48), "S2527C5");
    check_base_class_offset(lv, (S7246C4*)(S2527C6*), ABISELECT(100,92), "S2527C5");
    check_base_class_offset(lv, (S2527C6*), ABISELECT(100,92), "S2527C5");
    check_base_class_offset(lv, (S7246C4*)(S2527C2*)(S2527C7*), ABISELECT(140,132), "S2527C5");
    check_base_class_offset(lv, (S2527C2*)(S2527C7*), ABISELECT(140,132), "S2527C5");
    check_base_class_offset(lv, (S2527C7*), ABISELECT(140,132), "S2527C5");
    /*is_ambiguous_... S2527C5::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*), ABISELECT(8,4), "S2527C5");
    check_field_offset(lv, s2527c5f0, ABISELECT(48,44), "S2527C5.s2527c5f0");
    test_class_info(&lv, &cd_S2527C5);
    dp->~S2527C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2527C5(Test_S2527C5, "S2527C5", ABISELECT(232,220));

#else // __cplusplus

extern void _ZN7S2527C5C1Ev();
extern void _ZN7S2527C5D2Ev();
Name_Map name_map_S2527C5[] = {
  NSPAIR(_ZN7S2527C5C1Ev),
  NSPAIR(_ZN7S2527C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S2527C2;
extern VTBL_ENTRY _ZTI7S2527C2[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S2527C6;
extern VTBL_ENTRY _ZTI7S2527C6[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S2527C2;
extern VTBL_ENTRY _ZTI7S2527C2[];
extern Class_Descriptor cd_S2527C7;
extern VTBL_ENTRY _ZTI7S2527C7[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
static Base_Class bases_S2527C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2527C2,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(100,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
    3, //immediately_derived
  0, 0},
  {&cd_S2527C6,    ABISELECT(100,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(140,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
    5, //immediately_derived
  0, 0},
  {&cd_S2527C2,    ABISELECT(140,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
    6, //immediately_derived
  0, 0},
  {&cd_S2527C7,    ABISELECT(140,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},
  {&cd_S7246C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2527C5[];
extern void _ZN7S2527C5D1Ev();
extern void _ZN7S2527C5D0Ev();
static  VTBL_ENTRY vtc_S2527C5[] = {
  ABISELECT(140,132),
  ABISELECT(100,92),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S2527C5[0]),
  (VTBL_ENTRY)&_ZN7S2527C5D1Ev,
  (VTBL_ENTRY)&_ZN7S2527C5D0Ev,
};
extern VTBL_ENTRY _ZTV7S2527C5[];
static  VTT_ENTRY vtt_S2527C5[] = {
  {&(_ZTV7S2527C5[5]),  5,7},
};
extern VTBL_ENTRY _ZTI7S2527C5[];
extern  VTBL_ENTRY _ZTV7S2527C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2527C5[];
Class_Descriptor cd_S2527C5 = {  "S2527C5", // class name
  bases_S2527C5, 8,
  &(vtc_S2527C5[0]), // expected_vtbl_contents
  &(vtt_S2527C5[0]), // expected_vtt_contents
  ABISELECT(232,220), // object size
  NSPAIRA(_ZTI7S2527C5),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S2527C5),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2527C5),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  S2527C9  : virtual S7246C4 , virtual S2527C4 {
  virtual  ~S2527C9(); // _ZN7S2527C9D2Ev
  S2527C9(); // tgen
};
//SIG(-1 S2527C9) C1{ VBC2{ m Fi[10]} VBC3{ VBC2 vd} vd}


 S2527C9 ::~S2527C9(){ note_dtor("S2527C9", this);}
S2527C9 ::S2527C9(){ note_ctor("S2527C9", this);} // tgen

static void Test_S2527C9()
{
  extern Class_Descriptor cd_S2527C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S2527C9, buf);
    S2527C9 *dp, &lv = *(dp=new (buf) S2527C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S2527C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2527C9)");
    check_base_class_offset(lv, (S7246C4*), ABISELECT(8,4), "S2527C9");
    check_base_class_offset(lv, (S7246C4*)(S2527C4*), ABISELECT(8,4), "S2527C9");
    check_base_class_offset(lv, (S2527C4*), 0, "S2527C9");
    test_class_info(&lv, &cd_S2527C9);
    dp->~S2527C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2527C9(Test_S2527C9, "S2527C9", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN7S2527C9C1Ev();
extern void _ZN7S2527C9D2Ev();
Name_Map name_map_S2527C9[] = {
  NSPAIR(_ZN7S2527C9C1Ev),
  NSPAIR(_ZN7S2527C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S2527C4;
extern VTBL_ENTRY _ZTI7S2527C4[];
extern  VTBL_ENTRY _ZTV7S2527C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2527C4[];
static Base_Class bases_S2527C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2527C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2527C9[];
extern void _ZN7S2527C9D1Ev();
extern void _ZN7S2527C9D0Ev();
static  VTBL_ENTRY vtc_S2527C9[] = {
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S2527C9[0]),
  (VTBL_ENTRY)&_ZN7S2527C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2527C9D0Ev,
};
extern VTBL_ENTRY _ZTV7S2527C9[];
extern void _ZN7S2527C4D1Ev();
extern void _ZN7S2527C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2527C4__7S2527C9[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S2527C4[0]),
  (VTBL_ENTRY)&_ZN7S2527C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2527C4D0Ev,
};
static  VTT_ENTRY vtt_S2527C9[] = {
  {&(_ZTV7S2527C9[5]),  5,7},
  {&(_ZTV7S2527C9[5]),  5,7},
  {&(_tg__ZTV7S2527C4__7S2527C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S2527C9[];
extern  VTBL_ENTRY _ZTV7S2527C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2527C9[];
Class_Descriptor cd_S2527C9 = {  "S2527C9", // class name
  bases_S2527C9, 2,
  &(vtc_S2527C9[0]), // expected_vtbl_contents
  &(vtt_S2527C9[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI7S2527C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S2527C9),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2527C9),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  S2527C8  : virtual S2527C4 , S2527C9 {
  long double s2527c8f0;
  ~S2527C8(); // tgen
  S2527C8(); // tgen
};
//SIG(-1 S2527C8) C1{ VBC2{ VBC3{ m Fi[10]} vd} BC4{ VBC3 VBC2 vd} FD}


S2527C8 ::~S2527C8(){ note_dtor("S2527C8", this);} // tgen
S2527C8 ::S2527C8(){ note_ctor("S2527C8", this);} // tgen

static void Test_S2527C8()
{
  extern Class_Descriptor cd_S2527C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,15)];
    init_test(&cd_S2527C8, buf);
    S2527C8 *dp, &lv = *(dp=new (buf) S2527C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,56), "sizeof(S2527C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2527C8)");
    check_base_class_offset(lv, (S7246C4*)(S2527C4*), ABISELECT(32,16), "S2527C8");
    check_base_class_offset(lv, (S7246C4*)(S2527C9*), ABISELECT(32,16), "S2527C8");
    check_base_class_offset(lv, (S2527C4*), 0, "S2527C8");
    check_base_class_offset(lv, (S2527C4*)(S2527C9*), 0, "S2527C8");
    check_base_class_offset(lv, (S2527C9*), 0, "S2527C8");
    check_field_offset(lv, s2527c8f0, ABISELECT(16,4), "S2527C8.s2527c8f0");
    test_class_info(&lv, &cd_S2527C8);
    dp->~S2527C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2527C8(Test_S2527C8, "S2527C8", ABISELECT(80,56));

#else // __cplusplus

extern void _ZN7S2527C8C1Ev();
extern void _ZN7S2527C8D1Ev();
Name_Map name_map_S2527C8[] = {
  NSPAIR(_ZN7S2527C8C1Ev),
  NSPAIR(_ZN7S2527C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S2527C4;
extern VTBL_ENTRY _ZTI7S2527C4[];
extern  VTBL_ENTRY _ZTV7S2527C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2527C4[];
extern Class_Descriptor cd_S2527C9;
extern VTBL_ENTRY _ZTI7S2527C9[];
extern  VTBL_ENTRY _ZTV7S2527C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2527C9[];
static Base_Class bases_S2527C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S2527C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2527C9,    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 _ZTI7S2527C8[];
extern void _ZN7S2527C8D1Ev();
extern void _ZN7S2527C8D0Ev();
static  VTBL_ENTRY vtc_S2527C8[] = {
  0,
  0,
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S2527C8[0]),
  (VTBL_ENTRY)&_ZN7S2527C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2527C8D0Ev,
};
extern VTBL_ENTRY _ZTV7S2527C8[];
extern void ABISELECT(_ZTv0_n32_N7S2527C9D1Ev,_ZTv0_n16_N7S2527C9D1Ev)();
extern void _ZN7S2527C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2527C9D0Ev,_ZTv0_n16_N7S2527C9D0Ev)();
extern void _ZN7S2527C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2527C9__7S2527C8[] = {
  0,
  0,
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S2527C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2527C9D1Ev,_ZTv0_n16_N7S2527C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2527C9D0Ev,_ZTv0_n16_N7S2527C9D0Ev),
};
extern void _ZN7S2527C4D1Ev();
extern void _ZN7S2527C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2527C4__7S2527C8[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S2527C4[0]),
  (VTBL_ENTRY)&_ZN7S2527C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2527C4D0Ev,
};
static  VTT_ENTRY vtt_S2527C8[] = {
  {&(_ZTV7S2527C8[5]),  5,7},
  {&(_tg__ZTV7S2527C9__7S2527C8[5]),  5,7},
  {&(_tg__ZTV7S2527C9__7S2527C8[5]),  5,7},
  {&(_ZTV7S2527C8[5]),  5,7},
  {&(_tg__ZTV7S2527C4__7S2527C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S2527C8[];
extern  VTBL_ENTRY _ZTV7S2527C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2527C8[];
static VTBL_ENTRY alt_thunk_names154[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2527C9D0Ev,_ZTv0_n16_N7S2527C9D0Ev), // 
  (VTBL_ENTRY)_ZN7S2527C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2527C9D1Ev,_ZTv0_n16_N7S2527C9D1Ev), // 
  (VTBL_ENTRY)_ZN7S2527C9D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2527C8 = {  "S2527C8", // class name
  bases_S2527C8, 3,
  &(vtc_S2527C8[0]), // expected_vtbl_contents
  &(vtt_S2527C8[0]), // expected_vtt_contents
  ABISELECT(80,56), // object size
  NSPAIRA(_ZTI7S2527C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S2527C8),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2527C8),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names154,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2527C1  : S2527C2 , S2527C4 , virtual S2527C5 , virtual S2527C8 {
  virtual  ~S2527C1(); // _ZN7S2527C1D2Ev
  S2527C1(); // tgen
};
//SIG(1 S2527C1) C1{ BC2{ BC3{ m Fi[10]} Fi} BC4{ VBC3 vd} VBC5{ VBC2 VBC6{ BC3} VBC7{ BC2 FC2} BC3 vd Fp} VBC8{ VBC4 BC9{ VBC3 VBC4 vd} FD} vd}


 S2527C1 ::~S2527C1(){ note_dtor("S2527C1", this);}
S2527C1 ::S2527C1(){ note_ctor("S2527C1", this);} // tgen

static void Test_S2527C1()
{
  extern Class_Descriptor cd_S2527C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,82)];
    init_test(&cd_S2527C1, buf);
    S2527C1 *dp, &lv = *(dp=new (buf) S2527C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,324), "sizeof(S2527C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2527C1)");
    /*is_ambiguous_... S2527C1::S2527C2 */ AMB_check_base_class_offset(lv, (S7246C4*)(S2527C2*), ABISELECT(8,4), "S2527C1");
    /*is_ambiguous_... S2527C1::S2527C2 */ AMB_check_base_class_offset(lv, (S2527C2*), ABISELECT(8,4), "S2527C1");
    /*is_ambiguous_... S2527C1::S2527C4 */ AMB_check_base_class_offset(lv, (S7246C4*)(S2527C4*), ABISELECT(52,48), "S2527C1");
    /*is_ambiguous_... S2527C1::S2527C4 */ AMB_check_base_class_offset(lv, (S7246C4*)(S2527C4*), ABISELECT(52,48), "S2527C1");
    check_base_class_offset(lv, (S7246C4*)(S2527C9*)(S2527C8*), ABISELECT(52,48), "S2527C1");
    /*is_ambiguous_... S2527C1::S2527C4 */ AMB_check_base_class_offset(lv, (S2527C4*), 0, "S2527C1");
    /*is_ambiguous_... S2527C1::S2527C2 */ AMB_check_base_class_offset(lv, (S7246C4*)(S2527C2*), ABISELECT(152,136), "S2527C1");
    /*is_ambiguous_... S2527C5::S2527C2 */ AMB_check_base_class_offset(lv, (S2527C2*)(S2527C5*), ABISELECT(152,136), "S2527C1");
    check_base_class_offset(lv, (S7246C4*)(S2527C6*), ABISELECT(196,180), "S2527C1");
    check_base_class_offset(lv, (S2527C6*)(S2527C5*), ABISELECT(196,180), "S2527C1");
    check_base_class_offset(lv, (S7246C4*)(S2527C2*)(S2527C7*), ABISELECT(236,220), "S2527C1");
    check_base_class_offset(lv, (S2527C2*)(S2527C7*), ABISELECT(236,220), "S2527C1");
    check_base_class_offset(lv, (S2527C7*)(S2527C5*), ABISELECT(236,220), "S2527C1");
    /*is_ambiguous_... S2527C5::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*)(S2527C5*), ABISELECT(104,92), "S2527C1");
    check_base_class_offset(lv, (S2527C5*), ABISELECT(96,88), "S2527C1");
    check_base_class_offset(lv, (S2527C4*)(S2527C8*), ABISELECT(336,308), "S2527C1");
    check_base_class_offset(lv, (S2527C4*)(S2527C9*)(S2527C8*), ABISELECT(336,308), "S2527C1");
    check_base_class_offset(lv, (S2527C9*)(S2527C8*), ABISELECT(336,308), "S2527C1");
    check_base_class_offset(lv, (S2527C8*), ABISELECT(336,308), "S2527C1");
    test_class_info(&lv, &cd_S2527C1);
    dp->~S2527C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2527C1(Test_S2527C1, "S2527C1", ABISELECT(368,324));

#else // __cplusplus

extern void _ZN7S2527C1C1Ev();
extern void _ZN7S2527C1D2Ev();
Name_Map name_map_S2527C1[] = {
  NSPAIR(_ZN7S2527C1C1Ev),
  NSPAIR(_ZN7S2527C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S2527C2;
extern VTBL_ENTRY _ZTI7S2527C2[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S2527C4;
extern VTBL_ENTRY _ZTI7S2527C4[];
extern  VTBL_ENTRY _ZTV7S2527C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2527C4[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S2527C2;
extern VTBL_ENTRY _ZTI7S2527C2[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S2527C6;
extern VTBL_ENTRY _ZTI7S2527C6[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S2527C2;
extern VTBL_ENTRY _ZTI7S2527C2[];
extern Class_Descriptor cd_S2527C7;
extern VTBL_ENTRY _ZTI7S2527C7[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S2527C5;
extern VTBL_ENTRY _ZTI7S2527C5[];
extern  VTBL_ENTRY _ZTV7S2527C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2527C5[];
extern Class_Descriptor cd_S2527C4;
extern VTBL_ENTRY _ZTI7S2527C4[];
extern  VTBL_ENTRY _ZTV7S2527C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2527C4[];
extern Class_Descriptor cd_S2527C9;
extern VTBL_ENTRY _ZTI7S2527C9[];
extern  VTBL_ENTRY _ZTV7S2527C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2527C9[];
extern Class_Descriptor cd_S2527C8;
extern VTBL_ENTRY _ZTI7S2527C8[];
extern  VTBL_ENTRY _ZTV7S2527C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2527C8[];
static Base_Class bases_S2527C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2527C2,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7246C4,    ABISELECT(52,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S2527C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7246C4,    ABISELECT(152,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S2527C2,    ABISELECT(152,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(196,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
    7, //immediately_derived
  0, 0},
  {&cd_S2527C6,    ABISELECT(196,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
    12, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(236,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S2527C2,    ABISELECT(236,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S2527C7,    ABISELECT(236,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(104,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
    12, //immediately_derived
  0, 0},
  {&cd_S2527C5,    ABISELECT(96,88), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S2527C4,    ABISELECT(336,308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S2527C9,    ABISELECT(336,308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S2527C8,    ABISELECT(336,308), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2527C1[];
extern void _ZN7S2527C1D1Ev();
extern void _ZN7S2527C1D0Ev();
extern void ABISELECT(_ZTv0_n48_N7S2527C1D1Ev,_ZTv0_n24_N7S2527C1D1Ev)();
extern void ABISELECT(_ZThn96_N7S2527C1D1Ev,_ZThn88_N7S2527C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2527C1D0Ev,_ZTv0_n24_N7S2527C1D0Ev)();
extern void ABISELECT(_ZThn96_N7S2527C1D0Ev,_ZThn88_N7S2527C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2527C1D1Ev,_ZTv0_n16_N7S2527C1D1Ev)();
extern void ABISELECT(_ZThn336_N7S2527C1D1Ev,_ZThn308_N7S2527C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2527C1D0Ev,_ZTv0_n16_N7S2527C1D0Ev)();
extern void ABISELECT(_ZThn336_N7S2527C1D0Ev,_ZThn308_N7S2527C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2527C1[] = {
  ABISELECT(336,308),
  ABISELECT(336,308),
  ABISELECT(236,220),
  ABISELECT(196,180),
  ABISELECT(152,136),
  ABISELECT(96,88),
  ABISELECT(52,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S2527C1[0]),
  (VTBL_ENTRY)&_ZN7S2527C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2527C1D0Ev,
  ABISELECT(-96,-88),
  ABISELECT(140,132),
  ABISELECT(100,92),
  ABISELECT(56,48),
  ABISELECT(-96,-88),
  (VTBL_ENTRY)&(_ZTI7S2527C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2527C1D1Ev,_ZTv0_n24_N7S2527C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2527C1D0Ev,_ZTv0_n24_N7S2527C1D0Ev),
  0,
  ABISELECT(-336,-308),
  ABISELECT(-284,-260),
  ABISELECT(-336,-308),
  (VTBL_ENTRY)&(_ZTI7S2527C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2527C1D1Ev,_ZTv0_n16_N7S2527C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2527C1D0Ev,_ZTv0_n16_N7S2527C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S2527C1[];
extern void _ZN7S2527C4D1Ev();
extern void _ZN7S2527C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2527C4__A__7S2527C1[] = {
  ABISELECT(52,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S2527C4[0]),
  (VTBL_ENTRY)&_ZN7S2527C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2527C4D0Ev,
};
extern void _ZN7S2527C5D1Ev();
extern void _ZN7S2527C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2527C5__7S2527C1[] = {
  ABISELECT(140,132),
  ABISELECT(100,92),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S2527C5[0]),
  (VTBL_ENTRY)&_ZN7S2527C5D1Ev,
  (VTBL_ENTRY)&_ZN7S2527C5D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S2527C8D1Ev,_ZTv0_n16_N7S2527C8D1Ev)();
extern void _ZN7S2527C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2527C8D0Ev,_ZTv0_n16_N7S2527C8D0Ev)();
extern void _ZN7S2527C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2527C8__7S2527C1[] = {
  0,
  0,
  ABISELECT(-284,-260),
  0,
  (VTBL_ENTRY)&(_ZTI7S2527C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2527C8D1Ev,_ZTv0_n16_N7S2527C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2527C8D0Ev,_ZTv0_n16_N7S2527C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2527C9D1Ev,_ZTv0_n16_N7S2527C9D1Ev)();
extern void _ZN7S2527C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2527C9D0Ev,_ZTv0_n16_N7S2527C9D0Ev)();
extern void _ZN7S2527C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2527C97S2527C8__7S2527C1[] = {
  0,
  0,
  ABISELECT(-284,-260),
  0,
  (VTBL_ENTRY)&(_ZTI7S2527C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2527C9D1Ev,_ZTv0_n16_N7S2527C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2527C9D0Ev,_ZTv0_n16_N7S2527C9D0Ev),
};
extern void _ZN7S2527C4D1Ev();
extern void _ZN7S2527C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2527C4__A1__7S2527C1[] = {
  ABISELECT(-284,-260),
  0,
  (VTBL_ENTRY)&(_ZTI7S2527C4[0]),
  (VTBL_ENTRY)&_ZN7S2527C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2527C4D0Ev,
};
static  VTT_ENTRY vtt_S2527C1[] = {
  {&(_ZTV7S2527C1[9]),  9,26},
  {&(_tg__ZTV7S2527C4__A__7S2527C1[3]),  3,5},
  {&(_ZTV7S2527C1[17]),  17,26},
  {&(_ZTV7S2527C1[24]),  24,26},
  {&(_ZTV7S2527C1[24]),  24,26},
  {&(_tg__ZTV7S2527C5__7S2527C1[5]),  5,7},
  {&(_tg__ZTV7S2527C8__7S2527C1[5]),  5,7},
  {&(_tg__ZTV7S2527C97S2527C8__7S2527C1[5]),  5,7},
  {&(_tg__ZTV7S2527C97S2527C8__7S2527C1[5]),  5,7},
  {&(_tg__ZTV7S2527C8__7S2527C1[5]),  5,7},
  {&(_tg__ZTV7S2527C4__A1__7S2527C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S2527C1[];
extern  VTBL_ENTRY _ZTV7S2527C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2527C1[];
static VTBL_ENTRY alt_thunk_names155[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2527C9D0Ev,_ZTv0_n16_N7S2527C9D0Ev), // 
  (VTBL_ENTRY)_ZN7S2527C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2527C9D1Ev,_ZTv0_n16_N7S2527C9D1Ev), // 
  (VTBL_ENTRY)_ZN7S2527C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2527C8D0Ev,_ZTv0_n16_N7S2527C8D0Ev), // 
  (VTBL_ENTRY)_ZN7S2527C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2527C8D1Ev,_ZTv0_n16_N7S2527C8D1Ev), // 
  (VTBL_ENTRY)_ZN7S2527C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2527C1D0Ev,_ZTv0_n16_N7S2527C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S2527C1D0Ev,_ZThn308_N7S2527C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2527C1D1Ev,_ZTv0_n16_N7S2527C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S2527C1D1Ev,_ZThn308_N7S2527C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2527C1D0Ev,_ZTv0_n24_N7S2527C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2527C1D0Ev,_ZThn88_N7S2527C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2527C1D1Ev,_ZTv0_n24_N7S2527C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2527C1D1Ev,_ZThn88_N7S2527C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2527C1 = {  "S2527C1", // class name
  bases_S2527C1, 16,
  &(vtc_S2527C1[0]), // expected_vtbl_contents
  &(vtt_S2527C1[0]), // expected_vtt_contents
  ABISELECT(368,324), // object size
  NSPAIRA(_ZTI7S2527C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S2527C1),26, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2527C1),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names155,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2710C2  : S3216C8_nt {
};
//SIG(-1 S2710C2) C1{ BC2{ m Fi}}



static void Test_S2710C2()
{
  extern Class_Descriptor cd_S2710C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2710C2, buf);
    S2710C2 &lv = *(new (buf) S2710C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2710C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2710C2)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S2710C2");
    test_class_info(&lv, &cd_S2710C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2710C2(Test_S2710C2, "S2710C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S2710C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2710C2 = {  "S2710C2", // class name
  bases_S2710C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2710C9_nt  {
  int s2710c9f0;
  ::S133C16_nt s2710c9f1;
  void  mf2710c9(); // _ZN10S2710C9_nt8mf2710c9Ev
};
//SIG(-1 S2710C9_nt) C1{ m Fi FC2{ BC3{ m Fp Fi}}}


void  S2710C9_nt ::mf2710c9(){}

//skip512 S2710C9_nt

#else // __cplusplus

Class_Descriptor cd_S2710C9_nt = {  "S2710C9_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(24,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2710C1  : S2710C2 {
  void *s2710c1f0;
  ::S16428C9_nt s2710c1f1;
  void *s2710c1f2;
  char s2710c1f3;
  ::S133C15_nt s2710c1f4;
  ::S2710C9_nt s2710c1f5;
  __tsi64 s2710c1f6;
  int s2710c1f7;
};
//SIG(1 S2710C1) C1{ BC2{ BC3{ m Fi}} Fp FC4{ m FC5{ m Fp Fi[4]}} Fp Fc FC6{ m Fi FC7{ BC8{ m Fp Fi}}} FC9{ m Fi FC7} FL Fi}



static void Test_S2710C1()
{
  extern Class_Descriptor cd_S2710C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,19)];
    init_test(&cd_S2710C1, buf);
    S2710C1 &lv = *(new (buf) S2710C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,72), "sizeof(S2710C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2710C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S2710C2*), 0, "S2710C1");
    check_base_class_offset(lv, (S2710C2*), 0, "S2710C1");
    check_field_offset(lv, s2710c1f0, ABISELECT(8,4), "S2710C1.s2710c1f0");
    check_field_offset(lv, s2710c1f1, ABISELECT(16,8), "S2710C1.s2710c1f1");
    check_field_offset(lv, s2710c1f2, ABISELECT(40,28), "S2710C1.s2710c1f2");
    check_field_offset(lv, s2710c1f3, ABISELECT(48,32), "S2710C1.s2710c1f3");
    check_field_offset(lv, s2710c1f4, ABISELECT(56,36), "S2710C1.s2710c1f4");
    check_field_offset(lv, s2710c1f5, ABISELECT(80,48), "S2710C1.s2710c1f5");
    check_field_offset(lv, s2710c1f6, ABISELECT(104,60), "S2710C1.s2710c1f6");
    check_field_offset(lv, s2710c1f7, ABISELECT(112,68), "S2710C1.s2710c1f7");
    test_class_info(&lv, &cd_S2710C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2710C1(Test_S2710C1, "S2710C1", ABISELECT(120,72));

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S2710C2;
static Base_Class bases_S2710C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2710C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2710C1 = {  "S2710C1", // class name
  bases_S2710C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(120,72), // 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  S1071C3  : S3216C8_nt {
};
//SIG(-1 S1071C3) C1{ BC2{ m Fi}}



static void Test_S1071C3()
{
  extern Class_Descriptor cd_S1071C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S1071C3, buf);
    S1071C3 &lv = *(new (buf) S1071C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S1071C3)");
    check2(__alignof__(lv), 4, "__alignof__(S1071C3)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S1071C3");
    test_class_info(&lv, &cd_S1071C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1071C3(Test_S1071C3, "S1071C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S1071C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1071C3[];
Class_Descriptor cd_S1071C3 = {  "S1071C3", // class name
  bases_S1071C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S1071C3),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  S1071C2  : S1071C3 {
  virtual  ~S1071C2(); // _ZN7S1071C2D1Ev
  virtual void  v2(); // _ZN7S1071C22v2Ev
  S1071C2(); // tgen
};
//SIG(-1 S1071C2) C1{ BC2{ BC3{ m Fi}} vd v1}


 S1071C2 ::~S1071C2(){ note_dtor("S1071C2", this);}
void  S1071C2 ::v2(){vfunc_called(this, "_ZN7S1071C22v2Ev");}
S1071C2 ::S1071C2(){ note_ctor("S1071C2", this);} // tgen

static void Test_S1071C2()
{
  extern Class_Descriptor cd_S1071C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1071C2, buf);
    S1071C2 *dp, &lv = *(dp=new (buf) S1071C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1071C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1071C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1071C3*), ABISELECT(8,4), "S1071C2");
    check_base_class_offset(lv, (S1071C3*), ABISELECT(8,4), "S1071C2");
    test_class_info(&lv, &cd_S1071C2);
    dp->~S1071C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1071C2(Test_S1071C2, "S1071C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1071C2C1Ev();
extern void _ZN7S1071C2D1Ev();
Name_Map name_map_S1071C2[] = {
  NSPAIR(_ZN7S1071C2C1Ev),
  NSPAIR(_ZN7S1071C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1071C3;
extern VTBL_ENTRY _ZTI7S1071C3[];
static Base_Class bases_S1071C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S1071C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1071C2[];
extern void _ZN7S1071C2D1Ev();
extern void _ZN7S1071C2D0Ev();
extern void _ZN7S1071C22v2Ev();
static  VTBL_ENTRY vtc_S1071C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1071C2[0]),
  (VTBL_ENTRY)&_ZN7S1071C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1071C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1071C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S1071C2[];
extern  VTBL_ENTRY _ZTV7S1071C2[];
Class_Descriptor cd_S1071C2 = {  "S1071C2", // class name
  bases_S1071C2, 2,
  &(vtc_S1071C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1071C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1071C2),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  S1071C11_nt  {
  int s1071c11f0;
  void *s1071c11f1[2];
};
//SIG(-1 S1071C11_nt) C1{ Fi Fp[2]}



//skip512 S1071C11_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1071C10  {
  ::S1071C11_nt s1071c10f0;
  void  mf1071c10(); // _ZN8S1071C109mf1071c10Ev
};
//SIG(-1 S1071C10) C1{ m FC2{ Fi Fp[2]}}


void  S1071C10 ::mf1071c10(){}

static void Test_S1071C10()
{
  {
    init_simple_test("S1071C10");
    S1071C10 lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1071C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1071C10)");
    check_field_offset(lv, s1071c10f0, 0, "S1071C10.s1071c10f0");
  }
}
static Arrange_To_Call_Me vS1071C10(Test_S1071C10, "S1071C10", ABISELECT(24,12));

#else // __cplusplus

Class_Descriptor cd_S1071C10 = {  "S1071C10", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(24,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1071C9  : S1071C10 {
};
//SIG(-1 S1071C9) C1{ BC2{ m FC3{ Fi Fp[2]}}}



static void Test_S1071C9()
{
  extern Class_Descriptor cd_S1071C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1071C9, buf);
    S1071C9 &lv = *(new (buf) S1071C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1071C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1071C9)");
    check_base_class_offset(lv, (S1071C10*), 0, "S1071C9");
    test_class_info(&lv, &cd_S1071C9);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1071C9(Test_S1071C9, "S1071C9", ABISELECT(24,12));

#else // __cplusplus

extern Class_Descriptor cd_S1071C10;
static Base_Class bases_S1071C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1071C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S1071C9 = {  "S1071C9", // class name
  bases_S1071C9, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(24,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1071C1  : S1071C2 {
  void *s1071c1f0;
  ::S16428C9_nt s1071c1f1;
  ::S15922C11_nt s1071c1f2;
  ::S1071C9 s1071c1f3;
  virtual  ~S1071C1(); // _ZN7S1071C1D1Ev
  virtual void  v1(); // _ZN7S1071C12v1Ev
  S1071C1(); // tgen
};
//SIG(1 S1071C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v2} vd v1 Fp FC5{ m FC6{ m Fp Fi[4]}} FC7{ m FC6} FC8{ BC9{ m FC10{ Fi Fp[2]}}}}


 S1071C1 ::~S1071C1(){ note_dtor("S1071C1", this);}
void  S1071C1 ::v1(){vfunc_called(this, "_ZN7S1071C12v1Ev");}
S1071C1 ::S1071C1(){ note_ctor("S1071C1", this);} // tgen

static void Test_S1071C1()
{
  extern Class_Descriptor cd_S1071C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,17)];
    init_test(&cd_S1071C1, buf);
    S1071C1 *dp, &lv = *(dp=new (buf) S1071C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,64), "sizeof(S1071C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1071C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1071C3*)(S1071C2*), ABISELECT(8,4), "S1071C1");
    check_base_class_offset(lv, (S1071C3*)(S1071C2*), ABISELECT(8,4), "S1071C1");
    check_base_class_offset(lv, (S1071C2*), 0, "S1071C1");
    check_field_offset(lv, s1071c1f0, ABISELECT(16,8), "S1071C1.s1071c1f0");
    check_field_offset(lv, s1071c1f1, ABISELECT(24,12), "S1071C1.s1071c1f1");
    check_field_offset(lv, s1071c1f2, ABISELECT(48,32), "S1071C1.s1071c1f2");
    check_field_offset(lv, s1071c1f3, ABISELECT(72,52), "S1071C1.s1071c1f3");
    test_class_info(&lv, &cd_S1071C1);
    dp->~S1071C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1071C1(Test_S1071C1, "S1071C1", ABISELECT(96,64));

#else // __cplusplus

extern void _ZN7S1071C1C1Ev();
extern void _ZN7S1071C1D1Ev();
Name_Map name_map_S1071C1[] = {
  NSPAIR(_ZN7S1071C1C1Ev),
  NSPAIR(_ZN7S1071C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1071C3;
extern VTBL_ENTRY _ZTI7S1071C3[];
extern Class_Descriptor cd_S1071C2;
extern VTBL_ENTRY _ZTI7S1071C2[];
extern  VTBL_ENTRY _ZTV7S1071C2[];
static Base_Class bases_S1071C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S1071C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1071C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1071C1[];
extern void _ZN7S1071C1D1Ev();
extern void _ZN7S1071C1D0Ev();
extern void _ZN7S1071C22v2Ev();
extern void _ZN7S1071C12v1Ev();
static  VTBL_ENTRY vtc_S1071C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1071C1[0]),
  (VTBL_ENTRY)&_ZN7S1071C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1071C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1071C22v2Ev,
  (VTBL_ENTRY)&_ZN7S1071C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S1071C1[];
extern  VTBL_ENTRY _ZTV7S1071C1[];
Class_Descriptor cd_S1071C1 = {  "S1071C1", // class name
  bases_S1071C1, 3,
  &(vtc_S1071C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,64), // object size
  NSPAIRA(_ZTI7S1071C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1071C1),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  S4147C3  {
  ::S4677C18_nt s4147c3f0;
  int s4147c3f1;
  void *s4147c3f2[4];
  virtual  ~S4147C3(); // _ZN7S4147C3D1Ev
  virtual void  v1(); // _ZN7S4147C32v1Ev
  virtual void  v2(); // _ZN7S4147C32v2Ev
  virtual void  v3(); // _ZN7S4147C32v3Ev
  virtual void  v4(); // _ZN7S4147C32v4Ev
  S4147C3(); // tgen
};
//SIG(-1 S4147C3) C1{ vd v1 v2 v3 v4 FC2{ m FC3{ m Fp Fi FC4{ m}} Fi} Fi Fp[4]}


 S4147C3 ::~S4147C3(){ note_dtor("S4147C3", this);}
void  S4147C3 ::v1(){vfunc_called(this, "_ZN7S4147C32v1Ev");}
void  S4147C3 ::v2(){vfunc_called(this, "_ZN7S4147C32v2Ev");}
void  S4147C3 ::v3(){vfunc_called(this, "_ZN7S4147C32v3Ev");}
void  S4147C3 ::v4(){vfunc_called(this, "_ZN7S4147C32v4Ev");}
S4147C3 ::S4147C3(){ note_ctor("S4147C3", this);} // tgen

static void Test_S4147C3()
{
  extern Class_Descriptor cd_S4147C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S4147C3, buf);
    S4147C3 *dp, &lv = *(dp=new (buf) S4147C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S4147C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4147C3)");
    check_field_offset(lv, s4147c3f0, ABISELECT(8,4), "S4147C3.s4147c3f0");
    check_field_offset(lv, s4147c3f1, ABISELECT(32,20), "S4147C3.s4147c3f1");
    check_field_offset(lv, s4147c3f2, ABISELECT(40,24), "S4147C3.s4147c3f2");
    test_class_info(&lv, &cd_S4147C3);
    dp->~S4147C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4147C3(Test_S4147C3, "S4147C3", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN7S4147C3C1Ev();
extern void _ZN7S4147C3D1Ev();
Name_Map name_map_S4147C3[] = {
  NSPAIR(_ZN7S4147C3C1Ev),
  NSPAIR(_ZN7S4147C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4147C3[];
extern void _ZN7S4147C3D1Ev();
extern void _ZN7S4147C3D0Ev();
extern void _ZN7S4147C32v1Ev();
extern void _ZN7S4147C32v2Ev();
extern void _ZN7S4147C32v3Ev();
extern void _ZN7S4147C32v4Ev();
static  VTBL_ENTRY vtc_S4147C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4147C3[0]),
  (VTBL_ENTRY)&_ZN7S4147C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4147C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4147C32v1Ev,
  (VTBL_ENTRY)&_ZN7S4147C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4147C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4147C32v4Ev,
};
extern VTBL_ENTRY _ZTI7S4147C3[];
extern  VTBL_ENTRY _ZTV7S4147C3[];
Class_Descriptor cd_S4147C3 = {  "S4147C3", // class name
  0,0,//no base classes
  &(vtc_S4147C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI7S4147C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4147C3),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4147C2  : S4147C3 {
  void *s4147c2f0;
  char s4147c2f1[2];
  virtual  ~S4147C2(); // _ZN7S4147C2D1Ev
  virtual void  v5(); // _ZN7S4147C22v5Ev
  virtual void  v6(); // _ZN7S4147C22v6Ev
  virtual void  v7(); // _ZN7S4147C22v7Ev
  virtual void  v8(); // _ZN7S4147C22v8Ev
  S4147C2(); // tgen
};
//SIG(-1 S4147C2) C1{ BC2{ vd v5 v6 v7 v8 FC3{ m FC4{ m Fp Fi FC5{ m}} Fi} Fi Fp[4]} vd v1 v2 v3 v4 Fp Fc[2]}


 S4147C2 ::~S4147C2(){ note_dtor("S4147C2", this);}
void  S4147C2 ::v5(){vfunc_called(this, "_ZN7S4147C22v5Ev");}
void  S4147C2 ::v6(){vfunc_called(this, "_ZN7S4147C22v6Ev");}
void  S4147C2 ::v7(){vfunc_called(this, "_ZN7S4147C22v7Ev");}
void  S4147C2 ::v8(){vfunc_called(this, "_ZN7S4147C22v8Ev");}
S4147C2 ::S4147C2(){ note_ctor("S4147C2", this);} // tgen

static void Test_S4147C2()
{
  extern Class_Descriptor cd_S4147C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,13)];
    init_test(&cd_S4147C2, buf);
    S4147C2 *dp, &lv = *(dp=new (buf) S4147C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,48), "sizeof(S4147C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4147C2)");
    check_base_class_offset(lv, (S4147C3*), 0, "S4147C2");
    check_field_offset(lv, s4147c2f0, ABISELECT(72,40), "S4147C2.s4147c2f0");
    check_field_offset(lv, s4147c2f1, ABISELECT(80,44), "S4147C2.s4147c2f1");
    test_class_info(&lv, &cd_S4147C2);
    dp->~S4147C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4147C2(Test_S4147C2, "S4147C2", ABISELECT(88,48));

#else // __cplusplus

extern void _ZN7S4147C2C1Ev();
extern void _ZN7S4147C2D1Ev();
Name_Map name_map_S4147C2[] = {
  NSPAIR(_ZN7S4147C2C1Ev),
  NSPAIR(_ZN7S4147C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4147C3;
extern VTBL_ENTRY _ZTI7S4147C3[];
extern  VTBL_ENTRY _ZTV7S4147C3[];
static Base_Class bases_S4147C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4147C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4147C2[];
extern void _ZN7S4147C2D1Ev();
extern void _ZN7S4147C2D0Ev();
extern void _ZN7S4147C32v1Ev();
extern void _ZN7S4147C32v2Ev();
extern void _ZN7S4147C32v3Ev();
extern void _ZN7S4147C32v4Ev();
extern void _ZN7S4147C22v5Ev();
extern void _ZN7S4147C22v6Ev();
extern void _ZN7S4147C22v7Ev();
extern void _ZN7S4147C22v8Ev();
static  VTBL_ENTRY vtc_S4147C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4147C2[0]),
  (VTBL_ENTRY)&_ZN7S4147C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4147C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4147C32v1Ev,
  (VTBL_ENTRY)&_ZN7S4147C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4147C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4147C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4147C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4147C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4147C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4147C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S4147C2[];
extern  VTBL_ENTRY _ZTV7S4147C2[];
Class_Descriptor cd_S4147C2 = {  "S4147C2", // class name
  bases_S4147C2, 1,
  &(vtc_S4147C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,48), // object size
  NSPAIRA(_ZTI7S4147C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4147C2),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  S4147C1  : S4147C2 {
  int s4147c1f0;
  ::S4145C8_nt s4147c1f1;
  virtual  ~S4147C1(); // _ZN7S4147C1D1Ev
  S4147C1(); // tgen
};
//SIG(1 S4147C1) C1{ BC2{ BC3{ vd v1 v2 v3 v4 FC4{ m FC5{ m Fp Fi FC6{ m}} Fi} Fi Fp[4]} vd v5 v6 v7 v8 Fp Fc[2]} vd Fi FC7{ vd m Fp}}


 S4147C1 ::~S4147C1(){ note_dtor("S4147C1", this);}
S4147C1 ::S4147C1(){ note_ctor("S4147C1", this);} // tgen

static void Test_S4147C1()
{
  extern Class_Descriptor cd_S4147C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,16)];
    init_test(&cd_S4147C1, buf);
    S4147C1 *dp, &lv = *(dp=new (buf) S4147C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,60), "sizeof(S4147C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4147C1)");
    check_base_class_offset(lv, (S4147C3*)(S4147C2*), 0, "S4147C1");
    check_base_class_offset(lv, (S4147C2*), 0, "S4147C1");
    check_field_offset(lv, s4147c1f0, ABISELECT(84,48), "S4147C1.s4147c1f0");
    check_field_offset(lv, s4147c1f1, ABISELECT(88,52), "S4147C1.s4147c1f1");
    test_class_info(&lv, &cd_S4147C1);
    dp->~S4147C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4147C1(Test_S4147C1, "S4147C1", ABISELECT(104,60));

#else // __cplusplus

extern void _ZN7S4147C1C1Ev();
extern void _ZN7S4147C1D1Ev();
Name_Map name_map_S4147C1[] = {
  NSPAIR(_ZN7S4147C1C1Ev),
  NSPAIR(_ZN7S4147C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4147C3;
extern VTBL_ENTRY _ZTI7S4147C3[];
extern  VTBL_ENTRY _ZTV7S4147C3[];
extern Class_Descriptor cd_S4147C2;
extern VTBL_ENTRY _ZTI7S4147C2[];
extern  VTBL_ENTRY _ZTV7S4147C2[];
static Base_Class bases_S4147C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4147C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4147C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S4147C1[];
extern void _ZN7S4147C1D1Ev();
extern void _ZN7S4147C1D0Ev();
extern void _ZN7S4147C32v1Ev();
extern void _ZN7S4147C32v2Ev();
extern void _ZN7S4147C32v3Ev();
extern void _ZN7S4147C32v4Ev();
extern void _ZN7S4147C22v5Ev();
extern void _ZN7S4147C22v6Ev();
extern void _ZN7S4147C22v7Ev();
extern void _ZN7S4147C22v8Ev();
static  VTBL_ENTRY vtc_S4147C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4147C1[0]),
  (VTBL_ENTRY)&_ZN7S4147C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4147C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4147C32v1Ev,
  (VTBL_ENTRY)&_ZN7S4147C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4147C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4147C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4147C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4147C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4147C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4147C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S4147C1[];
extern  VTBL_ENTRY _ZTV7S4147C1[];
Class_Descriptor cd_S4147C1 = {  "S4147C1", // class name
  bases_S4147C1, 2,
  &(vtc_S4147C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,60), // object size
  NSPAIRA(_ZTI7S4147C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4147C1),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  S15143C3  : S15917C12 {
  ::S7944C15_nt s15143c3f0;
};
//SIG(-1 S15143C3) C1{ BC2{ m Fp Fi} FC3{ Fi[4]}}



static void Test_S15143C3()
{
  extern Class_Descriptor cd_S15143C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S15143C3, buf);
    S15143C3 &lv = *(new (buf) S15143C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S15143C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15143C3)");
    check_base_class_offset(lv, (S15917C12*), 0, "S15143C3");
    check_field_offset(lv, s15143c3f0, ABISELECT(16,8), "S15143C3.s15143c3f0");
    test_class_info(&lv, &cd_S15143C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15143C3(Test_S15143C3, "S15143C3", ABISELECT(32,24));

#else // __cplusplus

extern Class_Descriptor cd_S15917C12;
static Base_Class bases_S15143C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S15917C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S15143C3 = {  "S15143C3", // class name
  bases_S15143C3, 1,
  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  S15143C2  {
  int s15143c2f0;
  ::S15143C3 s15143c2f1;
  void  mf15143c2(); // _ZN8S15143C29mf15143c2Ev
};
//SIG(-1 S15143C2) C1{ m Fi FC2{ BC3{ m Fp Fi} FC4{ Fi[4]}}}


void  S15143C2 ::mf15143c2(){}

static void Test_S15143C2()
{
  {
    init_simple_test("S15143C2");
    S15143C2 lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S15143C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15143C2)");
    check_field_offset(lv, s15143c2f0, 0, "S15143C2.s15143c2f0");
    check_field_offset(lv, s15143c2f1, ABISELECT(8,4), "S15143C2.s15143c2f1");
  }
}
static Arrange_To_Call_Me vS15143C2(Test_S15143C2, "S15143C2", ABISELECT(40,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15143C1  {
  unsigned char s15143c1f0:1;
  unsigned char s15143c1f1:1;
  unsigned char s15143c1f2:1;
  unsigned char s15143c1f3:1;
  int s15143c1f4[2];
  void *s15143c1f5;
  ::S15143C2 s15143c1f6;
  ::S2710C9_nt s15143c1f7;
  void *s15143c1f8[7];
  void  mf15143c1(); // _ZN8S15143C19mf15143c1Ev
};
//SIG(1 S15143C1) C1{ m Fc:1 Fc:1 Fc:1 Fc:1 Fi[2] Fp FC2{ m Fi FC3{ BC4{ m Fp Fi} FC5{ Fi[4]}}} FC6{ m Fi FC7{ BC8{ m Fp Fi}}} Fp[7]}


void  S15143C1 ::mf15143c1(){}

static void Test_S15143C1()
{
  {
    init_simple_test("S15143C1");
    static S15143C1 lv;
    check2(sizeof(lv), ABISELECT(144,84), "sizeof(S15143C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15143C1)");
    set_bf_and_test(lv, s15143c1f0, 0, 0, 1, 1, "S15143C1");
    set_bf_and_test(lv, s15143c1f1, 0, 1, 1, 1, "S15143C1");
    set_bf_and_test(lv, s15143c1f2, 0, 2, 1, 1, "S15143C1");
    set_bf_and_test(lv, s15143c1f3, 0, 3, 1, 1, "S15143C1");
    check_field_offset(lv, s15143c1f4, 4, "S15143C1.s15143c1f4");
    check_field_offset(lv, s15143c1f5, ABISELECT(16,12), "S15143C1.s15143c1f5");
    check_field_offset(lv, s15143c1f6, ABISELECT(24,16), "S15143C1.s15143c1f6");
    check_field_offset(lv, s15143c1f7, ABISELECT(64,44), "S15143C1.s15143c1f7");
    check_field_offset(lv, s15143c1f8, ABISELECT(88,56), "S15143C1.s15143c1f8");
  }
}
static Arrange_To_Call_Me vS15143C1(Test_S15143C1, "S15143C1", ABISELECT(144,84));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2678C2  : S3216C8_nt {
};
//SIG(-1 S2678C2) C1{ BC2{ m Fi}}



static void Test_S2678C2()
{
  extern Class_Descriptor cd_S2678C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2678C2, buf);
    S2678C2 &lv = *(new (buf) S2678C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2678C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2678C2)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S2678C2");
    test_class_info(&lv, &cd_S2678C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2678C2(Test_S2678C2, "S2678C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S2678C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2678C2 = {  "S2678C2", // class name
  bases_S2678C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2678C1  : S2678C2 {
  int s2678c1f0;
  ::S2710C9_nt s2678c1f1;
  ::S16428C9_nt s2678c1f2;
  ::S133C15_nt s2678c1f3;
  void *s2678c1f4;
  char s2678c1f5;
};
//SIG(1 S2678C1) C1{ BC2{ BC3{ m Fi}} Fi FC4{ m Fi FC5{ BC6{ m Fp Fi}}} FC7{ m FC8{ m Fp Fi[4]}} FC9{ m Fi FC5} Fp Fc}



static void Test_S2678C1()
{
  extern Class_Descriptor cd_S2678C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S2678C1, buf);
    S2678C1 &lv = *(new (buf) S2678C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S2678C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2678C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S2678C2*), 0, "S2678C1");
    check_base_class_offset(lv, (S2678C2*), 0, "S2678C1");
    check_field_offset(lv, s2678c1f0, 4, "S2678C1.s2678c1f0");
    check_field_offset(lv, s2678c1f1, 8, "S2678C1.s2678c1f1");
    check_field_offset(lv, s2678c1f2, ABISELECT(32,20), "S2678C1.s2678c1f2");
    check_field_offset(lv, s2678c1f3, ABISELECT(56,40), "S2678C1.s2678c1f3");
    check_field_offset(lv, s2678c1f4, ABISELECT(80,52), "S2678C1.s2678c1f4");
    check_field_offset(lv, s2678c1f5, ABISELECT(88,56), "S2678C1.s2678c1f5");
    test_class_info(&lv, &cd_S2678C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2678C1(Test_S2678C1, "S2678C1", ABISELECT(96,60));

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S2678C2;
static Base_Class bases_S2678C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2678C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2678C1 = {  "S2678C1", // class name
  bases_S2678C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(96,60), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2644C2  : S3216C8_nt {
};
//SIG(-1 S2644C2) C1{ BC2{ m Fi}}



static void Test_S2644C2()
{
  extern Class_Descriptor cd_S2644C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2644C2, buf);
    S2644C2 &lv = *(new (buf) S2644C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2644C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2644C2)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S2644C2");
    test_class_info(&lv, &cd_S2644C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2644C2(Test_S2644C2, "S2644C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S2644C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2644C2 = {  "S2644C2", // class name
  bases_S2644C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2644C10_nt  {
  int s2644c10f0;
  ::S133C16_nt s2644c10f1;
  void  mf2644c10(); // _ZN11S2644C10_nt9mf2644c10Ev
};
//SIG(-1 S2644C10_nt) C1{ m Fi FC2{ BC3{ m Fp Fi}}}


void  S2644C10_nt ::mf2644c10(){}

//skip512 S2644C10_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2644C1  : S2644C2 {
  ::S2710C9_nt s2644c1f0;
  ::S133C15_nt s2644c1f1;
  ::S2644C10_nt s2644c1f2;
};
//SIG(1 S2644C1) C1{ BC2{ BC3{ m Fi}} FC4{ m Fi FC5{ BC6{ m Fp Fi}}} FC7{ m Fi FC5} FC8{ m Fi FC5}}



static void Test_S2644C1()
{
  extern Class_Descriptor cd_S2644C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S2644C1, buf);
    S2644C1 &lv = *(new (buf) S2644C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S2644C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2644C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S2644C2*), 0, "S2644C1");
    check_base_class_offset(lv, (S2644C2*), 0, "S2644C1");
    check_field_offset(lv, s2644c1f0, ABISELECT(8,4), "S2644C1.s2644c1f0");
    check_field_offset(lv, s2644c1f1, ABISELECT(32,16), "S2644C1.s2644c1f1");
    check_field_offset(lv, s2644c1f2, ABISELECT(56,28), "S2644C1.s2644c1f2");
    test_class_info(&lv, &cd_S2644C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2644C1(Test_S2644C1, "S2644C1", ABISELECT(80,40));

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S2644C2;
static Base_Class bases_S2644C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2644C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2644C1 = {  "S2644C1", // class name
  bases_S2644C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(80,40), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4503C3  {
  ::S4677C18_nt s4503c3f0;
  int s4503c3f1;
  void *s4503c3f2[4];
  virtual  ~S4503C3(); // _ZN7S4503C3D1Ev
  virtual void  v2(); // _ZN7S4503C32v2Ev
  virtual void  v3(); // _ZN7S4503C32v3Ev
  virtual void  v4(); // _ZN7S4503C32v4Ev
  virtual void  v5(); // _ZN7S4503C32v5Ev
  S4503C3(); // tgen
};
//SIG(-1 S4503C3) C1{ vd v1 v2 v3 v4 FC2{ m FC3{ m Fp Fi FC4{ m}} Fi} Fi Fp[4]}


 S4503C3 ::~S4503C3(){ note_dtor("S4503C3", this);}
void  S4503C3 ::v2(){vfunc_called(this, "_ZN7S4503C32v2Ev");}
void  S4503C3 ::v3(){vfunc_called(this, "_ZN7S4503C32v3Ev");}
void  S4503C3 ::v4(){vfunc_called(this, "_ZN7S4503C32v4Ev");}
void  S4503C3 ::v5(){vfunc_called(this, "_ZN7S4503C32v5Ev");}
S4503C3 ::S4503C3(){ note_ctor("S4503C3", this);} // tgen

static void Test_S4503C3()
{
  extern Class_Descriptor cd_S4503C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S4503C3, buf);
    S4503C3 *dp, &lv = *(dp=new (buf) S4503C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S4503C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4503C3)");
    check_field_offset(lv, s4503c3f0, ABISELECT(8,4), "S4503C3.s4503c3f0");
    check_field_offset(lv, s4503c3f1, ABISELECT(32,20), "S4503C3.s4503c3f1");
    check_field_offset(lv, s4503c3f2, ABISELECT(40,24), "S4503C3.s4503c3f2");
    test_class_info(&lv, &cd_S4503C3);
    dp->~S4503C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4503C3(Test_S4503C3, "S4503C3", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN7S4503C3C1Ev();
extern void _ZN7S4503C3D1Ev();
Name_Map name_map_S4503C3[] = {
  NSPAIR(_ZN7S4503C3C1Ev),
  NSPAIR(_ZN7S4503C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4503C3[];
extern void _ZN7S4503C3D1Ev();
extern void _ZN7S4503C3D0Ev();
extern void _ZN7S4503C32v2Ev();
extern void _ZN7S4503C32v3Ev();
extern void _ZN7S4503C32v4Ev();
extern void _ZN7S4503C32v5Ev();
static  VTBL_ENTRY vtc_S4503C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4503C3[0]),
  (VTBL_ENTRY)&_ZN7S4503C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4503C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4503C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4503C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4503C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4503C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4503C3[];
extern  VTBL_ENTRY _ZTV7S4503C3[];
Class_Descriptor cd_S4503C3 = {  "S4503C3", // class name
  0,0,//no base classes
  &(vtc_S4503C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI7S4503C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4503C3),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4503C2  : S4503C3 {
  void *s4503c2f0;
  char s4503c2f1[2];
  virtual  ~S4503C2(); // _ZN7S4503C2D1Ev
  virtual void  v6(); // _ZN7S4503C22v6Ev
  virtual void  v7(); // _ZN7S4503C22v7Ev
  virtual void  v8(); // _ZN7S4503C22v8Ev
  virtual void  v9(); // _ZN7S4503C22v9Ev
  S4503C2(); // tgen
};
//SIG(-1 S4503C2) C1{ BC2{ vd v5 v6 v7 v8 FC3{ m FC4{ m Fp Fi FC5{ m}} Fi} Fi Fp[4]} vd v1 v2 v3 v4 Fp Fc[2]}


 S4503C2 ::~S4503C2(){ note_dtor("S4503C2", this);}
void  S4503C2 ::v6(){vfunc_called(this, "_ZN7S4503C22v6Ev");}
void  S4503C2 ::v7(){vfunc_called(this, "_ZN7S4503C22v7Ev");}
void  S4503C2 ::v8(){vfunc_called(this, "_ZN7S4503C22v8Ev");}
void  S4503C2 ::v9(){vfunc_called(this, "_ZN7S4503C22v9Ev");}
S4503C2 ::S4503C2(){ note_ctor("S4503C2", this);} // tgen

static void Test_S4503C2()
{
  extern Class_Descriptor cd_S4503C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,13)];
    init_test(&cd_S4503C2, buf);
    S4503C2 *dp, &lv = *(dp=new (buf) S4503C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,48), "sizeof(S4503C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4503C2)");
    check_base_class_offset(lv, (S4503C3*), 0, "S4503C2");
    check_field_offset(lv, s4503c2f0, ABISELECT(72,40), "S4503C2.s4503c2f0");
    check_field_offset(lv, s4503c2f1, ABISELECT(80,44), "S4503C2.s4503c2f1");
    test_class_info(&lv, &cd_S4503C2);
    dp->~S4503C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4503C2(Test_S4503C2, "S4503C2", ABISELECT(88,48));

#else // __cplusplus

extern void _ZN7S4503C2C1Ev();
extern void _ZN7S4503C2D1Ev();
Name_Map name_map_S4503C2[] = {
  NSPAIR(_ZN7S4503C2C1Ev),
  NSPAIR(_ZN7S4503C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4503C3;
extern VTBL_ENTRY _ZTI7S4503C3[];
extern  VTBL_ENTRY _ZTV7S4503C3[];
static Base_Class bases_S4503C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4503C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4503C2[];
extern void _ZN7S4503C2D1Ev();
extern void _ZN7S4503C2D0Ev();
extern void _ZN7S4503C32v2Ev();
extern void _ZN7S4503C32v3Ev();
extern void _ZN7S4503C32v4Ev();
extern void _ZN7S4503C32v5Ev();
extern void _ZN7S4503C22v6Ev();
extern void _ZN7S4503C22v7Ev();
extern void _ZN7S4503C22v8Ev();
extern void _ZN7S4503C22v9Ev();
static  VTBL_ENTRY vtc_S4503C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4503C2[0]),
  (VTBL_ENTRY)&_ZN7S4503C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4503C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4503C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4503C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4503C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4503C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4503C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4503C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4503C22v8Ev,
  (VTBL_ENTRY)&_ZN7S4503C22v9Ev,
};
extern VTBL_ENTRY _ZTI7S4503C2[];
extern  VTBL_ENTRY _ZTV7S4503C2[];
Class_Descriptor cd_S4503C2 = {  "S4503C2", // class name
  bases_S4503C2, 1,
  &(vtc_S4503C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,48), // object size
  NSPAIRA(_ZTI7S4503C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4503C2),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  S4503C1  : S4503C2 {
  void *s4503c1f0[2];
  char s4503c1f1;
  virtual  ~S4503C1(); // _ZN7S4503C1D1Ev
  virtual void  v1(); // _ZN7S4503C12v1Ev
  S4503C1(); // tgen
};
//SIG(1 S4503C1) C1{ BC2{ BC3{ vd v2 v3 v4 v5 FC4{ m FC5{ m Fp Fi FC6{ m}} Fi} Fi Fp[4]} vd v6 v7 v8 v9 Fp Fc[2]} vd v1 Fp[2] Fc}


 S4503C1 ::~S4503C1(){ note_dtor("S4503C1", this);}
void  S4503C1 ::v1(){vfunc_called(this, "_ZN7S4503C12v1Ev");}
S4503C1 ::S4503C1(){ note_ctor("S4503C1", this);} // tgen

static void Test_S4503C1()
{
  extern Class_Descriptor cd_S4503C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,16)];
    init_test(&cd_S4503C1, buf);
    S4503C1 *dp, &lv = *(dp=new (buf) S4503C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S4503C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4503C1)");
    check_base_class_offset(lv, (S4503C3*)(S4503C2*), 0, "S4503C1");
    check_base_class_offset(lv, (S4503C2*), 0, "S4503C1");
    check_field_offset(lv, s4503c1f0, ABISELECT(88,48), "S4503C1.s4503c1f0");
    check_field_offset(lv, s4503c1f1, ABISELECT(104,56), "S4503C1.s4503c1f1");
    test_class_info(&lv, &cd_S4503C1);
    dp->~S4503C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4503C1(Test_S4503C1, "S4503C1", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN7S4503C1C1Ev();
extern void _ZN7S4503C1D1Ev();
Name_Map name_map_S4503C1[] = {
  NSPAIR(_ZN7S4503C1C1Ev),
  NSPAIR(_ZN7S4503C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4503C3;
extern VTBL_ENTRY _ZTI7S4503C3[];
extern  VTBL_ENTRY _ZTV7S4503C3[];
extern Class_Descriptor cd_S4503C2;
extern VTBL_ENTRY _ZTI7S4503C2[];
extern  VTBL_ENTRY _ZTV7S4503C2[];
static Base_Class bases_S4503C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4503C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4503C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S4503C1[];
extern void _ZN7S4503C1D1Ev();
extern void _ZN7S4503C1D0Ev();
extern void _ZN7S4503C32v2Ev();
extern void _ZN7S4503C32v3Ev();
extern void _ZN7S4503C32v4Ev();
extern void _ZN7S4503C32v5Ev();
extern void _ZN7S4503C22v6Ev();
extern void _ZN7S4503C22v7Ev();
extern void _ZN7S4503C22v8Ev();
extern void _ZN7S4503C22v9Ev();
extern void _ZN7S4503C12v1Ev();
static  VTBL_ENTRY vtc_S4503C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4503C1[0]),
  (VTBL_ENTRY)&_ZN7S4503C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4503C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4503C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4503C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4503C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4503C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4503C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4503C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4503C22v8Ev,
  (VTBL_ENTRY)&_ZN7S4503C22v9Ev,
  (VTBL_ENTRY)&_ZN7S4503C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4503C1[];
extern  VTBL_ENTRY _ZTV7S4503C1[];
Class_Descriptor cd_S4503C1 = {  "S4503C1", // class name
  bases_S4503C1, 2,
  &(vtc_S4503C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI7S4503C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4503C1),13, //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  S1124C3  : S3216C8_nt {
};
//SIG(-1 S1124C3) C1{ BC2{ m Fi}}



static void Test_S1124C3()
{
  extern Class_Descriptor cd_S1124C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S1124C3, buf);
    S1124C3 &lv = *(new (buf) S1124C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S1124C3)");
    check2(__alignof__(lv), 4, "__alignof__(S1124C3)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S1124C3");
    test_class_info(&lv, &cd_S1124C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1124C3(Test_S1124C3, "S1124C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S1124C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1124C3[];
Class_Descriptor cd_S1124C3 = {  "S1124C3", // class name
  bases_S1124C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S1124C3),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  S1124C2  : S1124C3 {
  int s1124c2f0;
  virtual  ~S1124C2(); // _ZN7S1124C2D1Ev
  virtual void  v8(); // _ZN7S1124C22v8Ev
  virtual void  v9(); // _ZN7S1124C22v9Ev
  virtual void  v10(); // _ZN7S1124C23v10Ev
  virtual void  v11(); // _ZN7S1124C23v11Ev
  virtual void  v12(); // _ZN7S1124C23v12Ev
  virtual void  v13(); // _ZN7S1124C23v13Ev
  virtual void  v14(); // _ZN7S1124C23v14Ev
  virtual void  v15(); // _ZN7S1124C23v15Ev
  virtual void  v16(); // _ZN7S1124C23v16Ev
  virtual void  v17(); // _ZN7S1124C23v17Ev
  virtual void  v18(); // _ZN7S1124C23v18Ev
  virtual void  v19(); // _ZN7S1124C23v19Ev
  virtual void  v20(); // _ZN7S1124C23v20Ev
  S1124C2(); // tgen
};
//SIG(-1 S1124C2) C1{ BC2{ BC3{ m Fi}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 Fi}


 S1124C2 ::~S1124C2(){ note_dtor("S1124C2", this);}
void  S1124C2 ::v8(){vfunc_called(this, "_ZN7S1124C22v8Ev");}
void  S1124C2 ::v9(){vfunc_called(this, "_ZN7S1124C22v9Ev");}
void  S1124C2 ::v10(){vfunc_called(this, "_ZN7S1124C23v10Ev");}
void  S1124C2 ::v11(){vfunc_called(this, "_ZN7S1124C23v11Ev");}
void  S1124C2 ::v12(){vfunc_called(this, "_ZN7S1124C23v12Ev");}
void  S1124C2 ::v13(){vfunc_called(this, "_ZN7S1124C23v13Ev");}
void  S1124C2 ::v14(){vfunc_called(this, "_ZN7S1124C23v14Ev");}
void  S1124C2 ::v15(){vfunc_called(this, "_ZN7S1124C23v15Ev");}
void  S1124C2 ::v16(){vfunc_called(this, "_ZN7S1124C23v16Ev");}
void  S1124C2 ::v17(){vfunc_called(this, "_ZN7S1124C23v17Ev");}
void  S1124C2 ::v18(){vfunc_called(this, "_ZN7S1124C23v18Ev");}
void  S1124C2 ::v19(){vfunc_called(this, "_ZN7S1124C23v19Ev");}
void  S1124C2 ::v20(){vfunc_called(this, "_ZN7S1124C23v20Ev");}
S1124C2 ::S1124C2(){ note_ctor("S1124C2", this);} // tgen

static void Test_S1124C2()
{
  extern Class_Descriptor cd_S1124C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1124C2, buf);
    S1124C2 *dp, &lv = *(dp=new (buf) S1124C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1124C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1124C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1124C3*), ABISELECT(8,4), "S1124C2");
    check_base_class_offset(lv, (S1124C3*), ABISELECT(8,4), "S1124C2");
    check_field_offset(lv, s1124c2f0, ABISELECT(12,8), "S1124C2.s1124c2f0");
    test_class_info(&lv, &cd_S1124C2);
    dp->~S1124C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1124C2(Test_S1124C2, "S1124C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S1124C2C1Ev();
extern void _ZN7S1124C2D1Ev();
Name_Map name_map_S1124C2[] = {
  NSPAIR(_ZN7S1124C2C1Ev),
  NSPAIR(_ZN7S1124C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1124C3;
extern VTBL_ENTRY _ZTI7S1124C3[];
static Base_Class bases_S1124C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S1124C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1124C2[];
extern void _ZN7S1124C2D1Ev();
extern void _ZN7S1124C2D0Ev();
extern void _ZN7S1124C22v8Ev();
extern void _ZN7S1124C22v9Ev();
extern void _ZN7S1124C23v10Ev();
extern void _ZN7S1124C23v11Ev();
extern void _ZN7S1124C23v12Ev();
extern void _ZN7S1124C23v13Ev();
extern void _ZN7S1124C23v14Ev();
extern void _ZN7S1124C23v15Ev();
extern void _ZN7S1124C23v16Ev();
extern void _ZN7S1124C23v17Ev();
extern void _ZN7S1124C23v18Ev();
extern void _ZN7S1124C23v19Ev();
extern void _ZN7S1124C23v20Ev();
static  VTBL_ENTRY vtc_S1124C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1124C2[0]),
  (VTBL_ENTRY)&_ZN7S1124C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1124C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1124C22v8Ev,
  (VTBL_ENTRY)&_ZN7S1124C22v9Ev,
  (VTBL_ENTRY)&_ZN7S1124C23v10Ev,
  (VTBL_ENTRY)&_ZN7S1124C23v11Ev,
  (VTBL_ENTRY)&_ZN7S1124C23v12Ev,
  (VTBL_ENTRY)&_ZN7S1124C23v13Ev,
  (VTBL_ENTRY)&_ZN7S1124C23v14Ev,
  (VTBL_ENTRY)&_ZN7S1124C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1124C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1124C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1124C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1124C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1124C23v20Ev,
};
extern VTBL_ENTRY _ZTI7S1124C2[];
extern  VTBL_ENTRY _ZTV7S1124C2[];
Class_Descriptor cd_S1124C2 = {  "S1124C2", // class name
  bases_S1124C2, 2,
  &(vtc_S1124C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S1124C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1124C2),17, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1124C1  : S1124C2 {
  virtual void  v1(); // _ZN7S1124C12v1Ev
  virtual void  v2(); // _ZN7S1124C12v2Ev
  virtual void  v3(); // _ZN7S1124C12v3Ev
  virtual void  v4(); // _ZN7S1124C12v4Ev
  virtual void  v5(); // _ZN7S1124C12v5Ev
  virtual void  v6(); // _ZN7S1124C12v6Ev
  virtual void  v7(); // _ZN7S1124C12v7Ev
  ~S1124C1(); // tgen
  S1124C1(); // tgen
};
//SIG(1 S1124C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 Fi} v1 v2 v3 v4 v5 v6 v7}


void  S1124C1 ::v1(){vfunc_called(this, "_ZN7S1124C12v1Ev");}
void  S1124C1 ::v2(){vfunc_called(this, "_ZN7S1124C12v2Ev");}
void  S1124C1 ::v3(){vfunc_called(this, "_ZN7S1124C12v3Ev");}
void  S1124C1 ::v4(){vfunc_called(this, "_ZN7S1124C12v4Ev");}
void  S1124C1 ::v5(){vfunc_called(this, "_ZN7S1124C12v5Ev");}
void  S1124C1 ::v6(){vfunc_called(this, "_ZN7S1124C12v6Ev");}
void  S1124C1 ::v7(){vfunc_called(this, "_ZN7S1124C12v7Ev");}
S1124C1 ::~S1124C1(){ note_dtor("S1124C1", this);} // tgen
S1124C1 ::S1124C1(){ note_ctor("S1124C1", this);} // tgen

static void Test_S1124C1()
{
  extern Class_Descriptor cd_S1124C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1124C1, buf);
    S1124C1 *dp, &lv = *(dp=new (buf) S1124C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1124C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1124C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1124C3*)(S1124C2*), ABISELECT(8,4), "S1124C1");
    check_base_class_offset(lv, (S1124C3*)(S1124C2*), ABISELECT(8,4), "S1124C1");
    check_base_class_offset(lv, (S1124C2*), 0, "S1124C1");
    test_class_info(&lv, &cd_S1124C1);
    dp->~S1124C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1124C1(Test_S1124C1, "S1124C1", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S1124C1C1Ev();
extern void _ZN7S1124C1D1Ev();
Name_Map name_map_S1124C1[] = {
  NSPAIR(_ZN7S1124C1C1Ev),
  NSPAIR(_ZN7S1124C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1124C3;
extern VTBL_ENTRY _ZTI7S1124C3[];
extern Class_Descriptor cd_S1124C2;
extern VTBL_ENTRY _ZTI7S1124C2[];
extern  VTBL_ENTRY _ZTV7S1124C2[];
static Base_Class bases_S1124C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S1124C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1124C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1124C1[];
extern void _ZN7S1124C1D1Ev();
extern void _ZN7S1124C1D0Ev();
extern void _ZN7S1124C22v8Ev();
extern void _ZN7S1124C22v9Ev();
extern void _ZN7S1124C23v10Ev();
extern void _ZN7S1124C23v11Ev();
extern void _ZN7S1124C23v12Ev();
extern void _ZN7S1124C23v13Ev();
extern void _ZN7S1124C23v14Ev();
extern void _ZN7S1124C23v15Ev();
extern void _ZN7S1124C23v16Ev();
extern void _ZN7S1124C23v17Ev();
extern void _ZN7S1124C23v18Ev();
extern void _ZN7S1124C23v19Ev();
extern void _ZN7S1124C23v20Ev();
extern void _ZN7S1124C12v1Ev();
extern void _ZN7S1124C12v2Ev();
extern void _ZN7S1124C12v3Ev();
extern void _ZN7S1124C12v4Ev();
extern void _ZN7S1124C12v5Ev();
extern void _ZN7S1124C12v6Ev();
extern void _ZN7S1124C12v7Ev();
static  VTBL_ENTRY vtc_S1124C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1124C1[0]),
  (VTBL_ENTRY)&_ZN7S1124C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1124C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1124C22v8Ev,
  (VTBL_ENTRY)&_ZN7S1124C22v9Ev,
  (VTBL_ENTRY)&_ZN7S1124C23v10Ev,
  (VTBL_ENTRY)&_ZN7S1124C23v11Ev,
  (VTBL_ENTRY)&_ZN7S1124C23v12Ev,
  (VTBL_ENTRY)&_ZN7S1124C23v13Ev,
  (VTBL_ENTRY)&_ZN7S1124C23v14Ev,
  (VTBL_ENTRY)&_ZN7S1124C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1124C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1124C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1124C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1124C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1124C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1124C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1124C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1124C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1124C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1124C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1124C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1124C12v7Ev,
};
extern VTBL_ENTRY _ZTI7S1124C1[];
extern  VTBL_ENTRY _ZTV7S1124C1[];
Class_Descriptor cd_S1124C1 = {  "S1124C1", // class name
  bases_S1124C1, 3,
  &(vtc_S1124C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S1124C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1124C1),24, //virtual function table var
  2, // 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  S1060C3  : S3216C8_nt {
};
//SIG(-1 S1060C3) C1{ BC2{ m Fi}}



static void Test_S1060C3()
{
  extern Class_Descriptor cd_S1060C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S1060C3, buf);
    S1060C3 &lv = *(new (buf) S1060C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S1060C3)");
    check2(__alignof__(lv), 4, "__alignof__(S1060C3)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S1060C3");
    test_class_info(&lv, &cd_S1060C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1060C3(Test_S1060C3, "S1060C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S1060C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1060C3[];
Class_Descriptor cd_S1060C3 = {  "S1060C3", // class name
  bases_S1060C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S1060C3),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  S1060C2  : S1060C3 {
  virtual  ~S1060C2(); // _ZN7S1060C2D1Ev
  virtual void  v2(); // _ZN7S1060C22v2Ev
  S1060C2(); // tgen
};
//SIG(-1 S1060C2) C1{ BC2{ BC3{ m Fi}} vd v1}


 S1060C2 ::~S1060C2(){ note_dtor("S1060C2", this);}
void  S1060C2 ::v2(){vfunc_called(this, "_ZN7S1060C22v2Ev");}
S1060C2 ::S1060C2(){ note_ctor("S1060C2", this);} // tgen

static void Test_S1060C2()
{
  extern Class_Descriptor cd_S1060C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1060C2, buf);
    S1060C2 *dp, &lv = *(dp=new (buf) S1060C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1060C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1060C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1060C3*), ABISELECT(8,4), "S1060C2");
    check_base_class_offset(lv, (S1060C3*), ABISELECT(8,4), "S1060C2");
    test_class_info(&lv, &cd_S1060C2);
    dp->~S1060C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1060C2(Test_S1060C2, "S1060C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1060C2C1Ev();
extern void _ZN7S1060C2D1Ev();
Name_Map name_map_S1060C2[] = {
  NSPAIR(_ZN7S1060C2C1Ev),
  NSPAIR(_ZN7S1060C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1060C3;
extern VTBL_ENTRY _ZTI7S1060C3[];
static Base_Class bases_S1060C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S1060C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1060C2[];
extern void _ZN7S1060C2D1Ev();
extern void _ZN7S1060C2D0Ev();
extern void _ZN7S1060C22v2Ev();
static  VTBL_ENTRY vtc_S1060C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1060C2[0]),
  (VTBL_ENTRY)&_ZN7S1060C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1060C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1060C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S1060C2[];
extern  VTBL_ENTRY _ZTV7S1060C2[];
Class_Descriptor cd_S1060C2 = {  "S1060C2", // class name
  bases_S1060C2, 2,
  &(vtc_S1060C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1060C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1060C2),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  S1060C5  {
  ::S16701C3 s1060c5f0;
  __tsi64 s1060c5f1;
  char s1060c5f2[2];
  void  mf1060c5(); // _ZN7S1060C58mf1060c5Ev
};
//SIG(-1 S1060C5) C1{ m FC2{ m FC3{ m Fp}} FL Fc[2]}


void  S1060C5 ::mf1060c5(){}

static void Test_S1060C5()
{
  {
    init_simple_test("S1060C5");
    S1060C5 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S1060C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1060C5)");
    check_field_offset(lv, s1060c5f0, 0, "S1060C5.s1060c5f0");
    check_field_offset(lv, s1060c5f1, ABISELECT(8,4), "S1060C5.s1060c5f1");
    check_field_offset(lv, s1060c5f2, ABISELECT(16,12), "S1060C5.s1060c5f2");
  }
}
static Arrange_To_Call_Me vS1060C5(Test_S1060C5, "S1060C5", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1060C1  : S1060C2 {
  ::S1060C5 s1060c1f0;
  ::S16701C4_nt s1060c1f1;
  ::S16428C9_nt s1060c1f2;
  virtual  ~S1060C1(); // _ZN7S1060C1D1Ev
  virtual void  v1(); // _ZN7S1060C12v1Ev
  S1060C1(); // tgen
};
//SIG(1 S1060C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v2} vd v1 FC5{ m FC6{ m FC7{ m Fp}} FL Fc[2]} FC7 FC8{ m FC9{ m Fp Fi[4]}}}


 S1060C1 ::~S1060C1(){ note_dtor("S1060C1", this);}
void  S1060C1 ::v1(){vfunc_called(this, "_ZN7S1060C12v1Ev");}
S1060C1 ::S1060C1(){ note_ctor("S1060C1", this);} // tgen

static void Test_S1060C1()
{
  extern Class_Descriptor cd_S1060C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,13)];
    init_test(&cd_S1060C1, buf);
    S1060C1 *dp, &lv = *(dp=new (buf) S1060C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,48), "sizeof(S1060C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1060C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1060C3*)(S1060C2*), ABISELECT(8,4), "S1060C1");
    check_base_class_offset(lv, (S1060C3*)(S1060C2*), ABISELECT(8,4), "S1060C1");
    check_base_class_offset(lv, (S1060C2*), 0, "S1060C1");
    check_field_offset(lv, s1060c1f0, ABISELECT(16,8), "S1060C1.s1060c1f0");
    check_field_offset(lv, s1060c1f1, ABISELECT(40,24), "S1060C1.s1060c1f1");
    check_field_offset(lv, s1060c1f2, ABISELECT(48,28), "S1060C1.s1060c1f2");
    test_class_info(&lv, &cd_S1060C1);
    dp->~S1060C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1060C1(Test_S1060C1, "S1060C1", ABISELECT(72,48));

#else // __cplusplus

extern void _ZN7S1060C1C1Ev();
extern void _ZN7S1060C1D1Ev();
Name_Map name_map_S1060C1[] = {
  NSPAIR(_ZN7S1060C1C1Ev),
  NSPAIR(_ZN7S1060C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1060C3;
extern VTBL_ENTRY _ZTI7S1060C3[];
extern Class_Descriptor cd_S1060C2;
extern VTBL_ENTRY _ZTI7S1060C2[];
extern  VTBL_ENTRY _ZTV7S1060C2[];
static Base_Class bases_S1060C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S1060C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1060C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1060C1[];
extern void _ZN7S1060C1D1Ev();
extern void _ZN7S1060C1D0Ev();
extern void _ZN7S1060C22v2Ev();
extern void _ZN7S1060C12v1Ev();
static  VTBL_ENTRY vtc_S1060C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1060C1[0]),
  (VTBL_ENTRY)&_ZN7S1060C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1060C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1060C22v2Ev,
  (VTBL_ENTRY)&_ZN7S1060C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S1060C1[];
extern  VTBL_ENTRY _ZTV7S1060C1[];
Class_Descriptor cd_S1060C1 = {  "S1060C1", // class name
  bases_S1060C1, 3,
  &(vtc_S1060C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,48), // object size
  NSPAIRA(_ZTI7S1060C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1060C1),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  S1024C3  : S3216C8_nt {
};
//SIG(-1 S1024C3) C1{ BC2{ m Fi}}



static void Test_S1024C3()
{
  extern Class_Descriptor cd_S1024C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S1024C3, buf);
    S1024C3 &lv = *(new (buf) S1024C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S1024C3)");
    check2(__alignof__(lv), 4, "__alignof__(S1024C3)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S1024C3");
    test_class_info(&lv, &cd_S1024C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1024C3(Test_S1024C3, "S1024C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S1024C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1024C3[];
Class_Descriptor cd_S1024C3 = {  "S1024C3", // class name
  bases_S1024C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S1024C3),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  S1024C2  : S1024C3 {
  ::S16701C4_nt s1024c2f0;
  ::S2710C9_nt s1024c2f1;
  ::S2644C10_nt s1024c2f2;
  virtual  ~S1024C2(); // _ZN7S1024C2D1Ev
  virtual void  v2(); // _ZN7S1024C22v2Ev
  S1024C2(); // tgen
};
//SIG(-1 S1024C2) C1{ BC2{ BC3{ m Fi}} vd v1 FC4{ m Fp} FC5{ m Fi FC6{ BC7{ m Fp Fi}}} FC8{ m Fi FC6}}


 S1024C2 ::~S1024C2(){ note_dtor("S1024C2", this);}
void  S1024C2 ::v2(){vfunc_called(this, "_ZN7S1024C22v2Ev");}
S1024C2 ::S1024C2(){ note_ctor("S1024C2", this);} // tgen

static void Test_S1024C2()
{
  extern Class_Descriptor cd_S1024C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S1024C2, buf);
    S1024C2 *dp, &lv = *(dp=new (buf) S1024C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S1024C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1024C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1024C3*), ABISELECT(8,4), "S1024C2");
    check_base_class_offset(lv, (S1024C3*), ABISELECT(8,4), "S1024C2");
    check_field_offset(lv, s1024c2f0, ABISELECT(16,8), "S1024C2.s1024c2f0");
    check_field_offset(lv, s1024c2f1, ABISELECT(24,12), "S1024C2.s1024c2f1");
    check_field_offset(lv, s1024c2f2, ABISELECT(48,24), "S1024C2.s1024c2f2");
    test_class_info(&lv, &cd_S1024C2);
    dp->~S1024C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1024C2(Test_S1024C2, "S1024C2", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN7S1024C2C1Ev();
extern void _ZN7S1024C2D1Ev();
Name_Map name_map_S1024C2[] = {
  NSPAIR(_ZN7S1024C2C1Ev),
  NSPAIR(_ZN7S1024C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1024C3;
extern VTBL_ENTRY _ZTI7S1024C3[];
static Base_Class bases_S1024C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S1024C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1024C2[];
extern void _ZN7S1024C2D1Ev();
extern void _ZN7S1024C2D0Ev();
extern void _ZN7S1024C22v2Ev();
static  VTBL_ENTRY vtc_S1024C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1024C2[0]),
  (VTBL_ENTRY)&_ZN7S1024C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1024C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1024C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S1024C2[];
extern  VTBL_ENTRY _ZTV7S1024C2[];
Class_Descriptor cd_S1024C2 = {  "S1024C2", // class name
  bases_S1024C2, 2,
  &(vtc_S1024C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI7S1024C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1024C2),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  S1024C1  : S1024C2 {
  virtual void  v1(); // _ZN7S1024C12v1Ev
  ~S1024C1(); // tgen
  S1024C1(); // tgen
};
//SIG(1 S1024C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v2 FC5{ m Fp} FC6{ m Fi FC7{ BC8{ m Fp Fi}}} FC9{ m Fi FC7}} v1}


void  S1024C1 ::v1(){vfunc_called(this, "_ZN7S1024C12v1Ev");}
S1024C1 ::~S1024C1(){ note_dtor("S1024C1", this);} // tgen
S1024C1 ::S1024C1(){ note_ctor("S1024C1", this);} // tgen

static void Test_S1024C1()
{
  extern Class_Descriptor cd_S1024C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S1024C1, buf);
    S1024C1 *dp, &lv = *(dp=new (buf) S1024C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S1024C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1024C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1024C3*)(S1024C2*), ABISELECT(8,4), "S1024C1");
    check_base_class_offset(lv, (S1024C3*)(S1024C2*), ABISELECT(8,4), "S1024C1");
    check_base_class_offset(lv, (S1024C2*), 0, "S1024C1");
    test_class_info(&lv, &cd_S1024C1);
    dp->~S1024C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1024C1(Test_S1024C1, "S1024C1", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN7S1024C1C1Ev();
extern void _ZN7S1024C1D1Ev();
Name_Map name_map_S1024C1[] = {
  NSPAIR(_ZN7S1024C1C1Ev),
  NSPAIR(_ZN7S1024C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1024C3;
extern VTBL_ENTRY _ZTI7S1024C3[];
extern Class_Descriptor cd_S1024C2;
extern VTBL_ENTRY _ZTI7S1024C2[];
extern  VTBL_ENTRY _ZTV7S1024C2[];
static Base_Class bases_S1024C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S1024C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1024C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1024C1[];
extern void _ZN7S1024C1D1Ev();
extern void _ZN7S1024C1D0Ev();
extern void _ZN7S1024C22v2Ev();
extern void _ZN7S1024C12v1Ev();
static  VTBL_ENTRY vtc_S1024C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1024C1[0]),
  (VTBL_ENTRY)&_ZN7S1024C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1024C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1024C22v2Ev,
  (VTBL_ENTRY)&_ZN7S1024C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S1024C1[];
extern  VTBL_ENTRY _ZTV7S1024C1[];
Class_Descriptor cd_S1024C1 = {  "S1024C1", // class name
  bases_S1024C1, 3,
  &(vtc_S1024C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI7S1024C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1024C1),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  S385C4  : S3216C8_nt {
};
//SIG(-1 S385C4) C1{ BC2{ m Fi}}



static void Test_S385C4()
{
  extern Class_Descriptor cd_S385C4;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S385C4, buf);
    S385C4 &lv = *(new (buf) S385C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S385C4)");
    check2(__alignof__(lv), 4, "__alignof__(S385C4)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S385C4");
    test_class_info(&lv, &cd_S385C4);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS385C4(Test_S385C4, "S385C4", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S385C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S385C4 = {  "S385C4", // class name
  bases_S385C4, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S385C3  : S385C4 {
  unsigned int s385c3f0:1;
  unsigned int s385c3f1:1;
  int s385c3f2:7;
  unsigned int s385c3f3:1;
  unsigned int s385c3f4:1;
  int s385c3f5:2;
  int s385c3f6:5;
};
//SIG(-1 S385C3) C1{ BC2{ BC3{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5}



static void Test_S385C3()
{
  extern Class_Descriptor cd_S385C3;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S385C3, buf);
    S385C3 &lv = *(new (buf) S385C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S385C3)");
    check2(__alignof__(lv), 4, "__alignof__(S385C3)");
    check_base_class_offset(lv, (S3216C8_nt*)(S385C4*), 0, "S385C3");
    check_base_class_offset(lv, (S385C4*), 0, "S385C3");
    set_bf_and_test(lv, s385c3f0, 4, 0, 1, 1, "S385C3");
    set_bf_and_test(lv, s385c3f1, 4, 1, 1, 1, "S385C3");
    set_bf_and_test(lv, s385c3f2, 4, 2, 7, 1, "S385C3");
    set_bf_and_test(lv, s385c3f2, 4, 2, 7, hide_sll(1LL<<6), "S385C3");
    set_bf_and_test(lv, s385c3f3, 5, 1, 1, 1, "S385C3");
    set_bf_and_test(lv, s385c3f4, 5, 2, 1, 1, "S385C3");
    set_bf_and_test(lv, s385c3f5, 5, 3, 2, 1, "S385C3");
    set_bf_and_test(lv, s385c3f5, 5, 3, 2, hide_sll(1LL<<1), "S385C3");
    set_bf_and_test(lv, s385c3f6, 5, 5, 5, 1, "S385C3");
    set_bf_and_test(lv, s385c3f6, 5, 5, 5, hide_sll(1LL<<4), "S385C3");
    test_class_info(&lv, &cd_S385C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS385C3(Test_S385C3, "S385C3", 8);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S385C4;
static Base_Class bases_S385C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S385C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S385C3 = {  "S385C3", // class name
  bases_S385C3, 2,
  0, // no vftv
  0, //no vtt
  8, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S385C2  : S385C3 {
  ::S17573C6_nt s385c2f0;
  int s385c2f1;
};
//SIG(-1 S385C2) C1{ BC2{ BC3{ BC4{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5} FC5{ m Fi Fc} Fi}



static void Test_S385C2()
{
  extern Class_Descriptor cd_S385C2;
  void *lvp;
  {
    int buf[6];
    init_test(&cd_S385C2, buf);
    S385C2 &lv = *(new (buf) S385C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 20, "sizeof(S385C2)");
    check2(__alignof__(lv), 4, "__alignof__(S385C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S385C4*)(S385C3*), 0, "S385C2");
    check_base_class_offset(lv, (S385C4*)(S385C3*), 0, "S385C2");
    check_base_class_offset(lv, (S385C3*), 0, "S385C2");
    check_field_offset(lv, s385c2f0, 8, "S385C2.s385c2f0");
    check_field_offset(lv, s385c2f1, 16, "S385C2.s385c2f1");
    test_class_info(&lv, &cd_S385C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS385C2(Test_S385C2, "S385C2", 20);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S385C4;
extern Class_Descriptor cd_S385C3;
static Base_Class bases_S385C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S385C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S385C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S385C2 = {  "S385C2", // class name
  bases_S385C2, 3,
  0, // no vftv
  0, //no vtt
  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  S385C1  : S385C2 {
  int s385c1f0;
  ::S16701C3 s385c1f1;
};
//SIG(1 S385C1) C1{ BC2{ BC3{ BC4{ BC5{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5} FC6{ m Fi Fc} Fi} Fi FC7{ m FC8{ m Fp}}}



static void Test_S385C1()
{
  extern Class_Descriptor cd_S385C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,8)];
    init_test(&cd_S385C1, buf);
    S385C1 &lv = *(new (buf) S385C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,28), "sizeof(S385C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S385C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S385C4*)(S385C3*)(S385C2*), 0, "S385C1");
    check_base_class_offset(lv, (S385C4*)(S385C3*)(S385C2*), 0, "S385C1");
    check_base_class_offset(lv, (S385C3*)(S385C2*), 0, "S385C1");
    check_base_class_offset(lv, (S385C2*), 0, "S385C1");
    check_field_offset(lv, s385c1f0, 20, "S385C1.s385c1f0");
    check_field_offset(lv, s385c1f1, 24, "S385C1.s385c1f1");
    test_class_info(&lv, &cd_S385C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS385C1(Test_S385C1, "S385C1", ABISELECT(32,28));

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S385C4;
extern Class_Descriptor cd_S385C3;
extern Class_Descriptor cd_S385C2;
static Base_Class bases_S385C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S385C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S385C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S385C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S385C1 = {  "S385C1", // class name
  bases_S385C1, 4,
  0, // no vftv
  0, //no vtt
  ABISELECT(32,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  S1083C3  : S3216C8_nt {
};
//SIG(-1 S1083C3) C1{ BC2{ m Fi}}



static void Test_S1083C3()
{
  extern Class_Descriptor cd_S1083C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S1083C3, buf);
    S1083C3 &lv = *(new (buf) S1083C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S1083C3)");
    check2(__alignof__(lv), 4, "__alignof__(S1083C3)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S1083C3");
    test_class_info(&lv, &cd_S1083C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1083C3(Test_S1083C3, "S1083C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S1083C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1083C3[];
Class_Descriptor cd_S1083C3 = {  "S1083C3", // class name
  bases_S1083C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S1083C3),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  S1083C2  : S1083C3 {
  int s1083c2f0;
  virtual  ~S1083C2(); // _ZN7S1083C2D1Ev
  virtual void  v3(); // _ZN7S1083C22v3Ev
  virtual void  v4(); // _ZN7S1083C22v4Ev
  virtual void  v5(); // _ZN7S1083C22v5Ev
  virtual void  v6(); // _ZN7S1083C22v6Ev
  virtual void  v7(); // _ZN7S1083C22v7Ev
  virtual void  v8(); // _ZN7S1083C22v8Ev
  virtual void  v9(); // _ZN7S1083C22v9Ev
  virtual void  v10(); // _ZN7S1083C23v10Ev
  virtual void  v11(); // _ZN7S1083C23v11Ev
  virtual void  v12(); // _ZN7S1083C23v12Ev
  virtual void  v13(); // _ZN7S1083C23v13Ev
  virtual void  v14(); // _ZN7S1083C23v14Ev
  virtual void  v15(); // _ZN7S1083C23v15Ev
  S1083C2(); // tgen
};
//SIG(-1 S1083C2) C1{ BC2{ BC3{ m Fi}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 Fi}


 S1083C2 ::~S1083C2(){ note_dtor("S1083C2", this);}
void  S1083C2 ::v3(){vfunc_called(this, "_ZN7S1083C22v3Ev");}
void  S1083C2 ::v4(){vfunc_called(this, "_ZN7S1083C22v4Ev");}
void  S1083C2 ::v5(){vfunc_called(this, "_ZN7S1083C22v5Ev");}
void  S1083C2 ::v6(){vfunc_called(this, "_ZN7S1083C22v6Ev");}
void  S1083C2 ::v7(){vfunc_called(this, "_ZN7S1083C22v7Ev");}
void  S1083C2 ::v8(){vfunc_called(this, "_ZN7S1083C22v8Ev");}
void  S1083C2 ::v9(){vfunc_called(this, "_ZN7S1083C22v9Ev");}
void  S1083C2 ::v10(){vfunc_called(this, "_ZN7S1083C23v10Ev");}
void  S1083C2 ::v11(){vfunc_called(this, "_ZN7S1083C23v11Ev");}
void  S1083C2 ::v12(){vfunc_called(this, "_ZN7S1083C23v12Ev");}
void  S1083C2 ::v13(){vfunc_called(this, "_ZN7S1083C23v13Ev");}
void  S1083C2 ::v14(){vfunc_called(this, "_ZN7S1083C23v14Ev");}
void  S1083C2 ::v15(){vfunc_called(this, "_ZN7S1083C23v15Ev");}
S1083C2 ::S1083C2(){ note_ctor("S1083C2", this);} // tgen

static void Test_S1083C2()
{
  extern Class_Descriptor cd_S1083C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1083C2, buf);
    S1083C2 *dp, &lv = *(dp=new (buf) S1083C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1083C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1083C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1083C3*), ABISELECT(8,4), "S1083C2");
    check_base_class_offset(lv, (S1083C3*), ABISELECT(8,4), "S1083C2");
    check_field_offset(lv, s1083c2f0, ABISELECT(12,8), "S1083C2.s1083c2f0");
    test_class_info(&lv, &cd_S1083C2);
    dp->~S1083C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1083C2(Test_S1083C2, "S1083C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S1083C2C1Ev();
extern void _ZN7S1083C2D1Ev();
Name_Map name_map_S1083C2[] = {
  NSPAIR(_ZN7S1083C2C1Ev),
  NSPAIR(_ZN7S1083C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1083C3;
extern VTBL_ENTRY _ZTI7S1083C3[];
static Base_Class bases_S1083C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S1083C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1083C2[];
extern void _ZN7S1083C2D1Ev();
extern void _ZN7S1083C2D0Ev();
extern void _ZN7S1083C22v3Ev();
extern void _ZN7S1083C22v4Ev();
extern void _ZN7S1083C22v5Ev();
extern void _ZN7S1083C22v6Ev();
extern void _ZN7S1083C22v7Ev();
extern void _ZN7S1083C22v8Ev();
extern void _ZN7S1083C22v9Ev();
extern void _ZN7S1083C23v10Ev();
extern void _ZN7S1083C23v11Ev();
extern void _ZN7S1083C23v12Ev();
extern void _ZN7S1083C23v13Ev();
extern void _ZN7S1083C23v14Ev();
extern void _ZN7S1083C23v15Ev();
static  VTBL_ENTRY vtc_S1083C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1083C2[0]),
  (VTBL_ENTRY)&_ZN7S1083C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1083C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1083C22v3Ev,
  (VTBL_ENTRY)&_ZN7S1083C22v4Ev,
  (VTBL_ENTRY)&_ZN7S1083C22v5Ev,
  (VTBL_ENTRY)&_ZN7S1083C22v6Ev,
  (VTBL_ENTRY)&_ZN7S1083C22v7Ev,
  (VTBL_ENTRY)&_ZN7S1083C22v8Ev,
  (VTBL_ENTRY)&_ZN7S1083C22v9Ev,
  (VTBL_ENTRY)&_ZN7S1083C23v10Ev,
  (VTBL_ENTRY)&_ZN7S1083C23v11Ev,
  (VTBL_ENTRY)&_ZN7S1083C23v12Ev,
  (VTBL_ENTRY)&_ZN7S1083C23v13Ev,
  (VTBL_ENTRY)&_ZN7S1083C23v14Ev,
  (VTBL_ENTRY)&_ZN7S1083C23v15Ev,
};
extern VTBL_ENTRY _ZTI7S1083C2[];
extern  VTBL_ENTRY _ZTV7S1083C2[];
Class_Descriptor cd_S1083C2 = {  "S1083C2", // class name
  bases_S1083C2, 2,
  &(vtc_S1083C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S1083C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1083C2),17, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1083C1  : S1083C2 {
  ::S16701C3 s1083c1f0;
  virtual void  v1(); // _ZN7S1083C12v1Ev
  virtual void  v2(); // _ZN7S1083C12v2Ev
  ~S1083C1(); // tgen
  S1083C1(); // tgen
};
//SIG(1 S1083C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fi} v1 v2 FC5{ m FC6{ m Fp}}}


void  S1083C1 ::v1(){vfunc_called(this, "_ZN7S1083C12v1Ev");}
void  S1083C1 ::v2(){vfunc_called(this, "_ZN7S1083C12v2Ev");}
S1083C1 ::~S1083C1(){ note_dtor("S1083C1", this);} // tgen
S1083C1 ::S1083C1(){ note_ctor("S1083C1", this);} // tgen

static void Test_S1083C1()
{
  extern Class_Descriptor cd_S1083C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S1083C1, buf);
    S1083C1 *dp, &lv = *(dp=new (buf) S1083C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S1083C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1083C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1083C3*)(S1083C2*), ABISELECT(8,4), "S1083C1");
    check_base_class_offset(lv, (S1083C3*)(S1083C2*), ABISELECT(8,4), "S1083C1");
    check_base_class_offset(lv, (S1083C2*), 0, "S1083C1");
    check_field_offset(lv, s1083c1f0, ABISELECT(16,12), "S1083C1.s1083c1f0");
    test_class_info(&lv, &cd_S1083C1);
    dp->~S1083C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1083C1(Test_S1083C1, "S1083C1", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S1083C1C1Ev();
extern void _ZN7S1083C1D1Ev();
Name_Map name_map_S1083C1[] = {
  NSPAIR(_ZN7S1083C1C1Ev),
  NSPAIR(_ZN7S1083C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1083C3;
extern VTBL_ENTRY _ZTI7S1083C3[];
extern Class_Descriptor cd_S1083C2;
extern VTBL_ENTRY _ZTI7S1083C2[];
extern  VTBL_ENTRY _ZTV7S1083C2[];
static Base_Class bases_S1083C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S1083C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1083C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1083C1[];
extern void _ZN7S1083C1D1Ev();
extern void _ZN7S1083C1D0Ev();
extern void _ZN7S1083C22v3Ev();
extern void _ZN7S1083C22v4Ev();
extern void _ZN7S1083C22v5Ev();
extern void _ZN7S1083C22v6Ev();
extern void _ZN7S1083C22v7Ev();
extern void _ZN7S1083C22v8Ev();
extern void _ZN7S1083C22v9Ev();
extern void _ZN7S1083C23v10Ev();
extern void _ZN7S1083C23v11Ev();
extern void _ZN7S1083C23v12Ev();
extern void _ZN7S1083C23v13Ev();
extern void _ZN7S1083C23v14Ev();
extern void _ZN7S1083C23v15Ev();
extern void _ZN7S1083C12v1Ev();
extern void _ZN7S1083C12v2Ev();
static  VTBL_ENTRY vtc_S1083C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1083C1[0]),
  (VTBL_ENTRY)&_ZN7S1083C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1083C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1083C22v3Ev,
  (VTBL_ENTRY)&_ZN7S1083C22v4Ev,
  (VTBL_ENTRY)&_ZN7S1083C22v5Ev,
  (VTBL_ENTRY)&_ZN7S1083C22v6Ev,
  (VTBL_ENTRY)&_ZN7S1083C22v7Ev,
  (VTBL_ENTRY)&_ZN7S1083C22v8Ev,
  (VTBL_ENTRY)&_ZN7S1083C22v9Ev,
  (VTBL_ENTRY)&_ZN7S1083C23v10Ev,
  (VTBL_ENTRY)&_ZN7S1083C23v11Ev,
  (VTBL_ENTRY)&_ZN7S1083C23v12Ev,
  (VTBL_ENTRY)&_ZN7S1083C23v13Ev,
  (VTBL_ENTRY)&_ZN7S1083C23v14Ev,
  (VTBL_ENTRY)&_ZN7S1083C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1083C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1083C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S1083C1[];
extern  VTBL_ENTRY _ZTV7S1083C1[];
Class_Descriptor cd_S1083C1 = {  "S1083C1", // class name
  bases_S1083C1, 3,
  &(vtc_S1083C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S1083C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1083C1),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  S999C3  : S3216C8_nt {
};
//SIG(-1 S999C3) C1{ BC2{ m Fi}}



static void Test_S999C3()
{
  extern Class_Descriptor cd_S999C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S999C3, buf);
    S999C3 &lv = *(new (buf) S999C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S999C3)");
    check2(__alignof__(lv), 4, "__alignof__(S999C3)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S999C3");
    test_class_info(&lv, &cd_S999C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS999C3(Test_S999C3, "S999C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S999C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S999C3 = {  "S999C3", // class name
  bases_S999C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S999C2  : S999C3 {
  unsigned int s999c2f0:1;
  unsigned int s999c2f1:1;
  int s999c2f2:7;
  unsigned int s999c2f3:1;
  unsigned int s999c2f4:1;
  int s999c2f5:2;
  int s999c2f6:5;
};
//SIG(-1 S999C2) C1{ BC2{ BC3{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5}



static void Test_S999C2()
{
  extern Class_Descriptor cd_S999C2;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S999C2, buf);
    S999C2 &lv = *(new (buf) S999C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S999C2)");
    check2(__alignof__(lv), 4, "__alignof__(S999C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S999C3*), 0, "S999C2");
    check_base_class_offset(lv, (S999C3*), 0, "S999C2");
    set_bf_and_test(lv, s999c2f0, 4, 0, 1, 1, "S999C2");
    set_bf_and_test(lv, s999c2f1, 4, 1, 1, 1, "S999C2");
    set_bf_and_test(lv, s999c2f2, 4, 2, 7, 1, "S999C2");
    set_bf_and_test(lv, s999c2f2, 4, 2, 7, hide_sll(1LL<<6), "S999C2");
    set_bf_and_test(lv, s999c2f3, 5, 1, 1, 1, "S999C2");
    set_bf_and_test(lv, s999c2f4, 5, 2, 1, 1, "S999C2");
    set_bf_and_test(lv, s999c2f5, 5, 3, 2, 1, "S999C2");
    set_bf_and_test(lv, s999c2f5, 5, 3, 2, hide_sll(1LL<<1), "S999C2");
    set_bf_and_test(lv, s999c2f6, 5, 5, 5, 1, "S999C2");
    set_bf_and_test(lv, s999c2f6, 5, 5, 5, hide_sll(1LL<<4), "S999C2");
    test_class_info(&lv, &cd_S999C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS999C2(Test_S999C2, "S999C2", 8);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S999C3;
static Base_Class bases_S999C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S999C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S999C2 = {  "S999C2", // class name
  bases_S999C2, 2,
  0, // no vftv
  0, //no vtt
  8, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

union  S999C5  {
  int s999c5f0;
  __tsi64 s999c5f1;
  void *s999c5f2;
  void *s999c5f3;
  void *s999c5f4;
  void *s999c5f5;
  int s999c5f6;
  void *s999c5f7;
  void *s999c5f8;
  void *s999c5f9;
  void *s999c5f10;
};
//SIG(1 S999C5) U1{ Fi FL Fp Fp Fp Fp Fi Fp Fp Fp Fp}

#endif // __cplusplus
#ifdef __cplusplus

struct  S999C1  : S999C2 {
  ::S999C5 s999c1f0;
};
//SIG(1 S999C1) C1{ BC2{ BC3{ BC4{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5} FU5{ Fi FL Fp Fp Fp Fp Fi Fp Fp Fp Fp}}



static void Test_S999C1()
{
  extern Class_Descriptor cd_S999C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,5)];
    init_test(&cd_S999C1, buf);
    S999C1 &lv = *(new (buf) S999C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 16, "sizeof(S999C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S999C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S999C3*)(S999C2*), 0, "S999C1");
    check_base_class_offset(lv, (S999C3*)(S999C2*), 0, "S999C1");
    check_base_class_offset(lv, (S999C2*), 0, "S999C1");
    check_field_offset(lv, s999c1f0, 8, "S999C1.s999c1f0");
    test_class_info(&lv, &cd_S999C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS999C1(Test_S999C1, "S999C1", 16);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S999C3;
extern Class_Descriptor cd_S999C2;
static Base_Class bases_S999C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S999C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S999C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S999C1 = {  "S999C1", // class name
  bases_S999C1, 3,
  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  S386C4  : S3216C8_nt {
};
//SIG(-1 S386C4) C1{ BC2{ m Fi}}



static void Test_S386C4()
{
  extern Class_Descriptor cd_S386C4;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S386C4, buf);
    S386C4 &lv = *(new (buf) S386C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S386C4)");
    check2(__alignof__(lv), 4, "__alignof__(S386C4)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S386C4");
    test_class_info(&lv, &cd_S386C4);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS386C4(Test_S386C4, "S386C4", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S386C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S386C4 = {  "S386C4", // class name
  bases_S386C4, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S386C3  : S386C4 {
  unsigned int s386c3f0:1;
  unsigned int s386c3f1:1;
  int s386c3f2:7;
  unsigned int s386c3f3:1;
  unsigned int s386c3f4:1;
  int s386c3f5:2;
  int s386c3f6:5;
};
//SIG(-1 S386C3) C1{ BC2{ BC3{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5}



static void Test_S386C3()
{
  extern Class_Descriptor cd_S386C3;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S386C3, buf);
    S386C3 &lv = *(new (buf) S386C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S386C3)");
    check2(__alignof__(lv), 4, "__alignof__(S386C3)");
    check_base_class_offset(lv, (S3216C8_nt*)(S386C4*), 0, "S386C3");
    check_base_class_offset(lv, (S386C4*), 0, "S386C3");
    set_bf_and_test(lv, s386c3f0, 4, 0, 1, 1, "S386C3");
    set_bf_and_test(lv, s386c3f1, 4, 1, 1, 1, "S386C3");
    set_bf_and_test(lv, s386c3f2, 4, 2, 7, 1, "S386C3");
    set_bf_and_test(lv, s386c3f2, 4, 2, 7, hide_sll(1LL<<6), "S386C3");
    set_bf_and_test(lv, s386c3f3, 5, 1, 1, 1, "S386C3");
    set_bf_and_test(lv, s386c3f4, 5, 2, 1, 1, "S386C3");
    set_bf_and_test(lv, s386c3f5, 5, 3, 2, 1, "S386C3");
    set_bf_and_test(lv, s386c3f5, 5, 3, 2, hide_sll(1LL<<1), "S386C3");
    set_bf_and_test(lv, s386c3f6, 5, 5, 5, 1, "S386C3");
    set_bf_and_test(lv, s386c3f6, 5, 5, 5, hide_sll(1LL<<4), "S386C3");
    test_class_info(&lv, &cd_S386C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS386C3(Test_S386C3, "S386C3", 8);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S386C4;
static Base_Class bases_S386C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S386C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S386C3 = {  "S386C3", // class name
  bases_S386C3, 2,
  0, // no vftv
  0, //no vtt
  8, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S386C2  : S386C3 {
  ::S2710C9_nt s386c2f0;
};
//SIG(-1 S386C2) C1{ BC2{ BC3{ BC4{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5} FC5{ m Fi FC6{ BC7{ m Fp Fi}}}}



static void Test_S386C2()
{
  extern Class_Descriptor cd_S386C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S386C2, buf);
    S386C2 &lv = *(new (buf) S386C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S386C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S386C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S386C4*)(S386C3*), 0, "S386C2");
    check_base_class_offset(lv, (S386C4*)(S386C3*), 0, "S386C2");
    check_base_class_offset(lv, (S386C3*), 0, "S386C2");
    check_field_offset(lv, s386c2f0, 8, "S386C2.s386c2f0");
    test_class_info(&lv, &cd_S386C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS386C2(Test_S386C2, "S386C2", ABISELECT(32,20));

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S386C4;
extern Class_Descriptor cd_S386C3;
static Base_Class bases_S386C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S386C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S386C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S386C2 = {  "S386C2", // class name
  bases_S386C2, 3,
  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  S386C1  : S386C2 {
  int s386c1f0;
};
//SIG(1 S386C1) C1{ BC2{ BC3{ BC4{ BC5{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5} FC6{ m Fi FC7{ BC8{ m Fp Fi}}}} Fi}



static void Test_S386C1()
{
  extern Class_Descriptor cd_S386C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S386C1, buf);
    S386C1 &lv = *(new (buf) S386C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S386C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S386C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S386C4*)(S386C3*)(S386C2*), 0, "S386C1");
    check_base_class_offset(lv, (S386C4*)(S386C3*)(S386C2*), 0, "S386C1");
    check_base_class_offset(lv, (S386C3*)(S386C2*), 0, "S386C1");
    check_base_class_offset(lv, (S386C2*), 0, "S386C1");
    check_field_offset(lv, s386c1f0, ABISELECT(32,20), "S386C1.s386c1f0");
    test_class_info(&lv, &cd_S386C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS386C1(Test_S386C1, "S386C1", ABISELECT(40,24));

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S386C4;
extern Class_Descriptor cd_S386C3;
extern Class_Descriptor cd_S386C2;
static Base_Class bases_S386C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S386C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S386C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S386C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S386C1 = {  "S386C1", // class name
  bases_S386C1, 4,
  0, // no vftv
  0, //no vtt
  ABISELECT(40,24), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S993C3  : S3216C8_nt {
};
//SIG(-1 S993C3) C1{ BC2{ m Fi}}



static void Test_S993C3()
{
  extern Class_Descriptor cd_S993C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S993C3, buf);
    S993C3 &lv = *(new (buf) S993C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S993C3)");
    check2(__alignof__(lv), 4, "__alignof__(S993C3)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S993C3");
    test_class_info(&lv, &cd_S993C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS993C3(Test_S993C3, "S993C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S993C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S993C3 = {  "S993C3", // class name
  bases_S993C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S993C2  : S993C3 {
  unsigned int s993c2f0:1;
  unsigned int s993c2f1:1;
  int s993c2f2:7;
  unsigned int s993c2f3:1;
  unsigned int s993c2f4:1;
  int s993c2f5:2;
  int s993c2f6:5;
};
//SIG(-1 S993C2) C1{ BC2{ BC3{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5}



static void Test_S993C2()
{
  extern Class_Descriptor cd_S993C2;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S993C2, buf);
    S993C2 &lv = *(new (buf) S993C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S993C2)");
    check2(__alignof__(lv), 4, "__alignof__(S993C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S993C3*), 0, "S993C2");
    check_base_class_offset(lv, (S993C3*), 0, "S993C2");
    set_bf_and_test(lv, s993c2f0, 4, 0, 1, 1, "S993C2");
    set_bf_and_test(lv, s993c2f1, 4, 1, 1, 1, "S993C2");
    set_bf_and_test(lv, s993c2f2, 4, 2, 7, 1, "S993C2");
    set_bf_and_test(lv, s993c2f2, 4, 2, 7, hide_sll(1LL<<6), "S993C2");
    set_bf_and_test(lv, s993c2f3, 5, 1, 1, 1, "S993C2");
    set_bf_and_test(lv, s993c2f4, 5, 2, 1, 1, "S993C2");
    set_bf_and_test(lv, s993c2f5, 5, 3, 2, 1, "S993C2");
    set_bf_and_test(lv, s993c2f5, 5, 3, 2, hide_sll(1LL<<1), "S993C2");
    set_bf_and_test(lv, s993c2f6, 5, 5, 5, 1, "S993C2");
    set_bf_and_test(lv, s993c2f6, 5, 5, 5, hide_sll(1LL<<4), "S993C2");
    test_class_info(&lv, &cd_S993C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS993C2(Test_S993C2, "S993C2", 8);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S993C3;
static Base_Class bases_S993C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S993C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S993C2 = {  "S993C2", // class name
  bases_S993C2, 2,
  0, // no vftv
  0, //no vtt
  8, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S993C1  : S993C2 {
  ::S16701C4_nt s993c1f0;
  ::S16701C4_nt s993c1f1;
  ::S16701C4_nt s993c1f2;
  ::S16701C4_nt s993c1f3;
  ::S16701C4_nt s993c1f4;
  ::S1021C13_nt s993c1f5;
};
//SIG(1 S993C1) C1{ BC2{ BC3{ BC4{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5} FC5{ m Fp} FC5 FC5 FC5 FC5 FC6{ m Fp}}



static void Test_S993C1()
{
  extern Class_Descriptor cd_S993C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S993C1, buf);
    S993C1 &lv = *(new (buf) S993C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S993C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S993C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S993C3*)(S993C2*), 0, "S993C1");
    check_base_class_offset(lv, (S993C3*)(S993C2*), 0, "S993C1");
    check_base_class_offset(lv, (S993C2*), 0, "S993C1");
    check_field_offset(lv, s993c1f0, 8, "S993C1.s993c1f0");
    check_field_offset(lv, s993c1f1, ABISELECT(16,12), "S993C1.s993c1f1");
    check_field_offset(lv, s993c1f2, ABISELECT(24,16), "S993C1.s993c1f2");
    check_field_offset(lv, s993c1f3, ABISELECT(32,20), "S993C1.s993c1f3");
    check_field_offset(lv, s993c1f4, ABISELECT(40,24), "S993C1.s993c1f4");
    check_field_offset(lv, s993c1f5, ABISELECT(48,28), "S993C1.s993c1f5");
    test_class_info(&lv, &cd_S993C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS993C1(Test_S993C1, "S993C1", ABISELECT(56,32));

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S993C3;
extern Class_Descriptor cd_S993C2;
static Base_Class bases_S993C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S993C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S993C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S993C1 = {  "S993C1", // class name
  bases_S993C1, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(56,32), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20462C3  : S7246C4 {
  int s20462c3f0;
};
//SIG(-1 S20462C3) C1{ BC2{ m Fi[10]} Fi}



static void Test_S20462C3()
{
  extern Class_Descriptor cd_S20462C3;
  void *lvp;
  {
    int buf[12];
    init_test(&cd_S20462C3, buf);
    S20462C3 &lv = *(new (buf) S20462C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 44, "sizeof(S20462C3)");
    check2(__alignof__(lv), 4, "__alignof__(S20462C3)");
    check_base_class_offset(lv, (S7246C4*), 0, "S20462C3");
    check_field_offset(lv, s20462c3f0, 40, "S20462C3.s20462c3f0");
    test_class_info(&lv, &cd_S20462C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20462C3(Test_S20462C3, "S20462C3", 44);

#else // __cplusplus

extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
static Base_Class bases_S20462C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20462C3[];
Class_Descriptor cd_S20462C3 = {  "S20462C3", // class name
  bases_S20462C3, 1,
  0, // no vftv
  0, //no vtt
  44, // object size
  NSPAIRA(_ZTI8S20462C3),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  S20462C5  : S7246C4 {
};
//SIG(-1 S20462C5) C1{ BC2{ m Fi[10]}}



static void Test_S20462C5()
{
  extern Class_Descriptor cd_S20462C5;
  void *lvp;
  {
    int buf[11];
    init_test(&cd_S20462C5, buf);
    S20462C5 &lv = *(new (buf) S20462C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), 40, "sizeof(S20462C5)");
    check2(__alignof__(lv), 4, "__alignof__(S20462C5)");
    check_base_class_offset(lv, (S7246C4*), 0, "S20462C5");
    test_class_info(&lv, &cd_S20462C5);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20462C5(Test_S20462C5, "S20462C5", 40);

#else // __cplusplus

extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
static Base_Class bases_S20462C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20462C5[];
Class_Descriptor cd_S20462C5 = {  "S20462C5", // class name
  bases_S20462C5, 1,
  0, // no vftv
  0, //no vtt
  40, // object size
  NSPAIRA(_ZTI8S20462C5),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  S20462C6  : S20462C3 {
  ::S20462C3 s20462c6f0;
};
//SIG(-1 S20462C6) C1{ BC2{ BC3{ m Fi[10]} Fi} FC2}



static void Test_S20462C6()
{
  extern Class_Descriptor cd_S20462C6;
  void *lvp;
  {
    int buf[23];
    init_test(&cd_S20462C6, buf);
    S20462C6 &lv = *(new (buf) S20462C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), 88, "sizeof(S20462C6)");
    check2(__alignof__(lv), 4, "__alignof__(S20462C6)");
    check_base_class_offset(lv, (S7246C4*)(S20462C3*), 0, "S20462C6");
    check_base_class_offset(lv, (S20462C3*), 0, "S20462C6");
    check_field_offset(lv, s20462c6f0, 44, "S20462C6.s20462c6f0");
    test_class_info(&lv, &cd_S20462C6);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20462C6(Test_S20462C6, "S20462C6", 88);

#else // __cplusplus

extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20462C3;
extern VTBL_ENTRY _ZTI8S20462C3[];
static Base_Class bases_S20462C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20462C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20462C6[];
Class_Descriptor cd_S20462C6 = {  "S20462C6", // class name
  bases_S20462C6, 2,
  0, // no vftv
  0, //no vtt
  88, // object size
  NSPAIRA(_ZTI8S20462C6),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20462C2  : virtual S20462C3 , virtual S20462C5 , virtual S20462C6 , S7246C4 {
  void *s20462c2f0;
  virtual  ~S20462C2(); // _ZN8S20462C2D2Ev
  S20462C2(); // tgen
};
//SIG(-1 S20462C2) C1{ VBC2{ BC3{ m Fi[10]} Fi} VBC4{ BC3} VBC5{ BC2 FC2} BC3 vd Fp}


 S20462C2 ::~S20462C2(){ note_dtor("S20462C2", this);}
S20462C2 ::S20462C2(){ note_ctor("S20462C2", this);} // tgen

static void Test_S20462C2()
{
  extern Class_Descriptor cd_S20462C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,56)];
    init_test(&cd_S20462C2, buf);
    S20462C2 *dp, &lv = *(dp=new (buf) S20462C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,220), "sizeof(S20462C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20462C2)");
    /*is_ambiguous_... S20462C2::S20462C3 */ AMB_check_base_class_offset(lv, (S7246C4*)(S20462C3*), ABISELECT(56,48), "S20462C2");
    /*is_ambiguous_... S20462C2::S20462C3 */ AMB_check_base_class_offset(lv, (S20462C3*), ABISELECT(56,48), "S20462C2");
    check_base_class_offset(lv, (S7246C4*)(S20462C5*), ABISELECT(100,92), "S20462C2");
    check_base_class_offset(lv, (S20462C5*), ABISELECT(100,92), "S20462C2");
    check_base_class_offset(lv, (S7246C4*)(S20462C3*)(S20462C6*), ABISELECT(140,132), "S20462C2");
    check_base_class_offset(lv, (S20462C3*)(S20462C6*), ABISELECT(140,132), "S20462C2");
    check_base_class_offset(lv, (S20462C6*), ABISELECT(140,132), "S20462C2");
    /*is_ambiguous_... S20462C2::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*), ABISELECT(8,4), "S20462C2");
    check_field_offset(lv, s20462c2f0, ABISELECT(48,44), "S20462C2.s20462c2f0");
    test_class_info(&lv, &cd_S20462C2);
    dp->~S20462C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20462C2(Test_S20462C2, "S20462C2", ABISELECT(232,220));

#else // __cplusplus

extern void _ZN8S20462C2C1Ev();
extern void _ZN8S20462C2D2Ev();
Name_Map name_map_S20462C2[] = {
  NSPAIR(_ZN8S20462C2C1Ev),
  NSPAIR(_ZN8S20462C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20462C3;
extern VTBL_ENTRY _ZTI8S20462C3[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20462C5;
extern VTBL_ENTRY _ZTI8S20462C5[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20462C3;
extern VTBL_ENTRY _ZTI8S20462C3[];
extern Class_Descriptor cd_S20462C6;
extern VTBL_ENTRY _ZTI8S20462C6[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
static Base_Class bases_S20462C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20462C3,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(100,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
    3, //immediately_derived
  0, 0},
  {&cd_S20462C5,    ABISELECT(100,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(140,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
    5, //immediately_derived
  0, 0},
  {&cd_S20462C3,    ABISELECT(140,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
    6, //immediately_derived
  0, 0},
  {&cd_S20462C6,    ABISELECT(140,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},
  {&cd_S7246C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20462C2[];
extern void _ZN8S20462C2D1Ev();
extern void _ZN8S20462C2D0Ev();
static  VTBL_ENTRY vtc_S20462C2[] = {
  ABISELECT(140,132),
  ABISELECT(100,92),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20462C2[0]),
  (VTBL_ENTRY)&_ZN8S20462C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20462C2D0Ev,
};
extern VTBL_ENTRY _ZTV8S20462C2[];
static  VTT_ENTRY vtt_S20462C2[] = {
  {&(_ZTV8S20462C2[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S20462C2[];
extern  VTBL_ENTRY _ZTV8S20462C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20462C2[];
Class_Descriptor cd_S20462C2 = {  "S20462C2", // class name
  bases_S20462C2, 8,
  &(vtc_S20462C2[0]), // expected_vtbl_contents
  &(vtt_S20462C2[0]), // expected_vtt_contents
  ABISELECT(232,220), // object size
  NSPAIRA(_ZTI8S20462C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20462C2),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20462C2),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  S20462C8  : virtual S7246C4 {
  virtual  ~S20462C8(); // _ZN8S20462C8D2Ev
  S20462C8(); // tgen
};
//SIG(-1 S20462C8) C1{ VBC2{ m Fi[10]} vd}


 S20462C8 ::~S20462C8(){ note_dtor("S20462C8", this);}
S20462C8 ::S20462C8(){ note_ctor("S20462C8", this);} // tgen

static void Test_S20462C8()
{
  extern Class_Descriptor cd_S20462C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S20462C8, buf);
    S20462C8 *dp, &lv = *(dp=new (buf) S20462C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S20462C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20462C8)");
    check_base_class_offset(lv, (S7246C4*), ABISELECT(8,4), "S20462C8");
    test_class_info(&lv, &cd_S20462C8);
    dp->~S20462C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20462C8(Test_S20462C8, "S20462C8", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S20462C8C1Ev();
extern void _ZN8S20462C8D2Ev();
Name_Map name_map_S20462C8[] = {
  NSPAIR(_ZN8S20462C8C1Ev),
  NSPAIR(_ZN8S20462C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
static Base_Class bases_S20462C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S20462C8[];
extern void _ZN8S20462C8D1Ev();
extern void _ZN8S20462C8D0Ev();
static  VTBL_ENTRY vtc_S20462C8[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20462C8[0]),
  (VTBL_ENTRY)&_ZN8S20462C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20462C8D0Ev,
};
extern VTBL_ENTRY _ZTV8S20462C8[];
static  VTT_ENTRY vtt_S20462C8[] = {
  {&(_ZTV8S20462C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20462C8[];
extern  VTBL_ENTRY _ZTV8S20462C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20462C8[];
Class_Descriptor cd_S20462C8 = {  "S20462C8", // class name
  bases_S20462C8, 1,
  &(vtc_S20462C8[0]), // expected_vtbl_contents
  &(vtt_S20462C8[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S20462C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20462C8),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20462C8),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  S20462C7  : virtual S20462C2 , S20462C8 , S4677C37 {
  ~S20462C7(); // tgen
  S20462C7(); // tgen
};
//SIG(-1 S20462C7) C1{ VBC2{ VBC3{ BC4{ m Fi[10]} Fi} VBC5{ BC4} VBC6{ BC3 FC3} BC4 vd Fp} BC7{ VBC4 vd} BC8{ m}}


S20462C7 ::~S20462C7(){ note_dtor("S20462C7", this);} // tgen
S20462C7 ::S20462C7(){ note_ctor("S20462C7", this);} // tgen

static void Test_S20462C7()
{
  extern Class_Descriptor cd_S20462C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,67)];
    init_test(&cd_S20462C7, buf);
    S20462C7 *dp, &lv = *(dp=new (buf) S20462C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,264), "sizeof(S20462C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20462C7)");
    /*is_ambiguous_... S20462C7::S20462C3 */ AMB_check_base_class_offset(lv, (S7246C4*)(S20462C3*), ABISELECT(64,52), "S20462C7");
    /*is_ambiguous_... S20462C2::S20462C3 */ AMB_check_base_class_offset(lv, (S20462C3*)(S20462C2*), ABISELECT(64,52), "S20462C7");
    check_base_class_offset(lv, (S7246C4*)(S20462C5*), ABISELECT(108,96), "S20462C7");
    check_base_class_offset(lv, (S20462C5*)(S20462C2*), ABISELECT(108,96), "S20462C7");
    check_base_class_offset(lv, (S7246C4*)(S20462C3*)(S20462C6*), ABISELECT(148,136), "S20462C7");
    check_base_class_offset(lv, (S20462C3*)(S20462C6*), ABISELECT(148,136), "S20462C7");
    check_base_class_offset(lv, (S20462C6*)(S20462C2*), ABISELECT(148,136), "S20462C7");
    /*is_ambiguous_... S20462C2::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*)(S20462C2*), ABISELECT(16,8), "S20462C7");
    check_base_class_offset(lv, (S20462C2*), ABISELECT(8,4), "S20462C7");
    check_base_class_offset(lv, (S7246C4*)(S20462C8*), ABISELECT(236,224), "S20462C7");
    check_base_class_offset(lv, (S20462C8*), 0, "S20462C7");
    check_base_class_offset(lv, (S4677C37*), 0, "S20462C7");
    test_class_info(&lv, &cd_S20462C7);
    dp->~S20462C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20462C7(Test_S20462C7, "S20462C7", ABISELECT(280,264));

#else // __cplusplus

extern void _ZN8S20462C7C1Ev();
extern void _ZN8S20462C7D1Ev();
Name_Map name_map_S20462C7[] = {
  NSPAIR(_ZN8S20462C7C1Ev),
  NSPAIR(_ZN8S20462C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20462C3;
extern VTBL_ENTRY _ZTI8S20462C3[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20462C5;
extern VTBL_ENTRY _ZTI8S20462C5[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20462C3;
extern VTBL_ENTRY _ZTI8S20462C3[];
extern Class_Descriptor cd_S20462C6;
extern VTBL_ENTRY _ZTI8S20462C6[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20462C2;
extern VTBL_ENTRY _ZTI8S20462C2[];
extern  VTBL_ENTRY _ZTV8S20462C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20462C2[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20462C8;
extern VTBL_ENTRY _ZTI8S20462C8[];
extern  VTBL_ENTRY _ZTV8S20462C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20462C8[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
static Base_Class bases_S20462C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(64,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20462C3,    ABISELECT(64,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(108,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
    3, //immediately_derived
  0, 0},
  {&cd_S20462C5,    ABISELECT(108,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
    8, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(148,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20462C3,    ABISELECT(148,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20462C6,    ABISELECT(148,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7246C4,    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_S20462C2,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //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_S7246C4,    ABISELECT(236,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20462C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20462C7[];
extern void _ZN8S20462C7D1Ev();
extern void _ZN8S20462C7D0Ev();
extern void ABISELECT(_ZTv0_n48_N8S20462C7D1Ev,_ZTv0_n24_N8S20462C7D1Ev)();
extern void ABISELECT(_ZThn8_N8S20462C7D1Ev,_ZThn4_N8S20462C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20462C7D0Ev,_ZTv0_n24_N8S20462C7D0Ev)();
extern void ABISELECT(_ZThn8_N8S20462C7D0Ev,_ZThn4_N8S20462C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20462C7[] = {
  ABISELECT(148,136),
  ABISELECT(108,96),
  ABISELECT(64,52),
  ABISELECT(8,4),
  ABISELECT(236,224),
  0,
  (VTBL_ENTRY)&(_ZTI8S20462C7[0]),
  (VTBL_ENTRY)&_ZN8S20462C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20462C7D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(140,132),
  ABISELECT(100,92),
  ABISELECT(56,48),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20462C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20462C7D1Ev,_ZTv0_n24_N8S20462C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20462C7D0Ev,_ZTv0_n24_N8S20462C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S20462C7[];
extern void _ZN8S20462C8D1Ev();
extern void _ZN8S20462C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20462C8__8S20462C7[] = {
  ABISELECT(236,224),
  0,
  (VTBL_ENTRY)&(_ZTI8S20462C8[0]),
  (VTBL_ENTRY)&_ZN8S20462C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20462C8D0Ev,
};
extern void _ZN8S20462C2D1Ev();
extern void _ZN8S20462C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20462C2__8S20462C7[] = {
  ABISELECT(140,132),
  ABISELECT(100,92),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20462C2[0]),
  (VTBL_ENTRY)&_ZN8S20462C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20462C2D0Ev,
};
static  VTT_ENTRY vtt_S20462C7[] = {
  {&(_ZTV8S20462C7[7]),  7,17},
  {&(_tg__ZTV8S20462C8__8S20462C7[3]),  3,5},
  {&(_ZTV8S20462C7[15]),  15,17},
  {&(_tg__ZTV8S20462C2__8S20462C7[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S20462C7[];
extern  VTBL_ENTRY _ZTV8S20462C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20462C7[];
static VTBL_ENTRY alt_thunk_names156[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20462C7D0Ev,_ZTv0_n24_N8S20462C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20462C7D0Ev,_ZThn4_N8S20462C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20462C7D1Ev,_ZTv0_n24_N8S20462C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20462C7D1Ev,_ZThn4_N8S20462C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20462C7 = {  "S20462C7", // class name
  bases_S20462C7, 12,
  &(vtc_S20462C7[0]), // expected_vtbl_contents
  &(vtt_S20462C7[0]), // expected_vtt_contents
  ABISELECT(280,264), // object size
  NSPAIRA(_ZTI8S20462C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20462C7),17, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20462C7),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names156,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20462C1  : virtual S20462C2 , virtual S20462C7 {
  ~S20462C1(); // tgen
  S20462C1(); // tgen
};
//SIG(1 S20462C1) C1{ VBC2{ VBC3{ BC4{ m Fi[10]} Fi} VBC5{ BC4} VBC6{ BC3 FC3} BC4 vd Fp} VBC7{ VBC2 BC8{ VBC4 vd} BC9{ m}}}


S20462C1 ::~S20462C1(){ note_dtor("S20462C1", this);} // tgen
S20462C1 ::S20462C1(){ note_ctor("S20462C1", this);} // tgen

static void Test_S20462C1()
{
  extern Class_Descriptor cd_S20462C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,67)];
    init_test(&cd_S20462C1, buf);
    S20462C1 *dp, &lv = *(dp=new (buf) S20462C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,264), "sizeof(S20462C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20462C1)");
    /*is_ambiguous_... S20462C1::S20462C3 */ AMB_check_base_class_offset(lv, (S7246C4*)(S20462C3*), ABISELECT(64,52), "S20462C1");
    /*is_ambiguous_... S20462C2::S20462C3 */ AMB_check_base_class_offset(lv, (S20462C3*)(S20462C2*), ABISELECT(64,52), "S20462C1");
    check_base_class_offset(lv, (S7246C4*)(S20462C5*), ABISELECT(108,96), "S20462C1");
    check_base_class_offset(lv, (S20462C5*)(S20462C2*), ABISELECT(108,96), "S20462C1");
    check_base_class_offset(lv, (S7246C4*)(S20462C3*)(S20462C6*), ABISELECT(148,136), "S20462C1");
    check_base_class_offset(lv, (S20462C3*)(S20462C6*), ABISELECT(148,136), "S20462C1");
    check_base_class_offset(lv, (S20462C6*)(S20462C2*), ABISELECT(148,136), "S20462C1");
    /*is_ambiguous_... S20462C2::S7246C4 */ AMB_check_base_class_offset(lv, (S7246C4*)(S20462C2*), ABISELECT(16,8), "S20462C1");
    check_base_class_offset(lv, (S20462C2*), ABISELECT(8,4), "S20462C1");
    check_base_class_offset(lv, (S20462C2*)(S20462C7*), ABISELECT(8,4), "S20462C1");
    check_base_class_offset(lv, (S7246C4*)(S20462C8*)(S20462C7*), ABISELECT(236,224), "S20462C1");
    check_base_class_offset(lv, (S20462C8*)(S20462C7*), 0, "S20462C1");
    check_base_class_offset(lv, (S4677C37*)(S20462C7*), 0, "S20462C1");
    check_base_class_offset(lv, (S20462C7*), 0, "S20462C1");
    test_class_info(&lv, &cd_S20462C1);
    dp->~S20462C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20462C1(Test_S20462C1, "S20462C1", ABISELECT(280,264));

#else // __cplusplus

extern void _ZN8S20462C1C1Ev();
extern void _ZN8S20462C1D1Ev();
Name_Map name_map_S20462C1[] = {
  NSPAIR(_ZN8S20462C1C1Ev),
  NSPAIR(_ZN8S20462C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20462C3;
extern VTBL_ENTRY _ZTI8S20462C3[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20462C5;
extern VTBL_ENTRY _ZTI8S20462C5[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20462C3;
extern VTBL_ENTRY _ZTI8S20462C3[];
extern Class_Descriptor cd_S20462C6;
extern VTBL_ENTRY _ZTI8S20462C6[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20462C2;
extern VTBL_ENTRY _ZTI8S20462C2[];
extern  VTBL_ENTRY _ZTV8S20462C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20462C2[];
extern Class_Descriptor cd_S7246C4;
extern VTBL_ENTRY _ZTI7S7246C4[];
extern Class_Descriptor cd_S20462C8;
extern VTBL_ENTRY _ZTI8S20462C8[];
extern  VTBL_ENTRY _ZTV8S20462C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20462C8[];
extern Class_Descriptor cd_S4677C37;
extern VTBL_ENTRY _ZTI8S4677C37[];
extern Class_Descriptor cd_S20462C7;
extern VTBL_ENTRY _ZTI8S20462C7[];
extern  VTBL_ENTRY _ZTV8S20462C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20462C7[];
static Base_Class bases_S20462C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7246C4,    ABISELECT(64,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20462C3,    ABISELECT(64,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(108,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
    3, //immediately_derived
  0, 0},
  {&cd_S20462C5,    ABISELECT(108,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
    8, //immediately_derived
  0, 1},
  {&cd_S7246C4,    ABISELECT(148,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20462C3,    ABISELECT(148,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20462C6,    ABISELECT(148,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7246C4,    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_S20462C2,    ABISELECT(8,4), //bcp->offset
    11, //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7246C4,    ABISELECT(236,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20462C8,    0, //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
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4677C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20462C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20462C1[];
extern void _ZN8S20462C1D1Ev();
extern void _ZN8S20462C1D0Ev();
extern void ABISELECT(_ZTv0_n48_N8S20462C1D1Ev,_ZTv0_n24_N8S20462C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S20462C1D1Ev,_ZThn4_N8S20462C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20462C1D0Ev,_ZTv0_n24_N8S20462C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S20462C1D0Ev,_ZThn4_N8S20462C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20462C1[] = {
  0,
  0,
  ABISELECT(148,136),
  ABISELECT(108,96),
  ABISELECT(64,52),
  ABISELECT(8,4),
  ABISELECT(236,224),
  0,
  (VTBL_ENTRY)&(_ZTI8S20462C1[0]),
  (VTBL_ENTRY)&_ZN8S20462C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20462C1D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(140,132),
  ABISELECT(100,92),
  ABISELECT(56,48),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20462C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20462C1D1Ev,_ZTv0_n24_N8S20462C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20462C1D0Ev,_ZTv0_n24_N8S20462C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S20462C1[];
extern void _ZN8S20462C2D1Ev();
extern void _ZN8S20462C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20462C2__8S20462C1[] = {
  ABISELECT(140,132),
  ABISELECT(100,92),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20462C2[0]),
  (VTBL_ENTRY)&_ZN8S20462C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20462C2D0Ev,
};
extern void _ZN8S20462C7D1Ev();
extern void _ZN8S20462C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20462C7__8S20462C1[] = {
  ABISELECT(148,136),
  ABISELECT(108,96),
  ABISELECT(64,52),
  ABISELECT(8,4),
  ABISELECT(236,224),
  0,
  (VTBL_ENTRY)&(_ZTI8S20462C7[0]),
  (VTBL_ENTRY)&_ZN8S20462C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20462C7D0Ev,
};
extern void _ZN8S20462C8D1Ev();
extern void _ZN8S20462C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20462C88S20462C7__8S20462C1[] = {
  ABISELECT(236,224),
  0,
  (VTBL_ENTRY)&(_ZTI8S20462C8[0]),
  (VTBL_ENTRY)&_ZN8S20462C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20462C8D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20462C7D1Ev,_ZTv0_n24_N8S20462C7D1Ev)();
extern void ABISELECT(_ZThn8_N8S20462C7D1Ev,_ZThn4_N8S20462C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20462C7D0Ev,_ZTv0_n24_N8S20462C7D0Ev)();
extern void ABISELECT(_ZThn8_N8S20462C7D0Ev,_ZThn4_N8S20462C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20462C2__8S20462C7__8S20462C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(140,132),
  ABISELECT(100,92),
  ABISELECT(56,48),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20462C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20462C7D1Ev,_ZTv0_n24_N8S20462C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20462C7D0Ev,_ZTv0_n24_N8S20462C7D0Ev),
};
static  VTT_ENTRY vtt_S20462C1[] = {
  {&(_ZTV8S20462C1[9]),  9,19},
  {&(_ZTV8S20462C1[17]),  17,19},
  {&(_ZTV8S20462C1[9]),  9,19},
  {&(_tg__ZTV8S20462C2__8S20462C1[5]),  5,7},
  {&(_tg__ZTV8S20462C7__8S20462C1[7]),  7,9},
  {&(_tg__ZTV8S20462C88S20462C7__8S20462C1[3]),  3,5},
  {&(_tg__ZTV8S20462C2__8S20462C7__8S20462C1[6]),  6,8},
};
extern VTBL_ENTRY _ZTI8S20462C1[];
extern  VTBL_ENTRY _ZTV8S20462C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20462C1[];
static VTBL_ENTRY alt_thunk_names157[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20462C7D0Ev,_ZTv0_n24_N8S20462C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20462C7D0Ev,_ZThn4_N8S20462C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20462C7D1Ev,_ZTv0_n24_N8S20462C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20462C7D1Ev,_ZThn4_N8S20462C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20462C1D0Ev,_ZTv0_n24_N8S20462C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20462C1D0Ev,_ZThn4_N8S20462C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20462C1D1Ev,_ZTv0_n24_N8S20462C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20462C1D1Ev,_ZThn4_N8S20462C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20462C1 = {  "S20462C1", // class name
  bases_S20462C1, 13,
  &(vtc_S20462C1[0]), // expected_vtbl_contents
  &(vtt_S20462C1[0]), // expected_vtt_contents
  ABISELECT(280,264), // object size
  NSPAIRA(_ZTI8S20462C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20462C1),19, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20462C1),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names157,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9753C2  {
  ::S4677C18_nt s9753c2f0;
  int s9753c2f1;
  void *s9753c2f2[4];
  virtual  ~S9753C2(); // _ZN7S9753C2D1Ev
  virtual void  v4(); // _ZN7S9753C22v4Ev
  virtual void  v5(); // _ZN7S9753C22v5Ev
  virtual void  v6(); // _ZN7S9753C22v6Ev
  virtual void  v7(); // _ZN7S9753C22v7Ev
  S9753C2(); // tgen
};
//SIG(-1 S9753C2) C1{ vd v1 v2 v3 v4 FC2{ m FC3{ m Fp Fi FC4{ m}} Fi} Fi Fp[4]}


 S9753C2 ::~S9753C2(){ note_dtor("S9753C2", this);}
void  S9753C2 ::v4(){vfunc_called(this, "_ZN7S9753C22v4Ev");}
void  S9753C2 ::v5(){vfunc_called(this, "_ZN7S9753C22v5Ev");}
void  S9753C2 ::v6(){vfunc_called(this, "_ZN7S9753C22v6Ev");}
void  S9753C2 ::v7(){vfunc_called(this, "_ZN7S9753C22v7Ev");}
S9753C2 ::S9753C2(){ note_ctor("S9753C2", this);} // tgen

static void Test_S9753C2()
{
  extern Class_Descriptor cd_S9753C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S9753C2, buf);
    S9753C2 *dp, &lv = *(dp=new (buf) S9753C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S9753C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9753C2)");
    check_field_offset(lv, s9753c2f0, ABISELECT(8,4), "S9753C2.s9753c2f0");
    check_field_offset(lv, s9753c2f1, ABISELECT(32,20), "S9753C2.s9753c2f1");
    check_field_offset(lv, s9753c2f2, ABISELECT(40,24), "S9753C2.s9753c2f2");
    test_class_info(&lv, &cd_S9753C2);
    dp->~S9753C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9753C2(Test_S9753C2, "S9753C2", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN7S9753C2C1Ev();
extern void _ZN7S9753C2D1Ev();
Name_Map name_map_S9753C2[] = {
  NSPAIR(_ZN7S9753C2C1Ev),
  NSPAIR(_ZN7S9753C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9753C2[];
extern void _ZN7S9753C2D1Ev();
extern void _ZN7S9753C2D0Ev();
extern void _ZN7S9753C22v4Ev();
extern void _ZN7S9753C22v5Ev();
extern void _ZN7S9753C22v6Ev();
extern void _ZN7S9753C22v7Ev();
static  VTBL_ENTRY vtc_S9753C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9753C2[0]),
  (VTBL_ENTRY)&_ZN7S9753C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9753C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9753C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9753C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9753C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9753C22v7Ev,
};
extern VTBL_ENTRY _ZTI7S9753C2[];
extern  VTBL_ENTRY _ZTV7S9753C2[];
Class_Descriptor cd_S9753C2 = {  "S9753C2", // class name
  0,0,//no base classes
  &(vtc_S9753C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI7S9753C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9753C2),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9753C1  : S9753C2 {
  void *s9753c1f0;
  ::S9073C22_nt s9753c1f1;
  virtual  ~S9753C1(); // _ZN7S9753C1D1Ev
  virtual void  v1(); // _ZN7S9753C12v1Ev
  virtual void  v2(); // _ZN7S9753C12v2Ev
  virtual void  v3(); // _ZN7S9753C12v3Ev
  S9753C1(); // tgen
};
//SIG(1 S9753C1) C1{ BC2{ vd v4 v5 v6 v7 FC3{ m FC4{ m Fp Fi FC5{ m}} Fi} Fi Fp[4]} vd v1 v2 v3 Fp FC6{ vd m Fc}}


 S9753C1 ::~S9753C1(){ note_dtor("S9753C1", this);}
void  S9753C1 ::v1(){vfunc_called(this, "_ZN7S9753C12v1Ev");}
void  S9753C1 ::v2(){vfunc_called(this, "_ZN7S9753C12v2Ev");}
void  S9753C1 ::v3(){vfunc_called(this, "_ZN7S9753C12v3Ev");}
S9753C1 ::S9753C1(){ note_ctor("S9753C1", this);} // tgen

static void Test_S9753C1()
{
  extern Class_Descriptor cd_S9753C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,14)];
    init_test(&cd_S9753C1, buf);
    S9753C1 *dp, &lv = *(dp=new (buf) S9753C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,52), "sizeof(S9753C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9753C1)");
    check_base_class_offset(lv, (S9753C2*), 0, "S9753C1");
    check_field_offset(lv, s9753c1f0, ABISELECT(72,40), "S9753C1.s9753c1f0");
    check_field_offset(lv, s9753c1f1, ABISELECT(80,44), "S9753C1.s9753c1f1");
    test_class_info(&lv, &cd_S9753C1);
    dp->~S9753C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9753C1(Test_S9753C1, "S9753C1", ABISELECT(96,52));

#else // __cplusplus

extern void _ZN7S9753C1C1Ev();
extern void _ZN7S9753C1D1Ev();
Name_Map name_map_S9753C1[] = {
  NSPAIR(_ZN7S9753C1C1Ev),
  NSPAIR(_ZN7S9753C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9753C2;
extern VTBL_ENTRY _ZTI7S9753C2[];
extern  VTBL_ENTRY _ZTV7S9753C2[];
static Base_Class bases_S9753C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9753C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9753C1[];
extern void _ZN7S9753C1D1Ev();
extern void _ZN7S9753C1D0Ev();
extern void _ZN7S9753C22v4Ev();
extern void _ZN7S9753C22v5Ev();
extern void _ZN7S9753C22v6Ev();
extern void _ZN7S9753C22v7Ev();
extern void _ZN7S9753C12v1Ev();
extern void _ZN7S9753C12v2Ev();
extern void _ZN7S9753C12v3Ev();
static  VTBL_ENTRY vtc_S9753C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9753C1[0]),
  (VTBL_ENTRY)&_ZN7S9753C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9753C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9753C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9753C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9753C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9753C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9753C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9753C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9753C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S9753C1[];
extern  VTBL_ENTRY _ZTV7S9753C1[];
Class_Descriptor cd_S9753C1 = {  "S9753C1", // class name
  bases_S9753C1, 1,
  &(vtc_S9753C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,52), // object size
  NSPAIRA(_ZTI7S9753C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9753C1),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  S9752C2  {
  ::S4677C18_nt s9752c2f0;
  int s9752c2f1;
  void *s9752c2f2[3];
  virtual  ~S9752C2(); // _ZN7S9752C2D1Ev
  virtual void  v4(); // _ZN7S9752C22v4Ev
  virtual void  v5(); // _ZN7S9752C22v5Ev
  virtual void  v6(); // _ZN7S9752C22v6Ev
  virtual void  v7(); // _ZN7S9752C22v7Ev
  S9752C2(); // tgen
};
//SIG(-1 S9752C2) C1{ vd v1 v2 v3 v4 FC2{ m FC3{ m Fp Fi FC4{ m}} Fi} Fi Fp[3]}


 S9752C2 ::~S9752C2(){ note_dtor("S9752C2", this);}
void  S9752C2 ::v4(){vfunc_called(this, "_ZN7S9752C22v4Ev");}
void  S9752C2 ::v5(){vfunc_called(this, "_ZN7S9752C22v5Ev");}
void  S9752C2 ::v6(){vfunc_called(this, "_ZN7S9752C22v6Ev");}
void  S9752C2 ::v7(){vfunc_called(this, "_ZN7S9752C22v7Ev");}
S9752C2 ::S9752C2(){ note_ctor("S9752C2", this);} // tgen

static void Test_S9752C2()
{
  extern Class_Descriptor cd_S9752C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S9752C2, buf);
    S9752C2 *dp, &lv = *(dp=new (buf) S9752C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S9752C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9752C2)");
    check_field_offset(lv, s9752c2f0, ABISELECT(8,4), "S9752C2.s9752c2f0");
    check_field_offset(lv, s9752c2f1, ABISELECT(32,20), "S9752C2.s9752c2f1");
    check_field_offset(lv, s9752c2f2, ABISELECT(40,24), "S9752C2.s9752c2f2");
    test_class_info(&lv, &cd_S9752C2);
    dp->~S9752C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9752C2(Test_S9752C2, "S9752C2", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN7S9752C2C1Ev();
extern void _ZN7S9752C2D1Ev();
Name_Map name_map_S9752C2[] = {
  NSPAIR(_ZN7S9752C2C1Ev),
  NSPAIR(_ZN7S9752C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9752C2[];
extern void _ZN7S9752C2D1Ev();
extern void _ZN7S9752C2D0Ev();
extern void _ZN7S9752C22v4Ev();
extern void _ZN7S9752C22v5Ev();
extern void _ZN7S9752C22v6Ev();
extern void _ZN7S9752C22v7Ev();
static  VTBL_ENTRY vtc_S9752C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9752C2[0]),
  (VTBL_ENTRY)&_ZN7S9752C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9752C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9752C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9752C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9752C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9752C22v7Ev,
};
extern VTBL_ENTRY _ZTI7S9752C2[];
extern  VTBL_ENTRY _ZTV7S9752C2[];
Class_Descriptor cd_S9752C2 = {  "S9752C2", // class name
  0,0,//no base classes
  &(vtc_S9752C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI7S9752C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9752C2),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9752C1  : S9752C2 {
  void *s9752c1f0;
  ::S9073C22_nt s9752c1f1;
  virtual  ~S9752C1(); // _ZN7S9752C1D1Ev
  virtual void  v1(); // _ZN7S9752C12v1Ev
  virtual void  v2(); // _ZN7S9752C12v2Ev
  virtual void  v3(); // _ZN7S9752C12v3Ev
  S9752C1(); // tgen
};
//SIG(1 S9752C1) C1{ BC2{ vd v4 v5 v6 v7 FC3{ m FC4{ m Fp Fi FC5{ m}} Fi} Fi Fp[3]} vd v1 v2 v3 Fp FC6{ vd m Fc}}


 S9752C1 ::~S9752C1(){ note_dtor("S9752C1", this);}
void  S9752C1 ::v1(){vfunc_called(this, "_ZN7S9752C12v1Ev");}
void  S9752C1 ::v2(){vfunc_called(this, "_ZN7S9752C12v2Ev");}
void  S9752C1 ::v3(){vfunc_called(this, "_ZN7S9752C12v3Ev");}
S9752C1 ::S9752C1(){ note_ctor("S9752C1", this);} // tgen

static void Test_S9752C1()
{
  extern Class_Descriptor cd_S9752C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,13)];
    init_test(&cd_S9752C1, buf);
    S9752C1 *dp, &lv = *(dp=new (buf) S9752C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,48), "sizeof(S9752C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9752C1)");
    check_base_class_offset(lv, (S9752C2*), 0, "S9752C1");
    check_field_offset(lv, s9752c1f0, ABISELECT(64,36), "S9752C1.s9752c1f0");
    check_field_offset(lv, s9752c1f1, ABISELECT(72,40), "S9752C1.s9752c1f1");
    test_class_info(&lv, &cd_S9752C1);
    dp->~S9752C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9752C1(Test_S9752C1, "S9752C1", ABISELECT(88,48));

#else // __cplusplus

extern void _ZN7S9752C1C1Ev();
extern void _ZN7S9752C1D1Ev();
Name_Map name_map_S9752C1[] = {
  NSPAIR(_ZN7S9752C1C1Ev),
  NSPAIR(_ZN7S9752C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9752C2;
extern VTBL_ENTRY _ZTI7S9752C2[];
extern  VTBL_ENTRY _ZTV7S9752C2[];
static Base_Class bases_S9752C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9752C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9752C1[];
extern void _ZN7S9752C1D1Ev();
extern void _ZN7S9752C1D0Ev();
extern void _ZN7S9752C22v4Ev();
extern void _ZN7S9752C22v5Ev();
extern void _ZN7S9752C22v6Ev();
extern void _ZN7S9752C22v7Ev();
extern void _ZN7S9752C12v1Ev();
extern void _ZN7S9752C12v2Ev();
extern void _ZN7S9752C12v3Ev();
static  VTBL_ENTRY vtc_S9752C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9752C1[0]),
  (VTBL_ENTRY)&_ZN7S9752C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9752C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9752C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9752C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9752C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9752C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9752C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9752C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9752C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S9752C1[];
extern  VTBL_ENTRY _ZTV7S9752C1[];
Class_Descriptor cd_S9752C1 = {  "S9752C1", // class name
  bases_S9752C1, 1,
  &(vtc_S9752C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,48), // object size
  NSPAIRA(_ZTI7S9752C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9752C1),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  S1125C3  : S3216C8_nt {
};
//SIG(-1 S1125C3) C1{ BC2{ m Fi}}



static void Test_S1125C3()
{
  extern Class_Descriptor cd_S1125C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S1125C3, buf);
    S1125C3 &lv = *(new (buf) S1125C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S1125C3)");
    check2(__alignof__(lv), 4, "__alignof__(S1125C3)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S1125C3");
    test_class_info(&lv, &cd_S1125C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1125C3(Test_S1125C3, "S1125C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S1125C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1125C3[];
Class_Descriptor cd_S1125C3 = {  "S1125C3", // class name
  bases_S1125C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S1125C3),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  S1125C2  : S1125C3 {
  virtual  ~S1125C2(); // _ZN7S1125C2D1Ev
  virtual void  v8(); // _ZN7S1125C22v8Ev
  virtual void  v9(); // _ZN7S1125C22v9Ev
  virtual void  v10(); // _ZN7S1125C23v10Ev
  virtual void  v11(); // _ZN7S1125C23v11Ev
  virtual void  v12(); // _ZN7S1125C23v12Ev
  virtual void  v13(); // _ZN7S1125C23v13Ev
  virtual void  v14(); // _ZN7S1125C23v14Ev
  S1125C2(); // tgen
};
//SIG(-1 S1125C2) C1{ BC2{ BC3{ m Fi}} vd v1 v2 v3 v4 v5 v6 v7}


 S1125C2 ::~S1125C2(){ note_dtor("S1125C2", this);}
void  S1125C2 ::v8(){vfunc_called(this, "_ZN7S1125C22v8Ev");}
void  S1125C2 ::v9(){vfunc_called(this, "_ZN7S1125C22v9Ev");}
void  S1125C2 ::v10(){vfunc_called(this, "_ZN7S1125C23v10Ev");}
void  S1125C2 ::v11(){vfunc_called(this, "_ZN7S1125C23v11Ev");}
void  S1125C2 ::v12(){vfunc_called(this, "_ZN7S1125C23v12Ev");}
void  S1125C2 ::v13(){vfunc_called(this, "_ZN7S1125C23v13Ev");}
void  S1125C2 ::v14(){vfunc_called(this, "_ZN7S1125C23v14Ev");}
S1125C2 ::S1125C2(){ note_ctor("S1125C2", this);} // tgen

static void Test_S1125C2()
{
  extern Class_Descriptor cd_S1125C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1125C2, buf);
    S1125C2 *dp, &lv = *(dp=new (buf) S1125C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1125C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1125C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1125C3*), ABISELECT(8,4), "S1125C2");
    check_base_class_offset(lv, (S1125C3*), ABISELECT(8,4), "S1125C2");
    test_class_info(&lv, &cd_S1125C2);
    dp->~S1125C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1125C2(Test_S1125C2, "S1125C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1125C2C1Ev();
extern void _ZN7S1125C2D1Ev();
Name_Map name_map_S1125C2[] = {
  NSPAIR(_ZN7S1125C2C1Ev),
  NSPAIR(_ZN7S1125C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1125C3;
extern VTBL_ENTRY _ZTI7S1125C3[];
static Base_Class bases_S1125C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S1125C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1125C2[];
extern void _ZN7S1125C2D1Ev();
extern void _ZN7S1125C2D0Ev();
extern void _ZN7S1125C22v8Ev();
extern void _ZN7S1125C22v9Ev();
extern void _ZN7S1125C23v10Ev();
extern void _ZN7S1125C23v11Ev();
extern void _ZN7S1125C23v12Ev();
extern void _ZN7S1125C23v13Ev();
extern void _ZN7S1125C23v14Ev();
static  VTBL_ENTRY vtc_S1125C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1125C2[0]),
  (VTBL_ENTRY)&_ZN7S1125C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1125C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1125C22v8Ev,
  (VTBL_ENTRY)&_ZN7S1125C22v9Ev,
  (VTBL_ENTRY)&_ZN7S1125C23v10Ev,
  (VTBL_ENTRY)&_ZN7S1125C23v11Ev,
  (VTBL_ENTRY)&_ZN7S1125C23v12Ev,
  (VTBL_ENTRY)&_ZN7S1125C23v13Ev,
  (VTBL_ENTRY)&_ZN7S1125C23v14Ev,
};
extern VTBL_ENTRY _ZTI7S1125C2[];
extern  VTBL_ENTRY _ZTV7S1125C2[];
Class_Descriptor cd_S1125C2 = {  "S1125C2", // class name
  bases_S1125C2, 2,
  &(vtc_S1125C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1125C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1125C2),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  S1125C1  : S1125C2 {
  char s1125c1f0;
  int s1125c1f1[2];
  __tsi64 s1125c1f2[2];
  virtual void  v1(); // _ZN7S1125C12v1Ev
  virtual void  v2(); // _ZN7S1125C12v2Ev
  virtual void  v3(); // _ZN7S1125C12v3Ev
  virtual void  v4(); // _ZN7S1125C12v4Ev
  virtual void  v5(); // _ZN7S1125C12v5Ev
  virtual void  v6(); // _ZN7S1125C12v6Ev
  virtual void  v7(); // _ZN7S1125C12v7Ev
  ~S1125C1(); // tgen
  S1125C1(); // tgen
};
//SIG(1 S1125C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v8 v9 v10 v11 v12 v13 v14} v1 v2 v3 v4 v5 v6 v7 Fc Fi[2] FL[2]}


void  S1125C1 ::v1(){vfunc_called(this, "_ZN7S1125C12v1Ev");}
void  S1125C1 ::v2(){vfunc_called(this, "_ZN7S1125C12v2Ev");}
void  S1125C1 ::v3(){vfunc_called(this, "_ZN7S1125C12v3Ev");}
void  S1125C1 ::v4(){vfunc_called(this, "_ZN7S1125C12v4Ev");}
void  S1125C1 ::v5(){vfunc_called(this, "_ZN7S1125C12v5Ev");}
void  S1125C1 ::v6(){vfunc_called(this, "_ZN7S1125C12v6Ev");}
void  S1125C1 ::v7(){vfunc_called(this, "_ZN7S1125C12v7Ev");}
S1125C1 ::~S1125C1(){ note_dtor("S1125C1", this);} // tgen
S1125C1 ::S1125C1(){ note_ctor("S1125C1", this);} // tgen

static void Test_S1125C1()
{
  extern Class_Descriptor cd_S1125C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,10)];
    init_test(&cd_S1125C1, buf);
    S1125C1 *dp, &lv = *(dp=new (buf) S1125C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,36), "sizeof(S1125C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1125C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1125C3*)(S1125C2*), ABISELECT(8,4), "S1125C1");
    check_base_class_offset(lv, (S1125C3*)(S1125C2*), ABISELECT(8,4), "S1125C1");
    check_base_class_offset(lv, (S1125C2*), 0, "S1125C1");
    check_field_offset(lv, s1125c1f0, ABISELECT(12,8), "S1125C1.s1125c1f0");
    check_field_offset(lv, s1125c1f1, ABISELECT(16,12), "S1125C1.s1125c1f1");
    check_field_offset(lv, s1125c1f2, ABISELECT(24,20), "S1125C1.s1125c1f2");
    test_class_info(&lv, &cd_S1125C1);
    dp->~S1125C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1125C1(Test_S1125C1, "S1125C1", ABISELECT(40,36));

#else // __cplusplus

extern void _ZN7S1125C1C1Ev();
extern void _ZN7S1125C1D1Ev();
Name_Map name_map_S1125C1[] = {
  NSPAIR(_ZN7S1125C1C1Ev),
  NSPAIR(_ZN7S1125C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1125C3;
extern VTBL_ENTRY _ZTI7S1125C3[];
extern Class_Descriptor cd_S1125C2;
extern VTBL_ENTRY _ZTI7S1125C2[];
extern  VTBL_ENTRY _ZTV7S1125C2[];
static Base_Class bases_S1125C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S1125C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1125C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1125C1[];
extern void _ZN7S1125C1D1Ev();
extern void _ZN7S1125C1D0Ev();
extern void _ZN7S1125C22v8Ev();
extern void _ZN7S1125C22v9Ev();
extern void _ZN7S1125C23v10Ev();
extern void _ZN7S1125C23v11Ev();
extern void _ZN7S1125C23v12Ev();
extern void _ZN7S1125C23v13Ev();
extern void _ZN7S1125C23v14Ev();
extern void _ZN7S1125C12v1Ev();
extern void _ZN7S1125C12v2Ev();
extern void _ZN7S1125C12v3Ev();
extern void _ZN7S1125C12v4Ev();
extern void _ZN7S1125C12v5Ev();
extern void _ZN7S1125C12v6Ev();
extern void _ZN7S1125C12v7Ev();
static  VTBL_ENTRY vtc_S1125C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1125C1[0]),
  (VTBL_ENTRY)&_ZN7S1125C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1125C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1125C22v8Ev,
  (VTBL_ENTRY)&_ZN7S1125C22v9Ev,
  (VTBL_ENTRY)&_ZN7S1125C23v10Ev,
  (VTBL_ENTRY)&_ZN7S1125C23v11Ev,
  (VTBL_ENTRY)&_ZN7S1125C23v12Ev,
  (VTBL_ENTRY)&_ZN7S1125C23v13Ev,
  (VTBL_ENTRY)&_ZN7S1125C23v14Ev,
  (VTBL_ENTRY)&_ZN7S1125C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1125C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1125C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1125C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1125C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1125C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1125C12v7Ev,
};
extern VTBL_ENTRY _ZTI7S1125C1[];
extern  VTBL_ENTRY _ZTV7S1125C1[];
Class_Descriptor cd_S1125C1 = {  "S1125C1", // class name
  bases_S1125C1, 3,
  &(vtc_S1125C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,36), // object size
  NSPAIRA(_ZTI7S1125C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1125C1),18, //virtual function table var
  2, // 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  S992C3  : S3216C8_nt {
};
//SIG(-1 S992C3) C1{ BC2{ m Fi}}



static void Test_S992C3()
{
  extern Class_Descriptor cd_S992C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S992C3, buf);
    S992C3 &lv = *(new (buf) S992C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S992C3)");
    check2(__alignof__(lv), 4, "__alignof__(S992C3)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S992C3");
    test_class_info(&lv, &cd_S992C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS992C3(Test_S992C3, "S992C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S992C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S992C3 = {  "S992C3", // class name
  bases_S992C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S992C2  : S992C3 {
  unsigned int s992c2f0:1;
  unsigned int s992c2f1:1;
  int s992c2f2:7;
  unsigned int s992c2f3:1;
  unsigned int s992c2f4:1;
  int s992c2f5:2;
  int s992c2f6:5;
};
//SIG(-1 S992C2) C1{ BC2{ BC3{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5}



static void Test_S992C2()
{
  extern Class_Descriptor cd_S992C2;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S992C2, buf);
    S992C2 &lv = *(new (buf) S992C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S992C2)");
    check2(__alignof__(lv), 4, "__alignof__(S992C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S992C3*), 0, "S992C2");
    check_base_class_offset(lv, (S992C3*), 0, "S992C2");
    set_bf_and_test(lv, s992c2f0, 4, 0, 1, 1, "S992C2");
    set_bf_and_test(lv, s992c2f1, 4, 1, 1, 1, "S992C2");
    set_bf_and_test(lv, s992c2f2, 4, 2, 7, 1, "S992C2");
    set_bf_and_test(lv, s992c2f2, 4, 2, 7, hide_sll(1LL<<6), "S992C2");
    set_bf_and_test(lv, s992c2f3, 5, 1, 1, 1, "S992C2");
    set_bf_and_test(lv, s992c2f4, 5, 2, 1, 1, "S992C2");
    set_bf_and_test(lv, s992c2f5, 5, 3, 2, 1, "S992C2");
    set_bf_and_test(lv, s992c2f5, 5, 3, 2, hide_sll(1LL<<1), "S992C2");
    set_bf_and_test(lv, s992c2f6, 5, 5, 5, 1, "S992C2");
    set_bf_and_test(lv, s992c2f6, 5, 5, 5, hide_sll(1LL<<4), "S992C2");
    test_class_info(&lv, &cd_S992C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS992C2(Test_S992C2, "S992C2", 8);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S992C3;
static Base_Class bases_S992C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S992C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S992C2 = {  "S992C2", // class name
  bases_S992C2, 2,
  0, // no vftv
  0, //no vtt
  8, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S992C1  : S992C2 {
  ::S16701C4_nt s992c1f0;
  ::S16701C4_nt s992c1f1;
  ::S16701C4_nt s992c1f2;
  ::S16701C4_nt s992c1f3;
  ::S16701C4_nt s992c1f4;
  ::S16701C4_nt s992c1f5;
};
//SIG(1 S992C1) C1{ BC2{ BC3{ BC4{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5} FC5{ m Fp} FC5 FC5 FC5 FC5 FC5}



static void Test_S992C1()
{
  extern Class_Descriptor cd_S992C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S992C1, buf);
    S992C1 &lv = *(new (buf) S992C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S992C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S992C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S992C3*)(S992C2*), 0, "S992C1");
    check_base_class_offset(lv, (S992C3*)(S992C2*), 0, "S992C1");
    check_base_class_offset(lv, (S992C2*), 0, "S992C1");
    check_field_offset(lv, s992c1f0, 8, "S992C1.s992c1f0");
    check_field_offset(lv, s992c1f1, ABISELECT(16,12), "S992C1.s992c1f1");
    check_field_offset(lv, s992c1f2, ABISELECT(24,16), "S992C1.s992c1f2");
    check_field_offset(lv, s992c1f3, ABISELECT(32,20), "S992C1.s992c1f3");
    check_field_offset(lv, s992c1f4, ABISELECT(40,24), "S992C1.s992c1f4");
    check_field_offset(lv, s992c1f5, ABISELECT(48,28), "S992C1.s992c1f5");
    test_class_info(&lv, &cd_S992C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS992C1(Test_S992C1, "S992C1", ABISELECT(56,32));

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S992C3;
extern Class_Descriptor cd_S992C2;
static Base_Class bases_S992C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S992C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S992C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S992C1 = {  "S992C1", // class name
  bases_S992C1, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(56,32), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S987C3  : S3216C8_nt {
};
//SIG(-1 S987C3) C1{ BC2{ m Fi}}



static void Test_S987C3()
{
  extern Class_Descriptor cd_S987C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S987C3, buf);
    S987C3 &lv = *(new (buf) S987C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S987C3)");
    check2(__alignof__(lv), 4, "__alignof__(S987C3)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S987C3");
    test_class_info(&lv, &cd_S987C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS987C3(Test_S987C3, "S987C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S987C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S987C3 = {  "S987C3", // class name
  bases_S987C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S987C2  : S987C3 {
  unsigned int s987c2f0:1;
  unsigned int s987c2f1:1;
  int s987c2f2:7;
  unsigned int s987c2f3:1;
  unsigned int s987c2f4:1;
  int s987c2f5:2;
  int s987c2f6:5;
};
//SIG(-1 S987C2) C1{ BC2{ BC3{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5}



static void Test_S987C2()
{
  extern Class_Descriptor cd_S987C2;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S987C2, buf);
    S987C2 &lv = *(new (buf) S987C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S987C2)");
    check2(__alignof__(lv), 4, "__alignof__(S987C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S987C3*), 0, "S987C2");
    check_base_class_offset(lv, (S987C3*), 0, "S987C2");
    set_bf_and_test(lv, s987c2f0, 4, 0, 1, 1, "S987C2");
    set_bf_and_test(lv, s987c2f1, 4, 1, 1, 1, "S987C2");
    set_bf_and_test(lv, s987c2f2, 4, 2, 7, 1, "S987C2");
    set_bf_and_test(lv, s987c2f2, 4, 2, 7, hide_sll(1LL<<6), "S987C2");
    set_bf_and_test(lv, s987c2f3, 5, 1, 1, 1, "S987C2");
    set_bf_and_test(lv, s987c2f4, 5, 2, 1, 1, "S987C2");
    set_bf_and_test(lv, s987c2f5, 5, 3, 2, 1, "S987C2");
    set_bf_and_test(lv, s987c2f5, 5, 3, 2, hide_sll(1LL<<1), "S987C2");
    set_bf_and_test(lv, s987c2f6, 5, 5, 5, 1, "S987C2");
    set_bf_and_test(lv, s987c2f6, 5, 5, 5, hide_sll(1LL<<4), "S987C2");
    test_class_info(&lv, &cd_S987C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS987C2(Test_S987C2, "S987C2", 8);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S987C3;
static Base_Class bases_S987C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S987C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S987C2 = {  "S987C2", // class name
  bases_S987C2, 2,
  0, // no vftv
  0, //no vtt
  8, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S987C1  : S987C2 {
  ::S16701C3 s987c1f0;
  ::S16701C4_nt s987c1f1;
};
//SIG(1 S987C1) C1{ BC2{ BC3{ BC4{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5} FC5{ m FC6{ m Fp}} FC6}



static void Test_S987C1()
{
  extern Class_Descriptor cd_S987C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S987C1, buf);
    S987C1 &lv = *(new (buf) S987C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S987C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S987C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S987C3*)(S987C2*), 0, "S987C1");
    check_base_class_offset(lv, (S987C3*)(S987C2*), 0, "S987C1");
    check_base_class_offset(lv, (S987C2*), 0, "S987C1");
    check_field_offset(lv, s987c1f0, 8, "S987C1.s987c1f0");
    check_field_offset(lv, s987c1f1, ABISELECT(16,12), "S987C1.s987c1f1");
    test_class_info(&lv, &cd_S987C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS987C1(Test_S987C1, "S987C1", ABISELECT(24,16));

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S987C3;
extern Class_Descriptor cd_S987C2;
static Base_Class bases_S987C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S987C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S987C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S987C1 = {  "S987C1", // class name
  bases_S987C1, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(24,16), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8931C2  {
  ::S4677C18_nt s8931c2f0;
  int s8931c2f1;
  void *s8931c2f2[4];
  virtual  ~S8931C2(); // _ZN7S8931C2D1Ev
  virtual void  v2(); // _ZN7S8931C22v2Ev
  virtual void  v3(); // _ZN7S8931C22v3Ev
  virtual void  v4(); // _ZN7S8931C22v4Ev
  virtual void  v5(); // _ZN7S8931C22v5Ev
  S8931C2(); // tgen
};
//SIG(-1 S8931C2) C1{ vd v1 v2 v3 v4 FC2{ m FC3{ m Fp Fi FC4{ m}} Fi} Fi Fp[4]}


 S8931C2 ::~S8931C2(){ note_dtor("S8931C2", this);}
void  S8931C2 ::v2(){vfunc_called(this, "_ZN7S8931C22v2Ev");}
void  S8931C2 ::v3(){vfunc_called(this, "_ZN7S8931C22v3Ev");}
void  S8931C2 ::v4(){vfunc_called(this, "_ZN7S8931C22v4Ev");}
void  S8931C2 ::v5(){vfunc_called(this, "_ZN7S8931C22v5Ev");}
S8931C2 ::S8931C2(){ note_ctor("S8931C2", this);} // tgen

static void Test_S8931C2()
{
  extern Class_Descriptor cd_S8931C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S8931C2, buf);
    S8931C2 *dp, &lv = *(dp=new (buf) S8931C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S8931C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8931C2)");
    check_field_offset(lv, s8931c2f0, ABISELECT(8,4), "S8931C2.s8931c2f0");
    check_field_offset(lv, s8931c2f1, ABISELECT(32,20), "S8931C2.s8931c2f1");
    check_field_offset(lv, s8931c2f2, ABISELECT(40,24), "S8931C2.s8931c2f2");
    test_class_info(&lv, &cd_S8931C2);
    dp->~S8931C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8931C2(Test_S8931C2, "S8931C2", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN7S8931C2C1Ev();
extern void _ZN7S8931C2D1Ev();
Name_Map name_map_S8931C2[] = {
  NSPAIR(_ZN7S8931C2C1Ev),
  NSPAIR(_ZN7S8931C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8931C2[];
extern void _ZN7S8931C2D1Ev();
extern void _ZN7S8931C2D0Ev();
extern void _ZN7S8931C22v2Ev();
extern void _ZN7S8931C22v3Ev();
extern void _ZN7S8931C22v4Ev();
extern void _ZN7S8931C22v5Ev();
static  VTBL_ENTRY vtc_S8931C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8931C2[0]),
  (VTBL_ENTRY)&_ZN7S8931C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8931C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8931C22v2Ev,
  (VTBL_ENTRY)&_ZN7S8931C22v3Ev,
  (VTBL_ENTRY)&_ZN7S8931C22v4Ev,
  (VTBL_ENTRY)&_ZN7S8931C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S8931C2[];
extern  VTBL_ENTRY _ZTV7S8931C2[];
Class_Descriptor cd_S8931C2 = {  "S8931C2", // class name
  0,0,//no base classes
  &(vtc_S8931C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI7S8931C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8931C2),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8931C1  : S8931C2 {
  ::S4145C8_nt s8931c1f0;
  void *s8931c1f1;
  virtual  ~S8931C1(); // _ZN7S8931C1D1Ev
  virtual void  v1(); // _ZN7S8931C12v1Ev
  S8931C1(); // tgen
};
//SIG(1 S8931C1) C1{ BC2{ vd v2 v3 v4 v5 FC3{ m FC4{ m Fp Fi FC5{ m}} Fi} Fi Fp[4]} vd v1 FC6{ vd m Fp} Fp}


 S8931C1 ::~S8931C1(){ note_dtor("S8931C1", this);}
void  S8931C1 ::v1(){vfunc_called(this, "_ZN7S8931C12v1Ev");}
S8931C1 ::S8931C1(){ note_ctor("S8931C1", this);} // tgen

static void Test_S8931C1()
{
  extern Class_Descriptor cd_S8931C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,14)];
    init_test(&cd_S8931C1, buf);
    S8931C1 *dp, &lv = *(dp=new (buf) S8931C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,52), "sizeof(S8931C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8931C1)");
    check_base_class_offset(lv, (S8931C2*), 0, "S8931C1");
    check_field_offset(lv, s8931c1f0, ABISELECT(72,40), "S8931C1.s8931c1f0");
    check_field_offset(lv, s8931c1f1, ABISELECT(88,48), "S8931C1.s8931c1f1");
    test_class_info(&lv, &cd_S8931C1);
    dp->~S8931C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8931C1(Test_S8931C1, "S8931C1", ABISELECT(96,52));

#else // __cplusplus

extern void _ZN7S8931C1C1Ev();
extern void _ZN7S8931C1D1Ev();
Name_Map name_map_S8931C1[] = {
  NSPAIR(_ZN7S8931C1C1Ev),
  NSPAIR(_ZN7S8931C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8931C2;
extern VTBL_ENTRY _ZTI7S8931C2[];
extern  VTBL_ENTRY _ZTV7S8931C2[];
static Base_Class bases_S8931C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8931C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8931C1[];
extern void _ZN7S8931C1D1Ev();
extern void _ZN7S8931C1D0Ev();
extern void _ZN7S8931C22v2Ev();
extern void _ZN7S8931C22v3Ev();
extern void _ZN7S8931C22v4Ev();
extern void _ZN7S8931C22v5Ev();
extern void _ZN7S8931C12v1Ev();
static  VTBL_ENTRY vtc_S8931C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8931C1[0]),
  (VTBL_ENTRY)&_ZN7S8931C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8931C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8931C22v2Ev,
  (VTBL_ENTRY)&_ZN7S8931C22v3Ev,
  (VTBL_ENTRY)&_ZN7S8931C22v4Ev,
  (VTBL_ENTRY)&_ZN7S8931C22v5Ev,
  (VTBL_ENTRY)&_ZN7S8931C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S8931C1[];
extern  VTBL_ENTRY _ZTV7S8931C1[];
Class_Descriptor cd_S8931C1 = {  "S8931C1", // class name
  bases_S8931C1, 1,
  &(vtc_S8931C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,52), // object size
  NSPAIRA(_ZTI7S8931C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8931C1),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  S2625C2  : S3216C8_nt {
};
//SIG(-1 S2625C2) C1{ BC2{ m Fi}}



static void Test_S2625C2()
{
  extern Class_Descriptor cd_S2625C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2625C2, buf);
    S2625C2 &lv = *(new (buf) S2625C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2625C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2625C2)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S2625C2");
    test_class_info(&lv, &cd_S2625C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2625C2(Test_S2625C2, "S2625C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S2625C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2625C2 = {  "S2625C2", // class name
  bases_S2625C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2625C1  : S2625C2 {
  ::S16701C2 s2625c1f0;
  ::S15143C2 s2625c1f1;
};
//SIG(1 S2625C1) C1{ BC2{ BC3{ m Fi}} FC4{ m FC5{ m FC6{ m Fp}}} FC7{ m Fi FC8{ BC9{ m Fp Fi} FC10{ Fi[4]}}}}



static void Test_S2625C1()
{
  extern Class_Descriptor cd_S2625C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S2625C1, buf);
    S2625C1 &lv = *(new (buf) S2625C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S2625C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2625C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S2625C2*), 0, "S2625C1");
    check_base_class_offset(lv, (S2625C2*), 0, "S2625C1");
    check_field_offset(lv, s2625c1f0, ABISELECT(8,4), "S2625C1.s2625c1f0");
    check_field_offset(lv, s2625c1f1, ABISELECT(16,8), "S2625C1.s2625c1f1");
    test_class_info(&lv, &cd_S2625C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2625C1(Test_S2625C1, "S2625C1", ABISELECT(56,36));

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S2625C2;
static Base_Class bases_S2625C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2625C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2625C1 = {  "S2625C1", // class name
  bases_S2625C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(56,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  S8474C2  {
  ::S4677C18_nt s8474c2f0;
  int s8474c2f1;
  void *s8474c2f2[3];
  virtual  ~S8474C2(); // _ZN7S8474C2D1Ev
  virtual void  v1(); // _ZN7S8474C22v1Ev
  virtual void  v2(); // _ZN7S8474C22v2Ev
  virtual void  v3(); // _ZN7S8474C22v3Ev
  virtual void  v4(); // _ZN7S8474C22v4Ev
  S8474C2(); // tgen
};
//SIG(-1 S8474C2) C1{ vd v1 v2 v3 v4 FC2{ m FC3{ m Fp Fi FC4{ m}} Fi} Fi Fp[3]}


 S8474C2 ::~S8474C2(){ note_dtor("S8474C2", this);}
void  S8474C2 ::v1(){vfunc_called(this, "_ZN7S8474C22v1Ev");}
void  S8474C2 ::v2(){vfunc_called(this, "_ZN7S8474C22v2Ev");}
void  S8474C2 ::v3(){vfunc_called(this, "_ZN7S8474C22v3Ev");}
void  S8474C2 ::v4(){vfunc_called(this, "_ZN7S8474C22v4Ev");}
S8474C2 ::S8474C2(){ note_ctor("S8474C2", this);} // tgen

static void Test_S8474C2()
{
  extern Class_Descriptor cd_S8474C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S8474C2, buf);
    S8474C2 *dp, &lv = *(dp=new (buf) S8474C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S8474C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8474C2)");
    check_field_offset(lv, s8474c2f0, ABISELECT(8,4), "S8474C2.s8474c2f0");
    check_field_offset(lv, s8474c2f1, ABISELECT(32,20), "S8474C2.s8474c2f1");
    check_field_offset(lv, s8474c2f2, ABISELECT(40,24), "S8474C2.s8474c2f2");
    test_class_info(&lv, &cd_S8474C2);
    dp->~S8474C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8474C2(Test_S8474C2, "S8474C2", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN7S8474C2C1Ev();
extern void _ZN7S8474C2D1Ev();
Name_Map name_map_S8474C2[] = {
  NSPAIR(_ZN7S8474C2C1Ev),
  NSPAIR(_ZN7S8474C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8474C2[];
extern void _ZN7S8474C2D1Ev();
extern void _ZN7S8474C2D0Ev();
extern void _ZN7S8474C22v1Ev();
extern void _ZN7S8474C22v2Ev();
extern void _ZN7S8474C22v3Ev();
extern void _ZN7S8474C22v4Ev();
static  VTBL_ENTRY vtc_S8474C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8474C2[0]),
  (VTBL_ENTRY)&_ZN7S8474C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8474C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8474C22v1Ev,
  (VTBL_ENTRY)&_ZN7S8474C22v2Ev,
  (VTBL_ENTRY)&_ZN7S8474C22v3Ev,
  (VTBL_ENTRY)&_ZN7S8474C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S8474C2[];
extern  VTBL_ENTRY _ZTV7S8474C2[];
Class_Descriptor cd_S8474C2 = {  "S8474C2", // class name
  0,0,//no base classes
  &(vtc_S8474C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI7S8474C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8474C2),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8474C1  : S8474C2 {
  int s8474c1f0;
  ::S4145C8_nt s8474c1f1;
  virtual  ~S8474C1(); // _ZN7S8474C1D1Ev
  S8474C1(); // tgen
};
//SIG(1 S8474C1) C1{ BC2{ vd v1 v2 v3 v4 FC3{ m FC4{ m Fp Fi FC5{ m}} Fi} Fi Fp[3]} vd Fi FC6{ vd m Fp}}


 S8474C1 ::~S8474C1(){ note_dtor("S8474C1", this);}
S8474C1 ::S8474C1(){ note_ctor("S8474C1", this);} // tgen

static void Test_S8474C1()
{
  extern Class_Descriptor cd_S8474C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,13)];
    init_test(&cd_S8474C1, buf);
    S8474C1 *dp, &lv = *(dp=new (buf) S8474C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,48), "sizeof(S8474C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8474C1)");
    check_base_class_offset(lv, (S8474C2*), 0, "S8474C1");
    check_field_offset(lv, s8474c1f0, ABISELECT(64,36), "S8474C1.s8474c1f0");
    check_field_offset(lv, s8474c1f1, ABISELECT(72,40), "S8474C1.s8474c1f1");
    test_class_info(&lv, &cd_S8474C1);
    dp->~S8474C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8474C1(Test_S8474C1, "S8474C1", ABISELECT(88,48));

#else // __cplusplus

extern void _ZN7S8474C1C1Ev();
extern void _ZN7S8474C1D1Ev();
Name_Map name_map_S8474C1[] = {
  NSPAIR(_ZN7S8474C1C1Ev),
  NSPAIR(_ZN7S8474C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8474C2;
extern VTBL_ENTRY _ZTI7S8474C2[];
extern  VTBL_ENTRY _ZTV7S8474C2[];
static Base_Class bases_S8474C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8474C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8474C1[];
extern void _ZN7S8474C1D1Ev();
extern void _ZN7S8474C1D0Ev();
extern void _ZN7S8474C22v1Ev();
extern void _ZN7S8474C22v2Ev();
extern void _ZN7S8474C22v3Ev();
extern void _ZN7S8474C22v4Ev();
static  VTBL_ENTRY vtc_S8474C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8474C1[0]),
  (VTBL_ENTRY)&_ZN7S8474C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8474C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8474C22v1Ev,
  (VTBL_ENTRY)&_ZN7S8474C22v2Ev,
  (VTBL_ENTRY)&_ZN7S8474C22v3Ev,
  (VTBL_ENTRY)&_ZN7S8474C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S8474C1[];
extern  VTBL_ENTRY _ZTV7S8474C1[];
Class_Descriptor cd_S8474C1 = {  "S8474C1", // class name
  bases_S8474C1, 1,
  &(vtc_S8474C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,48), // object size
  NSPAIRA(_ZTI7S8474C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8474C1),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  S988C3  : S3216C8_nt {
};
//SIG(-1 S988C3) C1{ BC2{ m Fi}}



static void Test_S988C3()
{
  extern Class_Descriptor cd_S988C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S988C3, buf);
    S988C3 &lv = *(new (buf) S988C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S988C3)");
    check2(__alignof__(lv), 4, "__alignof__(S988C3)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S988C3");
    test_class_info(&lv, &cd_S988C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS988C3(Test_S988C3, "S988C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S988C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S988C3 = {  "S988C3", // class name
  bases_S988C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S988C2  : S988C3 {
  unsigned int s988c2f0:1;
  unsigned int s988c2f1:1;
  int s988c2f2:7;
  unsigned int s988c2f3:1;
  unsigned int s988c2f4:1;
  int s988c2f5:2;
  int s988c2f6:5;
};
//SIG(-1 S988C2) C1{ BC2{ BC3{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5}



static void Test_S988C2()
{
  extern Class_Descriptor cd_S988C2;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S988C2, buf);
    S988C2 &lv = *(new (buf) S988C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S988C2)");
    check2(__alignof__(lv), 4, "__alignof__(S988C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S988C3*), 0, "S988C2");
    check_base_class_offset(lv, (S988C3*), 0, "S988C2");
    set_bf_and_test(lv, s988c2f0, 4, 0, 1, 1, "S988C2");
    set_bf_and_test(lv, s988c2f1, 4, 1, 1, 1, "S988C2");
    set_bf_and_test(lv, s988c2f2, 4, 2, 7, 1, "S988C2");
    set_bf_and_test(lv, s988c2f2, 4, 2, 7, hide_sll(1LL<<6), "S988C2");
    set_bf_and_test(lv, s988c2f3, 5, 1, 1, 1, "S988C2");
    set_bf_and_test(lv, s988c2f4, 5, 2, 1, 1, "S988C2");
    set_bf_and_test(lv, s988c2f5, 5, 3, 2, 1, "S988C2");
    set_bf_and_test(lv, s988c2f5, 5, 3, 2, hide_sll(1LL<<1), "S988C2");
    set_bf_and_test(lv, s988c2f6, 5, 5, 5, 1, "S988C2");
    set_bf_and_test(lv, s988c2f6, 5, 5, 5, hide_sll(1LL<<4), "S988C2");
    test_class_info(&lv, &cd_S988C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS988C2(Test_S988C2, "S988C2", 8);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S988C3;
static Base_Class bases_S988C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S988C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S988C2 = {  "S988C2", // class name
  bases_S988C2, 2,
  0, // no vftv
  0, //no vtt
  8, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S988C1  : S988C2 {
  ::S16701C3 s988c1f0;
  int s988c1f1;
};
//SIG(1 S988C1) C1{ BC2{ BC3{ BC4{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5} FC5{ m FC6{ m Fp}} Fi}



static void Test_S988C1()
{
  extern Class_Descriptor cd_S988C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S988C1, buf);
    S988C1 &lv = *(new (buf) S988C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S988C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S988C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S988C3*)(S988C2*), 0, "S988C1");
    check_base_class_offset(lv, (S988C3*)(S988C2*), 0, "S988C1");
    check_base_class_offset(lv, (S988C2*), 0, "S988C1");
    check_field_offset(lv, s988c1f0, 8, "S988C1.s988c1f0");
    check_field_offset(lv, s988c1f1, ABISELECT(16,12), "S988C1.s988c1f1");
    test_class_info(&lv, &cd_S988C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS988C1(Test_S988C1, "S988C1", ABISELECT(24,16));

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S988C3;
extern Class_Descriptor cd_S988C2;
static Base_Class bases_S988C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S988C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S988C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S988C1 = {  "S988C1", // class name
  bases_S988C1, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(24,16), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8475C2  {
  ::S4677C18_nt s8475c2f0;
  int s8475c2f1;
  void *s8475c2f2[4];
  virtual  ~S8475C2(); // _ZN7S8475C2D1Ev
  virtual void  v1(); // _ZN7S8475C22v1Ev
  virtual void  v2(); // _ZN7S8475C22v2Ev
  virtual void  v3(); // _ZN7S8475C22v3Ev
  virtual void  v4(); // _ZN7S8475C22v4Ev
  S8475C2(); // tgen
};
//SIG(-1 S8475C2) C1{ vd v1 v2 v3 v4 FC2{ m FC3{ m Fp Fi FC4{ m}} Fi} Fi Fp[4]}


 S8475C2 ::~S8475C2(){ note_dtor("S8475C2", this);}
void  S8475C2 ::v1(){vfunc_called(this, "_ZN7S8475C22v1Ev");}
void  S8475C2 ::v2(){vfunc_called(this, "_ZN7S8475C22v2Ev");}
void  S8475C2 ::v3(){vfunc_called(this, "_ZN7S8475C22v3Ev");}
void  S8475C2 ::v4(){vfunc_called(this, "_ZN7S8475C22v4Ev");}
S8475C2 ::S8475C2(){ note_ctor("S8475C2", this);} // tgen

static void Test_S8475C2()
{
  extern Class_Descriptor cd_S8475C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S8475C2, buf);
    S8475C2 *dp, &lv = *(dp=new (buf) S8475C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S8475C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8475C2)");
    check_field_offset(lv, s8475c2f0, ABISELECT(8,4), "S8475C2.s8475c2f0");
    check_field_offset(lv, s8475c2f1, ABISELECT(32,20), "S8475C2.s8475c2f1");
    check_field_offset(lv, s8475c2f2, ABISELECT(40,24), "S8475C2.s8475c2f2");
    test_class_info(&lv, &cd_S8475C2);
    dp->~S8475C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8475C2(Test_S8475C2, "S8475C2", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN7S8475C2C1Ev();
extern void _ZN7S8475C2D1Ev();
Name_Map name_map_S8475C2[] = {
  NSPAIR(_ZN7S8475C2C1Ev),
  NSPAIR(_ZN7S8475C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8475C2[];
extern void _ZN7S8475C2D1Ev();
extern void _ZN7S8475C2D0Ev();
extern void _ZN7S8475C22v1Ev();
extern void _ZN7S8475C22v2Ev();
extern void _ZN7S8475C22v3Ev();
extern void _ZN7S8475C22v4Ev();
static  VTBL_ENTRY vtc_S8475C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8475C2[0]),
  (VTBL_ENTRY)&_ZN7S8475C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8475C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8475C22v1Ev,
  (VTBL_ENTRY)&_ZN7S8475C22v2Ev,
  (VTBL_ENTRY)&_ZN7S8475C22v3Ev,
  (VTBL_ENTRY)&_ZN7S8475C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S8475C2[];
extern  VTBL_ENTRY _ZTV7S8475C2[];
Class_Descriptor cd_S8475C2 = {  "S8475C2", // class name
  0,0,//no base classes
  &(vtc_S8475C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI7S8475C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8475C2),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8475C1  : S8475C2 {
  ::S4145C8_nt s8475c1f0;
  virtual  ~S8475C1(); // _ZN7S8475C1D1Ev
  S8475C1(); // tgen
};
//SIG(1 S8475C1) C1{ BC2{ vd v1 v2 v3 v4 FC3{ m FC4{ m Fp Fi FC5{ m}} Fi} Fi Fp[4]} vd FC6{ vd m Fp}}


 S8475C1 ::~S8475C1(){ note_dtor("S8475C1", this);}
S8475C1 ::S8475C1(){ note_ctor("S8475C1", this);} // tgen

static void Test_S8475C1()
{
  extern Class_Descriptor cd_S8475C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,13)];
    init_test(&cd_S8475C1, buf);
    S8475C1 *dp, &lv = *(dp=new (buf) S8475C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,48), "sizeof(S8475C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8475C1)");
    check_base_class_offset(lv, (S8475C2*), 0, "S8475C1");
    check_field_offset(lv, s8475c1f0, ABISELECT(72,40), "S8475C1.s8475c1f0");
    test_class_info(&lv, &cd_S8475C1);
    dp->~S8475C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8475C1(Test_S8475C1, "S8475C1", ABISELECT(88,48));

#else // __cplusplus

extern void _ZN7S8475C1C1Ev();
extern void _ZN7S8475C1D1Ev();
Name_Map name_map_S8475C1[] = {
  NSPAIR(_ZN7S8475C1C1Ev),
  NSPAIR(_ZN7S8475C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8475C2;
extern VTBL_ENTRY _ZTI7S8475C2[];
extern  VTBL_ENTRY _ZTV7S8475C2[];
static Base_Class bases_S8475C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8475C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8475C1[];
extern void _ZN7S8475C1D1Ev();
extern void _ZN7S8475C1D0Ev();
extern void _ZN7S8475C22v1Ev();
extern void _ZN7S8475C22v2Ev();
extern void _ZN7S8475C22v3Ev();
extern void _ZN7S8475C22v4Ev();
static  VTBL_ENTRY vtc_S8475C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8475C1[0]),
  (VTBL_ENTRY)&_ZN7S8475C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8475C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8475C22v1Ev,
  (VTBL_ENTRY)&_ZN7S8475C22v2Ev,
  (VTBL_ENTRY)&_ZN7S8475C22v3Ev,
  (VTBL_ENTRY)&_ZN7S8475C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S8475C1[];
extern  VTBL_ENTRY _ZTV7S8475C1[];
Class_Descriptor cd_S8475C1 = {  "S8475C1", // class name
  bases_S8475C1, 1,
  &(vtc_S8475C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,48), // object size
  NSPAIRA(_ZTI7S8475C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8475C1),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  S8473C2  {
  ::S4677C18_nt s8473c2f0;
  int s8473c2f1;
  void *s8473c2f2[3];
  virtual  ~S8473C2(); // _ZN7S8473C2D1Ev
  virtual void  v1(); // _ZN7S8473C22v1Ev
  virtual void  v2(); // _ZN7S8473C22v2Ev
  virtual void  v3(); // _ZN7S8473C22v3Ev
  virtual void  v4(); // _ZN7S8473C22v4Ev
  S8473C2(); // tgen
};
//SIG(-1 S8473C2) C1{ vd v1 v2 v3 v4 FC2{ m FC3{ m Fp Fi FC4{ m}} Fi} Fi Fp[3]}


 S8473C2 ::~S8473C2(){ note_dtor("S8473C2", this);}
void  S8473C2 ::v1(){vfunc_called(this, "_ZN7S8473C22v1Ev");}
void  S8473C2 ::v2(){vfunc_called(this, "_ZN7S8473C22v2Ev");}
void  S8473C2 ::v3(){vfunc_called(this, "_ZN7S8473C22v3Ev");}
void  S8473C2 ::v4(){vfunc_called(this, "_ZN7S8473C22v4Ev");}
S8473C2 ::S8473C2(){ note_ctor("S8473C2", this);} // tgen

static void Test_S8473C2()
{
  extern Class_Descriptor cd_S8473C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S8473C2, buf);
    S8473C2 *dp, &lv = *(dp=new (buf) S8473C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S8473C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8473C2)");
    check_field_offset(lv, s8473c2f0, ABISELECT(8,4), "S8473C2.s8473c2f0");
    check_field_offset(lv, s8473c2f1, ABISELECT(32,20), "S8473C2.s8473c2f1");
    check_field_offset(lv, s8473c2f2, ABISELECT(40,24), "S8473C2.s8473c2f2");
    test_class_info(&lv, &cd_S8473C2);
    dp->~S8473C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8473C2(Test_S8473C2, "S8473C2", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN7S8473C2C1Ev();
extern void _ZN7S8473C2D1Ev();
Name_Map name_map_S8473C2[] = {
  NSPAIR(_ZN7S8473C2C1Ev),
  NSPAIR(_ZN7S8473C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8473C2[];
extern void _ZN7S8473C2D1Ev();
extern void _ZN7S8473C2D0Ev();
extern void _ZN7S8473C22v1Ev();
extern void _ZN7S8473C22v2Ev();
extern void _ZN7S8473C22v3Ev();
extern void _ZN7S8473C22v4Ev();
static  VTBL_ENTRY vtc_S8473C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8473C2[0]),
  (VTBL_ENTRY)&_ZN7S8473C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8473C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8473C22v1Ev,
  (VTBL_ENTRY)&_ZN7S8473C22v2Ev,
  (VTBL_ENTRY)&_ZN7S8473C22v3Ev,
  (VTBL_ENTRY)&_ZN7S8473C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S8473C2[];
extern  VTBL_ENTRY _ZTV7S8473C2[];
Class_Descriptor cd_S8473C2 = {  "S8473C2", // class name
  0,0,//no base classes
  &(vtc_S8473C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI7S8473C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8473C2),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8473C1  : S8473C2 {
  ::S4145C8_nt s8473c1f0;
  virtual  ~S8473C1(); // _ZN7S8473C1D1Ev
  S8473C1(); // tgen
};
//SIG(1 S8473C1) C1{ BC2{ vd v1 v2 v3 v4 FC3{ m FC4{ m Fp Fi FC5{ m}} Fi} Fi Fp[3]} vd FC6{ vd m Fp}}


 S8473C1 ::~S8473C1(){ note_dtor("S8473C1", this);}
S8473C1 ::S8473C1(){ note_ctor("S8473C1", this);} // tgen

static void Test_S8473C1()
{
  extern Class_Descriptor cd_S8473C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,12)];
    init_test(&cd_S8473C1, buf);
    S8473C1 *dp, &lv = *(dp=new (buf) S8473C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S8473C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8473C1)");
    check_base_class_offset(lv, (S8473C2*), 0, "S8473C1");
    check_field_offset(lv, s8473c1f0, ABISELECT(64,36), "S8473C1.s8473c1f0");
    test_class_info(&lv, &cd_S8473C1);
    dp->~S8473C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8473C1(Test_S8473C1, "S8473C1", ABISELECT(80,44));

#else // __cplusplus

extern void _ZN7S8473C1C1Ev();
extern void _ZN7S8473C1D1Ev();
Name_Map name_map_S8473C1[] = {
  NSPAIR(_ZN7S8473C1C1Ev),
  NSPAIR(_ZN7S8473C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8473C2;
extern VTBL_ENTRY _ZTI7S8473C2[];
extern  VTBL_ENTRY _ZTV7S8473C2[];
static Base_Class bases_S8473C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8473C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8473C1[];
extern void _ZN7S8473C1D1Ev();
extern void _ZN7S8473C1D0Ev();
extern void _ZN7S8473C22v1Ev();
extern void _ZN7S8473C22v2Ev();
extern void _ZN7S8473C22v3Ev();
extern void _ZN7S8473C22v4Ev();
static  VTBL_ENTRY vtc_S8473C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8473C1[0]),
  (VTBL_ENTRY)&_ZN7S8473C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8473C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8473C22v1Ev,
  (VTBL_ENTRY)&_ZN7S8473C22v2Ev,
  (VTBL_ENTRY)&_ZN7S8473C22v3Ev,
  (VTBL_ENTRY)&_ZN7S8473C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S8473C1[];
extern  VTBL_ENTRY _ZTV7S8473C1[];
Class_Descriptor cd_S8473C1 = {  "S8473C1", // class name
  bases_S8473C1, 1,
  &(vtc_S8473C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI7S8473C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8473C1),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  S15898C7_nt  {
  int s15898c7f0;
  void *s15898c7f1;
  int s15898c7f2;
  void  mf15898c7(); // _ZN11S15898C7_nt9mf15898c7Ev
};
//SIG(-1 S15898C7_nt) C1{ m Fi Fp Fi}


void  S15898C7_nt ::mf15898c7(){}

//skip512 S15898C7_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15898C1  {
  ::S16701C3 s15898c1f0;
  int s15898c1f1;
  void *s15898c1f2;
  ::S2710C9_nt s15898c1f3;
  ::S15898C7_nt s15898c1f4;
  void  mf15898c1(); // _ZN8S15898C19mf15898c1Ev
};
//SIG(1 S15898C1) C1{ m FC2{ m FC3{ m Fp}} Fi Fp FC4{ m Fi FC5{ BC6{ m Fp Fi}}} FC7{ m Fi Fp Fi}}


void  S15898C1 ::mf15898c1(){}

static void Test_S15898C1()
{
  {
    init_simple_test("S15898C1");
    S15898C1 lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S15898C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15898C1)");
    check_field_offset(lv, s15898c1f0, 0, "S15898C1.s15898c1f0");
    check_field_offset(lv, s15898c1f1, ABISELECT(8,4), "S15898C1.s15898c1f1");
    check_field_offset(lv, s15898c1f2, ABISELECT(16,8), "S15898C1.s15898c1f2");
    check_field_offset(lv, s15898c1f3, ABISELECT(24,12), "S15898C1.s15898c1f3");
    check_field_offset(lv, s15898c1f4, ABISELECT(48,24), "S15898C1.s15898c1f4");
  }
}
static Arrange_To_Call_Me vS15898C1(Test_S15898C1, "S15898C1", ABISELECT(72,36));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S968C3_nt  : S3216C8_nt {
  int s968c3f0:4;
  int s968c3f1:28;
};
//SIG(-1 S968C3_nt) C1{ BC2{ m Fi} Fi:4 Fi:28}



//skip512 S968C3_nt

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S968C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S968C3_nt = {  "S968C3_nt", // class name
  bases_S968C3_nt, 1,
  0, // no vftv
  0, //no vtt
  8, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S968C2  : S968C3_nt {
  ::S2710C9_nt s968c2f0;
};
//SIG(-1 S968C2) C1{ BC2{ BC3{ m Fi} Fi:4 Fi:28} FC4{ m Fi FC5{ BC6{ m Fp Fi}}}}



static void Test_S968C2()
{
  extern Class_Descriptor cd_S968C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S968C2, buf);
    S968C2 &lv = *(new (buf) S968C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S968C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S968C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S968C3_nt*), 0, "S968C2");
    check_base_class_offset(lv, (S968C3_nt*), 0, "S968C2");
    check_field_offset(lv, s968c2f0, 8, "S968C2.s968c2f0");
    test_class_info(&lv, &cd_S968C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS968C2(Test_S968C2, "S968C2", ABISELECT(32,20));

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S968C3_nt;
static Base_Class bases_S968C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S968C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S968C2 = {  "S968C2", // class name
  bases_S968C2, 2,
  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  S968C1  : S968C2 {
  ::S16701C4_nt s968c1f0;
};
//SIG(1 S968C1) C1{ BC2{ BC3{ BC4{ m Fi} Fi:4 Fi:28} FC5{ m Fi FC6{ BC7{ m Fp Fi}}}} FC8{ m Fp}}



static void Test_S968C1()
{
  extern Class_Descriptor cd_S968C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S968C1, buf);
    S968C1 &lv = *(new (buf) S968C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S968C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S968C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S968C3_nt*)(S968C2*), 0, "S968C1");
    check_base_class_offset(lv, (S968C3_nt*)(S968C2*), 0, "S968C1");
    check_base_class_offset(lv, (S968C2*), 0, "S968C1");
    check_field_offset(lv, s968c1f0, ABISELECT(32,20), "S968C1.s968c1f0");
    test_class_info(&lv, &cd_S968C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS968C1(Test_S968C1, "S968C1", ABISELECT(40,24));

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S968C3_nt;
extern Class_Descriptor cd_S968C2;
static Base_Class bases_S968C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S968C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S968C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S968C1 = {  "S968C1", // class name
  bases_S968C1, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(40,24), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15885C4  {
  ::S16701C3 s15885c4f0;
  ::S16701C3 s15885c4f1;
  ::S16701C3 s15885c4f2;
  ::S2710C9_nt s15885c4f3;
  void  mf15885c4(); // _ZN8S15885C49mf15885c4Ev
};
//SIG(-1 S15885C4) C1{ m FC2{ m FC3{ m Fp}} FC2 FC2 FC4{ m Fi FC5{ BC6{ m Fp Fi}}}}


void  S15885C4 ::mf15885c4(){}

static void Test_S15885C4()
{
  {
    init_simple_test("S15885C4");
    S15885C4 lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S15885C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15885C4)");
    check_field_offset(lv, s15885c4f0, 0, "S15885C4.s15885c4f0");
    check_field_offset(lv, s15885c4f1, ABISELECT(8,4), "S15885C4.s15885c4f1");
    check_field_offset(lv, s15885c4f2, ABISELECT(16,8), "S15885C4.s15885c4f2");
    check_field_offset(lv, s15885c4f3, ABISELECT(24,12), "S15885C4.s15885c4f3");
  }
}
static Arrange_To_Call_Me vS15885C4(Test_S15885C4, "S15885C4", ABISELECT(48,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15885C1  {
  ::S16701C3 s15885c1f0;
  ::S15885C4 s15885c1f1;
  void  mf15885c1(); // _ZN8S15885C19mf15885c1Ev
};
//SIG(1 S15885C1) C1{ m FC2{ m FC3{ m Fp}} FC4{ m FC2 FC2 FC2 FC5{ m Fi FC6{ BC7{ m Fp Fi}}}}}


void  S15885C1 ::mf15885c1(){}

static void Test_S15885C1()
{
  {
    init_simple_test("S15885C1");
    S15885C1 lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S15885C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15885C1)");
    check_field_offset(lv, s15885c1f0, 0, "S15885C1.s15885c1f0");
    check_field_offset(lv, s15885c1f1, ABISELECT(8,4), "S15885C1.s15885c1f1");
  }
}
static Arrange_To_Call_Me vS15885C1(Test_S15885C1, "S15885C1", ABISELECT(56,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1009C3  : S3216C8_nt {
};
//SIG(-1 S1009C3) C1{ BC2{ m Fi}}



static void Test_S1009C3()
{
  extern Class_Descriptor cd_S1009C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S1009C3, buf);
    S1009C3 &lv = *(new (buf) S1009C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S1009C3)");
    check2(__alignof__(lv), 4, "__alignof__(S1009C3)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S1009C3");
    test_class_info(&lv, &cd_S1009C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1009C3(Test_S1009C3, "S1009C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S1009C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1009C3[];
Class_Descriptor cd_S1009C3 = {  "S1009C3", // class name
  bases_S1009C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S1009C3),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  S1009C2_nt  : S1009C3 {
  virtual  ~S1009C2_nt(); // _ZN10S1009C2_ntD1Ev
  virtual void  v3(); // _ZN10S1009C2_nt2v3Ev
  virtual void  v4(); // _ZN10S1009C2_nt2v4Ev
  S1009C2_nt(); // tgen
};
//SIG(-1 S1009C2_nt) C1{ BC2{ BC3{ m Fi}} vd v1 v2}


 S1009C2_nt ::~S1009C2_nt(){ note_dtor("S1009C2_nt", this);}
void  S1009C2_nt ::v3(){vfunc_called(this, "_ZN10S1009C2_nt2v3Ev");}
void  S1009C2_nt ::v4(){vfunc_called(this, "_ZN10S1009C2_nt2v4Ev");}
S1009C2_nt ::S1009C2_nt(){ note_ctor("S1009C2_nt", this);} // tgen

//skip512 S1009C2_nt

#else // __cplusplus

extern void _ZN10S1009C2_ntC1Ev();
extern void _ZN10S1009C2_ntD1Ev();
Name_Map name_map_S1009C2_nt[] = {
  NSPAIR(_ZN10S1009C2_ntC1Ev),
  NSPAIR(_ZN10S1009C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1009C3;
extern VTBL_ENTRY _ZTI7S1009C3[];
static Base_Class bases_S1009C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S1009C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1009C2_nt[];
extern void _ZN10S1009C2_ntD1Ev();
extern void _ZN10S1009C2_ntD0Ev();
extern void _ZN10S1009C2_nt2v3Ev();
extern void _ZN10S1009C2_nt2v4Ev();
static  VTBL_ENTRY vtc_S1009C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1009C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S1009C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1009C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1009C2_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S1009C2_nt2v4Ev,
};
extern VTBL_ENTRY _ZTI10S1009C2_nt[];
VTBL_ENTRY *P__ZTI10S1009C2_nt = _ZTI10S1009C2_nt; 
extern  VTBL_ENTRY _ZTV10S1009C2_nt[];
Class_Descriptor cd_S1009C2_nt = {  "S1009C2_nt", // class name
  bases_S1009C2_nt, 2,
  &(vtc_S1009C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S1009C2_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV10S1009C2_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  S1009C1  : S1009C2_nt {
  ::S2710C9_nt s1009c1f0;
  int s1009c1f1;
  virtual void  v1(); // _ZN7S1009C12v1Ev
  virtual void  v2(); // _ZN7S1009C12v2Ev
  ~S1009C1(); // tgen
  S1009C1(); // tgen
};
//SIG(1 S1009C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v3 v4} v1 v2 FC5{ m Fi FC6{ BC7{ m Fp Fi}}} Fi}


void  S1009C1 ::v1(){vfunc_called(this, "_ZN7S1009C12v1Ev");}
void  S1009C1 ::v2(){vfunc_called(this, "_ZN7S1009C12v2Ev");}
S1009C1 ::~S1009C1(){ note_dtor("S1009C1", this);} // tgen
S1009C1 ::S1009C1(){ note_ctor("S1009C1", this);} // tgen

static void Test_S1009C1()
{
  extern Class_Descriptor cd_S1009C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S1009C1, buf);
    S1009C1 *dp, &lv = *(dp=new (buf) S1009C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S1009C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1009C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1009C3*)(S1009C2_nt*), ABISELECT(8,4), "S1009C1");
    check_base_class_offset(lv, (S1009C3*)(S1009C2_nt*), ABISELECT(8,4), "S1009C1");
    check_base_class_offset(lv, (S1009C2_nt*), 0, "S1009C1");
    check_field_offset(lv, s1009c1f0, ABISELECT(16,8), "S1009C1.s1009c1f0");
    check_field_offset(lv, s1009c1f1, ABISELECT(40,20), "S1009C1.s1009c1f1");
    test_class_info(&lv, &cd_S1009C1);
    dp->~S1009C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1009C1(Test_S1009C1, "S1009C1", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S1009C1C1Ev();
extern void _ZN7S1009C1D1Ev();
Name_Map name_map_S1009C1[] = {
  NSPAIR(_ZN7S1009C1C1Ev),
  NSPAIR(_ZN7S1009C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1009C3;
extern VTBL_ENTRY _ZTI7S1009C3[];
extern Class_Descriptor cd_S1009C2_nt;
extern VTBL_ENTRY _ZTI10S1009C2_nt[];
extern  VTBL_ENTRY _ZTV10S1009C2_nt[];
static Base_Class bases_S1009C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S1009C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1009C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1009C1[];
extern void _ZN7S1009C1D1Ev();
extern void _ZN7S1009C1D0Ev();
extern void _ZN10S1009C2_nt2v3Ev();
extern void _ZN10S1009C2_nt2v4Ev();
extern void _ZN7S1009C12v1Ev();
extern void _ZN7S1009C12v2Ev();
static  VTBL_ENTRY vtc_S1009C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1009C1[0]),
  (VTBL_ENTRY)&_ZN7S1009C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1009C1D0Ev,
  (VTBL_ENTRY)&_ZN10S1009C2_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S1009C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S1009C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1009C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S1009C1[];
extern  VTBL_ENTRY _ZTV7S1009C1[];
Class_Descriptor cd_S1009C1 = {  "S1009C1", // class name
  bases_S1009C1, 3,
  &(vtc_S1009C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S1009C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1009C1),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  S1061C3  : S3216C8_nt {
};
//SIG(-1 S1061C3) C1{ BC2{ m Fi}}



static void Test_S1061C3()
{
  extern Class_Descriptor cd_S1061C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S1061C3, buf);
    S1061C3 &lv = *(new (buf) S1061C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S1061C3)");
    check2(__alignof__(lv), 4, "__alignof__(S1061C3)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S1061C3");
    test_class_info(&lv, &cd_S1061C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1061C3(Test_S1061C3, "S1061C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S1061C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1061C3[];
Class_Descriptor cd_S1061C3 = {  "S1061C3", // class name
  bases_S1061C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S1061C3),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  S1061C2  : S1061C3 {
  virtual  ~S1061C2(); // _ZN7S1061C2D1Ev
  virtual void  v2(); // _ZN7S1061C22v2Ev
  S1061C2(); // tgen
};
//SIG(-1 S1061C2) C1{ BC2{ BC3{ m Fi}} vd v1}


 S1061C2 ::~S1061C2(){ note_dtor("S1061C2", this);}
void  S1061C2 ::v2(){vfunc_called(this, "_ZN7S1061C22v2Ev");}
S1061C2 ::S1061C2(){ note_ctor("S1061C2", this);} // tgen

static void Test_S1061C2()
{
  extern Class_Descriptor cd_S1061C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1061C2, buf);
    S1061C2 *dp, &lv = *(dp=new (buf) S1061C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1061C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1061C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1061C3*), ABISELECT(8,4), "S1061C2");
    check_base_class_offset(lv, (S1061C3*), ABISELECT(8,4), "S1061C2");
    test_class_info(&lv, &cd_S1061C2);
    dp->~S1061C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1061C2(Test_S1061C2, "S1061C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1061C2C1Ev();
extern void _ZN7S1061C2D1Ev();
Name_Map name_map_S1061C2[] = {
  NSPAIR(_ZN7S1061C2C1Ev),
  NSPAIR(_ZN7S1061C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1061C3;
extern VTBL_ENTRY _ZTI7S1061C3[];
static Base_Class bases_S1061C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S1061C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1061C2[];
extern void _ZN7S1061C2D1Ev();
extern void _ZN7S1061C2D0Ev();
extern void _ZN7S1061C22v2Ev();
static  VTBL_ENTRY vtc_S1061C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1061C2[0]),
  (VTBL_ENTRY)&_ZN7S1061C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1061C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1061C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S1061C2[];
extern  VTBL_ENTRY _ZTV7S1061C2[];
Class_Descriptor cd_S1061C2 = {  "S1061C2", // class name
  bases_S1061C2, 2,
  &(vtc_S1061C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1061C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1061C2),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  S1061C1  : S1061C2 {
  ::S1060C5 s1061c1f0;
  virtual  ~S1061C1(); // _ZN7S1061C1D1Ev
  virtual void  v1(); // _ZN7S1061C12v1Ev
  S1061C1(); // tgen
};
//SIG(1 S1061C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v2} vd v1 FC5{ m FC6{ m FC7{ m Fp}} FL Fc[2]}}


 S1061C1 ::~S1061C1(){ note_dtor("S1061C1", this);}
void  S1061C1 ::v1(){vfunc_called(this, "_ZN7S1061C12v1Ev");}
S1061C1 ::S1061C1(){ note_ctor("S1061C1", this);} // tgen

static void Test_S1061C1()
{
  extern Class_Descriptor cd_S1061C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S1061C1, buf);
    S1061C1 *dp, &lv = *(dp=new (buf) S1061C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S1061C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1061C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1061C3*)(S1061C2*), ABISELECT(8,4), "S1061C1");
    check_base_class_offset(lv, (S1061C3*)(S1061C2*), ABISELECT(8,4), "S1061C1");
    check_base_class_offset(lv, (S1061C2*), 0, "S1061C1");
    check_field_offset(lv, s1061c1f0, ABISELECT(16,8), "S1061C1.s1061c1f0");
    test_class_info(&lv, &cd_S1061C1);
    dp->~S1061C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1061C1(Test_S1061C1, "S1061C1", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S1061C1C1Ev();
extern void _ZN7S1061C1D1Ev();
Name_Map name_map_S1061C1[] = {
  NSPAIR(_ZN7S1061C1C1Ev),
  NSPAIR(_ZN7S1061C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1061C3;
extern VTBL_ENTRY _ZTI7S1061C3[];
extern Class_Descriptor cd_S1061C2;
extern VTBL_ENTRY _ZTI7S1061C2[];
extern  VTBL_ENTRY _ZTV7S1061C2[];
static Base_Class bases_S1061C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S1061C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1061C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1061C1[];
extern void _ZN7S1061C1D1Ev();
extern void _ZN7S1061C1D0Ev();
extern void _ZN7S1061C22v2Ev();
extern void _ZN7S1061C12v1Ev();
static  VTBL_ENTRY vtc_S1061C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1061C1[0]),
  (VTBL_ENTRY)&_ZN7S1061C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1061C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1061C22v2Ev,
  (VTBL_ENTRY)&_ZN7S1061C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S1061C1[];
extern  VTBL_ENTRY _ZTV7S1061C1[];
Class_Descriptor cd_S1061C1 = {  "S1061C1", // class name
  bases_S1061C1, 3,
  &(vtc_S1061C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S1061C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1061C1),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  S15852C1  {
  ::S16428C9_nt s15852c1f0;
  ::S16428C9_nt s15852c1f1;
  ::S16428C9_nt s15852c1f2;
  ::S2710C9_nt s15852c1f3;
  void  mf15852c1(); // _ZN8S15852C19mf15852c1Ev
};
//SIG(1 S15852C1) C1{ m FC2{ m FC3{ m Fp Fi[4]}} FC2 FC2 FC4{ m Fi FC5{ BC6{ m Fp Fi}}}}


void  S15852C1 ::mf15852c1(){}

static void Test_S15852C1()
{
  {
    init_simple_test("S15852C1");
    S15852C1 lv;
    check2(sizeof(lv), ABISELECT(96,72), "sizeof(S15852C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15852C1)");
    check_field_offset(lv, s15852c1f0, 0, "S15852C1.s15852c1f0");
    check_field_offset(lv, s15852c1f1, ABISELECT(24,20), "S15852C1.s15852c1f1");
    check_field_offset(lv, s15852c1f2, ABISELECT(48,40), "S15852C1.s15852c1f2");
    check_field_offset(lv, s15852c1f3, ABISELECT(72,60), "S15852C1.s15852c1f3");
  }
}
static Arrange_To_Call_Me vS15852C1(Test_S15852C1, "S15852C1", ABISELECT(96,72));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S998C3  : S3216C8_nt {
};
//SIG(-1 S998C3) C1{ BC2{ m Fi}}



static void Test_S998C3()
{
  extern Class_Descriptor cd_S998C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S998C3, buf);
    S998C3 &lv = *(new (buf) S998C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S998C3)");
    check2(__alignof__(lv), 4, "__alignof__(S998C3)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S998C3");
    test_class_info(&lv, &cd_S998C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS998C3(Test_S998C3, "S998C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S998C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S998C3 = {  "S998C3", // class name
  bases_S998C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S998C2  : S998C3 {
  unsigned int s998c2f0:1;
  unsigned int s998c2f1:1;
  int s998c2f2:7;
  unsigned int s998c2f3:1;
  unsigned int s998c2f4:1;
  int s998c2f5:2;
  int s998c2f6:5;
};
//SIG(-1 S998C2) C1{ BC2{ BC3{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5}



static void Test_S998C2()
{
  extern Class_Descriptor cd_S998C2;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S998C2, buf);
    S998C2 &lv = *(new (buf) S998C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S998C2)");
    check2(__alignof__(lv), 4, "__alignof__(S998C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S998C3*), 0, "S998C2");
    check_base_class_offset(lv, (S998C3*), 0, "S998C2");
    set_bf_and_test(lv, s998c2f0, 4, 0, 1, 1, "S998C2");
    set_bf_and_test(lv, s998c2f1, 4, 1, 1, 1, "S998C2");
    set_bf_and_test(lv, s998c2f2, 4, 2, 7, 1, "S998C2");
    set_bf_and_test(lv, s998c2f2, 4, 2, 7, hide_sll(1LL<<6), "S998C2");
    set_bf_and_test(lv, s998c2f3, 5, 1, 1, 1, "S998C2");
    set_bf_and_test(lv, s998c2f4, 5, 2, 1, 1, "S998C2");
    set_bf_and_test(lv, s998c2f5, 5, 3, 2, 1, "S998C2");
    set_bf_and_test(lv, s998c2f5, 5, 3, 2, hide_sll(1LL<<1), "S998C2");
    set_bf_and_test(lv, s998c2f6, 5, 5, 5, 1, "S998C2");
    set_bf_and_test(lv, s998c2f6, 5, 5, 5, hide_sll(1LL<<4), "S998C2");
    test_class_info(&lv, &cd_S998C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS998C2(Test_S998C2, "S998C2", 8);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S998C3;
static Base_Class bases_S998C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S998C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S998C2 = {  "S998C2", // class name
  bases_S998C2, 2,
  0, // no vftv
  0, //no vtt
  8, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S998C1  : S998C2 {
  __tsi64 s998c1f0[4];
};
//SIG(1 S998C1) C1{ BC2{ BC3{ BC4{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5} FL[4]}



static void Test_S998C1()
{
  extern Class_Descriptor cd_S998C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,11)];
    init_test(&cd_S998C1, buf);
    S998C1 &lv = *(new (buf) S998C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 40, "sizeof(S998C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S998C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S998C3*)(S998C2*), 0, "S998C1");
    check_base_class_offset(lv, (S998C3*)(S998C2*), 0, "S998C1");
    check_base_class_offset(lv, (S998C2*), 0, "S998C1");
    check_field_offset(lv, s998c1f0, 8, "S998C1.s998c1f0");
    test_class_info(&lv, &cd_S998C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS998C1(Test_S998C1, "S998C1", 40);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S998C3;
extern Class_Descriptor cd_S998C2;
static Base_Class bases_S998C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S998C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S998C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S998C1 = {  "S998C1", // class name
  bases_S998C1, 3,
  0, // no vftv
  0, //no vtt
  40, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S996C3  : S3216C8_nt {
};
//SIG(-1 S996C3) C1{ BC2{ m Fi}}



static void Test_S996C3()
{
  extern Class_Descriptor cd_S996C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S996C3, buf);
    S996C3 &lv = *(new (buf) S996C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S996C3)");
    check2(__alignof__(lv), 4, "__alignof__(S996C3)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S996C3");
    test_class_info(&lv, &cd_S996C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS996C3(Test_S996C3, "S996C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S996C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S996C3 = {  "S996C3", // class name
  bases_S996C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S996C2  : S996C3 {
  unsigned int s996c2f0:1;
  unsigned int s996c2f1:1;
  int s996c2f2:7;
  unsigned int s996c2f3:1;
  unsigned int s996c2f4:1;
  int s996c2f5:2;
  int s996c2f6:5;
};
//SIG(-1 S996C2) C1{ BC2{ BC3{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5}



static void Test_S996C2()
{
  extern Class_Descriptor cd_S996C2;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S996C2, buf);
    S996C2 &lv = *(new (buf) S996C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S996C2)");
    check2(__alignof__(lv), 4, "__alignof__(S996C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S996C3*), 0, "S996C2");
    check_base_class_offset(lv, (S996C3*), 0, "S996C2");
    set_bf_and_test(lv, s996c2f0, 4, 0, 1, 1, "S996C2");
    set_bf_and_test(lv, s996c2f1, 4, 1, 1, 1, "S996C2");
    set_bf_and_test(lv, s996c2f2, 4, 2, 7, 1, "S996C2");
    set_bf_and_test(lv, s996c2f2, 4, 2, 7, hide_sll(1LL<<6), "S996C2");
    set_bf_and_test(lv, s996c2f3, 5, 1, 1, 1, "S996C2");
    set_bf_and_test(lv, s996c2f4, 5, 2, 1, 1, "S996C2");
    set_bf_and_test(lv, s996c2f5, 5, 3, 2, 1, "S996C2");
    set_bf_and_test(lv, s996c2f5, 5, 3, 2, hide_sll(1LL<<1), "S996C2");
    set_bf_and_test(lv, s996c2f6, 5, 5, 5, 1, "S996C2");
    set_bf_and_test(lv, s996c2f6, 5, 5, 5, hide_sll(1LL<<4), "S996C2");
    test_class_info(&lv, &cd_S996C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS996C2(Test_S996C2, "S996C2", 8);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S996C3;
static Base_Class bases_S996C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S996C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S996C2 = {  "S996C2", // class name
  bases_S996C2, 2,
  0, // no vftv
  0, //no vtt
  8, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S996C1  : S996C2 {
  int s996c1f0[2];
};
//SIG(1 S996C1) C1{ BC2{ BC3{ BC4{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5} Fi[2]}



static void Test_S996C1()
{
  extern Class_Descriptor cd_S996C1;
  void *lvp;
  {
    int buf[5];
    init_test(&cd_S996C1, buf);
    S996C1 &lv = *(new (buf) S996C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 16, "sizeof(S996C1)");
    check2(__alignof__(lv), 4, "__alignof__(S996C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S996C3*)(S996C2*), 0, "S996C1");
    check_base_class_offset(lv, (S996C3*)(S996C2*), 0, "S996C1");
    check_base_class_offset(lv, (S996C2*), 0, "S996C1");
    check_field_offset(lv, s996c1f0, 8, "S996C1.s996c1f0");
    test_class_info(&lv, &cd_S996C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS996C1(Test_S996C1, "S996C1", 16);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S996C3;
extern Class_Descriptor cd_S996C2;
static Base_Class bases_S996C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S996C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S996C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S996C1 = {  "S996C1", // class name
  bases_S996C1, 3,
  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  S994C3  : S3216C8_nt {
};
//SIG(-1 S994C3) C1{ BC2{ m Fi}}



static void Test_S994C3()
{
  extern Class_Descriptor cd_S994C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S994C3, buf);
    S994C3 &lv = *(new (buf) S994C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S994C3)");
    check2(__alignof__(lv), 4, "__alignof__(S994C3)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S994C3");
    test_class_info(&lv, &cd_S994C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS994C3(Test_S994C3, "S994C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S994C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S994C3 = {  "S994C3", // class name
  bases_S994C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S994C2  : S994C3 {
  unsigned int s994c2f0:1;
  unsigned int s994c2f1:1;
  int s994c2f2:7;
  unsigned int s994c2f3:1;
  unsigned int s994c2f4:1;
  int s994c2f5:2;
  int s994c2f6:5;
};
//SIG(-1 S994C2) C1{ BC2{ BC3{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5}



static void Test_S994C2()
{
  extern Class_Descriptor cd_S994C2;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S994C2, buf);
    S994C2 &lv = *(new (buf) S994C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S994C2)");
    check2(__alignof__(lv), 4, "__alignof__(S994C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S994C3*), 0, "S994C2");
    check_base_class_offset(lv, (S994C3*), 0, "S994C2");
    set_bf_and_test(lv, s994c2f0, 4, 0, 1, 1, "S994C2");
    set_bf_and_test(lv, s994c2f1, 4, 1, 1, 1, "S994C2");
    set_bf_and_test(lv, s994c2f2, 4, 2, 7, 1, "S994C2");
    set_bf_and_test(lv, s994c2f2, 4, 2, 7, hide_sll(1LL<<6), "S994C2");
    set_bf_and_test(lv, s994c2f3, 5, 1, 1, 1, "S994C2");
    set_bf_and_test(lv, s994c2f4, 5, 2, 1, 1, "S994C2");
    set_bf_and_test(lv, s994c2f5, 5, 3, 2, 1, "S994C2");
    set_bf_and_test(lv, s994c2f5, 5, 3, 2, hide_sll(1LL<<1), "S994C2");
    set_bf_and_test(lv, s994c2f6, 5, 5, 5, 1, "S994C2");
    set_bf_and_test(lv, s994c2f6, 5, 5, 5, hide_sll(1LL<<4), "S994C2");
    test_class_info(&lv, &cd_S994C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS994C2(Test_S994C2, "S994C2", 8);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S994C3;
static Base_Class bases_S994C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S994C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S994C2 = {  "S994C2", // class name
  bases_S994C2, 2,
  0, // no vftv
  0, //no vtt
  8, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S994C1  : S994C2 {
  int s994c1f0;
  char s994c1f1;
};
//SIG(1 S994C1) C1{ BC2{ BC3{ BC4{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5} Fi Fc}



static void Test_S994C1()
{
  extern Class_Descriptor cd_S994C1;
  void *lvp;
  {
    int buf[5];
    init_test(&cd_S994C1, buf);
    S994C1 &lv = *(new (buf) S994C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 16, "sizeof(S994C1)");
    check2(__alignof__(lv), 4, "__alignof__(S994C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S994C3*)(S994C2*), 0, "S994C1");
    check_base_class_offset(lv, (S994C3*)(S994C2*), 0, "S994C1");
    check_base_class_offset(lv, (S994C2*), 0, "S994C1");
    check_field_offset(lv, s994c1f0, 8, "S994C1.s994c1f0");
    check_field_offset(lv, s994c1f1, 12, "S994C1.s994c1f1");
    test_class_info(&lv, &cd_S994C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS994C1(Test_S994C1, "S994C1", 16);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S994C3;
extern Class_Descriptor cd_S994C2;
static Base_Class bases_S994C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S994C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S994C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S994C1 = {  "S994C1", // class name
  bases_S994C1, 3,
  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  S17093C1  {
  int s17093c1f0[2];
  ::S16701C3 s17093c1f1;
  char s17093c1f2[2];
  ::S2710C9_nt s17093c1f3;
  void  mf17093c1(); // _ZN8S17093C19mf17093c1Ev
};
//SIG(1 S17093C1) C1{ m Fi[2] FC2{ m FC3{ m Fp}} Fc[2] FC4{ m Fi FC5{ BC6{ m Fp Fi}}}}


void  S17093C1 ::mf17093c1(){}

static void Test_S17093C1()
{
  {
    init_simple_test("S17093C1");
    S17093C1 lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S17093C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17093C1)");
    check_field_offset(lv, s17093c1f0, 0, "S17093C1.s17093c1f0");
    check_field_offset(lv, s17093c1f1, 8, "S17093C1.s17093c1f1");
    check_field_offset(lv, s17093c1f2, ABISELECT(16,12), "S17093C1.s17093c1f2");
    check_field_offset(lv, s17093c1f3, ABISELECT(24,16), "S17093C1.s17093c1f3");
  }
}
static Arrange_To_Call_Me vS17093C1(Test_S17093C1, "S17093C1", ABISELECT(48,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S997C3  : S3216C8_nt {
};
//SIG(-1 S997C3) C1{ BC2{ m Fi}}



static void Test_S997C3()
{
  extern Class_Descriptor cd_S997C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S997C3, buf);
    S997C3 &lv = *(new (buf) S997C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S997C3)");
    check2(__alignof__(lv), 4, "__alignof__(S997C3)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S997C3");
    test_class_info(&lv, &cd_S997C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS997C3(Test_S997C3, "S997C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S997C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S997C3 = {  "S997C3", // class name
  bases_S997C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S997C2  : S997C3 {
  unsigned int s997c2f0:1;
  unsigned int s997c2f1:1;
  int s997c2f2:7;
  unsigned int s997c2f3:1;
  unsigned int s997c2f4:1;
  int s997c2f5:2;
  int s997c2f6:5;
};
//SIG(-1 S997C2) C1{ BC2{ BC3{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5}



static void Test_S997C2()
{
  extern Class_Descriptor cd_S997C2;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S997C2, buf);
    S997C2 &lv = *(new (buf) S997C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S997C2)");
    check2(__alignof__(lv), 4, "__alignof__(S997C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S997C3*), 0, "S997C2");
    check_base_class_offset(lv, (S997C3*), 0, "S997C2");
    set_bf_and_test(lv, s997c2f0, 4, 0, 1, 1, "S997C2");
    set_bf_and_test(lv, s997c2f1, 4, 1, 1, 1, "S997C2");
    set_bf_and_test(lv, s997c2f2, 4, 2, 7, 1, "S997C2");
    set_bf_and_test(lv, s997c2f2, 4, 2, 7, hide_sll(1LL<<6), "S997C2");
    set_bf_and_test(lv, s997c2f3, 5, 1, 1, 1, "S997C2");
    set_bf_and_test(lv, s997c2f4, 5, 2, 1, 1, "S997C2");
    set_bf_and_test(lv, s997c2f5, 5, 3, 2, 1, "S997C2");
    set_bf_and_test(lv, s997c2f5, 5, 3, 2, hide_sll(1LL<<1), "S997C2");
    set_bf_and_test(lv, s997c2f6, 5, 5, 5, 1, "S997C2");
    set_bf_and_test(lv, s997c2f6, 5, 5, 5, hide_sll(1LL<<4), "S997C2");
    test_class_info(&lv, &cd_S997C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS997C2(Test_S997C2, "S997C2", 8);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S997C3;
static Base_Class bases_S997C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S997C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S997C2 = {  "S997C2", // class name
  bases_S997C2, 2,
  0, // no vftv
  0, //no vtt
  8, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S997C1  : S997C2 {
  int s997c1f0;
};
//SIG(1 S997C1) C1{ BC2{ BC3{ BC4{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5} Fi}



static void Test_S997C1()
{
  extern Class_Descriptor cd_S997C1;
  void *lvp;
  {
    int buf[4];
    init_test(&cd_S997C1, buf);
    S997C1 &lv = *(new (buf) S997C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 12, "sizeof(S997C1)");
    check2(__alignof__(lv), 4, "__alignof__(S997C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S997C3*)(S997C2*), 0, "S997C1");
    check_base_class_offset(lv, (S997C3*)(S997C2*), 0, "S997C1");
    check_base_class_offset(lv, (S997C2*), 0, "S997C1");
    check_field_offset(lv, s997c1f0, 8, "S997C1.s997c1f0");
    test_class_info(&lv, &cd_S997C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS997C1(Test_S997C1, "S997C1", 12);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S997C3;
extern Class_Descriptor cd_S997C2;
static Base_Class bases_S997C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S997C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S997C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S997C1 = {  "S997C1", // class name
  bases_S997C1, 3,
  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  S986C3  : S3216C8_nt {
};
//SIG(-1 S986C3) C1{ BC2{ m Fi}}



static void Test_S986C3()
{
  extern Class_Descriptor cd_S986C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S986C3, buf);
    S986C3 &lv = *(new (buf) S986C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S986C3)");
    check2(__alignof__(lv), 4, "__alignof__(S986C3)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S986C3");
    test_class_info(&lv, &cd_S986C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS986C3(Test_S986C3, "S986C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S986C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S986C3 = {  "S986C3", // class name
  bases_S986C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S986C2  : S986C3 {
  unsigned int s986c2f0:1;
  unsigned int s986c2f1:1;
  int s986c2f2:7;
  unsigned int s986c2f3:1;
  unsigned int s986c2f4:1;
  int s986c2f5:2;
  int s986c2f6:5;
};
//SIG(-1 S986C2) C1{ BC2{ BC3{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5}



static void Test_S986C2()
{
  extern Class_Descriptor cd_S986C2;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S986C2, buf);
    S986C2 &lv = *(new (buf) S986C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S986C2)");
    check2(__alignof__(lv), 4, "__alignof__(S986C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S986C3*), 0, "S986C2");
    check_base_class_offset(lv, (S986C3*), 0, "S986C2");
    set_bf_and_test(lv, s986c2f0, 4, 0, 1, 1, "S986C2");
    set_bf_and_test(lv, s986c2f1, 4, 1, 1, 1, "S986C2");
    set_bf_and_test(lv, s986c2f2, 4, 2, 7, 1, "S986C2");
    set_bf_and_test(lv, s986c2f2, 4, 2, 7, hide_sll(1LL<<6), "S986C2");
    set_bf_and_test(lv, s986c2f3, 5, 1, 1, 1, "S986C2");
    set_bf_and_test(lv, s986c2f4, 5, 2, 1, 1, "S986C2");
    set_bf_and_test(lv, s986c2f5, 5, 3, 2, 1, "S986C2");
    set_bf_and_test(lv, s986c2f5, 5, 3, 2, hide_sll(1LL<<1), "S986C2");
    set_bf_and_test(lv, s986c2f6, 5, 5, 5, 1, "S986C2");
    set_bf_and_test(lv, s986c2f6, 5, 5, 5, hide_sll(1LL<<4), "S986C2");
    test_class_info(&lv, &cd_S986C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS986C2(Test_S986C2, "S986C2", 8);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S986C3;
static Base_Class bases_S986C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S986C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S986C2 = {  "S986C2", // class name
  bases_S986C2, 2,
  0, // no vftv
  0, //no vtt
  8, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S986C1  : S986C2 {
  char s986c1f0;
};
//SIG(1 S986C1) C1{ BC2{ BC3{ BC4{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5} Fc}



static void Test_S986C1()
{
  extern Class_Descriptor cd_S986C1;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S986C1, buf);
    S986C1 &lv = *(new (buf) S986C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S986C1)");
    check2(__alignof__(lv), 4, "__alignof__(S986C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S986C3*)(S986C2*), 0, "S986C1");
    check_base_class_offset(lv, (S986C3*)(S986C2*), 0, "S986C1");
    check_base_class_offset(lv, (S986C2*), 0, "S986C1");
    check_field_offset(lv, s986c1f0, 7, "S986C1.s986c1f0");
    test_class_info(&lv, &cd_S986C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS986C1(Test_S986C1, "S986C1", 8);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S986C3;
extern Class_Descriptor cd_S986C2;
static Base_Class bases_S986C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S986C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S986C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S986C1 = {  "S986C1", // class name
  bases_S986C1, 3,
  0, // no vftv
  0, //no vtt
  8, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17570C1  {
  void *s17570c1f0;
  ::S16428C9_nt s17570c1f1;
  ::S2710C9_nt s17570c1f2;
  void  mf17570c1(); // _ZN8S17570C19mf17570c1Ev
};
//SIG(1 S17570C1) C1{ m Fp FC2{ m FC3{ m Fp Fi[4]}} FC4{ m Fi FC5{ BC6{ m Fp Fi}}}}


void  S17570C1 ::mf17570c1(){}

static void Test_S17570C1()
{
  {
    init_simple_test("S17570C1");
    S17570C1 lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S17570C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17570C1)");
    check_field_offset(lv, s17570c1f0, 0, "S17570C1.s17570c1f0");
    check_field_offset(lv, s17570c1f1, ABISELECT(8,4), "S17570C1.s17570c1f1");
    check_field_offset(lv, s17570c1f2, ABISELECT(32,24), "S17570C1.s17570c1f2");
  }
}
static Arrange_To_Call_Me vS17570C1(Test_S17570C1, "S17570C1", ABISELECT(56,36));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1000C3  : S3216C8_nt {
};
//SIG(-1 S1000C3) C1{ BC2{ m Fi}}



static void Test_S1000C3()
{
  extern Class_Descriptor cd_S1000C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S1000C3, buf);
    S1000C3 &lv = *(new (buf) S1000C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S1000C3)");
    check2(__alignof__(lv), 4, "__alignof__(S1000C3)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S1000C3");
    test_class_info(&lv, &cd_S1000C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1000C3(Test_S1000C3, "S1000C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S1000C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S1000C3 = {  "S1000C3", // class name
  bases_S1000C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1000C2  : S1000C3 {
  unsigned int s1000c2f0:1;
  unsigned int s1000c2f1:1;
  int s1000c2f2:7;
  unsigned int s1000c2f3:1;
  unsigned int s1000c2f4:1;
  int s1000c2f5:2;
  int s1000c2f6:5;
};
//SIG(-1 S1000C2) C1{ BC2{ BC3{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5}



static void Test_S1000C2()
{
  extern Class_Descriptor cd_S1000C2;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S1000C2, buf);
    S1000C2 &lv = *(new (buf) S1000C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S1000C2)");
    check2(__alignof__(lv), 4, "__alignof__(S1000C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1000C3*), 0, "S1000C2");
    check_base_class_offset(lv, (S1000C3*), 0, "S1000C2");
    set_bf_and_test(lv, s1000c2f0, 4, 0, 1, 1, "S1000C2");
    set_bf_and_test(lv, s1000c2f1, 4, 1, 1, 1, "S1000C2");
    set_bf_and_test(lv, s1000c2f2, 4, 2, 7, 1, "S1000C2");
    set_bf_and_test(lv, s1000c2f2, 4, 2, 7, hide_sll(1LL<<6), "S1000C2");
    set_bf_and_test(lv, s1000c2f3, 5, 1, 1, 1, "S1000C2");
    set_bf_and_test(lv, s1000c2f4, 5, 2, 1, 1, "S1000C2");
    set_bf_and_test(lv, s1000c2f5, 5, 3, 2, 1, "S1000C2");
    set_bf_and_test(lv, s1000c2f5, 5, 3, 2, hide_sll(1LL<<1), "S1000C2");
    set_bf_and_test(lv, s1000c2f6, 5, 5, 5, 1, "S1000C2");
    set_bf_and_test(lv, s1000c2f6, 5, 5, 5, hide_sll(1LL<<4), "S1000C2");
    test_class_info(&lv, &cd_S1000C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1000C2(Test_S1000C2, "S1000C2", 8);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1000C3;
static Base_Class bases_S1000C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1000C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S1000C2 = {  "S1000C2", // class name
  bases_S1000C2, 2,
  0, // no vftv
  0, //no vtt
  8, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1000C1  : S1000C2 {
};
//SIG(1 S1000C1) C1{ BC2{ BC3{ BC4{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5}}



static void Test_S1000C1()
{
  extern Class_Descriptor cd_S1000C1;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S1000C1, buf);
    S1000C1 &lv = *(new (buf) S1000C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S1000C1)");
    check2(__alignof__(lv), 4, "__alignof__(S1000C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1000C3*)(S1000C2*), 0, "S1000C1");
    check_base_class_offset(lv, (S1000C3*)(S1000C2*), 0, "S1000C1");
    check_base_class_offset(lv, (S1000C2*), 0, "S1000C1");
    test_class_info(&lv, &cd_S1000C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1000C1(Test_S1000C1, "S1000C1", 8);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1000C3;
extern Class_Descriptor cd_S1000C2;
static Base_Class bases_S1000C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1000C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1000C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S1000C1 = {  "S1000C1", // class name
  bases_S1000C1, 3,
  0, // no vftv
  0, //no vtt
  8, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15902C1  {
  ::S16701C3 s15902c1f0;
  __tsi64 s15902c1f1[2];
  ::S2710C9_nt s15902c1f2;
  void  mf15902c1(); // _ZN8S15902C19mf15902c1Ev
};
//SIG(1 S15902C1) C1{ m FC2{ m FC3{ m Fp}} FL[2] FC4{ m Fi FC5{ BC6{ m Fp Fi}}}}


void  S15902C1 ::mf15902c1(){}

static void Test_S15902C1()
{
  {
    init_simple_test("S15902C1");
    S15902C1 lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S15902C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15902C1)");
    check_field_offset(lv, s15902c1f0, 0, "S15902C1.s15902c1f0");
    check_field_offset(lv, s15902c1f1, ABISELECT(8,4), "S15902C1.s15902c1f1");
    check_field_offset(lv, s15902c1f2, ABISELECT(24,20), "S15902C1.s15902c1f2");
  }
}
static Arrange_To_Call_Me vS15902C1(Test_S15902C1, "S15902C1", ABISELECT(48,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2647C2  : S3216C8_nt {
};
//SIG(-1 S2647C2) C1{ BC2{ m Fi}}



static void Test_S2647C2()
{
  extern Class_Descriptor cd_S2647C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2647C2, buf);
    S2647C2 &lv = *(new (buf) S2647C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2647C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2647C2)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S2647C2");
    test_class_info(&lv, &cd_S2647C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2647C2(Test_S2647C2, "S2647C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S2647C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2647C2 = {  "S2647C2", // class name
  bases_S2647C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2647C1  : S2647C2 {
  ::S2710C9_nt s2647c1f0;
  ::S16701C4_nt s2647c1f1;
};
//SIG(1 S2647C1) C1{ BC2{ BC3{ m Fi}} FC4{ m Fi FC5{ BC6{ m Fp Fi}}} FC7{ m Fp}}



static void Test_S2647C1()
{
  extern Class_Descriptor cd_S2647C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S2647C1, buf);
    S2647C1 &lv = *(new (buf) S2647C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S2647C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2647C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S2647C2*), 0, "S2647C1");
    check_base_class_offset(lv, (S2647C2*), 0, "S2647C1");
    check_field_offset(lv, s2647c1f0, ABISELECT(8,4), "S2647C1.s2647c1f0");
    check_field_offset(lv, s2647c1f1, ABISELECT(32,16), "S2647C1.s2647c1f1");
    test_class_info(&lv, &cd_S2647C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2647C1(Test_S2647C1, "S2647C1", ABISELECT(40,20));

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S2647C2;
static Base_Class bases_S2647C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2647C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2647C1 = {  "S2647C1", // class name
  bases_S2647C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(40,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  S15875C1  {
  ::S16701C3 s15875c1f0;
  ::S16701C3 s15875c1f1;
  ::S2710C9_nt s15875c1f2;
  void  mf15875c1(); // _ZN8S15875C19mf15875c1Ev
};
//SIG(1 S15875C1) C1{ m FC2{ m FC3{ m Fp}} FC2 FC4{ m Fi FC5{ BC6{ m Fp Fi}}}}


void  S15875C1 ::mf15875c1(){}

static void Test_S15875C1()
{
  {
    init_simple_test("S15875C1");
    S15875C1 lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S15875C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15875C1)");
    check_field_offset(lv, s15875c1f0, 0, "S15875C1.s15875c1f0");
    check_field_offset(lv, s15875c1f1, ABISELECT(8,4), "S15875C1.s15875c1f1");
    check_field_offset(lv, s15875c1f2, ABISELECT(16,8), "S15875C1.s15875c1f2");
  }
}
static Arrange_To_Call_Me vS15875C1(Test_S15875C1, "S15875C1", ABISELECT(40,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1012C3  : S3216C8_nt {
};
//SIG(-1 S1012C3) C1{ BC2{ m Fi}}



static void Test_S1012C3()
{
  extern Class_Descriptor cd_S1012C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S1012C3, buf);
    S1012C3 &lv = *(new (buf) S1012C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S1012C3)");
    check2(__alignof__(lv), 4, "__alignof__(S1012C3)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S1012C3");
    test_class_info(&lv, &cd_S1012C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1012C3(Test_S1012C3, "S1012C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S1012C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1012C3[];
Class_Descriptor cd_S1012C3 = {  "S1012C3", // class name
  bases_S1012C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S1012C3),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  S1012C2  : S1012C3 {
  virtual  ~S1012C2(); // _ZN7S1012C2D1Ev
  virtual void  v3(); // _ZN7S1012C22v3Ev
  virtual void  v4(); // _ZN7S1012C22v4Ev
  S1012C2(); // tgen
};
//SIG(-1 S1012C2) C1{ BC2{ BC3{ m Fi}} vd v1 v2}


 S1012C2 ::~S1012C2(){ note_dtor("S1012C2", this);}
void  S1012C2 ::v3(){vfunc_called(this, "_ZN7S1012C22v3Ev");}
void  S1012C2 ::v4(){vfunc_called(this, "_ZN7S1012C22v4Ev");}
S1012C2 ::S1012C2(){ note_ctor("S1012C2", this);} // tgen

static void Test_S1012C2()
{
  extern Class_Descriptor cd_S1012C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1012C2, buf);
    S1012C2 *dp, &lv = *(dp=new (buf) S1012C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1012C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1012C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1012C3*), ABISELECT(8,4), "S1012C2");
    check_base_class_offset(lv, (S1012C3*), ABISELECT(8,4), "S1012C2");
    test_class_info(&lv, &cd_S1012C2);
    dp->~S1012C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1012C2(Test_S1012C2, "S1012C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1012C2C1Ev();
extern void _ZN7S1012C2D1Ev();
Name_Map name_map_S1012C2[] = {
  NSPAIR(_ZN7S1012C2C1Ev),
  NSPAIR(_ZN7S1012C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1012C3;
extern VTBL_ENTRY _ZTI7S1012C3[];
static Base_Class bases_S1012C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S1012C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1012C2[];
extern void _ZN7S1012C2D1Ev();
extern void _ZN7S1012C2D0Ev();
extern void _ZN7S1012C22v3Ev();
extern void _ZN7S1012C22v4Ev();
static  VTBL_ENTRY vtc_S1012C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1012C2[0]),
  (VTBL_ENTRY)&_ZN7S1012C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1012C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1012C22v3Ev,
  (VTBL_ENTRY)&_ZN7S1012C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S1012C2[];
extern  VTBL_ENTRY _ZTV7S1012C2[];
Class_Descriptor cd_S1012C2 = {  "S1012C2", // class name
  bases_S1012C2, 2,
  &(vtc_S1012C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1012C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1012C2),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  S1012C1  : S1012C2 {
  ::S16701C4_nt s1012c1f0;
  ::S16701C4_nt s1012c1f1;
  ::S16701C4_nt s1012c1f2;
  virtual void  v1(); // _ZN7S1012C12v1Ev
  virtual void  v2(); // _ZN7S1012C12v2Ev
  ~S1012C1(); // tgen
  S1012C1(); // tgen
};
//SIG(1 S1012C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v3 v4} v1 v2 FC5{ m Fp} FC5 FC5}


void  S1012C1 ::v1(){vfunc_called(this, "_ZN7S1012C12v1Ev");}
void  S1012C1 ::v2(){vfunc_called(this, "_ZN7S1012C12v2Ev");}
S1012C1 ::~S1012C1(){ note_dtor("S1012C1", this);} // tgen
S1012C1 ::S1012C1(){ note_ctor("S1012C1", this);} // tgen

static void Test_S1012C1()
{
  extern Class_Descriptor cd_S1012C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S1012C1, buf);
    S1012C1 *dp, &lv = *(dp=new (buf) S1012C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S1012C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1012C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1012C3*)(S1012C2*), ABISELECT(8,4), "S1012C1");
    check_base_class_offset(lv, (S1012C3*)(S1012C2*), ABISELECT(8,4), "S1012C1");
    check_base_class_offset(lv, (S1012C2*), 0, "S1012C1");
    check_field_offset(lv, s1012c1f0, ABISELECT(16,8), "S1012C1.s1012c1f0");
    check_field_offset(lv, s1012c1f1, ABISELECT(24,12), "S1012C1.s1012c1f1");
    check_field_offset(lv, s1012c1f2, ABISELECT(32,16), "S1012C1.s1012c1f2");
    test_class_info(&lv, &cd_S1012C1);
    dp->~S1012C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1012C1(Test_S1012C1, "S1012C1", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S1012C1C1Ev();
extern void _ZN7S1012C1D1Ev();
Name_Map name_map_S1012C1[] = {
  NSPAIR(_ZN7S1012C1C1Ev),
  NSPAIR(_ZN7S1012C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1012C3;
extern VTBL_ENTRY _ZTI7S1012C3[];
extern Class_Descriptor cd_S1012C2;
extern VTBL_ENTRY _ZTI7S1012C2[];
extern  VTBL_ENTRY _ZTV7S1012C2[];
static Base_Class bases_S1012C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S1012C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1012C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1012C1[];
extern void _ZN7S1012C1D1Ev();
extern void _ZN7S1012C1D0Ev();
extern void _ZN7S1012C22v3Ev();
extern void _ZN7S1012C22v4Ev();
extern void _ZN7S1012C12v1Ev();
extern void _ZN7S1012C12v2Ev();
static  VTBL_ENTRY vtc_S1012C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1012C1[0]),
  (VTBL_ENTRY)&_ZN7S1012C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1012C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1012C22v3Ev,
  (VTBL_ENTRY)&_ZN7S1012C22v4Ev,
  (VTBL_ENTRY)&_ZN7S1012C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1012C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S1012C1[];
extern  VTBL_ENTRY _ZTV7S1012C1[];
Class_Descriptor cd_S1012C1 = {  "S1012C1", // class name
  bases_S1012C1, 3,
  &(vtc_S1012C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S1012C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1012C1),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  S9544C2  {
  virtual  ~S9544C2(); // _ZN7S9544C2D1Ev
  virtual void  v3(); // _ZN7S9544C22v3Ev
  virtual void  v4(); // _ZN7S9544C22v4Ev
  S9544C2(); // tgen
};
//SIG(-1 S9544C2) C1{ vd v1 v2}


 S9544C2 ::~S9544C2(){ note_dtor("S9544C2", this);}
void  S9544C2 ::v3(){vfunc_called(this, "_ZN7S9544C22v3Ev");}
void  S9544C2 ::v4(){vfunc_called(this, "_ZN7S9544C22v4Ev");}
S9544C2 ::S9544C2(){ note_ctor("S9544C2", this);} // tgen

static void Test_S9544C2()
{
  extern Class_Descriptor cd_S9544C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S9544C2, buf);
    S9544C2 *dp, &lv = *(dp=new (buf) S9544C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S9544C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9544C2)");
    test_class_info(&lv, &cd_S9544C2);
    dp->~S9544C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9544C2(Test_S9544C2, "S9544C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S9544C2C1Ev();
extern void _ZN7S9544C2D1Ev();
Name_Map name_map_S9544C2[] = {
  NSPAIR(_ZN7S9544C2C1Ev),
  NSPAIR(_ZN7S9544C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9544C2[];
extern void _ZN7S9544C2D1Ev();
extern void _ZN7S9544C2D0Ev();
extern void _ZN7S9544C22v3Ev();
extern void _ZN7S9544C22v4Ev();
static  VTBL_ENTRY vtc_S9544C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9544C2[0]),
  (VTBL_ENTRY)&_ZN7S9544C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9544C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9544C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9544C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S9544C2[];
extern  VTBL_ENTRY _ZTV7S9544C2[];
Class_Descriptor cd_S9544C2 = {  "S9544C2", // class name
  0,0,//no base classes
  &(vtc_S9544C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9544C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9544C2),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  S9544C1  : S9544C2 {
  ::S2710C9_nt s9544c1f0;
  char s9544c1f1;
  virtual void  v1(); // _ZN7S9544C12v1Ev
  virtual void  v2(); // _ZN7S9544C12v2Ev
  ~S9544C1(); // tgen
  S9544C1(); // tgen
};
//SIG(1 S9544C1) C1{ BC2{ vd v3 v4} v1 v2 FC3{ m Fi FC4{ BC5{ m Fp Fi}}} Fc}


void  S9544C1 ::v1(){vfunc_called(this, "_ZN7S9544C12v1Ev");}
void  S9544C1 ::v2(){vfunc_called(this, "_ZN7S9544C12v2Ev");}
S9544C1 ::~S9544C1(){ note_dtor("S9544C1", this);} // tgen
S9544C1 ::S9544C1(){ note_ctor("S9544C1", this);} // tgen

static void Test_S9544C1()
{
  extern Class_Descriptor cd_S9544C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S9544C1, buf);
    S9544C1 *dp, &lv = *(dp=new (buf) S9544C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S9544C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9544C1)");
    check_base_class_offset(lv, (S9544C2*), 0, "S9544C1");
    check_field_offset(lv, s9544c1f0, ABISELECT(8,4), "S9544C1.s9544c1f0");
    check_field_offset(lv, s9544c1f1, ABISELECT(32,16), "S9544C1.s9544c1f1");
    test_class_info(&lv, &cd_S9544C1);
    dp->~S9544C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9544C1(Test_S9544C1, "S9544C1", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S9544C1C1Ev();
extern void _ZN7S9544C1D1Ev();
Name_Map name_map_S9544C1[] = {
  NSPAIR(_ZN7S9544C1C1Ev),
  NSPAIR(_ZN7S9544C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9544C2;
extern VTBL_ENTRY _ZTI7S9544C2[];
extern  VTBL_ENTRY _ZTV7S9544C2[];
static Base_Class bases_S9544C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9544C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9544C1[];
extern void _ZN7S9544C1D1Ev();
extern void _ZN7S9544C1D0Ev();
extern void _ZN7S9544C22v3Ev();
extern void _ZN7S9544C22v4Ev();
extern void _ZN7S9544C12v1Ev();
extern void _ZN7S9544C12v2Ev();
static  VTBL_ENTRY vtc_S9544C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9544C1[0]),
  (VTBL_ENTRY)&_ZN7S9544C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9544C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9544C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9544C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9544C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9544C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9544C1[];
extern  VTBL_ENTRY _ZTV7S9544C1[];
Class_Descriptor cd_S9544C1 = {  "S9544C1", // class name
  bases_S9544C1, 1,
  &(vtc_S9544C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S9544C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9544C1),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  S15889C1  {
  ::S16701C3 s15889c1f0;
  ::S2710C9_nt s15889c1f1;
  int s15889c1f2;
  void  mf15889c1(); // _ZN8S15889C19mf15889c1Ev
};
//SIG(1 S15889C1) C1{ m FC2{ m FC3{ m Fp}} FC4{ m Fi FC5{ BC6{ m Fp Fi}}} Fi}


void  S15889C1 ::mf15889c1(){}

static void Test_S15889C1()
{
  {
    init_simple_test("S15889C1");
    S15889C1 lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S15889C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15889C1)");
    check_field_offset(lv, s15889c1f0, 0, "S15889C1.s15889c1f0");
    check_field_offset(lv, s15889c1f1, ABISELECT(8,4), "S15889C1.s15889c1f1");
    check_field_offset(lv, s15889c1f2, ABISELECT(32,16), "S15889C1.s15889c1f2");
  }
}
static Arrange_To_Call_Me vS15889C1(Test_S15889C1, "S15889C1", ABISELECT(40,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2530C3_nt  {
  int s2530c3f0[2];
  __tsi64 s2530c3f1;
  void  mf2530c3(); // _ZN10S2530C3_nt8mf2530c3Ev
};
//SIG(-1 S2530C3_nt) C1{ m Fi[2] FL}


void  S2530C3_nt ::mf2530c3(){}

//skip512 S2530C3_nt

#else // __cplusplus

Class_Descriptor cd_S2530C3_nt = {  "S2530C3_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  S2530C2  : S2530C3_nt {
  ::S2710C9_nt s2530c2f0;
};
//SIG(-1 S2530C2) C1{ BC2{ m Fi[2] FL} FC3{ m Fi FC4{ BC5{ m Fp Fi}}}}



static void Test_S2530C2()
{
  extern Class_Descriptor cd_S2530C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S2530C2, buf);
    S2530C2 &lv = *(new (buf) S2530C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S2530C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2530C2)");
    check_base_class_offset(lv, (S2530C3_nt*), 0, "S2530C2");
    check_field_offset(lv, s2530c2f0, 16, "S2530C2.s2530c2f0");
    test_class_info(&lv, &cd_S2530C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2530C2(Test_S2530C2, "S2530C2", ABISELECT(40,28));

#else // __cplusplus

extern Class_Descriptor cd_S2530C3_nt;
static Base_Class bases_S2530C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2530C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2530C2 = {  "S2530C2", // class name
  bases_S2530C2, 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  S2530C1  : S2530C2 {
};
//SIG(1 S2530C1) C1{ BC2{ BC3{ m Fi[2] FL} FC4{ m Fi FC5{ BC6{ m Fp Fi}}}}}



static void Test_S2530C1()
{
  extern Class_Descriptor cd_S2530C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S2530C1, buf);
    S2530C1 &lv = *(new (buf) S2530C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S2530C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2530C1)");
    check_base_class_offset(lv, (S2530C3_nt*)(S2530C2*), 0, "S2530C1");
    check_base_class_offset(lv, (S2530C2*), 0, "S2530C1");
    test_class_info(&lv, &cd_S2530C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2530C1(Test_S2530C1, "S2530C1", ABISELECT(40,28));

#else // __cplusplus

extern Class_Descriptor cd_S2530C3_nt;
extern Class_Descriptor cd_S2530C2;
static Base_Class bases_S2530C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2530C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2530C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2530C1 = {  "S2530C1", // class name
  bases_S2530C1, 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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15890C1  {
  ::S16701C3 s15890c1f0;
  ::S2710C9_nt s15890c1f1;
  void  mf15890c1(); // _ZN8S15890C19mf15890c1Ev
};
//SIG(1 S15890C1) C1{ m FC2{ m FC3{ m Fp}} FC4{ m Fi FC5{ BC6{ m Fp Fi}}}}


void  S15890C1 ::mf15890c1(){}

static void Test_S15890C1()
{
  {
    init_simple_test("S15890C1");
    S15890C1 lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S15890C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15890C1)");
    check_field_offset(lv, s15890c1f0, 0, "S15890C1.s15890c1f0");
    check_field_offset(lv, s15890c1f1, ABISELECT(8,4), "S15890C1.s15890c1f1");
  }
}
static Arrange_To_Call_Me vS15890C1(Test_S15890C1, "S15890C1", ABISELECT(32,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5575C2  {
  char s5575c2f0[2];
  ::S2710C9_nt s5575c2f1;
  ::S2710C9_nt s5575c2f2;
  void  mf5575c2(); // _ZN7S5575C28mf5575c2Ev
};
//SIG(-1 S5575C2) C1{ m Fc[2] FC2{ m Fi FC3{ BC4{ m Fp Fi}}} FC2}


void  S5575C2 ::mf5575c2(){}

static void Test_S5575C2()
{
  {
    init_simple_test("S5575C2");
    S5575C2 lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S5575C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5575C2)");
    check_field_offset(lv, s5575c2f0, 0, "S5575C2.s5575c2f0");
    check_field_offset(lv, s5575c2f1, ABISELECT(8,4), "S5575C2.s5575c2f1");
    check_field_offset(lv, s5575c2f2, ABISELECT(32,16), "S5575C2.s5575c2f2");
  }
}
static Arrange_To_Call_Me vS5575C2(Test_S5575C2, "S5575C2", ABISELECT(56,28));

#else // __cplusplus

Class_Descriptor cd_S5575C2 = {  "S5575C2", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(56,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  S5575C1  : S5575C2 {
  char s5575c1f0;
};
//SIG(1 S5575C1) C1{ BC2{ m Fc[2] FC3{ m Fi FC4{ BC5{ m Fp Fi}}} FC3} Fc}



static void Test_S5575C1()
{
  extern Class_Descriptor cd_S5575C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S5575C1, buf);
    S5575C1 &lv = *(new (buf) S5575C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S5575C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5575C1)");
    check_base_class_offset(lv, (S5575C2*), 0, "S5575C1");
    check_field_offset(lv, s5575c1f0, ABISELECT(56,28), "S5575C1.s5575c1f0");
    test_class_info(&lv, &cd_S5575C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5575C1(Test_S5575C1, "S5575C1", ABISELECT(64,32));

#else // __cplusplus

extern Class_Descriptor cd_S5575C2;
static Base_Class bases_S5575C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5575C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S5575C1 = {  "S5575C1", // class name
  bases_S5575C1, 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  S8498C2  {
  virtual  ~S8498C2(); // _ZN7S8498C2D1Ev
  virtual void  v1(); // _ZN7S8498C22v1Ev
  S8498C2(); // tgen
};
//SIG(-1 S8498C2) C1{ vd v1}


 S8498C2 ::~S8498C2(){ note_dtor("S8498C2", this);}
void  S8498C2 ::v1(){vfunc_called(this, "_ZN7S8498C22v1Ev");}
S8498C2 ::S8498C2(){ note_ctor("S8498C2", this);} // tgen

static void Test_S8498C2()
{
  extern Class_Descriptor cd_S8498C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8498C2, buf);
    S8498C2 *dp, &lv = *(dp=new (buf) S8498C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8498C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8498C2)");
    test_class_info(&lv, &cd_S8498C2);
    dp->~S8498C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8498C2(Test_S8498C2, "S8498C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8498C2C1Ev();
extern void _ZN7S8498C2D1Ev();
Name_Map name_map_S8498C2[] = {
  NSPAIR(_ZN7S8498C2C1Ev),
  NSPAIR(_ZN7S8498C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8498C2[];
extern void _ZN7S8498C2D1Ev();
extern void _ZN7S8498C2D0Ev();
extern void _ZN7S8498C22v1Ev();
static  VTBL_ENTRY vtc_S8498C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8498C2[0]),
  (VTBL_ENTRY)&_ZN7S8498C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8498C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8498C22v1Ev,
};
extern VTBL_ENTRY _ZTI7S8498C2[];
extern  VTBL_ENTRY _ZTV7S8498C2[];
Class_Descriptor cd_S8498C2 = {  "S8498C2", // class name
  0,0,//no base classes
  &(vtc_S8498C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8498C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8498C2),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  S8498C1  : S8498C2 {
  ::S8497C3 s8498c1f0;
  virtual  ~S8498C1(); // _ZN7S8498C1D1Ev
  S8498C1(); // tgen
};
//SIG(1 S8498C1) C1{ BC2{ vd v1} vd FC3{ vd m FC4{ vd v2 Fp Fi[3]} FC4}}


 S8498C1 ::~S8498C1(){ note_dtor("S8498C1", this);}
S8498C1 ::S8498C1(){ note_ctor("S8498C1", this);} // tgen

static void Test_S8498C1()
{
  extern Class_Descriptor cd_S8498C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S8498C1, buf);
    S8498C1 *dp, &lv = *(dp=new (buf) S8498C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S8498C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8498C1)");
    check_base_class_offset(lv, (S8498C2*), 0, "S8498C1");
    check_field_offset(lv, s8498c1f0, ABISELECT(8,4), "S8498C1.s8498c1f0");
    test_class_info(&lv, &cd_S8498C1);
    dp->~S8498C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8498C1(Test_S8498C1, "S8498C1", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN7S8498C1C1Ev();
extern void _ZN7S8498C1D1Ev();
Name_Map name_map_S8498C1[] = {
  NSPAIR(_ZN7S8498C1C1Ev),
  NSPAIR(_ZN7S8498C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8498C2;
extern VTBL_ENTRY _ZTI7S8498C2[];
extern  VTBL_ENTRY _ZTV7S8498C2[];
static Base_Class bases_S8498C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8498C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8498C1[];
extern void _ZN7S8498C1D1Ev();
extern void _ZN7S8498C1D0Ev();
extern void _ZN7S8498C22v1Ev();
static  VTBL_ENTRY vtc_S8498C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8498C1[0]),
  (VTBL_ENTRY)&_ZN7S8498C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8498C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8498C22v1Ev,
};
extern VTBL_ENTRY _ZTI7S8498C1[];
extern  VTBL_ENTRY _ZTV7S8498C1[];
Class_Descriptor cd_S8498C1 = {  "S8498C1", // class name
  bases_S8498C1, 1,
  &(vtc_S8498C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI7S8498C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8498C1),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  S8180C2  {
  void *s8180c2f0;
  ::S2710C9_nt s8180c2f1;
  int s8180c2f2;
  void  mf8180c2(); // _ZN7S8180C28mf8180c2Ev
  virtual  ~S8180C2(); // _ZN7S8180C2D1Ev
  S8180C2(); // tgen
};
//SIG(-1 S8180C2) C1{ vd m Fp FC2{ m Fi FC3{ BC4{ m Fp Fi}}} Fi}


void  S8180C2 ::mf8180c2(){}
 S8180C2 ::~S8180C2(){ note_dtor("S8180C2", this);}
S8180C2 ::S8180C2(){ note_ctor("S8180C2", this);} // tgen

static void Test_S8180C2()
{
  extern Class_Descriptor cd_S8180C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S8180C2, buf);
    S8180C2 *dp, &lv = *(dp=new (buf) S8180C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S8180C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8180C2)");
    check_field_offset(lv, s8180c2f0, ABISELECT(8,4), "S8180C2.s8180c2f0");
    check_field_offset(lv, s8180c2f1, ABISELECT(16,8), "S8180C2.s8180c2f1");
    check_field_offset(lv, s8180c2f2, ABISELECT(40,20), "S8180C2.s8180c2f2");
    test_class_info(&lv, &cd_S8180C2);
    dp->~S8180C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8180C2(Test_S8180C2, "S8180C2", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S8180C2C1Ev();
extern void _ZN7S8180C2D1Ev();
Name_Map name_map_S8180C2[] = {
  NSPAIR(_ZN7S8180C2C1Ev),
  NSPAIR(_ZN7S8180C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8180C2[];
extern void _ZN7S8180C2D1Ev();
extern void _ZN7S8180C2D0Ev();
static  VTBL_ENTRY vtc_S8180C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8180C2[0]),
  (VTBL_ENTRY)&_ZN7S8180C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8180C2D0Ev,
};
extern VTBL_ENTRY _ZTI7S8180C2[];
extern  VTBL_ENTRY _ZTV7S8180C2[];
Class_Descriptor cd_S8180C2 = {  "S8180C2", // class name
  0,0,//no base classes
  &(vtc_S8180C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S8180C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8180C2),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  S8180C1  : S8180C2 {
  virtual  ~S8180C1(); // _ZN7S8180C1D1Ev
  S8180C1(); // tgen
};
//SIG(1 S8180C1) C1{ BC2{ vd m Fp FC3{ m Fi FC4{ BC5{ m Fp Fi}}} Fi} vd}


 S8180C1 ::~S8180C1(){ note_dtor("S8180C1", this);}
S8180C1 ::S8180C1(){ note_ctor("S8180C1", this);} // tgen

static void Test_S8180C1()
{
  extern Class_Descriptor cd_S8180C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S8180C1, buf);
    S8180C1 *dp, &lv = *(dp=new (buf) S8180C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S8180C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8180C1)");
    check_base_class_offset(lv, (S8180C2*), 0, "S8180C1");
    test_class_info(&lv, &cd_S8180C1);
    dp->~S8180C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8180C1(Test_S8180C1, "S8180C1", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S8180C1C1Ev();
extern void _ZN7S8180C1D1Ev();
Name_Map name_map_S8180C1[] = {
  NSPAIR(_ZN7S8180C1C1Ev),
  NSPAIR(_ZN7S8180C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8180C2;
extern VTBL_ENTRY _ZTI7S8180C2[];
extern  VTBL_ENTRY _ZTV7S8180C2[];
static Base_Class bases_S8180C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8180C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8180C1[];
extern void _ZN7S8180C1D1Ev();
extern void _ZN7S8180C1D0Ev();
static  VTBL_ENTRY vtc_S8180C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8180C1[0]),
  (VTBL_ENTRY)&_ZN7S8180C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8180C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S8180C1[];
extern  VTBL_ENTRY _ZTV7S8180C1[];
Class_Descriptor cd_S8180C1 = {  "S8180C1", // class name
  bases_S8180C1, 1,
  &(vtc_S8180C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S8180C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8180C1),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  S2555C2  : S3216C8_nt {
  int s2555c2f0:4;
  int s2555c2f1:28;
};
//SIG(-1 S2555C2) C1{ BC2{ m Fi} Fi:4 Fi:28}



static void Test_S2555C2()
{
  extern Class_Descriptor cd_S2555C2;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S2555C2, buf);
    S2555C2 &lv = *(new (buf) S2555C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S2555C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2555C2)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S2555C2");
    set_bf_and_test(lv, s2555c2f0, 4, 0, 4, 1, "S2555C2");
    set_bf_and_test(lv, s2555c2f0, 4, 0, 4, hide_sll(1LL<<3), "S2555C2");
    set_bf_and_test(lv, s2555c2f1, 4, 4, 28, 1, "S2555C2");
    set_bf_and_test(lv, s2555c2f1, 4, 4, 28, hide_sll(1LL<<27), "S2555C2");
    test_class_info(&lv, &cd_S2555C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2555C2(Test_S2555C2, "S2555C2", 8);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S2555C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2555C2 = {  "S2555C2", // class name
  bases_S2555C2, 1,
  0, // no vftv
  0, //no vtt
  8, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2555C1  : S2555C2 {
  ::S16701C4_nt s2555c1f0;
  ::S1021C13_nt s2555c1f1;
};
//SIG(1 S2555C1) C1{ BC2{ BC3{ m Fi} Fi:4 Fi:28} FC4{ m Fp} FC5{ m Fp}}



static void Test_S2555C1()
{
  extern Class_Descriptor cd_S2555C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S2555C1, buf);
    S2555C1 &lv = *(new (buf) S2555C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S2555C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2555C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S2555C2*), 0, "S2555C1");
    check_base_class_offset(lv, (S2555C2*), 0, "S2555C1");
    check_field_offset(lv, s2555c1f0, 8, "S2555C1.s2555c1f0");
    check_field_offset(lv, s2555c1f1, ABISELECT(16,12), "S2555C1.s2555c1f1");
    test_class_info(&lv, &cd_S2555C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2555C1(Test_S2555C1, "S2555C1", ABISELECT(24,16));

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S2555C2;
static Base_Class bases_S2555C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2555C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2555C1 = {  "S2555C1", // class name
  bases_S2555C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(24,16), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18093C1  {
  void *s18093c1f0[2];
  int s18093c1f1[2];
  ::S2710C9_nt s18093c1f2;
  void  mf18093c1(); // _ZN8S18093C19mf18093c1Ev
};
//SIG(1 S18093C1) C1{ m Fp[2] Fi[2] FC2{ m Fi FC3{ BC4{ m Fp Fi}}}}


void  S18093C1 ::mf18093c1(){}

static void Test_S18093C1()
{
  {
    init_simple_test("S18093C1");
    S18093C1 lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S18093C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18093C1)");
    check_field_offset(lv, s18093c1f0, 0, "S18093C1.s18093c1f0");
    check_field_offset(lv, s18093c1f1, ABISELECT(16,8), "S18093C1.s18093c1f1");
    check_field_offset(lv, s18093c1f2, ABISELECT(24,16), "S18093C1.s18093c1f2");
  }
}
static Arrange_To_Call_Me vS18093C1(Test_S18093C1, "S18093C1", ABISELECT(48,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2649C2  : S3216C8_nt {
};
//SIG(-1 S2649C2) C1{ BC2{ m Fi}}



static void Test_S2649C2()
{
  extern Class_Descriptor cd_S2649C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2649C2, buf);
    S2649C2 &lv = *(new (buf) S2649C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2649C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2649C2)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S2649C2");
    test_class_info(&lv, &cd_S2649C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2649C2(Test_S2649C2, "S2649C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S2649C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2649C2 = {  "S2649C2", // class name
  bases_S2649C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2649C1  : S2649C2 {
  ::S2710C9_nt s2649c1f0;
};
//SIG(1 S2649C1) C1{ BC2{ BC3{ m Fi}} FC4{ m Fi FC5{ BC6{ m Fp Fi}}}}



static void Test_S2649C1()
{
  extern Class_Descriptor cd_S2649C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S2649C1, buf);
    S2649C1 &lv = *(new (buf) S2649C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S2649C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2649C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S2649C2*), 0, "S2649C1");
    check_base_class_offset(lv, (S2649C2*), 0, "S2649C1");
    check_field_offset(lv, s2649c1f0, ABISELECT(8,4), "S2649C1.s2649c1f0");
    test_class_info(&lv, &cd_S2649C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2649C1(Test_S2649C1, "S2649C1", ABISELECT(32,16));

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S2649C2;
static Base_Class bases_S2649C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2649C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2649C1 = {  "S2649C1", // class name
  bases_S2649C1, 2,
  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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16355C2_nt  {
  void *s16355c2f0;
  short s16355c2f1;
  void  mf16355c2(); // _ZN11S16355C2_nt9mf16355c2Ev
};
//SIG(-1 S16355C2_nt) C1{ m Fp Fs}


void  S16355C2_nt ::mf16355c2(){}

//skip512 S16355C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16355C1  {
  ::S16355C2_nt s16355c1f0;
  ::S2710C9_nt s16355c1f1;
  void  mf16355c1(); // _ZN8S16355C19mf16355c1Ev
};
//SIG(1 S16355C1) C1{ m FC2{ m Fp Fs} FC3{ m Fi FC4{ BC5{ m Fp Fi}}}}


void  S16355C1 ::mf16355c1(){}

static void Test_S16355C1()
{
  {
    init_simple_test("S16355C1");
    S16355C1 lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S16355C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16355C1)");
    check_field_offset(lv, s16355c1f0, 0, "S16355C1.s16355c1f0");
    check_field_offset(lv, s16355c1f1, ABISELECT(16,8), "S16355C1.s16355c1f1");
  }
}
static Arrange_To_Call_Me vS16355C1(Test_S16355C1, "S16355C1", ABISELECT(40,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15932C1  {
  ::S2710C9_nt s15932c1f0;
  void *s15932c1f1;
  int s15932c1f2[2];
  char s15932c1f3;
  void  mf15932c1(); // _ZN8S15932C19mf15932c1Ev
};
//SIG(1 S15932C1) C1{ m FC2{ m Fi FC3{ BC4{ m Fp Fi}}} Fp Fi[2] Fc}


void  S15932C1 ::mf15932c1(){}

static void Test_S15932C1()
{
  {
    init_simple_test("S15932C1");
    S15932C1 lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S15932C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15932C1)");
    check_field_offset(lv, s15932c1f0, 0, "S15932C1.s15932c1f0");
    check_field_offset(lv, s15932c1f1, ABISELECT(24,12), "S15932C1.s15932c1f1");
    check_field_offset(lv, s15932c1f2, ABISELECT(32,16), "S15932C1.s15932c1f2");
    check_field_offset(lv, s15932c1f3, ABISELECT(40,24), "S15932C1.s15932c1f3");
  }
}
static Arrange_To_Call_Me vS15932C1(Test_S15932C1, "S15932C1", ABISELECT(48,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18203C1  {
  void *s18203c1f0[3];
  ::S5241C10 s18203c1f1;
  char s18203c1f2[2];
  void  mf18203c1(); // _ZN8S18203C19mf18203c1Ev
};
//SIG(1 S18203C1) C1{ m Fp[3] FC2{ m FC3{ m Fp} FC4{ m Fp}} Fc[2]}


void  S18203C1 ::mf18203c1(){}

static void Test_S18203C1()
{
  {
    init_simple_test("S18203C1");
    S18203C1 lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S18203C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18203C1)");
    check_field_offset(lv, s18203c1f0, 0, "S18203C1.s18203c1f0");
    check_field_offset(lv, s18203c1f1, ABISELECT(24,12), "S18203C1.s18203c1f1");
    check_field_offset(lv, s18203c1f2, ABISELECT(40,20), "S18203C1.s18203c1f2");
  }
}
static Arrange_To_Call_Me vS18203C1(Test_S18203C1, "S18203C1", ABISELECT(48,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16719C1  {
  int s16719c1f0;
  ::S16701C3 s16719c1f1;
  ::S16701C4_nt s16719c1f2;
  char s16719c1f3;
  ::S16701C3 s16719c1f4;
  void  mf16719c1(); // _ZN8S16719C19mf16719c1Ev
};
//SIG(1 S16719C1) C1{ m Fi FC2{ m FC3{ m Fp}} FC3 Fc FC2}


void  S16719C1 ::mf16719c1(){}

static void Test_S16719C1()
{
  {
    init_simple_test("S16719C1");
    S16719C1 lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S16719C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16719C1)");
    check_field_offset(lv, s16719c1f0, 0, "S16719C1.s16719c1f0");
    check_field_offset(lv, s16719c1f1, ABISELECT(8,4), "S16719C1.s16719c1f1");
    check_field_offset(lv, s16719c1f2, ABISELECT(16,8), "S16719C1.s16719c1f2");
    check_field_offset(lv, s16719c1f3, ABISELECT(24,12), "S16719C1.s16719c1f3");
    check_field_offset(lv, s16719c1f4, ABISELECT(32,16), "S16719C1.s16719c1f4");
  }
}
static Arrange_To_Call_Me vS16719C1(Test_S16719C1, "S16719C1", ABISELECT(40,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17581C1  {
  void *s17581c1f0;
  ::S2710C9_nt s17581c1f1;
  int s17581c1f2;
  void  mf17581c1(); // _ZN8S17581C19mf17581c1Ev
};
//SIG(1 S17581C1) C1{ m Fp FC2{ m Fi FC3{ BC4{ m Fp Fi}}} Fi}


void  S17581C1 ::mf17581c1(){}

static void Test_S17581C1()
{
  {
    init_simple_test("S17581C1");
    S17581C1 lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S17581C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17581C1)");
    check_field_offset(lv, s17581c1f0, 0, "S17581C1.s17581c1f0");
    check_field_offset(lv, s17581c1f1, ABISELECT(8,4), "S17581C1.s17581c1f1");
    check_field_offset(lv, s17581c1f2, ABISELECT(32,16), "S17581C1.s17581c1f2");
  }
}
static Arrange_To_Call_Me vS17581C1(Test_S17581C1, "S17581C1", ABISELECT(40,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15929C1  {
  ::S2710C9_nt s15929c1f0;
  void *s15929c1f1;
  char s15929c1f2;
  void  mf15929c1(); // _ZN8S15929C19mf15929c1Ev
};
//SIG(1 S15929C1) C1{ m FC2{ m Fi FC3{ BC4{ m Fp Fi}}} Fp Fc}


void  S15929C1 ::mf15929c1(){}

static void Test_S15929C1()
{
  {
    init_simple_test("S15929C1");
    S15929C1 lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S15929C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15929C1)");
    check_field_offset(lv, s15929c1f0, 0, "S15929C1.s15929c1f0");
    check_field_offset(lv, s15929c1f1, ABISELECT(24,12), "S15929C1.s15929c1f1");
    check_field_offset(lv, s15929c1f2, ABISELECT(32,16), "S15929C1.s15929c1f2");
  }
}
static Arrange_To_Call_Me vS15929C1(Test_S15929C1, "S15929C1", ABISELECT(40,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15927C1  {
  ::S2710C9_nt s15927c1f0;
  int s15927c1f1[2];
  void  mf15927c1(); // _ZN8S15927C19mf15927c1Ev
};
//SIG(1 S15927C1) C1{ m FC2{ m Fi FC3{ BC4{ m Fp Fi}}} Fi[2]}


void  S15927C1 ::mf15927c1(){}

static void Test_S15927C1()
{
  {
    init_simple_test("S15927C1");
    S15927C1 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S15927C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15927C1)");
    check_field_offset(lv, s15927c1f0, 0, "S15927C1.s15927c1f0");
    check_field_offset(lv, s15927c1f1, ABISELECT(24,12), "S15927C1.s15927c1f1");
  }
}
static Arrange_To_Call_Me vS15927C1(Test_S15927C1, "S15927C1", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2556C2  : S3216C8_nt {
  int s2556c2f0:4;
  int s2556c2f1:28;
};
//SIG(-1 S2556C2) C1{ BC2{ m Fi} Fi:4 Fi:28}



static void Test_S2556C2()
{
  extern Class_Descriptor cd_S2556C2;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S2556C2, buf);
    S2556C2 &lv = *(new (buf) S2556C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S2556C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2556C2)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S2556C2");
    set_bf_and_test(lv, s2556c2f0, 4, 0, 4, 1, "S2556C2");
    set_bf_and_test(lv, s2556c2f0, 4, 0, 4, hide_sll(1LL<<3), "S2556C2");
    set_bf_and_test(lv, s2556c2f1, 4, 4, 28, 1, "S2556C2");
    set_bf_and_test(lv, s2556c2f1, 4, 4, 28, hide_sll(1LL<<27), "S2556C2");
    test_class_info(&lv, &cd_S2556C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2556C2(Test_S2556C2, "S2556C2", 8);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S2556C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2556C2 = {  "S2556C2", // class name
  bases_S2556C2, 1,
  0, // no vftv
  0, //no vtt
  8, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2556C1  : S2556C2 {
  ::S16701C4_nt s2556c1f0;
};
//SIG(1 S2556C1) C1{ BC2{ BC3{ m Fi} Fi:4 Fi:28} FC4{ m Fp}}



static void Test_S2556C1()
{
  extern Class_Descriptor cd_S2556C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S2556C1, buf);
    S2556C1 &lv = *(new (buf) S2556C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S2556C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2556C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S2556C2*), 0, "S2556C1");
    check_base_class_offset(lv, (S2556C2*), 0, "S2556C1");
    check_field_offset(lv, s2556c1f0, 8, "S2556C1.s2556c1f0");
    test_class_info(&lv, &cd_S2556C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2556C1(Test_S2556C1, "S2556C1", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S2556C2;
static Base_Class bases_S2556C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2556C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2556C1 = {  "S2556C1", // class name
  bases_S2556C1, 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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17981C1  {
  void *s17981c1f0[2];
  ::S5241C10 s17981c1f1;
  void  mf17981c1(); // _ZN8S17981C19mf17981c1Ev
};
//SIG(1 S17981C1) C1{ m Fp[2] FC2{ m FC3{ m Fp} FC4{ m Fp}}}


void  S17981C1 ::mf17981c1(){}

static void Test_S17981C1()
{
  {
    init_simple_test("S17981C1");
    S17981C1 lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S17981C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17981C1)");
    check_field_offset(lv, s17981c1f0, 0, "S17981C1.s17981c1f0");
    check_field_offset(lv, s17981c1f1, ABISELECT(16,8), "S17981C1.s17981c1f1");
  }
}
static Arrange_To_Call_Me vS17981C1(Test_S17981C1, "S17981C1", ABISELECT(32,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1028C3  : S3216C8_nt {
};
//SIG(-1 S1028C3) C1{ BC2{ m Fi}}



static void Test_S1028C3()
{
  extern Class_Descriptor cd_S1028C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S1028C3, buf);
    S1028C3 &lv = *(new (buf) S1028C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S1028C3)");
    check2(__alignof__(lv), 4, "__alignof__(S1028C3)");
    check_base_class_offset(lv, (S3216C8_nt*), 0, "S1028C3");
    test_class_info(&lv, &cd_S1028C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1028C3(Test_S1028C3, "S1028C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
static Base_Class bases_S1028C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1028C3[];
Class_Descriptor cd_S1028C3 = {  "S1028C3", // class name
  bases_S1028C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S1028C3),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  S1028C2  : S1028C3 {
  virtual  ~S1028C2(); // _ZN7S1028C2D1Ev
  virtual void  v2(); // _ZN7S1028C22v2Ev
  virtual void  v3(); // _ZN7S1028C22v3Ev
  S1028C2(); // tgen
};
//SIG(-1 S1028C2) C1{ BC2{ BC3{ m Fi}} vd v1 v2}


 S1028C2 ::~S1028C2(){ note_dtor("S1028C2", this);}
void  S1028C2 ::v2(){vfunc_called(this, "_ZN7S1028C22v2Ev");}
void  S1028C2 ::v3(){vfunc_called(this, "_ZN7S1028C22v3Ev");}
S1028C2 ::S1028C2(){ note_ctor("S1028C2", this);} // tgen

static void Test_S1028C2()
{
  extern Class_Descriptor cd_S1028C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1028C2, buf);
    S1028C2 *dp, &lv = *(dp=new (buf) S1028C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1028C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1028C2)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1028C3*), ABISELECT(8,4), "S1028C2");
    check_base_class_offset(lv, (S1028C3*), ABISELECT(8,4), "S1028C2");
    test_class_info(&lv, &cd_S1028C2);
    dp->~S1028C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1028C2(Test_S1028C2, "S1028C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1028C2C1Ev();
extern void _ZN7S1028C2D1Ev();
Name_Map name_map_S1028C2[] = {
  NSPAIR(_ZN7S1028C2C1Ev),
  NSPAIR(_ZN7S1028C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1028C3;
extern VTBL_ENTRY _ZTI7S1028C3[];
static Base_Class bases_S1028C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S1028C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1028C2[];
extern void _ZN7S1028C2D1Ev();
extern void _ZN7S1028C2D0Ev();
extern void _ZN7S1028C22v2Ev();
extern void _ZN7S1028C22v3Ev();
static  VTBL_ENTRY vtc_S1028C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1028C2[0]),
  (VTBL_ENTRY)&_ZN7S1028C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1028C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1028C22v2Ev,
  (VTBL_ENTRY)&_ZN7S1028C22v3Ev,
};
extern VTBL_ENTRY _ZTI7S1028C2[];
extern  VTBL_ENTRY _ZTV7S1028C2[];
Class_Descriptor cd_S1028C2 = {  "S1028C2", // class name
  bases_S1028C2, 2,
  &(vtc_S1028C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1028C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1028C2),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  S1028C1  : S1028C2 {
  char s1028c1f0;
  virtual void  v1(); // _ZN7S1028C12v1Ev
  ~S1028C1(); // tgen
  S1028C1(); // tgen
};
//SIG(1 S1028C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v2 v3} v1 Fc}


void  S1028C1 ::v1(){vfunc_called(this, "_ZN7S1028C12v1Ev");}
S1028C1 ::~S1028C1(){ note_dtor("S1028C1", this);} // tgen
S1028C1 ::S1028C1(){ note_ctor("S1028C1", this);} // tgen

static void Test_S1028C1()
{
  extern Class_Descriptor cd_S1028C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1028C1, buf);
    S1028C1 *dp, &lv = *(dp=new (buf) S1028C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1028C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1028C1)");
    check_base_class_offset(lv, (S3216C8_nt*)(S1028C3*)(S1028C2*), ABISELECT(8,4), "S1028C1");
    check_base_class_offset(lv, (S1028C3*)(S1028C2*), ABISELECT(8,4), "S1028C1");
    check_base_class_offset(lv, (S1028C2*), 0, "S1028C1");
    check_field_offset(lv, s1028c1f0, ABISELECT(12,8), "S1028C1.s1028c1f0");
    test_class_info(&lv, &cd_S1028C1);
    dp->~S1028C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1028C1(Test_S1028C1, "S1028C1", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S1028C1C1Ev();
extern void _ZN7S1028C1D1Ev();
Name_Map name_map_S1028C1[] = {
  NSPAIR(_ZN7S1028C1C1Ev),
  NSPAIR(_ZN7S1028C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3216C8_nt;
extern VTBL_ENTRY _ZTI10S3216C8_nt[];
extern Class_Descriptor cd_S1028C3;
extern VTBL_ENTRY _ZTI7S1028C3[];
extern Class_Descriptor cd_S1028C2;
extern VTBL_ENTRY _ZTI7S1028C2[];
extern  VTBL_ENTRY _ZTV7S1028C2[];
static Base_Class bases_S1028C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3216C8_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_S1028C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1028C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1028C1[];
extern void _ZN7S1028C1D1Ev();
extern void _ZN7S1028C1D0Ev();
extern void _ZN7S1028C22v2Ev();
extern void _ZN7S1028C22v3Ev();
extern void _ZN7S1028C12v1Ev();
static  VTBL_ENTRY vtc_S1028C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1028C1[0]),
  (VTBL_ENTRY)&_ZN7S1028C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1028C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1028C22v2Ev,
  (VTBL_ENTRY)&_ZN7S1028C22v3Ev,
  (VTBL_ENTRY)&_ZN7S1028C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S1028C1[];
extern  VTBL_ENTRY _ZTV7S1028C1[];
Class_Descriptor cd_S1028C1 = {  "S1028C1", // class name
  bases_S1028C1, 3,
  &(vtc_S1028C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S1028C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1028C1),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15928C1  {
  ::S2710C9_nt s15928c1f0;
  int s15928c1f1;
  void  mf15928c1(); // _ZN8S15928C19mf15928c1Ev
};
//SIG(1 S15928C1) C1{ m FC2{ m Fi FC3{ BC4{ m Fp Fi}}} Fi}


void  S15928C1 ::mf15928c1(){}

static void Test_S15928C1()
{
  {
    init_simple_test("S15928C1");
    S15928C1 lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S15928C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15928C1)");
    check_field_offset(lv, s15928c1f0, 0, "S15928C1.s15928c1f0");
    check_field_offset(lv, s15928c1f1, ABISELECT(24,12), "S15928C1.s15928c1f1");
  }
}
static Arrange_To_Call_Me vS15928C1(Test_S15928C1, "S15928C1", ABISELECT(32,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15887C4  {
  ::S16701C3 s15887c4f0;
  __tsi64 s15887c4f1;
  void  mf15887c4(); // _ZN8S15887C49mf15887c4Ev
};
//SIG(-1 S15887C4) C1{ m FC2{ m FC3{ m Fp}} FL}


void  S15887C4 ::mf15887c4(){}

static void Test_S15887C4()
{
  {
    init_simple_test("S15887C4");
    S15887C4 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S15887C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15887C4)");
    check_field_offset(lv, s15887c4f0, 0, "S15887C4.s15887c4f0");
    check_field_offset(lv, s15887c4f1, ABISELECT(8,4), "S15887C4.s15887c4f1");
  }
}
static Arrange_To_Call_Me vS15887C4(Test_S15887C4, "S15887C4", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15887C1  {
  ::S16701C3 s15887c1f0;
  ::S15887C4 s15887c1f1;
  void  mf15887c1(); // _ZN8S15887C19mf15887c1Ev
};
//SIG(1 S15887C1) C1{ m FC2{ m FC3{ m Fp}} FC4{ m FC2 FL}}


void  S15887C1 ::mf15887c1(){}

static void Test_S15887C1()
{
  {
    init_simple_test("S15887C1");
    S15887C1 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S15887C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15887C1)");
    check_field_offset(lv, s15887c1f0, 0, "S15887C1.s15887c1f0");
    check_field_offset(lv, s15887c1f1, ABISELECT(8,4), "S15887C1.s15887c1f1");
  }
}
static Arrange_To_Call_Me vS15887C1(Test_S15887C1, "S15887C1", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15897C1  {
  ::S16701C3 s15897c1f0;
  int s15897c1f1;
  ::S16701C4_nt s15897c1f2;
  void  mf15897c1(); // _ZN8S15897C19mf15897c1Ev
};
//SIG(1 S15897C1) C1{ m FC2{ m FC3{ m Fp}} Fi FC3}


void  S15897C1 ::mf15897c1(){}

static void Test_S15897C1()
{
  {
    init_simple_test("S15897C1");
    S15897C1 lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S15897C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15897C1)");
    check_field_offset(lv, s15897c1f0, 0, "S15897C1.s15897c1f0");
    check_field_offset(lv, s15897c1f1, ABISELECT(8,4), "S15897C1.s15897c1f1");
    check_field_offset(lv, s15897c1f2, ABISELECT(16,8), "S15897C1.s15897c1f2");
  }
}
static Arrange_To_Call_Me vS15897C1(Test_S15897C1, "S15897C1", ABISELECT(24,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15773C2  {
  ::S16701C3 s15773c2f0;
  char s15773c2f1;
  void  mf15773c2(); // _ZN8S15773C29mf15773c2Ev
};
//SIG(-1 S15773C2) C1{ m FC2{ m FC3{ m Fp}} Fc}


void  S15773C2 ::mf15773c2(){}

static void Test_S15773C2()
{
  {
    init_simple_test("S15773C2");
    S15773C2 lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S15773C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15773C2)");
    check_field_offset(lv, s15773c2f0, 0, "S15773C2.s15773c2f0");
    check_field_offset(lv, s15773c2f1, ABISELECT(8,4), "S15773C2.s15773c2f1");
  }
}
static Arrange_To_Call_Me vS15773C2(Test_S15773C2, "S15773C2", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15773C1  {
  ::S15773C2 s15773c1f0;
  ::S16701C3 s15773c1f1;
  void  mf15773c1(); // _ZN8S15773C19mf15773c1Ev
};
//SIG(1 S15773C1) C1{ m FC2{ m FC3{ m FC4{ m Fp}} Fc} FC3}


void  S15773C1 ::mf15773c1(){}

static void Test_S15773C1()
{
  {
    init_simple_test("S15773C1");
    S15773C1 lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S15773C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15773C1)");
    check_field_offset(lv, s15773c1f0, 0, "S15773C1.s15773c1f0");
    check_field_offset(lv, s15773c1f1, ABISELECT(16,8), "S15773C1.s15773c1f1");
  }
}
static Arrange_To_Call_Me vS15773C1(Test_S15773C1, "S15773C1", ABISELECT(24,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15892C1  {
  ::S16701C3 s15892c1f0;
  ::S16701C4_nt s15892c1f1;
  int s15892c1f2;
  void  mf15892c1(); // _ZN8S15892C19mf15892c1Ev
};
//SIG(1 S15892C1) C1{ m FC2{ m FC3{ m Fp}} FC3 Fi}


void  S15892C1 ::mf15892c1(){}

static void Test_S15892C1()
{
  {
    init_simple_test("S15892C1");
    S15892C1 lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S15892C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15892C1)");
    check_field_offset(lv, s15892c1f0, 0, "S15892C1.s15892c1f0");
    check_field_offset(lv, s15892c1f1, ABISELECT(8,4), "S15892C1.s15892c1f1");
    check_field_offset(lv, s15892c1f2, ABISELECT(16,8), "S15892C1.s15892c1f2");
  }
}
static Arrange_To_Call_Me vS15892C1(Test_S15892C1, "S15892C1", ABISELECT(24,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16715C1  {
  int s16715c1f0;
  ::S16428C9_nt s16715c1f1;
  void  mf16715c1(); // _ZN8S16715C19mf16715c1Ev
};
//SIG(1 S16715C1) C1{ m Fi FC2{ m FC3{ m Fp Fi[4]}}}


void  S16715C1 ::mf16715c1(){}

static void Test_S16715C1()
{
  {
    init_simple_test("S16715C1");
    S16715C1 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S16715C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16715C1)");
    check_field_offset(lv, s16715c1f0, 0, "S16715C1.s16715c1f0");
    check_field_offset(lv, s16715c1f1, ABISELECT(8,4), "S16715C1.s16715c1f1");
  }
}
static Arrange_To_Call_Me vS16715C1(Test_S16715C1, "S16715C1", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5737C1  : S2710C9_nt {
};
//SIG(1 S5737C1) C1{ BC2{ m Fi FC3{ BC4{ m Fp Fi}}}}



static void Test_S5737C1()
{
  extern Class_Descriptor cd_S5737C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S5737C1, buf);
    S5737C1 &lv = *(new (buf) S5737C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S5737C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5737C1)");
    check_base_class_offset(lv, (S2710C9_nt*), 0, "S5737C1");
    test_class_info(&lv, &cd_S5737C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5737C1(Test_S5737C1, "S5737C1", ABISELECT(24,12));

#else // __cplusplus

extern Class_Descriptor cd_S2710C9_nt;
static Base_Class bases_S5737C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2710C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S5737C1 = {  "S5737C1", // class name
  bases_S5737C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(24,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15049C1  {
  char s15049c1f0;
  ::S16428C9_nt s15049c1f1;
  void  mf15049c1(); // _ZN8S15049C19mf15049c1Ev
};
//SIG(1 S15049C1) C1{ m Fc FC2{ m FC3{ m Fp Fi[4]}}}


void  S15049C1 ::mf15049c1(){}

static void Test_S15049C1()
{
  {
    init_simple_test("S15049C1");
    S15049C1 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S15049C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15049C1)");
    check_field_offset(lv, s15049c1f0, 0, "S15049C1.s15049c1f0");
    check_field_offset(lv, s15049c1f1, ABISELECT(8,4), "S15049C1.s15049c1f1");
  }
}
static Arrange_To_Call_Me vS15049C1(Test_S15049C1, "S15049C1", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15896C1  {
  ::S16701C3 s15896c1f0;
  int s15896c1f1;
  ::S16701C3 s15896c1f2;
  int s15896c1f3;
  void  mf15896c1(); // _ZN8S15896C19mf15896c1Ev
};
//SIG(1 S15896C1) C1{ m FC2{ m FC3{ m Fp}} Fi FC2 Fi}


void  S15896C1 ::mf15896c1(){}

static void Test_S15896C1()
{
  {
    init_simple_test("S15896C1");
    S15896C1 lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S15896C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15896C1)");
    check_field_offset(lv, s15896c1f0, 0, "S15896C1.s15896c1f0");
    check_field_offset(lv, s15896c1f1, ABISELECT(8,4), "S15896C1.s15896c1f1");
    check_field_offset(lv, s15896c1f2, ABISELECT(16,8), "S15896C1.s15896c1f2");
    check_field_offset(lv, s15896c1f3, ABISELECT(24,12), "S15896C1.s15896c1f3");
  }
}
static Arrange_To_Call_Me vS15896C1(Test_S15896C1, "S15896C1", ABISELECT(32,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15893C1  {
  ::S16701C3 s15893c1f0;
  ::S16701C4_nt s15893c1f1;
  void  mf15893c1(); // _ZN8S15893C19mf15893c1Ev
};
//SIG(1 S15893C1) C1{ m FC2{ m FC3{ m Fp}} FC3}


void  S15893C1 ::mf15893c1(){}

static void Test_S15893C1()
{
  {
    init_simple_test("S15893C1");
    S15893C1 lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S15893C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15893C1)");
    check_field_offset(lv, s15893c1f0, 0, "S15893C1.s15893c1f0");
    check_field_offset(lv, s15893c1f1, ABISELECT(8,4), "S15893C1.s15893c1f1");
  }
}
static Arrange_To_Call_Me vS15893C1(Test_S15893C1, "S15893C1", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15877C1  {
  ::S16701C3 s15877c1f0;
  ::S16701C3 s15877c1f1;
  int s15877c1f2[2];
  void  mf15877c1(); // _ZN8S15877C19mf15877c1Ev
};
//SIG(1 S15877C1) C1{ m FC2{ m FC3{ m Fp}} FC2 Fi[2]}


void  S15877C1 ::mf15877c1(){}

static void Test_S15877C1()
{
  {
    init_simple_test("S15877C1");
    S15877C1 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S15877C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15877C1)");
    check_field_offset(lv, s15877c1f0, 0, "S15877C1.s15877c1f0");
    check_field_offset(lv, s15877c1f1, ABISELECT(8,4), "S15877C1.s15877c1f1");
    check_field_offset(lv, s15877c1f2, ABISELECT(16,8), "S15877C1.s15877c1f2");
  }
}
static Arrange_To_Call_Me vS15877C1(Test_S15877C1, "S15877C1", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15859C1  {
  ::S16428C9_nt s15859c1f0;
  void *s15859c1f1;
  void  mf15859c1(); // _ZN8S15859C19mf15859c1Ev
};
//SIG(1 S15859C1) C1{ m FC2{ m FC3{ m Fp Fi[4]}} Fp}


void  S15859C1 ::mf15859c1(){}

static void Test_S15859C1()
{
  {
    init_simple_test("S15859C1");
    S15859C1 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S15859C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15859C1)");
    check_field_offset(lv, s15859c1f0, 0, "S15859C1.s15859c1f0");
    check_field_offset(lv, s15859c1f1, ABISELECT(24,20), "S15859C1.s15859c1f1");
  }
}
static Arrange_To_Call_Me vS15859C1(Test_S15859C1, "S15859C1", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15858C1  {
  ::S16428C9_nt s15858c1f0;
  int s15858c1f1;
  void  mf15858c1(); // _ZN8S15858C19mf15858c1Ev
};
//SIG(1 S15858C1) C1{ m FC2{ m FC3{ m Fp Fi[4]}} Fi}


void  S15858C1 ::mf15858c1(){}

static void Test_S15858C1()
{
  {
    init_simple_test("S15858C1");
    S15858C1 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S15858C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15858C1)");
    check_field_offset(lv, s15858c1f0, 0, "S15858C1.s15858c1f0");
    check_field_offset(lv, s15858c1f1, ABISELECT(24,20), "S15858C1.s15858c1f1");
  }
}
static Arrange_To_Call_Me vS15858C1(Test_S15858C1, "S15858C1", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16855C1  {
  int s16855c1f0;
  __tsi64 s16855c1f1;
  ::S16701C3 s16855c1f2;
  void  mf16855c1(); // _ZN8S16855C19mf16855c1Ev
};
//SIG(1 S16855C1) C1{ m Fi FL FC2{ m FC3{ m Fp}}}


void  S16855C1 ::mf16855c1(){}

static void Test_S16855C1()
{
  {
    init_simple_test("S16855C1");
    S16855C1 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S16855C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16855C1)");
    check_field_offset(lv, s16855c1f0, 0, "S16855C1.s16855c1f0");
    check_field_offset(lv, s16855c1f1, ABISELECT(8,4), "S16855C1.s16855c1f1");
    check_field_offset(lv, s16855c1f2, ABISELECT(16,12), "S16855C1.s16855c1f2");
  }
}
static Arrange_To_Call_Me vS16855C1(Test_S16855C1, "S16855C1", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16723C1  {
  int s16723c1f0;
  ::S16701C3 s16723c1f1;
  __tsi64 s16723c1f2;
  void  mf16723c1(); // _ZN8S16723C19mf16723c1Ev
};
//SIG(1 S16723C1) C1{ m Fi FC2{ m FC3{ m Fp}} FL}


void  S16723C1 ::mf16723c1(){}

static void Test_S16723C1()
{
  {
    init_simple_test("S16723C1");
    S16723C1 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S16723C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16723C1)");
    check_field_offset(lv, s16723c1f0, 0, "S16723C1.s16723c1f0");
    check_field_offset(lv, s16723c1f1, ABISELECT(8,4), "S16723C1.s16723c1f1");
    check_field_offset(lv, s16723c1f2, ABISELECT(16,8), "S16723C1.s16723c1f2");
  }
}
static Arrange_To_Call_Me vS16723C1(Test_S16723C1, "S16723C1", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16722C1  {
  int s16722c1f0;
  ::S16701C3 s16722c1f1;
  int s16722c1f2;
  void  mf16722c1(); // _ZN8S16722C19mf16722c1Ev
};
//SIG(1 S16722C1) C1{ m Fi FC2{ m FC3{ m Fp}} Fi}


void  S16722C1 ::mf16722c1(){}

static void Test_S16722C1()
{
  {
    init_simple_test("S16722C1");
    S16722C1 lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S16722C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16722C1)");
    check_field_offset(lv, s16722c1f0, 0, "S16722C1.s16722c1f0");
    check_field_offset(lv, s16722c1f1, ABISELECT(8,4), "S16722C1.s16722c1f1");
    check_field_offset(lv, s16722c1f2, ABISELECT(16,8), "S16722C1.s16722c1f2");
  }
}
static Arrange_To_Call_Me vS16722C1(Test_S16722C1, "S16722C1", ABISELECT(24,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15904C1  {
  ::S16701C3 s15904c1f0;
  void *s15904c1f1[2];
  void  mf15904c1(); // _ZN8S15904C19mf15904c1Ev
};
//SIG(1 S15904C1) C1{ m FC2{ m FC3{ m Fp}} Fp[2]}


void  S15904C1 ::mf15904c1(){}

static void Test_S15904C1()
{
  {
    init_simple_test("S15904C1");
    S15904C1 lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S15904C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15904C1)");
    check_field_offset(lv, s15904c1f0, 0, "S15904C1.s15904c1f0");
    check_field_offset(lv, s15904c1f1, ABISELECT(8,4), "S15904C1.s15904c1f1");
  }
}
static Arrange_To_Call_Me vS15904C1(Test_S15904C1, "S15904C1", ABISELECT(24,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15895C1  {
  ::S16701C3 s15895c1f0;
  ::S20643C15_nt s15895c1f1;
  void  mf15895c1(); // _ZN8S15895C19mf15895c1Ev
};
//SIG(1 S15895C1) C1{ m FC2{ m FC3{ m Fp}} FC4{}}


void  S15895C1 ::mf15895c1(){}

static void Test_S15895C1()
{
  {
    init_simple_test("S15895C1");
    S15895C1 lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S15895C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15895C1)");
    check_field_offset(lv, s15895c1f0, 0, "S15895C1.s15895c1f0");
    check_field_offset(lv, s15895c1f1, ABISELECT(8,4), "S15895C1.s15895c1f1");
  }
}
static Arrange_To_Call_Me vS15895C1(Test_S15895C1, "S15895C1", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17575C1  {
  void *s17575c1f0;
  ::S16701C3 s17575c1f1;
  void *s17575c1f2;
  void  mf17575c1(); // _ZN8S17575C19mf17575c1Ev
};
//SIG(1 S17575C1) C1{ m Fp FC2{ m FC3{ m Fp}} Fp}


void  S17575C1 ::mf17575c1(){}

static void Test_S17575C1()
{
  {
    init_simple_test("S17575C1");
    S17575C1 lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S17575C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17575C1)");
    check_field_offset(lv, s17575c1f0, 0, "S17575C1.s17575c1f0");
    check_field_offset(lv, s17575c1f1, ABISELECT(8,4), "S17575C1.s17575c1f1");
    check_field_offset(lv, s17575c1f2, ABISELECT(16,8), "S17575C1.s17575c1f2");
  }
}
static Arrange_To_Call_Me vS17575C1(Test_S17575C1, "S17575C1", ABISELECT(24,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16724C1  {
  int s16724c1f0;
  ::S16701C3 s16724c1f1;
  void  mf16724c1(); // _ZN8S16724C19mf16724c1Ev
};
//SIG(1 S16724C1) C1{ m Fi FC2{ m FC3{ m Fp}}}


void  S16724C1 ::mf16724c1(){}

static void Test_S16724C1()
{
  {
    init_simple_test("S16724C1");
    S16724C1 lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S16724C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16724C1)");
    check_field_offset(lv, s16724c1f0, 0, "S16724C1.s16724c1f0");
    check_field_offset(lv, s16724c1f1, ABISELECT(8,4), "S16724C1.s16724c1f1");
  }
}
static Arrange_To_Call_Me vS16724C1(Test_S16724C1, "S16724C1", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11487C1  {
  ::S1127C11 s11487c1f0;
  void *s11487c1f1[4];
};
//SIG(1 S11487C1) C1{ FC2{ Fi Fp[3]} Fp[4]}



static void Test_S11487C1()
{
  {
    init_simple_test("S11487C1");
    S11487C1 lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S11487C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11487C1)");
    check_field_offset(lv, s11487c1f0, 0, "S11487C1.s11487c1f0");
    check_field_offset(lv, s11487c1f1, ABISELECT(32,16), "S11487C1.s11487c1f1");
  }
}
static Arrange_To_Call_Me vS11487C1(Test_S11487C1, "S11487C1", ABISELECT(64,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11486C1  {
  ::S1127C11 s11486c1f0;
  void *s11486c1f1;
  int s11486c1f2;
};
//SIG(1 S11486C1) C1{ FC2{ Fi Fp[3]} Fp Fi}



static void Test_S11486C1()
{
  {
    init_simple_test("S11486C1");
    S11486C1 lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S11486C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11486C1)");
    check_field_offset(lv, s11486c1f0, 0, "S11486C1.s11486c1f0");
    check_field_offset(lv, s11486c1f1, ABISELECT(32,16), "S11486C1.s11486c1f1");
    check_field_offset(lv, s11486c1f2, ABISELECT(40,20), "S11486C1.s11486c1f2");
  }
}
static Arrange_To_Call_Me vS11486C1(Test_S11486C1, "S11486C1", ABISELECT(48,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11381C1  {
  ::S1071C11_nt s11381c1f0;
  void *s11381c1f1[2];
};
//SIG(1 S11381C1) C1{ FC2{ Fi Fp[2]} Fp[2]}



static void Test_S11381C1()
{
  {
    init_simple_test("S11381C1");
    S11381C1 lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S11381C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11381C1)");
    check_field_offset(lv, s11381c1f0, 0, "S11381C1.s11381c1f0");
    check_field_offset(lv, s11381c1f1, ABISELECT(24,12), "S11381C1.s11381c1f1");
  }
}
static Arrange_To_Call_Me vS11381C1(Test_S11381C1, "S11381C1", ABISELECT(40,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16348C1  {
  ::S15917C12 s16348c1f0;
  int s16348c1f1;
  void  mf16348c1(); // _ZN8S16348C19mf16348c1Ev
};
//SIG(1 S16348C1) C1{ m FC2{ m Fp Fi} Fi}


void  S16348C1 ::mf16348c1(){}

static void Test_S16348C1()
{
  {
    init_simple_test("S16348C1");
    S16348C1 lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S16348C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16348C1)");
    check_field_offset(lv, s16348c1f0, 0, "S16348C1.s16348c1f0");
    check_field_offset(lv, s16348c1f1, ABISELECT(16,8), "S16348C1.s16348c1f1");
  }
}
static Arrange_To_Call_Me vS16348C1(Test_S16348C1, "S16348C1", ABISELECT(24,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12802C1  {
  int s12802c1f0;
  void *s12802c1f1[7];
  int s12802c1f2;
  void *s12802c1f3;
};
//SIG(1 S12802C1) C1{ Fi Fp[7] Fi Fp}



static void Test_S12802C1()
{
  {
    init_simple_test("S12802C1");
    S12802C1 lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S12802C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12802C1)");
    check_field_offset(lv, s12802c1f0, 0, "S12802C1.s12802c1f0");
    check_field_offset(lv, s12802c1f1, ABISELECT(8,4), "S12802C1.s12802c1f1");
    check_field_offset(lv, s12802c1f2, ABISELECT(64,32), "S12802C1.s12802c1f2");
    check_field_offset(lv, s12802c1f3, ABISELECT(72,36), "S12802C1.s12802c1f3");
  }
}
static Arrange_To_Call_Me vS12802C1(Test_S12802C1, "S12802C1", ABISELECT(80,40));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18438C1  {
  short s18438c1f0[2];
  int s18438c1f1[4];
  void  mf18438c1(); // _ZN8S18438C19mf18438c1Ev
};
//SIG(1 S18438C1) C1{ m Fs[2] Fi[4]}


void  S18438C1 ::mf18438c1(){}

static void Test_S18438C1()
{
  {
    init_simple_test("S18438C1");
    S18438C1 lv;
    check2(sizeof(lv), 20, "sizeof(S18438C1)");
    check2(__alignof__(lv), 4, "__alignof__(S18438C1)");
    check_field_offset(lv, s18438c1f0, 0, "S18438C1.s18438c1f0");
    check_field_offset(lv, s18438c1f1, 4, "S18438C1.s18438c1f1");
  }
}
static Arrange_To_Call_Me vS18438C1(Test_S18438C1, "S18438C1", 20);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15075C1  {
  char s15075c1f0;
  int s15075c1f1;
  char s15075c1f2[2];
  void  mf15075c1(); // _ZN8S15075C19mf15075c1Ev
};
//SIG(1 S15075C1) C1{ m Fc Fi Fc[2]}


void  S15075C1 ::mf15075c1(){}

static void Test_S15075C1()
{
  {
    init_simple_test("S15075C1");
    S15075C1 lv;
    check2(sizeof(lv), 12, "sizeof(S15075C1)");
    check2(__alignof__(lv), 4, "__alignof__(S15075C1)");
    check_field_offset(lv, s15075c1f0, 0, "S15075C1.s15075c1f0");
    check_field_offset(lv, s15075c1f1, 4, "S15075C1.s15075c1f1");
    check_field_offset(lv, s15075c1f2, 8, "S15075C1.s15075c1f2");
  }
}
static Arrange_To_Call_Me vS15075C1(Test_S15075C1, "S15075C1", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10772C1  {
  char s10772c1f0[21];
  int s10772c1f1[7];
};
//SIG(1 S10772C1) C1{ Fc[21] Fi[7]}



static void Test_S10772C1()
{
  {
    init_simple_test("S10772C1");
    S10772C1 lv;
    check2(sizeof(lv), 52, "sizeof(S10772C1)");
    check2(__alignof__(lv), 4, "__alignof__(S10772C1)");
    check_field_offset(lv, s10772c1f0, 0, "S10772C1.s10772c1f0");
    check_field_offset(lv, s10772c1f1, 24, "S10772C1.s10772c1f1");
  }
}
static Arrange_To_Call_Me vS10772C1(Test_S10772C1, "S10772C1", 52);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10868C1  {
  char s10868c1f0[38];
  int s10868c1f1[4];
};
//SIG(1 S10868C1) C1{ Fc[38] Fi[4]}



static void Test_S10868C1()
{
  {
    init_simple_test("S10868C1");
    S10868C1 lv;
    check2(sizeof(lv), 56, "sizeof(S10868C1)");
    check2(__alignof__(lv), 4, "__alignof__(S10868C1)");
    check_field_offset(lv, s10868c1f0, 0, "S10868C1.s10868c1f0");
    check_field_offset(lv, s10868c1f1, 40, "S10868C1.s10868c1f1");
  }
}
static Arrange_To_Call_Me vS10868C1(Test_S10868C1, "S10868C1", 56);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14060C1  {
  void *s14060c1f0;
  char s14060c1f1[1020];
};
//SIG(1 S14060C1) C1{ Fp Fc[1020]}



static void Test_S14060C1()
{
  {
    init_simple_test("S14060C1");
    S14060C1 lv;
    check2(sizeof(lv), ABISELECT(1032,1024), "sizeof(S14060C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14060C1)");
    check_field_offset(lv, s14060c1f0, 0, "S14060C1.s14060c1f0");
    check_field_offset(lv, s14060c1f1, ABISELECT(8,4), "S14060C1.s14060c1f1");
  }
}
static Arrange_To_Call_Me vS14060C1(Test_S14060C1, "S14060C1", ABISELECT(1032,1024));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10488C1  {
  char s10488c1f0;
  long s10488c1f1;
  char s10488c1f2;
  short s10488c1f3;
};
//SIG(1 S10488C1) C1{ Fc Fl Fc Fs}



static void Test_S10488C1()
{
  {
    init_simple_test("S10488C1");
    S10488C1 lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S10488C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10488C1)");
    check_field_offset(lv, s10488c1f0, 0, "S10488C1.s10488c1f0");
    check_field_offset(lv, s10488c1f1, ABISELECT(8,4), "S10488C1.s10488c1f1");
    check_field_offset(lv, s10488c1f2, ABISELECT(16,8), "S10488C1.s10488c1f2");
    check_field_offset(lv, s10488c1f3, ABISELECT(18,10), "S10488C1.s10488c1f3");
  }
}
static Arrange_To_Call_Me vS10488C1(Test_S10488C1, "S10488C1", ABISELECT(24,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14412C1  {
  void *s14412c1f0;
  short s14412c1f1;
  char s14412c1f2[2];
};
//SIG(1 S14412C1) C1{ Fp Fs Fc[2]}



static void Test_S14412C1()
{
  {
    init_simple_test("S14412C1");
    S14412C1 lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S14412C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14412C1)");
    check_field_offset(lv, s14412c1f0, 0, "S14412C1.s14412c1f0");
    check_field_offset(lv, s14412c1f1, ABISELECT(8,4), "S14412C1.s14412c1f1");
    check_field_offset(lv, s14412c1f2, ABISELECT(10,6), "S14412C1.s14412c1f2");
  }
}
static Arrange_To_Call_Me vS14412C1(Test_S14412C1, "S14412C1", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12258C1  {
  int s12258c1f0;
  char s12258c1f1[259];
};
//SIG(1 S12258C1) C1{ Fi Fc[259]}



static void Test_S12258C1()
{
  {
    init_simple_test("S12258C1");
    S12258C1 lv;
    check2(sizeof(lv), 264, "sizeof(S12258C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12258C1)");
    check_field_offset(lv, s12258c1f0, 0, "S12258C1.s12258c1f0");
    check_field_offset(lv, s12258c1f1, 4, "S12258C1.s12258c1f1");
  }
}
static Arrange_To_Call_Me vS12258C1(Test_S12258C1, "S12258C1", 264);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14030C1  {
  __tsi64 s14030c1f0[51];
  void *s14030c1f1;
};
//SIG(1 S14030C1) C1{ FL[51] Fp}



static void Test_S14030C1()
{
  {
    init_simple_test("S14030C1");
    S14030C1 lv;
    check2(sizeof(lv), ABISELECT(416,412), "sizeof(S14030C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14030C1)");
    check_field_offset(lv, s14030c1f0, 0, "S14030C1.s14030c1f0");
    check_field_offset(lv, s14030c1f1, 408, "S14030C1.s14030c1f1");
  }
}
static Arrange_To_Call_Me vS14030C1(Test_S14030C1, "S14030C1", ABISELECT(416,412));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14927C1  {
  short s14927c1f0[3];
  int s14927c1f1;
};
//SIG(1 S14927C1) C1{ Fs[3] Fi}



static void Test_S14927C1()
{
  {
    init_simple_test("S14927C1");
    S14927C1 lv;
    check2(sizeof(lv), 12, "sizeof(S14927C1)");
    check2(__alignof__(lv), 4, "__alignof__(S14927C1)");
    check_field_offset(lv, s14927c1f0, 0, "S14927C1.s14927c1f0");
    check_field_offset(lv, s14927c1f1, 8, "S14927C1.s14927c1f1");
  }
}
static Arrange_To_Call_Me vS14927C1(Test_S14927C1, "S14927C1", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13615C1  {
  int s13615c1f0[8];
  char s13615c1f1;
};
//SIG(1 S13615C1) C1{ Fi[8] Fc}



static void Test_S13615C1()
{
  {
    init_simple_test("S13615C1");
    S13615C1 lv;
    check2(sizeof(lv), 36, "sizeof(S13615C1)");
    check2(__alignof__(lv), 4, "__alignof__(S13615C1)");
    check_field_offset(lv, s13615c1f0, 0, "S13615C1.s13615c1f0");
    check_field_offset(lv, s13615c1f1, 32, "S13615C1.s13615c1f1");
  }
}
static Arrange_To_Call_Me vS13615C1(Test_S13615C1, "S13615C1", 36);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11008C1  {
  char s11008c1f0[77];
};
//SIG(1 S11008C1) C1{ Fc[77]}



static void Test_S11008C1()
{
  {
    init_simple_test("S11008C1");
    S11008C1 lv;
    check2(sizeof(lv), 77, "sizeof(S11008C1)");
    check2(__alignof__(lv), 1, "__alignof__(S11008C1)");
    check_field_offset(lv, s11008c1f0, 0, "S11008C1.s11008c1f0");
  }
}
static Arrange_To_Call_Me vS11008C1(Test_S11008C1, "S11008C1", 77);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

